CN114095427A - 一种处理数据报文的方法和网卡 - Google Patents

一种处理数据报文的方法和网卡 Download PDF

Info

Publication number
CN114095427A
CN114095427A CN202111208360.7A CN202111208360A CN114095427A CN 114095427 A CN114095427 A CN 114095427A CN 202111208360 A CN202111208360 A CN 202111208360A CN 114095427 A CN114095427 A CN 114095427A
Authority
CN
China
Prior art keywords
network card
processed
data message
integrated circuit
data packet
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202111208360.7A
Other languages
English (en)
Inventor
姚益民
高俊恩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202111208360.7A priority Critical patent/CN114095427A/zh
Publication of CN114095427A publication Critical patent/CN114095427A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4633Interconnection of networks using encapsulation techniques, e.g. tunneling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4641Virtual LANs, VLANs, e.g. virtual private networks [VPN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9005Buffering arrangements using dynamic buffer space allocation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9057Arrangements for supporting packet reassembly or resequencing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/10Mapping addresses of different types
    • H04L61/103Mapping addresses of different types across network layers, e.g. resolution of network layer into physical layer addresses or address resolution protocol [ARP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/2592Translation of Internet protocol [IP] addresses using tunnelling or encapsulation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/02Protocol performance
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请实施例提供一种处理数据报文的方法和网卡,涉及通信领域,能够解决网卡的性能有限导致的不能很好地降低CPU的负载的问题。该方法应用于网卡,网卡包括加速接口,加速接口与可编程的集成电路连接,该方法包括:网卡接收待处理的数据报文;网卡通过加速接口将待处理的数据报文转发到可编程的集成电路,使可编程的集成电路根据预设的策略处理待处理的数据报文;网卡接收可编程的集成电路通过加速接口返回的处理后的数据报文;网卡发送处理后的数据报文。本申请实施例应用于网卡处理数据报文的过程中。

Description

一种处理数据报文的方法和网卡
技术领域
本申请涉及通信领域,尤其涉及一种处理数据报文的方法和网卡。
背景技术
随着网络业务的快速发展,网络中的流量急剧增加,为了实现对硬件资源的充分利用,虚拟化技术和云计算得到了越来越广泛的利用,这样一来,增加了中央处理器(Central Processing Unit,CPU)的资源占用率。
为了降低CPU的负载,发展出一种网卡的硬件卸载(offloading)技术。网卡的offloading技术即将原本需要CPU进行处理的工作卸载到网卡上,由网卡进行处理。具备offloading功能的网卡需要对专有集成电路(Application Specific IntegratedCircuit,ASIC)芯片重新流片,具有周期久,投入大,灵活度差等问题。
为了解决上述问题,一些厂商在网卡的ASIC芯片内部集成了精简指令集计算机(Reduced Instruction Set Computer,RISC)或ARM(Acorn RISC Machine)类型的处理器,支持一定的可编程能力。但是内部集成的处理器的处理能力和可编程资源等有限,限制了网卡的性能,从而不能很好地降低CPU的负载。
发明内容
本申请实施例提供一种处理数据报文的方法和网卡,能够解决网卡的性能有限导致的不能很好地降低CPU的负载的问题。
第一方面,本申请实施例提供一种处理数据报文的方法,应用于网卡,网卡包括加速接口,加速接口与可编程的集成电路连接,该方法包括:网卡接收待处理的数据报文;网卡通过加速接口将待处理的数据报文转发到可编程的集成电路,使可编程的集成电路根据预设的策略处理待处理的数据报文;网卡接收可编程的集成电路通过加速接口返回的处理后的数据报文;网卡发送处理后的数据报文。相比现有技术,网卡通过内部集成的处理器处理数据报文,由于内部集成的处理器的处理能力和可编程资源等有限,限制了网卡的性能,从而不能很好地降低CPU的负载。本申请实施例可以将接收到的待处理的数据报文,通过加速接口将待处理的数据报文转发到可编程的集成电路,使可编程的集成电路根据预设的策略处理待处理的数据报文,能够降低CPU的负载。其中,预设的策略可以根据网卡的应用场景灵活配置。同时,加速接口独立于系统侧接口和线路侧接口,专用于网卡与可编程的集成电路之间的信号通信,不影响系统侧接口和线路侧接口的功能。
在一种可能的实现方式中,网卡通过加速接口将待处理的数据报文转发到可编程的集成电路之前,该方法还包括:在网卡从线路侧接口接收待处理的数据报文的情况下,网卡确定待处理的数据报文与网卡上存储的策略列表中的协议关键字有对应关系;在网卡从系统侧接口接收待处理的数据报文的情况下,网卡确定待处理的数据报文匹配网卡上存储的流表。由此,网卡将待处理的数据报文转发到可编程的集成电路之前,可以确定待处理的数据报文是否满足预设的条件,预设的条件包括待处理的数据报文与网卡上存储的策略列表中的协议关键字有对应关系,或待处理的数据报文匹配网卡上存储的流表。当待处理的数据报文满足预设的条件时,通过加速接口将待处理的数据报文转发到可编程的集成电路,可以更好的满足高性能,需要提供可编程加速能力的场景。
在一种可能的实现方式中,网卡确定待处理的数据报文与网卡上存储的策略列表中的协议关键字有对应关系包括:网卡获取待处理的数据报文的协议关键字;网卡确定网卡上存储的策略列表中是否存在待处理的数据报文的协议关键字;若网卡确定网卡上存储的策略列表中存在待处理的数据报文的协议关键字,网卡确定待处理的数据报文与网卡上存储的策略列表中的协议关键字有对应关系。由此,若网卡确定网卡上存储的策略列表中存在待处理的数据报文的协议关键字,网卡通过加速接口将待处理的数据报文转发到可编程的集成电路,使可编程的集成电路根据预设的策略处理待处理的数据报文,可以更好的满足高性能,需要提供可编程加速能力的场景。
在一种可能的实现方式中,网卡确定待处理的数据报文匹配网卡上存储的流表包括:网卡获取待处理的数据报文的头部信息;网卡确定流表的包头域是否匹配待处理的数据报文的头部信息;若网卡确定流表的包头域匹配待处理的数据报文的头部信息,网卡确定待处理的数据报文匹配网卡上存储的流表。由此,若网卡确定待处理的数据报文匹配网卡上存储的流表,网卡通过加速接口转发到可编程的集成电路,使可编程的集成电路根据预设的策略处理待处理的数据报文,可以更好的满足高性能,需要提供可编程加速能力的场景。
在一种可能的实现方式中,该方法还包括:在网卡从线路侧接口接收待处理的数据报文的情况下,网卡确定待处理的数据报文与网卡上存储的策略列表中的协议关键字没有对应关系;或在网卡从系统侧接口接收待处理的数据报文的情况下,网卡确定待处理的数据报文不匹配网卡上存储的流表;网卡处理待处理的数据报文。由此,若网卡确定待处理的数据报文不匹配网卡上存储的流表,可以由网卡处理待处理的数据报文,可以节省将数据报文转发到可编程的集成电路的开销,能够满足普通性能要求。
在一种可能的实现方式中,可编程的集成电路与存储设备连接,存储设备用于缓存待处理的数据报文,能够加强可编程的集成电路的处理性能。
第二方面,本申请实施例提供一种网卡,包括:接收单元,用于接收待处理的数据报文;加速接口,用于将待处理的数据报文转发到可编程的集成电路,使可编程的集成电路根据预设的策略处理待处理的数据报文;接收单元,还用于接收可编程的集成电路通过加速接口返回的处理后的数据报文;发送单元,用于发送处理后的数据报文。
在一种可能的实现方式中,还包括确定单元,用于:在网卡从线路侧接口接收待处理的数据报文的情况下,确定待处理的数据报文与网卡上存储的策略列表中的协议关键字有对应关系;在网卡从系统侧接口接收待处理的数据报文的情况下,确定待处理的数据报文匹配网卡上存储的流表。
在一种可能的实现方式中,在网卡从线路侧接口接收待处理的数据报文的情况下,确定单元用于:获取待处理的数据报文的协议关键字;确定网卡上存储的策略列表中是否存在待处理的数据报文的协议关键字;若确定网卡上存储的策略列表中存在待处理的数据报文的协议关键字,确定待处理的数据报文与网卡上存储的策略列表中的协议关键字有对应关系。
在一种可能的实现方式中,在网卡从系统侧接口接收待处理的数据报文的情况下,确定单元用于:获取待处理的数据报文的头部信息;确定流表的包头域是否匹配待处理的数据报文的头部信息;若确定流表的包头域匹配待处理的数据报文的头部信息,确定待处理的数据报文匹配网卡上存储的流表。
在一种可能的实现方式中,还包括处理单元,用于:在网卡从线路侧接口接收待处理的数据报文的情况下,通过确定单元确定待处理的数据报文与网卡上存储的策略列表中的协议关键字没有对应关系;或在网卡从系统侧接口接收待处理的数据报文的情况下,通过确定单元确定待处理的数据报文不匹配网卡上存储的流表;处理待处理的数据报文。
在一种可能的实现方式中,可编程的集成电路与存储设备连接,存储设备用于缓存待处理的数据报文。
第三方面,本发明实施例提供了一种网卡,该网卡以芯片的产品形态存在,该网卡的结构中包括处理器和存储器,该存储器用于与处理器耦合,保存该网卡必要的程序指令和数据,该处理器用于执行存储器中存储的程序指令,使得该网卡执行上述方法中网卡的功能。
第四方面,本发明实施例提供了一种网卡,该网卡可以实现上述方法中网卡所执行的功能,功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个上述功能相应的模块。
在一种可能的设计中,该网卡的结构中包括处理器和通信接口,该处理器被配置为支持该网卡执行上述方法中相应的功能。该通信接口用于支持该网卡与其他网元之间的通信。该网卡还可以包括存储器,该存储器用于与处理器耦合,其保存该网卡必要的程序指令和数据。
第五方面,本发明实施例提供一种网卡可读存储介质,包括指令,当其在网卡上运行时,使得网卡执行第一方面提供的任意一种方法。
第六方面,本发明实施例提供了一种包含指令的程序产品,当其在网卡上运行时,使得网卡执行第一方面提供的任意一种方法。
相比现有技术,网卡通过内部集成的处理器处理数据报文,由于内部集成的处理器的处理能力和可编程资源等有限,限制了网卡的性能,从而不能很好地降低CPU的负载。本申请实施例可以将接收到的待处理的数据报文,通过加速接口将待处理的数据报文转发到可编程的集成电路,使可编程的集成电路根据预设的策略处理待处理的数据报文,能够降低CPU的负载。其中,预设的策略可以根据网卡的应用场景灵活配置。同时,加速接口独立于系统侧接口和线路侧接口,专用于网卡与可编程的集成电路之间的信号通信,不影响系统侧接口和线路侧接口的功能。
附图说明
图1为本申请实施例提供的一种系统架构示意图;
图2为本申请实施例提供的一种网卡的内部结构示意图;
图3为本申请实施例提供的一种网卡、可编程的集成电路以及存储设备的连接示意图;
图4为本申请实施例提供的一种处理数据报文的方法的流程示意图;
图5为本申请实施例提供的一种处理数据报文的方法的流程示意图;
图6为本申请实施例提供的一种网卡的结构示意图;
图7为本申请实施例提供的一种网卡的结构示意图。
具体实施方式
为了下述各实施例的描述清楚简洁,首先给出相关概念或技术的简要介绍:
线路侧接口,即网卡用于接收其他网络设备发送的数据报文的接口。线路侧接口例如但不限于为,小型可插拔式(Small Form-factor,SFP)接口、四通道小型可插拔式(Quad Small Form-factor Pluggable,QSFP)接口或KR接口。
系统侧接口,即网卡用于接收CPU发送的数据报文的接口。系统侧接口例如但不限于为扩展的外部设备互连总线(PCI(Peripheral Component Interconnect)Express,PCIe)接口。
加速接口,独立于线路侧接口和系统侧接口,可以用于连接可编程的集成电路。加速接口例如但不限于为,PCIe接口,同调汇流互连加速器(Cache Coherent Interconnectfor Accelerators,CCIX)接口,QSFP接口,40G平行物理接口(40Gbps Parallel PhysicalInterface,XLPPI)接口或者QSFP接口。
本申请实施例提供一种处理数据报文的方法和网卡,可以应用于各种数据报文或数据包的处理场景中。例如,传输控制协议(Transmission Control Protocol,TCP)/网际协议(Internet Protocol,IP)校验和(Checksum)场景,IPsec(IP Security)以及安全传输层协议(Transport Layer Security Protocol,TLS)等加解密场景,TCP切片卸载(TCPSegmentation Offload,TSO)场景,虚拟机队列(Virtual Machine Queue,VMQ)操作(Steering)场景,RSS(Receive Side Scaling)操作场景,虚拟网络的通用路由封装(Network Virtualization using Generic Routing Encapsulation,NVGRE)、增强型虚拟局域网(Virtual eXtensible Local Area Network,VXLAN)和通用虚拟网络封装(GenericNetwork Virtualization Encapsulation,GENEVE)等Overlay网络卸载场景,以及远程直接数据存取(Remote Direct Memory Access,RDMA)场景等。另外,还可以应用于数据平面开发套件(Data Plane Development Kit,DPDK),开源虚拟交换机(OpenvSwitch,OVS)以及云硬盘(Elastic Volume Service,EVS)等处理场景中。
如图1所示,为本申请实施例提供的一种系统架构示意图,包括网络设备和外部设备(例如,交换机)。其中,网络设备包括网卡、存储器和CPU。网卡可以从线路侧接口接收交换机发送的数据报文,或从系统侧接口接收CPU发送的数据报文。
如图2所示,为本申请实施例提供的一种网卡的内部结构示意图。其中,网卡提供的系统侧接口用于连接CPU等主设备(host设备)。网卡提供的线路侧接口用于对接交换机或者其他网卡。网卡提供物理层、媒体接入控制(Media Access Control,MAC)层以及缓冲(BUFFER)等功能模块。可选的,网卡可以提供队列,发送引擎,接收引擎等功能模块。可选的,网卡提供内置的处理器,用于实现网卡内部资源管理,调度,网卡功能编程等。可选的,网卡提供存储器接口,如双倍速率同步动态随机存储器(Double Data Rate,DDR)接口,用于扩展芯片BUFFER。
如图3所示,网卡包括加速接口,用于连接可编程的集成电路。网卡可以将待处理的数据报文转发到可编程的集成电路,使可编程的集成电路根据预设的策略处理待处理的数据报文。在一种可能的设计中,可编程的集成电路与存储设备连接,存储设备用于缓存待处理的数据报文。需要说明的是,加速接口和系统侧接口或线路侧接口无关,也就是说,加速接口不影响现有的系统侧接口或线路侧接口的功能。
本申请实施例提供一种处理数据报文的方法,以网卡从线路侧接口接收待处理的数据报文为例进行说明,如图4所示,包括:
401、网卡从线路侧接口接收待处理的数据报文。
即网卡从线路侧接口接收外部设备发送的待处理的数据报文。
举例来说,待处理的数据报文可以是根据IPSec协议封装的数据报文,IPSec封装的数据报文是经过加密的数据报文,需要进行解密处理。
402、网卡确定待处理的数据报文与网卡上存储的策略列表中的协议关键字是否有对应关系。
具体的,网卡获取待处理的数据报文的协议关键字;网卡确定网卡上存储的策略列表中是否存在待处理的数据报文的协议关键字;若网卡确定网卡上存储的策略列表中存在待处理的数据报文的协议关键字,网卡确定待处理的数据报文与网卡上存储的策略列表中的协议关键字有对应关系。
示例性的,网卡上存储的策略列表可以包括多种协议关键字,协议关键字用于指示协议类型,如表1所示:
表1
协议类型 协议关键字
IPSec协议 IPSec
TLS协议 TLS
...... ......
IP协议 IP
待处理的数据报文的协议关键字指明了待处理的数据包的协议类型。举例来说,当待处理的数据报文是根据IPSec封装的数据报文时,数据报文的协议关键字可以是IPSec类型。当网卡确定网卡上存储的策略列表中的协议关键字包括IPSec类型时,网卡确定待处理的数据报文与网卡上存储的策略列表中的协议关键字有对应关系。
若网卡确定待处理的数据报文与网卡上存储的策略列表中的协议关键字有对应关系,执行步骤403、404和406。
若网卡确定待处理的数据报文与网卡上存储的策略列表中的协议关键字没有对应关系,执行步骤405和406。
403、网卡通过加速接口将待处理的数据报文转发到可编程的集成电路,使可编程的集成电路根据预设的策略处理待处理的数据报文。
其中,可编程的集成电路可以包括现场可编程门阵列(Field-Programmable GateArray,FPGA)、ASIC或可编程逻辑器件(Programmable Logic Device,PLD),本申请对此不进行限定。
可编程的集成电路接收到网卡通过加速接口发送的待处理的数据报文时,可以根据预设的策略处理待处理的数据报文。其中,预设的策略可以根据网卡的应用场景灵活配置。例如,当待处理的数据报文是IPSec封装的数据报文时,可编程的集成电路可以对IPSec封装的数据报文进行解密处理。
可选的,可编程的集成电路支持外接存储设备,存储设备可以缓存待处理的数据报文。存储设备可以为随机存取存储器(Random Access Memory,RAM)、动态随机存取存储器(Dynamic Random Access Memory,DRAM),可擦除可编程只读寄存器(ErasableProgrammable Read Only Memory,EPROM)等中的一种或多种,本申请不做限定。
404、网卡接收可编程的集成电路通过加速接口返回的处理后的数据报文。
即可编程的集成电路根据预设的策略处理待处理的数据报文完成后,可以将处理后的数据报文返回给网卡,以便网卡将处理后的数据报文发送给CPU。
405、网卡处理待处理的数据报文。
即当网卡确定待处理的数据报文与网卡上存储的策略列表中的协议关键字没有对应关系时,网卡不向可编程的集成电路发送待处理的数据报文,网卡可以自行处理待处理的数据报文。
举例来说,当待处理的数据报文不是根据IPSec封装的数据报文时,网卡可以不向可编程的集成电路发送待处理的数据报文,网卡可以自行处理待处理的数据报文。
406、网卡发送处理后的数据报文。
在一种可能的设计中,网卡可以通过PCIe接口向CPU发送处理后的数据报文,以便CPU对该处理后的数据报文进一步处理。
在一种可能的设计中,网卡可以产生中断,通过直接内存访问(Direct MemoryAccess,DMA)将处理后的数据报文发送给CPU管理的内存。
相比现有技术,网卡通过内部集成的处理器处理数据报文,由于内部集成的处理器的处理能力和可编程资源等有限,限制了网卡的性能,从而不能很好地降低CPU的负载。本申请实施例可以将接收到的待处理的数据报文,通过加速接口转发到可编程的集成电路,使可编程的集成电路根据预设的策略处理待处理的数据报文,能够降低CPU的负载。其中,预设的策略可以根据网卡的应用场景灵活配置。同时,加速接口独立于系统侧接口和线路侧接口,专用于网卡和可编程的集成电路的信号通信,不影响系统侧接口和线路侧接口的功能。
在一种可能的设计中,在网卡从线路侧接口接收待处理的数据报文的情况下,网卡确定待处理的数据报文与网卡上存储的策略列表中的协议关键字是否有对应关系,若网卡确定待处理的数据报文与网卡上存储的策略列表中的协议关键字有对应关系,网卡通过加速接口转发到可编程的集成电路,使可编程的集成电路根据预设的策略处理待处理的数据报文,可以更好的满足高性能,需要提供可编程加速能力的场景。若网卡确定待处理的数据报文与网卡上存储的策略列表中的协议关键字没有对应关系,网卡自行处理待处理的数据报文,可以节省将数据报文转发到可编程的集成电路的开销,能够满足普通性能要求。
本申请的又一实施例提供一种处理数据报文的方法,以网卡从系统侧接收待处理的数据报文为例进行说明,如图5所示,包括:
501、网卡从系统侧接口接收待处理的数据报文。
即网卡从系统侧接口接收CPU发送的待处理的数据报文。
举例来说,待处理的数据报文可以是需要进行IPSec协议封装的数据报文,也就是说,待处理的数据报文需要进行加密处理。
502、网卡确定待处理的数据报文是否匹配网卡上存储的流表。
具体的,网卡获取待处理的数据报文的头部信息;网卡确定流表的包头域是否匹配待处理的数据报文的头部信息;若网卡确定流表的包头域匹配待处理的数据报文的头部信息,网卡确定待处理的数据报文匹配网卡上存储的流表。
示例性的,网卡上存储的流表的包头域可以包括输出端口、传输协议和目的IP地址,如表2所示:
表2
输出端口 传输协议 目的IP地址
端口1 IPSec 223.255.14.151
...... ...... ......
端口2 TLS 223.255.14.152
待处理的数据报文的头部信息包括待处理的数据报文对应的输出端口、传输协议和目的IP地址。
举例来说,假设网卡上存储的流表的包头域如表2所示,那么当网卡确定待处理的数据报文对应的输出端口为端口1、目的IP地址为223.255.14.151时,网卡确定待处理的数据报文的传输协议为IPSec,从而确定待处理的数据报文匹配网卡上存储的流表。
若网卡确定待处理的数据报文匹配网卡上存储的流表,执行步骤503、504和506。
若网卡确定待处理的数据报文不匹配网卡上存储的流表,执行步骤505和506。
503、网卡通过加速接口将待处理的数据报文转发到可编程的集成电路,使可编程的集成电路根据预设的策略处理待处理的数据报文。
其中,可编程的集成电路可以为FPGA、ASIC或PLD,本申请对此不作限定。
可编程的集成电路接收到网卡通过加速接口发送的待处理的数据报文时,可以根据预设的策略处理待处理的数据报文。例如,当待处理的数据报文是需要进行IPSec封装的数据报文时,可编程的集成电路可以对待处理的数据报文进行加密处理。
可选的,可编程的集成电路支持外接存储设备,存储设备可以缓存待处理的数据报文。存储设备可以为RAM,DRAM,EPROM等,本申请不做限定。
504、网卡接收可编程的集成电路通过加速接口返回的处理后的数据报文。
即可编程的集成电路根据预设的策略处理待处理的数据报文完成后,可以将处理后的数据报文返回给网卡,以便网卡将处理后的数据报文发送给外部设备或CPU。
505、网卡处理待处理的数据报文。
即当网卡确定待处理的数据报文不匹配网卡上存储的流时,网卡不向可编程的集成电路发送待处理的数据报文,网卡可以自行处理待处理的数据报文。
506、网卡发送处理后的数据报文。
即网卡可以通过线路侧接口直接向外部设备转发处理后的数据报文。
相比现有技术,网卡通过内部集成的处理器处理数据报文,由于内部集成的处理器的处理能力和可编程资源等有限,限制了网卡的性能,从而不能很好地降低CPU的负载。本申请实施例可以将接收到的待处理的数据报文,通过加速接口转发到可编程的集成电路,使可编程的集成电路根据预设的策略处理待处理的数据报文,能够降低CPU的负载。其中,预设的策略可以根据网卡的应用场景灵活配置。同时,加速接口独立于系统侧接口和线路侧接口,专用于网卡与可编程的集成电路之间的信号通信,不影响系统侧接口和线路侧接口的功能。
在一种可能的设计中,在网卡从线路侧接口接收待处理的数据报文的情况下,网卡确定待处理的数据报文是否匹配网卡上存储的流表,若网卡确定待处理的数据报文匹配网卡上存储的流表,网卡通过加速接口转发到可编程的集成电路,使可编程的集成电路根据预设的策略处理待处理的数据报文,可以更好的满足高性能,需要提供可编程加速能力的场景。若网卡确定待处理的数据报文不匹配网卡上存储的流表,网卡自行处理待处理的数据报文,可以节省将数据报文转发到可编程的集成电路的开销,能够满足普通性能要求。
上述主要从网卡的角度对本申请实施例提供的方案进行了介绍。可以理解的是,网卡为了实现上述功能,其包括了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的算法步骤,本申请能够以硬件或硬件和软件的结合形式来实现。某个功能究竟以硬件还是软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对网卡进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,图6示出了上述实施例中所涉及的网卡6的一种可能的结构示意图,网卡包括:接收单元601,加速接口602,发送单元603,确定单元604和处理单元605。接收单元601用于支持网卡执行图4中的过程401和404,图5中的过程501和504。确定单元604用于支持网卡执行图4中的过程402,图5中的过程502。加速接口602用于支持网卡执行图4中的过程403,图5中的过程503。发送单元603用于支持网卡执行图4中的过程406,图5中的过程506。处理单元605用于支持网卡执行图4中的过程405,图5中的过程505。其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
在一种可能的设计中,网卡可以通过图7中的网卡来实现。
图7所示为本申请实施例提供的网卡示意图。网卡700包括至少一个处理器701,通信总线702,存储器703以及至少一个通信接口704。
处理器701可以是一个通用CPU,微处理器,ASIC,或一个或多个用于控制本申请方案程序执行的集成电路。
通信总线702可包括一通路,在上述组件之间传送信息。
通信接口704,网卡用于与其他网卡或通信网络通信,如以太网,无线接入网(Radio Access Network,RAN),无线局域网(Wireless Local Area Networks,WLAN)等。
存储器703可以是只读存储器(Read-Only Memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,RAM或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(Electrically Erasable Programmable Read-OnlyMemory,EEPROM)、只读光盘(Compact Disc read-Only Memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由网卡存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。
其中,存储器703用于存储执行本申请方案的应用程序代码,并由处理器701来控制执行。处理器701用于执行存储器703中存储的应用程序代码,从而实现本申请方法中的功能。
在具体实现中,作为一种实施例,处理器701可以包括一个或多个CPU,例如图7中的CPU0和CPU1。
在具体实现中,作为一种实施例,网卡700可以包括多个处理器,例如图7中的处理器701和处理器705。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如网卡程序指令)的处理核。
上述的网卡700可以是一个通用网卡或者是一个专用网卡。在具体实现中,网卡700可以是台式机、便携式电脑、服务器、存储设备、网络设备、掌上电脑(Personal DigitalAssistant,PDA)、移动手机、平板电脑、无线终端设备、通信设备、嵌入式设备或有图7中类似结构的设备。本申请实施例不限定网卡700的类型。
结合本申请公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于RAM、闪存、ROM、EPROM、EEPROM、寄存器、硬盘、移动硬盘、只读光盘或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。另外,该ASIC可以位于核心网接口设备中。当然,处理器和存储介质也可以作为分立组件存在于核心网接口设备中。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在网卡可读介质中或者作为网卡可读介质上的一个或多个指令或代码进行传输。网卡可读介质包括网卡存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送网卡程序的任何介质。存储介质可以是通用或专用网卡能够存取的任何可用介质。
以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施方式而已,并不用于限定本申请的保护范围,凡在本申请的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本申请的保护范围之内。

Claims (13)

1.一种处理数据报文的方法,其特征在于,所述方法应用于网卡,所述网卡包括加速接口,所述网卡通过所述加速接口与可编程的集成电路连接,所述方法由所述网卡执行,所述方法包括:
获取待处理的数据报文;
判断所述数据报文是否由所述可编程的集成电路处理;
当所述确定所述数据报文由所述集成电路处理时,向所述可编程的集成电路转发所述数据报文。
2.根据权要求1所述的方法,其特征在于,所述判断所述数据报文是否由所述可编程的集成电路处理,包括:
根据预设的策略处理所述待处理的数据报文。
3.根据权利要求2所述的方法,其特征在于,所述根据预设的策略处理所述待处理的数据报文,包括:
获取待处理的数据报文的协议关键字;
根据策略列表中确定是否存在所述协议关键字;
当所述策略列表中存在所述协议关键字时,确定所述数据报文由所述可编程的集成电路处理;
当所述述策略列表中不存在所述协议关键字时,确定所述数据报文无需所述可编程的集成电路处理。
4.根据权利要求1所述的方法,其特征在于,在所述判断所述数据报文是否由所述可编程的集成电路处理之前,所述方法还包括:
在所述网卡从线路侧接口接收所述待处理的数据报文的情况下,所述网卡确定所述待处理的数据报文与所述网卡上存储的策略列表中的协议关键字有对应关系;
在所述网卡从系统侧接口接收所述待处理的数据报文的情况下,所述网卡确定所述待处理的数据报文匹配所述网卡上存储的流表。
5.根据权利要求1至4中任一所述的方法,其特征在于,所述可编程的集成电路可以包括现场可编程门阵列(Field-Programmable Gate Array,FPGA)、ASIC或可编程逻辑器件(Programmable Logic Device,PLD)中至少一种。
6.根据权利要求1至4中任一所述的方法,其特征在于,所述可编程的集成电路支持外接存储设备,所述存储设备可以缓存待处理的数据报文。存储设备可以为随机存取存储器RAM、动态随机存取存储器DRAM,可擦除可编程只读寄存器EPROM等中的一种或多种。
7.一种网卡,其特征在于,包括:
接收单元,用于获取待处理的数据报文;
确定单元,用于判断所述数据报文是否由所述可编程的集成电路处理;
发送单元,当所述确定所述数据报文由所述集成电路处理时,向所述可编程的集成电路转发所述数据报文。
8.根据权利要求7所述的网卡,其特征在于,
所述确定单元,还用于根据预设的策略处理所述待处理的数据报文。
9.根据权利要求8所述的网卡,其特征在于,
所述确定单元,还用于获取待处理的数据报文的协议关键字;根据策略列表中确定是否存在所述协议关键字;当所述策略列表中存在所述协议关键字时,确定所述数据报文由所述可编程的集成电路处理;当所述述策略列表中不存在所述协议关键字时,确定所述数据报文无需所述可编程的集成电路处理。
10.根据权利要求7所述的网卡,其特征在于,
所述确定单元,还用于在所述网卡从线路侧接口接收所述待处理的数据报文的情况下,所述网卡确定所述待处理的数据报文与所述网卡上存储的策略列表中的协议关键字有对应关系;在所述网卡从系统侧接口接收所述待处理的数据报文的情况下,所述网卡确定所述待处理的数据报文匹配所述网卡上存储的流表。
11.根据权利要求7至10中任一所述的网卡,其特征在于,所述可编程的集成电路可以包括现场可编程门阵列(Field-Programmable Gate Array,FPGA)、ASIC或可编程逻辑器件(Programmable Logic Device,PLD)中至少一种。
12.根据权利要求7至10中任一所述的网卡,其特征在于,所述可编程的集成电路支持外接存储设备,所述存储设备可以缓存待处理的数据报文。存储设备可以为随机存取存储器RAM、动态随机存取存储器DRAM,可擦除可编程只读寄存器EPROM等中的一种或多种。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被所述处理器执行时实现权利要求1-6任一项所述的处理数据报文的方法。
CN202111208360.7A 2017-12-29 2017-12-29 一种处理数据报文的方法和网卡 Pending CN114095427A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111208360.7A CN114095427A (zh) 2017-12-29 2017-12-29 一种处理数据报文的方法和网卡

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201711498895.6A CN109992405B (zh) 2017-12-29 2017-12-29 一种处理数据报文的方法和网卡
CN202111208360.7A CN114095427A (zh) 2017-12-29 2017-12-29 一种处理数据报文的方法和网卡

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201711498895.6A Division CN109992405B (zh) 2017-12-29 2017-12-29 一种处理数据报文的方法和网卡

Publications (1)

Publication Number Publication Date
CN114095427A true CN114095427A (zh) 2022-02-25

Family

ID=67066678

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201711498895.6A Active CN109992405B (zh) 2017-12-29 2017-12-29 一种处理数据报文的方法和网卡
CN202111208360.7A Pending CN114095427A (zh) 2017-12-29 2017-12-29 一种处理数据报文的方法和网卡

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201711498895.6A Active CN109992405B (zh) 2017-12-29 2017-12-29 一种处理数据报文的方法和网卡

Country Status (2)

Country Link
CN (2) CN109992405B (zh)
WO (1) WO2019129167A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112291293B (zh) * 2019-07-27 2023-01-06 华为技术有限公司 任务处理方法、相关设备及计算机存储介质
CN110955517B (zh) * 2019-09-03 2021-08-20 华为技术有限公司 报文转发的方法、计算机设备和中间设备
CN111262917A (zh) 2020-01-13 2020-06-09 苏州浪潮智能科技有限公司 一种基于fpga云平台的远端数据搬移装置和方法
CN111654451B (zh) * 2020-05-13 2023-03-28 南京南瑞继保电气有限公司 报文防重放方法及电子设备
CN113852656B (zh) * 2020-06-28 2023-02-10 华为技术有限公司 一种数据传输方法、处理器系统及内存访问系统
CN112214325A (zh) * 2020-10-20 2021-01-12 杭州电子科技大学 Fpga任务动态编排方法、装置、芯片和存储介质
CN114070639B (zh) * 2021-11-19 2024-04-23 北京天融信网络安全技术有限公司 一种报文安全转发方法、装置及网络安全设备
CN113821310B (zh) * 2021-11-19 2022-05-06 阿里云计算有限公司 数据处理方法、可编程网卡设备、物理服务器及存储介质
CN114553774B (zh) * 2021-12-24 2023-06-16 锐捷网络股份有限公司 一种报文转发方法、装置、设备和介质
CN116668375B (zh) * 2023-07-31 2023-11-21 新华三技术有限公司 一种报文分流方法、装置、网络设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1992610A (zh) * 2005-12-31 2007-07-04 中国科学院计算技术研究所 具有硬件加速功能的智能以太网卡
CN103139253A (zh) * 2011-11-30 2013-06-05 华为技术有限公司 实现网卡卸载功能的方法、网卡、主机系统及网络设备
US20140317221A1 (en) * 2011-11-29 2014-10-23 Extoll Gmbh System, computer-implemented method and computer program product for direct communication between hardward accelerators in a computer cluster
CN104243412A (zh) * 2013-06-15 2014-12-24 深圳市振华微电子有限公司 网络数据处理终端及在其中处理网络数据的方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1554842A4 (en) * 2002-08-30 2010-01-27 Corporation Broadcom SYSTEM AND METHOD FOR TREATING FRAMES OUTSIDE THE ORDER
US8619558B1 (en) * 2008-07-21 2013-12-31 Qlogic, Corporation Memory management in a network adapter
CN102055671B (zh) * 2010-12-17 2014-05-21 曙光信息产业股份有限公司 一种多应用发包的优先级管理方法
CN102904729B (zh) * 2012-10-26 2018-05-01 曙光信息产业(北京)有限公司 根据协议、端口分流支持多应用的智能加速网卡
US9432487B2 (en) * 2014-08-04 2016-08-30 Futurewei Technologies, Inc. System and method for network protocol offloading in virtual networks
WO2017113306A1 (zh) * 2015-12-31 2017-07-06 华为技术有限公司 可扩展虚拟局域网报文发送方法、计算机设备和可读介质
CN107317759A (zh) * 2017-06-13 2017-11-03 国家计算机网络与信息安全管理中心 一种网卡的线程级动态均衡调度方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1992610A (zh) * 2005-12-31 2007-07-04 中国科学院计算技术研究所 具有硬件加速功能的智能以太网卡
US20140317221A1 (en) * 2011-11-29 2014-10-23 Extoll Gmbh System, computer-implemented method and computer program product for direct communication between hardward accelerators in a computer cluster
CN103139253A (zh) * 2011-11-30 2013-06-05 华为技术有限公司 实现网卡卸载功能的方法、网卡、主机系统及网络设备
CN104243412A (zh) * 2013-06-15 2014-12-24 深圳市振华微电子有限公司 网络数据处理终端及在其中处理网络数据的方法

Also Published As

Publication number Publication date
CN109992405B (zh) 2021-10-15
CN109992405A (zh) 2019-07-09
WO2019129167A1 (zh) 2019-07-04

Similar Documents

Publication Publication Date Title
CN109992405B (zh) 一种处理数据报文的方法和网卡
US10263788B2 (en) Systems and methods for providing a man-in-the-middle proxy
US9582463B2 (en) Heterogeneous input/output (I/O) using remote direct memory access (RDMA) and active message
US10778812B1 (en) Data encapsulation conversion and transmission
US20220224614A1 (en) Technologies for capturing processing resource metrics as a function of time
EP3563534B1 (en) Transferring packets between virtual machines via a direct memory access device
US11570100B2 (en) Data processing method, apparatus, medium and device
US11201838B2 (en) System, apparatus and method for increasing efficiency of link communications
US20220027208A1 (en) Method for controlling of accelerating edge platform network and electronic device using the same
US20200364080A1 (en) Interrupt processing method and apparatus and server
CN109478171B (zh) 提高openfabrics环境中的吞吐量
CN113986969A (zh) 数据处理方法、装置、电子设备和存储介质
CN104601645A (zh) 一种数据包处理方法及装置
US10877911B1 (en) Pattern generation using a direct memory access engine
WO2013147773A1 (en) Shared buffers for processing elements on a network device
US10255213B1 (en) Adapter device for large address spaces
US20150199298A1 (en) Storage and network interface memory share
CN114363432A (zh) 获取报文头信息、生成报文的方法、设备及存储介质
US11003616B1 (en) Data transfer using point-to-point interconnect
CN113422792A (zh) 数据传输方法、装置、电子设备及计算机存储介质
EP3631640B1 (en) Communication between field programmable gate arrays
US11636036B2 (en) Unified memory management for a multiple processor system
CN115102805B (zh) 虚拟隧道的处理方法、装置、计算机设备和存储介质
US11936635B2 (en) Method, electronic device, and program product implemented at an edge switch for data encryption
US11102150B2 (en) Communication apparatus and control method for communication apparatus

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination