一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种处理数据报文的方法和网卡与流程

2022-02-25 18:36:58 来源:中国专利 TAG:


1.本技术涉及通信领域,尤其涉及一种处理数据报文的方法和网卡。


背景技术:

2.随着网络业务的快速发展,网络中的流量急剧增加,为了实现对硬件资源的充分利用,虚拟化技术和云计算得到了越来越广泛的利用,这样一来,增加了中央处理器(central processing unit,cpu)的资源占用率。
3.为了降低cpu的负载,发展出一种网卡的硬件卸载(offloading)技术。网卡的offloading技术即将原本需要cpu进行处理的工作卸载到网卡上,由网卡进行处理。具备offloading功能的网卡需要对专有集成电路(application specific integrated circuit,asic)芯片重新流片,具有周期久,投入大,灵活度差等问题。
4.为了解决上述问题,一些厂商在网卡的asic芯片内部集成了精简指令集计算机(reduced instruction set computer,risc)或arm(acorn risc machine)类型的处理器,支持一定的可编程能力。但是内部集成的处理器的处理能力和可编程资源等有限,限制了网卡的性能,从而不能很好地降低cpu的负载。


技术实现要素:

5.本技术实施例提供一种处理数据报文的方法和网卡,能够解决网卡的性能有限导致的不能很好地降低cpu的负载的问题。
6.第一方面,本技术实施例提供一种处理数据报文的方法,应用于网卡,网卡包括加速接口,加速接口与可编程的集成电路连接,该方法包括:网卡接收待处理的数据报文;网卡通过加速接口将待处理的数据报文转发到可编程的集成电路,使可编程的集成电路根据预设的策略处理待处理的数据报文;网卡接收可编程的集成电路通过加速接口返回的处理后的数据报文;网卡发送处理后的数据报文。相比现有技术,网卡通过内部集成的处理器处理数据报文,由于内部集成的处理器的处理能力和可编程资源等有限,限制了网卡的性能,从而不能很好地降低cpu的负载。本技术实施例可以将接收到的待处理的数据报文,通过加速接口将待处理的数据报文转发到可编程的集成电路,使可编程的集成电路根据预设的策略处理待处理的数据报文,能够降低cpu的负载。其中,预设的策略可以根据网卡的应用场景灵活配置。同时,加速接口独立于系统侧接口和线路侧接口,专用于网卡与可编程的集成电路之间的信号通信,不影响系统侧接口和线路侧接口的功能。
7.在一种可能的实现方式中,网卡通过加速接口将待处理的数据报文转发到可编程的集成电路之前,该方法还包括:在网卡从线路侧接口接收待处理的数据报文的情况下,网卡确定待处理的数据报文与网卡上存储的策略列表中的协议关键字有对应关系;在网卡从系统侧接口接收待处理的数据报文的情况下,网卡确定待处理的数据报文匹配网卡上存储的流表。由此,网卡将待处理的数据报文转发到可编程的集成电路之前,可以确定待处理的数据报文是否满足预设的条件,预设的条件包括待处理的数据报文与网卡上存储的策略列
表中的协议关键字有对应关系,或待处理的数据报文匹配网卡上存储的流表。当待处理的数据报文满足预设的条件时,通过加速接口将待处理的数据报文转发到可编程的集成电路,可以更好的满足高性能,需要提供可编程加速能力的场景。
8.在一种可能的实现方式中,网卡确定待处理的数据报文与网卡上存储的策略列表中的协议关键字有对应关系包括:网卡获取待处理的数据报文的协议关键字;网卡确定网卡上存储的策略列表中是否存在待处理的数据报文的协议关键字;若网卡确定网卡上存储的策略列表中存在待处理的数据报文的协议关键字,网卡确定待处理的数据报文与网卡上存储的策略列表中的协议关键字有对应关系。由此,若网卡确定网卡上存储的策略列表中存在待处理的数据报文的协议关键字,网卡通过加速接口将待处理的数据报文转发到可编程的集成电路,使可编程的集成电路根据预设的策略处理待处理的数据报文,可以更好的满足高性能,需要提供可编程加速能力的场景。
9.在一种可能的实现方式中,网卡确定待处理的数据报文匹配网卡上存储的流表包括:网卡获取待处理的数据报文的头部信息;网卡确定流表的包头域是否匹配待处理的数据报文的头部信息;若网卡确定流表的包头域匹配待处理的数据报文的头部信息,网卡确定待处理的数据报文匹配网卡上存储的流表。由此,若网卡确定待处理的数据报文匹配网卡上存储的流表,网卡通过加速接口转发到可编程的集成电路,使可编程的集成电路根据预设的策略处理待处理的数据报文,可以更好的满足高性能,需要提供可编程加速能力的场景。
10.在一种可能的实现方式中,该方法还包括:在网卡从线路侧接口接收待处理的数据报文的情况下,网卡确定待处理的数据报文与网卡上存储的策略列表中的协议关键字没有对应关系;或在网卡从系统侧接口接收待处理的数据报文的情况下,网卡确定待处理的数据报文不匹配网卡上存储的流表;网卡处理待处理的数据报文。由此,若网卡确定待处理的数据报文不匹配网卡上存储的流表,可以由网卡处理待处理的数据报文,可以节省将数据报文转发到可编程的集成电路的开销,能够满足普通性能要求。
11.在一种可能的实现方式中,可编程的集成电路与存储设备连接,存储设备用于缓存待处理的数据报文,能够加强可编程的集成电路的处理性能。
12.第二方面,本技术实施例提供一种网卡,包括:接收单元,用于接收待处理的数据报文;加速接口,用于将待处理的数据报文转发到可编程的集成电路,使可编程的集成电路根据预设的策略处理待处理的数据报文;接收单元,还用于接收可编程的集成电路通过加速接口返回的处理后的数据报文;发送单元,用于发送处理后的数据报文。
13.在一种可能的实现方式中,还包括确定单元,用于:在网卡从线路侧接口接收待处理的数据报文的情况下,确定待处理的数据报文与网卡上存储的策略列表中的协议关键字有对应关系;在网卡从系统侧接口接收待处理的数据报文的情况下,确定待处理的数据报文匹配网卡上存储的流表。
14.在一种可能的实现方式中,在网卡从线路侧接口接收待处理的数据报文的情况下,确定单元用于:获取待处理的数据报文的协议关键字;确定网卡上存储的策略列表中是否存在待处理的数据报文的协议关键字;若确定网卡上存储的策略列表中存在待处理的数据报文的协议关键字,确定待处理的数据报文与网卡上存储的策略列表中的协议关键字有对应关系。
15.在一种可能的实现方式中,在网卡从系统侧接口接收待处理的数据报文的情况下,确定单元用于:获取待处理的数据报文的头部信息;确定流表的包头域是否匹配待处理的数据报文的头部信息;若确定流表的包头域匹配待处理的数据报文的头部信息,确定待处理的数据报文匹配网卡上存储的流表。
16.在一种可能的实现方式中,还包括处理单元,用于:在网卡从线路侧接口接收待处理的数据报文的情况下,通过确定单元确定待处理的数据报文与网卡上存储的策略列表中的协议关键字没有对应关系;或在网卡从系统侧接口接收待处理的数据报文的情况下,通过确定单元确定待处理的数据报文不匹配网卡上存储的流表;处理待处理的数据报文。
17.在一种可能的实现方式中,可编程的集成电路与存储设备连接,存储设备用于缓存待处理的数据报文。
18.第三方面,本发明实施例提供了一种网卡,该网卡以芯片的产品形态存在,该网卡的结构中包括处理器和存储器,该存储器用于与处理器耦合,保存该网卡必要的程序指令和数据,该处理器用于执行存储器中存储的程序指令,使得该网卡执行上述方法中网卡的功能。
19.第四方面,本发明实施例提供了一种网卡,该网卡可以实现上述方法中网卡所执行的功能,功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个上述功能相应的模块。
20.在一种可能的设计中,该网卡的结构中包括处理器和通信接口,该处理器被配置为支持该网卡执行上述方法中相应的功能。该通信接口用于支持该网卡与其他网元之间的通信。该网卡还可以包括存储器,该存储器用于与处理器耦合,其保存该网卡必要的程序指令和数据。
21.第五方面,本发明实施例提供一种网卡可读存储介质,包括指令,当其在网卡上运行时,使得网卡执行第一方面提供的任意一种方法。
22.第六方面,本发明实施例提供了一种包含指令的程序产品,当其在网卡上运行时,使得网卡执行第一方面提供的任意一种方法。
23.相比现有技术,网卡通过内部集成的处理器处理数据报文,由于内部集成的处理器的处理能力和可编程资源等有限,限制了网卡的性能,从而不能很好地降低cpu的负载。本技术实施例可以将接收到的待处理的数据报文,通过加速接口将待处理的数据报文转发到可编程的集成电路,使可编程的集成电路根据预设的策略处理待处理的数据报文,能够降低cpu的负载。其中,预设的策略可以根据网卡的应用场景灵活配置。同时,加速接口独立于系统侧接口和线路侧接口,专用于网卡与可编程的集成电路之间的信号通信,不影响系统侧接口和线路侧接口的功能。
附图说明
24.图1为本技术实施例提供的一种系统架构示意图;
25.图2为本技术实施例提供的一种网卡的内部结构示意图;
26.图3为本技术实施例提供的一种网卡、可编程的集成电路以及存储设备的连接示意图;
27.图4为本技术实施例提供的一种处理数据报文的方法的流程示意图;
28.图5为本技术实施例提供的一种处理数据报文的方法的流程示意图;
29.图6为本技术实施例提供的一种网卡的结构示意图;
30.图7为本技术实施例提供的一种网卡的结构示意图。
具体实施方式
31.为了下述各实施例的描述清楚简洁,首先给出相关概念或技术的简要介绍:
32.线路侧接口,即网卡用于接收其他网络设备发送的数据报文的接口。线路侧接口例如但不限于为,小型可插拔式(small form-factor,sfp)接口、四通道小型可插拔式(quad small form-factor pluggable,qsfp)接口或kr接口。
33.系统侧接口,即网卡用于接收cpu发送的数据报文的接口。系统侧接口例如但不限于为扩展的外部设备互连总线(pci(peripheral component interconnect)express,pcie)接口。
34.加速接口,独立于线路侧接口和系统侧接口,可以用于连接可编程的集成电路。加速接口例如但不限于为,pcie接口,同调汇流互连加速器(cache coherent interconnect for accelerators,ccix)接口,qsfp接口,40g平行物理接口(40gbps parallel physical interface,xlppi)接口或者qsfp接口。
35.本技术实施例提供一种处理数据报文的方法和网卡,可以应用于各种数据报文或数据包的处理场景中。例如,传输控制协议(transmission control protocol,tcp)/网际协议(internet protocol,ip)校验和(checksum)场景,ipsec(ip security)以及安全传输层协议(transport layer security protocol,tls)等加解密场景,tcp切片卸载(tcp segmentation offload,tso)场景,虚拟机队列(virtual machine queue,vmq)操作(steering)场景,rss(receive side scaling)操作场景,虚拟网络的通用路由封装(network virtualization using generic routing encapsulation,nvgre)、增强型虚拟局域网(virtual extensible local area network,vxlan)和通用虚拟网络封装(generic network virtualization encapsulation,geneve)等overlay网络卸载场景,以及远程直接数据存取(remote direct memory access,rdma)场景等。另外,还可以应用于数据平面开发套件(data plane development kit,dpdk),开源虚拟交换机(openvswitch,ovs)以及云硬盘(elastic volume service,evs)等处理场景中。
36.如图1所示,为本技术实施例提供的一种系统架构示意图,包括网络设备和外部设备(例如,交换机)。其中,网络设备包括网卡、存储器和cpu。网卡可以从线路侧接口接收交换机发送的数据报文,或从系统侧接口接收cpu发送的数据报文。
37.如图2所示,为本技术实施例提供的一种网卡的内部结构示意图。其中,网卡提供的系统侧接口用于连接cpu等主设备(host设备)。网卡提供的线路侧接口用于对接交换机或者其他网卡。网卡提供物理层、媒体接入控制(media access control,mac)层以及缓冲(buffer)等功能模块。可选的,网卡可以提供队列,发送引擎,接收引擎等功能模块。可选的,网卡提供内置的处理器,用于实现网卡内部资源管理,调度,网卡功能编程等。可选的,网卡提供存储器接口,如双倍速率同步动态随机存储器(double data rate,ddr)接口,用于扩展芯片buffer。
38.如图3所示,网卡包括加速接口,用于连接可编程的集成电路。网卡可以将待处理
的数据报文转发到可编程的集成电路,使可编程的集成电路根据预设的策略处理待处理的数据报文。在一种可能的设计中,可编程的集成电路与存储设备连接,存储设备用于缓存待处理的数据报文。需要说明的是,加速接口和系统侧接口或线路侧接口无关,也就是说,加速接口不影响现有的系统侧接口或线路侧接口的功能。
39.本技术实施例提供一种处理数据报文的方法,以网卡从线路侧接口接收待处理的数据报文为例进行说明,如图4所示,包括:
40.401、网卡从线路侧接口接收待处理的数据报文。
41.即网卡从线路侧接口接收外部设备发送的待处理的数据报文。
42.举例来说,待处理的数据报文可以是根据ipsec协议封装的数据报文,ipsec封装的数据报文是经过加密的数据报文,需要进行解密处理。
43.402、网卡确定待处理的数据报文与网卡上存储的策略列表中的协议关键字是否有对应关系。
44.具体的,网卡获取待处理的数据报文的协议关键字;网卡确定网卡上存储的策略列表中是否存在待处理的数据报文的协议关键字;若网卡确定网卡上存储的策略列表中存在待处理的数据报文的协议关键字,网卡确定待处理的数据报文与网卡上存储的策略列表中的协议关键字有对应关系。
45.示例性的,网卡上存储的策略列表可以包括多种协议关键字,协议关键字用于指示协议类型,如表1所示:
46.表1
47.协议类型协议关键字ipsec协议ipsectls协议tls............ip协议ip
48.待处理的数据报文的协议关键字指明了待处理的数据包的协议类型。举例来说,当待处理的数据报文是根据ipsec封装的数据报文时,数据报文的协议关键字可以是ipsec类型。当网卡确定网卡上存储的策略列表中的协议关键字包括ipsec类型时,网卡确定待处理的数据报文与网卡上存储的策略列表中的协议关键字有对应关系。
49.若网卡确定待处理的数据报文与网卡上存储的策略列表中的协议关键字有对应关系,执行步骤403、404和406。
50.若网卡确定待处理的数据报文与网卡上存储的策略列表中的协议关键字没有对应关系,执行步骤405和406。
51.403、网卡通过加速接口将待处理的数据报文转发到可编程的集成电路,使可编程的集成电路根据预设的策略处理待处理的数据报文。
52.其中,可编程的集成电路可以包括现场可编程门阵列(field-programmable gate array,fpga)、asic或可编程逻辑器件(programmable logic device,pld),本技术对此不进行限定。
53.可编程的集成电路接收到网卡通过加速接口发送的待处理的数据报文时,可以根据预设的策略处理待处理的数据报文。其中,预设的策略可以根据网卡的应用场景灵活配
置。例如,当待处理的数据报文是ipsec封装的数据报文时,可编程的集成电路可以对ipsec封装的数据报文进行解密处理。
54.可选的,可编程的集成电路支持外接存储设备,存储设备可以缓存待处理的数据报文。存储设备可以为随机存取存储器(random access memory,ram)、动态随机存取存储器(dynamic random access memory,dram),可擦除可编程只读寄存器(erasable programmable read only memory,eprom)等中的一种或多种,本技术不做限定。
55.404、网卡接收可编程的集成电路通过加速接口返回的处理后的数据报文。
56.即可编程的集成电路根据预设的策略处理待处理的数据报文完成后,可以将处理后的数据报文返回给网卡,以便网卡将处理后的数据报文发送给cpu。
57.405、网卡处理待处理的数据报文。
58.即当网卡确定待处理的数据报文与网卡上存储的策略列表中的协议关键字没有对应关系时,网卡不向可编程的集成电路发送待处理的数据报文,网卡可以自行处理待处理的数据报文。
59.举例来说,当待处理的数据报文不是根据ipsec封装的数据报文时,网卡可以不向可编程的集成电路发送待处理的数据报文,网卡可以自行处理待处理的数据报文。
60.406、网卡发送处理后的数据报文。
61.在一种可能的设计中,网卡可以通过pcie接口向cpu发送处理后的数据报文,以便cpu对该处理后的数据报文进一步处理。
62.在一种可能的设计中,网卡可以产生中断,通过直接内存访问(direct memory access,dma)将处理后的数据报文发送给cpu管理的内存。
63.相比现有技术,网卡通过内部集成的处理器处理数据报文,由于内部集成的处理器的处理能力和可编程资源等有限,限制了网卡的性能,从而不能很好地降低cpu的负载。本技术实施例可以将接收到的待处理的数据报文,通过加速接口转发到可编程的集成电路,使可编程的集成电路根据预设的策略处理待处理的数据报文,能够降低cpu的负载。其中,预设的策略可以根据网卡的应用场景灵活配置。同时,加速接口独立于系统侧接口和线路侧接口,专用于网卡和可编程的集成电路的信号通信,不影响系统侧接口和线路侧接口的功能。
64.在一种可能的设计中,在网卡从线路侧接口接收待处理的数据报文的情况下,网卡确定待处理的数据报文与网卡上存储的策略列表中的协议关键字是否有对应关系,若网卡确定待处理的数据报文与网卡上存储的策略列表中的协议关键字有对应关系,网卡通过加速接口转发到可编程的集成电路,使可编程的集成电路根据预设的策略处理待处理的数据报文,可以更好的满足高性能,需要提供可编程加速能力的场景。若网卡确定待处理的数据报文与网卡上存储的策略列表中的协议关键字没有对应关系,网卡自行处理待处理的数据报文,可以节省将数据报文转发到可编程的集成电路的开销,能够满足普通性能要求。
65.本技术的又一实施例提供一种处理数据报文的方法,以网卡从系统侧接收待处理的数据报文为例进行说明,如图5所示,包括:
66.501、网卡从系统侧接口接收待处理的数据报文。
67.即网卡从系统侧接口接收cpu发送的待处理的数据报文。
68.举例来说,待处理的数据报文可以是需要进行ipsec协议封装的数据报文,也就是
说,待处理的数据报文需要进行加密处理。
69.502、网卡确定待处理的数据报文是否匹配网卡上存储的流表。
70.具体的,网卡获取待处理的数据报文的头部信息;网卡确定流表的包头域是否匹配待处理的数据报文的头部信息;若网卡确定流表的包头域匹配待处理的数据报文的头部信息,网卡确定待处理的数据报文匹配网卡上存储的流表。
71.示例性的,网卡上存储的流表的包头域可以包括输出端口、传输协议和目的ip地址,如表2所示:
72.表2
73.输出端口传输协议目的ip地址端口1ipsec223.255.14.151..................端口2tls223.255.14.152
74.待处理的数据报文的头部信息包括待处理的数据报文对应的输出端口、传输协议和目的ip地址。
75.举例来说,假设网卡上存储的流表的包头域如表2所示,那么当网卡确定待处理的数据报文对应的输出端口为端口1、目的ip地址为223.255.14.151时,网卡确定待处理的数据报文的传输协议为ipsec,从而确定待处理的数据报文匹配网卡上存储的流表。
76.若网卡确定待处理的数据报文匹配网卡上存储的流表,执行步骤503、504和506。
77.若网卡确定待处理的数据报文不匹配网卡上存储的流表,执行步骤505和506。
78.503、网卡通过加速接口将待处理的数据报文转发到可编程的集成电路,使可编程的集成电路根据预设的策略处理待处理的数据报文。
79.其中,可编程的集成电路可以为fpga、asic或pld,本技术对此不作限定。
80.可编程的集成电路接收到网卡通过加速接口发送的待处理的数据报文时,可以根据预设的策略处理待处理的数据报文。例如,当待处理的数据报文是需要进行ipsec封装的数据报文时,可编程的集成电路可以对待处理的数据报文进行加密处理。
81.可选的,可编程的集成电路支持外接存储设备,存储设备可以缓存待处理的数据报文。存储设备可以为ram,dram,eprom等,本技术不做限定。
82.504、网卡接收可编程的集成电路通过加速接口返回的处理后的数据报文。
83.即可编程的集成电路根据预设的策略处理待处理的数据报文完成后,可以将处理后的数据报文返回给网卡,以便网卡将处理后的数据报文发送给外部设备或cpu。
84.505、网卡处理待处理的数据报文。
85.即当网卡确定待处理的数据报文不匹配网卡上存储的流时,网卡不向可编程的集成电路发送待处理的数据报文,网卡可以自行处理待处理的数据报文。
86.506、网卡发送处理后的数据报文。
87.即网卡可以通过线路侧接口直接向外部设备转发处理后的数据报文。
88.相比现有技术,网卡通过内部集成的处理器处理数据报文,由于内部集成的处理器的处理能力和可编程资源等有限,限制了网卡的性能,从而不能很好地降低cpu的负载。本技术实施例可以将接收到的待处理的数据报文,通过加速接口转发到可编程的集成电路,使可编程的集成电路根据预设的策略处理待处理的数据报文,能够降低cpu的负载。其
memory,eeprom)、只读光盘(compact disc read-only memory,cd-rom)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由网卡存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。
99.其中,存储器703用于存储执行本技术方案的应用程序代码,并由处理器701来控制执行。处理器701用于执行存储器703中存储的应用程序代码,从而实现本技术方法中的功能。
100.在具体实现中,作为一种实施例,处理器701可以包括一个或多个cpu,例如图7中的cpu0和cpu1。
101.在具体实现中,作为一种实施例,网卡700可以包括多个处理器,例如图7中的处理器701和处理器705。这些处理器中的每一个可以是一个单核(single-cpu)处理器,也可以是一个多核(multi-cpu)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如网卡程序指令)的处理核。
102.上述的网卡700可以是一个通用网卡或者是一个专用网卡。在具体实现中,网卡700可以是台式机、便携式电脑、服务器、存储设备、网络设备、掌上电脑(personal digital assistant,pda)、移动手机、平板电脑、无线终端设备、通信设备、嵌入式设备或有图7中类似结构的设备。本技术实施例不限定网卡700的类型。
103.结合本技术公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于ram、闪存、rom、eprom、eeprom、寄存器、硬盘、移动硬盘、只读光盘或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于asic中。另外,该asic可以位于核心网接口设备中。当然,处理器和存储介质也可以作为分立组件存在于核心网接口设备中。
104.本领域技术人员应该可以意识到,在上述一个或多个示例中,本技术所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在网卡可读介质中或者作为网卡可读介质上的一个或多个指令或代码进行传输。网卡可读介质包括网卡存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送网卡程序的任何介质。存储介质可以是通用或专用网卡能够存取的任何可用介质。
105.以上所述的具体实施方式,对本技术的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本技术的具体实施方式而已,并不用于限定本技术的保护范围,凡在本技术的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本技术的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献