CN114866625A - 数据包处理方法及相关产品 - Google Patents
数据包处理方法及相关产品 Download PDFInfo
- Publication number
- CN114866625A CN114866625A CN202210411412.9A CN202210411412A CN114866625A CN 114866625 A CN114866625 A CN 114866625A CN 202210411412 A CN202210411412 A CN 202210411412A CN 114866625 A CN114866625 A CN 114866625A
- Authority
- CN
- China
- Prior art keywords
- data packet
- information
- control information
- gro
- memory
- 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
Links
- 238000003672 processing method Methods 0.000 title abstract description 22
- 238000012545 processing Methods 0.000 claims abstract description 155
- 238000007781 pre-processing Methods 0.000 claims abstract description 33
- 239000000284 extract Substances 0.000 claims abstract description 11
- 238000000034 method Methods 0.000 claims description 36
- 238000004590 computer program Methods 0.000 claims description 12
- 238000000605 extraction Methods 0.000 claims description 2
- 239000002699 waste material Substances 0.000 abstract description 13
- 102100034221 Growth-regulated alpha protein Human genes 0.000 description 17
- 101001069921 Homo sapiens Growth-regulated alpha protein Proteins 0.000 description 17
- 238000010586 diagram Methods 0.000 description 17
- 230000006870 function Effects 0.000 description 17
- 102100039398 C-X-C motif chemokine 2 Human genes 0.000 description 15
- 101000889128 Homo sapiens C-X-C motif chemokine 2 Proteins 0.000 description 15
- 238000004891 communication Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9042—Separate storage for different parts of the packet, e.g. header and payload
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例提供一种数据包处理方法及相关产品,该数据包处理方法包括:协议处理单元从内存获得数据包,提取数据包的头部信息,根据头部信息生成控制信息,控制信息用于指示数据包是否可以进行通用接收卸载GRO处理;协议处理单元将控制信息写入第一存储器,直接内存访问DMA预处理单元用于从第一存储器获取控制信息。本申请实施例可以减少存储器的资源浪费。
Description
技术领域
本申请涉及通信技术领域,具体涉及一种数据包处理方法及相关产品。
背景技术
通用接收卸载(generic receive offload,GRO)是一种可以为网络协议栈减负的处理方法。其基本原理为将接收到的同一条流量的多个小数据包合成一个大的数据包,然后将大数据包传递给数据处理器,这样数据处理器只需要处理一个大数据包的头部信息而不用分多次去处理多个小数据包的头部信息,这有助于提高数据处理器的数据处理效率。然而,目前的GRO需要空间较大的存储器来存放四元组信息,造成存储器较大的资源浪费。
发明内容
本申请实施例提供一种数据包处理方法及相关产品,可以减少存储器的资源浪费。
本申请实施例的第一方面提供了一种数据包处理方法,所述方法包括:
协议处理单元从内存获得数据包,提取所述数据包的头部信息,根据所述头部信息生成控制信息,所述控制信息用于指示所述数据包是否可以进行通用接收卸载GRO处理;
所述协议处理单元将所述控制信息写入第一存储器,直接内存访问DMA预处理单元用于从所述第一存储器获取所述控制信息。
本申请实施例的第二方面提供了一种网卡芯片,包括内存、协议处理单元、直接内存访问DMA预处理单元和DMA处理单元、第一存储器和第二存储器;
所述协议处理单元,用于从所述内存获得数据包,提取所述数据包的头部信息,根据所述头部信息生成控制信息,所述控制信息用于指示所述数据包是否可以进行通用接收卸载GRO处理,以及用于指示所述数据包所属的流量编号;
所述协议处理单元,用于将所述控制信息写入所述第一存储器;
所述DMA预处理单元,用于从所述第一存储器获取所述控制信息,根据所述控制信息将可以进行GRO处理的流量编号相同的数据包链接在一起,得到属于同一流量的链接信息,将所述属于同一流量的链接信息写入所述第二存储器;
所述DMA处理单元,用于从所述第二存储器获取所述属于同一流量的链接信息,根据所述属于同一流量的链接信息执行GRO的DMA流程。
本申请实施例的第三方面提供了一种电子设备,包括本申请实施例第二方面所述的网卡芯片和主处理器;
所述网卡芯片,用于将在执行GRO的DMA流程的过程中将所述网卡芯片的内存中可以进行GRO处理的数据包搬迁到所述主处理器。
本申请实施例的第四方面提供了一种数据包处理装置,所述装置应用于协议处理单元,所述装置包括:
获得单元,用于从内存获得数据包;
提取单元,用于提取所述数据包的头部信息;
生成单元,用于根据所述头部信息生成控制信息,所述控制信息用于指示所述数据包是否可以进行通用接收卸载GRO处理;
写入单元,用于将所述控制信息写入第一存储器,预处理单元用于从所述第一存储器获取所述控制信息。
本申请实施例的第五方面提供了一种协网卡芯片,包括处理器和存储器,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如本申请实施例第一方面中的步骤指令。
本申请实施例的第六方面提供了一种计算机可读存储介质,其中,上述计算机可读存储介质存储用于电子数据交换的计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如本申请实施例第一方面中的步骤指令。
本申请实施例的第七方面提供了一种计算机程序产品,其中,上述计算机程序产品包括计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如本申请实施例第一方面中的步骤指令。
本申请实施例中,协议处理单元从内存获得数据包,提取所述数据包的头部信息,根据所述头部信息生成控制信息,所述控制信息用于指示所述数据包是否可以进行通用接收卸载GRO处理;所述协议处理单元将所述控制信息写入第一存储器,直接内存访问DMA预处理单元用于从所述第一存储器获取所述控制信息。本申请实施例的数据包处理方法,协议处理单元写入第一存储器的控制信息只需要指示数据包是否可以进行GRO处理,第一存储器无需写入该数据包的四元组信息,可以减少第一存储器的资源浪费。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种电子设备的结构示意图;
图2是本申请实施例提供的一种GRO的实现原理的示意图;
图3是本申请实施例提供的一种采用硬件+驱动的方式实现GRO的硬件架构示意图;
图4是本申请实施例提供的一种GRO表项的示意图;
图5是本申请实施例提供的另一种实现GRO的硬件架构示意图;
图6是本申请实施例提供的一种将GRO表项拆分为GRO1表项和GRO2表项的示意图;
图7是本申请实施例提供的一种数据包处理方法的流程示意图;
图8是本申请实施例提供的另一种数据包处理方法的流程示意图;
图9是本申请实施例提供的一种网卡芯片的结构示意图;
图10是本申请实施例提供的一种数据包处理装置的结构示意图;
图11是本申请实施例提供的一种网卡芯片的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本申请所描述的实施例可以与其它实施例相结合。
本申请实施例所涉及到的电子设备可以包括各种具有通信功能的手持设备、车载设备、可穿戴设备、计算设备或连接到无线调制解调器的其他处理设备,以及各种形式的用户设备(user equipment,UE),移动台(mobile station,MS)等等。
为了便于理解本申请实施例,首先提供一种电子设备。请参阅图1,图1是本申请实施例提供的一种电子设备的结构示意图。该电子设备可以包括网卡芯片10和主处理器20。
所述网卡芯片10,用于将在执行通用接收卸载(generic receive offload,GRO)的直接内存访问(direct memory access,DMA)流程的过程中将所述网卡芯片的内存中可以进行GRO处理的数据包搬迁到所述主处理器20。
通用接收卸载(generic receive offload,GRO)是一种可以为网络协议栈减负的处理方法。其基本原理为:网卡芯片10将接收到的属于同一条流量的多个小数据包合成一个大的数据包,然后将大数据包传递给主处理器20,这样主处理器20只需要处理一个大数据包的头部信息而不用分多次去处理多个小数据包的头部信息,这有助于提高主处理器20的数据处理效率。
请参阅图2,图2是本申请实施例提供的一种GRO的实现原理的示意图。GRO的基本实现原理如图2所示,网卡芯片10将接收的属于同一条流量的多个小数据(如图2中的数据包1、数据包2、…数据包n)合成一个新的大数据包(new large packet)。每个小数据包包括一个因特网协议(internet protocol,IP)头部(IP header)和一个载荷(payload)。新的大数据包包括一个新的IP头部(IP header)和多个小数据包的载荷(payload)。
一般来说,在一个系统中GRO可以只由软件驱动去完成,也可以采用硬件+软件的方式完成,本申请实施例以后一种实现方式为例进行说明。对于硬件+软件的实现方法,硬件实现(即为网卡芯片中实现)主要负责协议处理和直接内存访问(direct memoryaccess,DMA)。
请参阅图3,图3是本申请实施例提供的一种采用硬件+驱动的方式实现GRO的硬件架构示意图。如图3所示,图3中的硬件可以是图1中的网卡芯片,软件的处理步骤可以通过图1中的主处理器来实现。如图3所示,主处理器可以是应用处理器(applicationprocessor)。图3中的内存可以是双倍速率同步动态随机存储器(double data rate,DDR)。
协议处理单元(protocol processing unit)可以从硬件的内存获取(fetch)数据包,负责解析每个数据包(或报文)的头部信息,将数据包中的四元组等重要信息提取出来,这些信息决定了如何处理当前的数据包。
协议处理单元提取好信息(至少包括四元组信息)之后,需要将这些信息写入到FIFO-0中,然后DMA预处理单元中的GRO模块根据这些信息判断当前的报文属于哪一条流量,是否可以做GRO。为了完成这个功能,GRO模块需要维护多个表项,每个表项对应一条流量,表项里存放一些关键参数(如图4中的四元组信息、其他信息和DMA信息),将FIFO-0中的参数与每个表项中的参数进行对比即可确认当前的数据包属于哪一条流量并且可以判断出是否可以做GRO。对于那些能做GRO的数据包,由于中间很有可能会插入其他流量的数据包(如图3中其他头部和其他载荷组成的数据包),因此GRO模块需要将能做GRO的属于同一流量的多个数据包链接起来,以便软件驱动知道哪些流量是属于同一条数据流的GRO数据包。表项结构如图4所示。DMA预处理单元处理完之后会将相关的信息(如图4中的四元组信息、其他信息和DMA信息)写入到FIFO-1,DMA处理单元根据这些信息决定如何将数据报文从硬件的内存中搬迁到主处理器的内存中。
其中,FIFO指的是先入先出(first in first out,FIFO)存储器,具体可以是描述符先入先出存储器(descriptor first in first out,desc FIFO)。
其中,协议处理单元,DAM预处理单元,DMA处理单元可以集成在一个芯片(网卡芯片)中的。协议处理单元,DAM预处理单元,DMA处理单元都是硬件模块,均对应的实体的硬件,可以是将处理器划分的功能模块单元,实际上对应的一块集成电路。这些功能模块单元对应在C语言可以对应一个或多个函数。
其中,四元组信息可以包括:源IP地址、目的IP地址、源端口号、目的端口号。可以通过比较IP地址和端口号以及计算序列号可以确定是不是属于同一条流量,但是还不能确定能不能做GRO,其他信息可以用来进一步确定是否能做GRO。其他信息可以包括传输控制协议(transmission control protocol,TCP)协议里面的序列号。
DMA信息可以是记录传输GRO报文需要的一些必要信息。DMA信息可以包括:GRO数据包对应的DMA地址信息,还可以包括可以做GRO的属于同一流量的多个数据包的链接信息。
由于在GRO处理过程中,GRO模块需要实时知道DMA资源相关的信息,因此在以往的设计中往往会将GRO模块放在DMA预处理单元内。
现有技术的缺点在于协议处理单元需要将其提取出来的关键信息如四元组信息通过FIFO-0传递给DMA预处理单元,而四元组信息往往比较大,需要占用较多的资源。一般的设计中为了同时兼容IPv4和IPv6协议,四元组信息都会按IPv6协议去设计,如下表1所示。
表1
四元组信息 | 位宽 | 说明 |
SIP | 128bits | 源IP地址 |
DIP | 128bits | 目的IP地址 |
Sport | 16bits | 源端口号 |
Dport | 16bits | 目的端口号 |
从表1可以看出,四元组信息总共有288比特(bits),再考虑到FIFO-0的深度,一般会设置为一个较大的值,这是因为在芯片设计中为了节省功耗,DMA单元一般会设置为间歇性工作。这就需要FIFO-0的深度足够大。如果以深度设置为128为例,那么FIFO-0就需要有288*128=36.864Kbit的空间来存放四元组信息,这是非常多的资源消耗。
本申请实施例提供一种数据包处理方法及相关产品,协议处理单元从内存获得数据包,提取所述数据包的头部信息,根据所述头部信息生成控制信息,所述控制信息用于指示所述数据包是否可以进行通用接收卸载GRO处理;所述协议处理单元将所述控制信息写入第一存储器,直接内存访问DMA预处理单元用于从所述第一存储器(如上述FIFO-0)获取所述控制信息。本申请实施例的数据包处理方法,协议处理单元写入第一存储器(如上述FIFO-0)的控制信息只需要指示数据包是否可以进行GRO处理,第一存储器无需写入该数据包的四元组信息,可以减少第一存储器的资源浪费。
请参阅图5,图5是本申请实施例提供的另一种实现GRO的硬件架构示意图。如图5所示,与图3相比,图5新设计的硬件架构中,将GRO模块的功能进行了拆分,有一部分功能(GRO1模块)放在了协议处理单元实现,剩下的部分(GRO2模块)功能仍然放在DMA预处理单元中实现。模块功能的拆分带来的问题是增加了GRO模块的控制难度。为了解决这一问题,本申请实施例将GRO1模块设置为控制端,GRO1模块处理完后将一些控制信息通过FIFO-0传递给GRO2模块。而控制信息的位宽往往是比较小的,这样就可以减小FIFO-0的位宽了。
其中,协议处理单元,DAM预处理单元,DMA处理单元可以集成在一个芯片(网卡芯片)中的。协议处理单元,DAM预处理单元,DMA处理单元都是硬件模块,均对应的实体的硬件,可以是将处理器划分的功能模块单元,实际上对应的一块集成电路。这些功能模块单元对应在C语言可以对应一个或多个函数。
图5通过优化网卡芯片的硬件架构,优化各个单元的功能,可以使得设计更加合理,可以在每个单元之间传递的信息更少,才能达到省资源的效果。每个单元之间都会加上FIFO,由于每个模块不会干所有的事,每个模块处理完之后,会把信息通过FIFO传递给后面的模块,让后面的模块通过FIFO知道前面的模块干了些什么。通过优化网卡芯片的硬件架构,将原来在DMA预处理单元中部分功能转移到协议处理单元中,优化了网卡芯片的硬件架构之后,单元之间需要传递的东西就变少了,从而达到节约FIFO的资源的目的。
为了在协议处理单元中完成GRO1的功能,需要将GRO表项也进行拆分,拆分方式请参阅图6,图6是本申请实施例提供的一种将GRO表项拆分为GRO1表项和GRO2表项的示意图。如图6所示,四元组信息和部分其他信息(其他信息1)组成GRO1表项并放在GRO1模块中维护,DMA信息和部分其他信息(其他信息2)组成GRO2表项放在GRO2模块中维护。这样,在GRO1模块中就可以直接利用协议处理单元提取出的四元组与每一个GRO1表项中的四元组信息进行比较,再结合GRO1表项中的其他信息1就能够知道当前的数据包是否可以做GRO,如果可以做GRO当前的数据包是属于哪一条流量的。GRO1模块只需要将这些信息传递给GRO2模块即可。
通过前面的描述可以知道,GRO1模块只需要将是否可以做GRO和属于GRO中的哪一条流量作为控制信息传递给GRO2模块。对于是否可以做GRO只需要用1bit的信号来表示即可,而对于判断具体属于哪条流量则和GRO支持的表项个数有关(一个表项对应一条流量),如果以32个表项为例,那么只要用5bits就能够知道属于哪条流量。因此GRO1模块输出到desc fifo-0中的控制信息只需要6bits就够了,如表2所示。
表2
从表2可以看出,控制信息可以包括GRO_vld和GRO_table_idx,GRO_vld用于指示数据包是否可以进行GRO,GRO_vld为1,则表明当前数据包可以做GRO;GRO_vld为0,则表明当前数据包不可以做GRO。GRO_table_idx用于指示数据包所属的流量编号。
GRO2模块从FIFO-0中读取到控制信息后其处理流程如下:
GRO2模块根据控制信息中的GRO_vld可以确定数据包是否可以进行GRO;
如果该数据包可以进行GRO,则根据控制信息中的GRO_table_idx可以确定数据包所属的流量编号,更新相应的GRO2表项并按照GRO的DMA流程处理;
如果该数据包不可以进行GRO,则按照普通的DMA流程处理。
GRO的DMA流程,指的是可以将属于同一条流量的数据包链接在一起进行DMA流程的处理。普通的DMA流程,指的是对不能进行GRO的数据包单独进行DMA流程的处理。
可以看到,GRO2模块完全受GRO1模块的单向控制,其本身不再处理与协议信息相关的东西,而只是负责DMA相关的操作。
本申请实施例可以减少FIFO-0的资源消耗,通过前面的描述可以看到,相较于原有方案(表1),本申请实施例的方案(表2)节约的资源从288bits减少到6bits。如果以深度128为例计算,本申请实施例减少的资源总量为(288-6)*128=36.096Kbit,仅为原有方案的2.1%。FIFO-0的资源消耗从36.864Kbit降低至768bit,可以显著降低FIFO-0的资源消耗。
基于图5所示的硬件架构,提供了一种数据包处理方法,请参阅图7,图7是本申请实施例提供的一种数据包处理方法的流程示意图。如图7所示,该数据包处理方法可以包括如下步骤。
701,协议处理单元从内存获得数据包,提取数据包的头部信息,根据头部信息生成控制信息,控制信息用于指示数据包是否可以进行通用接收卸载GRO处理。
本申请实施例中,头部信息,可以是IP头部信息或TCP头部信息。头部信息可以包括四元组信息和其他头部信息。
控制信息可以包括1个比特,用于指示数据包是否可以进行GRO处理。比如,可以通过1指示可以进行GRO处理,通过0指示不可以进行GRO处理。又比如,可以通过0指示可以进行GRO处理,通过1指示不可以进行GRO处理。
可选的,所述头部信息包括四元组信息和其他头部信息,协议处理单元根据头部信息生成控制信息,包括:
(11)协议处理单元根据所述四元组信息和所述其他头部信息确定所述数据包是否可以进行GRO处理。
本申请实施例中,四元组信息可以包括:源IP地址、目的IP地址、源端口号、目的端口号。其他头部信息可以包括:传输控制协议(transmission control protocol,TCP)协议里面的序列号。其他头部信息还可以包括TCP协议、IP协议里面的一些信息。
协议处理单元根据四元组信息可以确定该数据包所属的流量,该数据包是不是连续的,能不能做GRO,进一步根据TCP序列号来确定。由于TCP序列号可以准确的保证传送的数据包的顺序,从而可以准确的判断数据包是否可以进行GRO处理(即,是否可以做GRO)。
本申请实施例中,可以在该数据包不可以进行GRO处理的情况,该控制信息仅用于指示该数据包是否可以进行GRO处理。在后续的该数据包的DMA处理过程中,由于该数据包不能做GRO,不需要将该数据包与其他属于同一流量的数据包链接起来,则不需要知道该数据包所属的流量编号,无需传输该数据包所属的流量编号,控制信息仅可以包含一个比特,可以进一步减少第一存储器的资源浪费。
702,协议处理单元将控制信息写入第一存储器,直接内存访问DMA预处理单元用于从第一存储器获取控制信息。
本申请实施例中,DMA预处理单元从第一存储器获取控制信息,可以根据控制信息确定该数据包是否可以进行GRO处理。如果该数据包不可以进行GRO处理,则按照普通的DMA流程处理。
本申请实施例中,协议处理单元、DMA预处理单元、第一存储器(参见图5所示的FIFO-0)可以参见图5的相关描述。
本申请实施例的数据包处理方法,协议处理单元写入第一存储器的控制信息只需要指示数据包是否可以进行GRO处理,最少只需要一个比特即可,第一存储器无需写入该数据包的四元组信息,可以大大减少第一存储器的资源浪费。
基于图5所示的硬件架构,提供了另一种数据包处理方法,请参阅图8,图8是本申请实施例提供的另一种数据包处理方法的流程示意图。如图8所示,该数据包处理方法可以包括如下步骤。
801,协议处理单元从内存获得数据包,提取数据包的头部信息,根据头部信息生成控制信息,控制信息用于指示数据包是否可以进行通用接收卸载GRO处理以及用于指示数据包所属的流量编号。
本申请实施例中,控制信息不仅可以用于指示是否可以进行GRO处理,还可以用于指示数据包所属的流量编号。本申请实施例无论该数据包是否可以进行GRO处理,控制信息都可以用于指示数据包是否可以进行GRO处理以及用于指示数据包所属的流量编号。
在一个可能的实施例中,在该数据包不可以进行GRO处理时,该控制信息可以仅指示数据包是否可以进行GRO处理;
在该数据包可以进行GRO处理时,该控制信息可以用于指示数据包是否可以进行GRO处理以及用于指示数据包所属的流量编号。
可以根据数据包是否可以做GRO处理,传输不同比特位的控制信息。比如,在该数据包不可以进行GRO处理时,传输一个比特的控制信息;在该数据包可以进行GRO处理时,传输至少2个比特的控制信息。一方面DMA预处理单元从第一存储器获取控制信息后,可以直接根据控制信息的比特位的数量来确定该数据包是否可以进行GRO处理,无需对控制信息中的比特进行识别,可以快速确定该数据包是否可以进行GRO。另一方面,在该数据包不可以进行GRO处理时,该控制信息可以仅指示数据包是否可以进行GRO处理,可以进一步减少第一存储器的资源浪费。
可选的,所述头部信息包括四元组信息和其他头部信息,协议处理单元根据头部信息生成控制信息,可以包括如下步骤:
(21)协议处理单元根据所述四元组信息和所述其他头部信息确定所述数据包是否可以进行GRO处理;
(22)协议处理单元根据所述四元组信息确定所述数据包所属的流量编号。
本申请实施例中,协议处理单元可以存储有每条流量对应的四元组信息,其中每条流量对应的四元组信息都不同。可以将该数据包的四元组信息与每条流量对应的四元组信息分别进行比对,从每条流量对应的四元组信息中找到与该数据包的四元组信息完全一样的四元组信息,即可找到该四元组信息对应的流量的流量编号。如果从每条流量对应的四元组信息中找不到与该数据包的四元组信息完全一样的四元组信息,则认为该数据包不属于任何一条流量。本申请实施例中,可以根据数据包的四元组信息准确的确定该数据包所属的流量编号。
上述步骤(21)的具体实施可以参见上述步骤(11),此处不再赘述。
可选的,所述协议处理单元存储每条流量对应的第一GRO表项(第一GRO表项可以是图6所示的GRO1表项);上述(22)中,协议处理单元根据所述四元组信息确定所述数据包所属的流量编号,可以包括如下步骤:
将所述四元组信息与每条流量对应的第一GRO表项中的四元组信息进行比较,将四元组信息匹配的第一GRO表项对应的流量编号作为所述数据包所属的流量编号。
本申请实施例中,每一条流量都可以对应一个第一GRO表项,每条流量对应的第一GRO表项都不同。如果哪条流量对应的第一GRO表项中的四元组信息与该数据包的四元组信息完全相同,则认为四元组信息匹配。举例来说,如果协议处理单元存储有32条流量对应的第一GRO表项,将该数据包的四元组信息分别与32条流量中每条流量对应的第一GRO表项中的四元组信息进行比较,找到四元组信息相同的第一GRO表项对应的流量编号,将该流量编号作为该数据包所属的流量编号。
可以通过数据包的四元组信息与每条流量的第一GRO表项中的四元组信息进行比较,可以快速的判断该数据包所属的流量编号。
可选的,协议处理单元在接收到该数据包对应的TCP序列号之后,可以在第一GRO表项中更新该数据包对应的TCP序列号。具体可以是图6的GRO1表项中的其他信息1中更新该数据包对应的TCP序列号。
802,协议处理单元将控制信息写入第一存储器,直接内存访问DMA预处理单元用于从第一存储器获取控制信息。
其中,步骤802的具体实施可以参见上述步骤702,此处不再赘述。
可选的,所述控制信息包括第一控制信息和第二控制信息,所述第一控制信息包括1个比特的控制信息,所述第二控制信息包括N个比特的控制信息,所述第一控制信息用于指示所述数据包是否可以进行通用接收卸载GRO处理,所述第二控制信息用于指示所述数据包所属的流量编号。
其中,N与协议处理单元存储的第一GRO表项的数量M有关。N与M满足如下关系:M=1或2时,N=1;M大于2时,2N-1<M≤2N。
下面结合表2来说明控制信息包括的比特的位数。第一控制信息可以是表2中的GRO_vld,GRO_vld仅包括1个比特。第二控制信息可以是表2中的GRO_table_idx,GRO_table_idx包括5个比特。GRO_vld用于指示数据包是否可以进行GRO,GRO_vld为1,则表明当前数据包可以做GRO;GRO_vld为0,则表明当前数据包不可以做GRO。GRO_table_idx用于指示数据包所属的流量编号。从表2可以看出,第一控制信息包括1个比特,第二控制信息包括5个比特。与需要在第一存储器中写入四元组信息相比,需要传输的数据量从288比特下降到6比特,显著减少了第一存储器的资源浪费。
本申请实施例的数据包处理方法,协议处理单元写入第一存储器的控制信息只需要指示数据包是否可以进行GRO处理以及指示该数据包所属的流量编号,第一存储器无需写入该数据包的四元组信息,可以减少第一存储器的资源浪费。
请参阅图9,图9是本申请实施例提供的一种网卡芯片的结构示意图。如图9所示,该网卡芯片10可以包括内存11、协议处理单元12、直接内存访问DMA预处理单元13和DMA处理单元14、第一存储器15和第二存储器16;
所述协议处理单元12,用于从所述内存11获得数据包,提取所述数据包的头部信息,根据所述头部信息生成控制信息,所述控制信息用于指示所述数据包是否可以进行通用接收卸载GRO处理,以及用于指示所述数据包所属的流量编号;
所述协议处理单元12,用于将所述控制信息写入所述第一存储器15;
所述DMA预处理单元13,用于从所述第一存储器15获取所述控制信息,根据所述控制信息将可以进行GRO处理的流量编号相同的数据包链接在一起,得到属于同一流量的链接信息,将所述属于同一流量的链接信息写入所述第二存储器16;
所述DMA处理单元14,用于从所述第二存储器16获取所述属于同一流量的链接信息,根据所述属于同一流量的链接信息执行GRO的DMA流程。
DMA预处理单元13根据所述控制信息将可以进行GRO处理的流量编号相同的数据包链接在一起,得到属于同一流量的链接信息。举例来说,比如编号为A,B,C,D的四条流量,假设ACD属于同一条数据流,B属于另一条数据流。那么在DMA信息中会记录A后面的是C,C后面是D,这就是所谓的链接。在判断ACD属于同一条之后,将ACD链接在一起,将这个链接信息在GRO2表项中更新。
图9所示的网卡芯片的数据处理流程的实现可以参见上述图5~图8所示的实施例,此处不再赘述。
DMA预处理单元13可以存储每个流量的第二GRO表项(第二GRO表项可以是图6所示的GRO2表项)。
可选的,DMA预处理单元13根据所述控制信息将可以进行GRO处理的流量编号相同的数据包链接在一起,得到属于同一流量的链接信息后,DMA预处理单元13可以在第二GRO表项中更新该链接信息。具体的,可以在图6的GRO2表项的DMA信息中更新该链接信息。
本申请实施例的网卡芯片可以应用在所有存在网卡的电子设备。比如,服务器、路由器、个人电脑、手机等存在网卡的电子设备。
本申请实施例中,协议处理单元写入第一存储器的控制信息只需要指示数据包是否可以进行GRO处理以及指示该数据包所属的流量编号,第一存储器无需写入该数据包的四元组信息,可以减少第一存储器的资源浪费。
上述主要从方法侧执行过程的角度对本申请实施例的方案进行了介绍。可以理解的是,电子设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所提供的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对电子设备进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
请参阅图10,图10是本申请实施例提供的一种数据包处理装置的结构示意图,该数据包处理装置1000应用于协议处理单元,该数据包处理装置1000可以包括获得单元1001、提取单元1002、生成单元1003和写入单元1004。
获得单元1001,用于从内存获得数据包;
提取单元1002,用于提取所述数据包的头部信息;
生成单元1003,用于根据所述头部信息生成控制信息,所述控制信息用于指示所述数据包是否可以进行通用接收卸载GRO处理;
写入单元1004,用于将所述控制信息写入第一存储器,预处理单元用于从所述第一存储器获取所述控制信息。
可选的,所述头部信息包括四元组信息和其他头部信息,所述生成单元1003根据所述头部信息生成控制信息,包括:根据所述四元组信息和所述其他头部信息确定所述数据包是否可以进行GRO处理。
可选的,所述头部信息包括四元组信息和其他头部信息,所述控制信息还用于指示所述数据包所属的流量编号,所述生成单元1003根据所述头部信息生成控制信息,包括:根据所述四元组信息和所述其他头部信息确定所述数据包是否可以进行GRO处理;根据所述四元组信息确定所述数据包所属的流量编号。
可选的,所述协议处理单元存储每条流量对应的第一GRO表项;所述生成单元1003根据所述四元组信息确定所述数据包所属的流量编号,包括:将所述四元组信息与每条流量对应的第一GRO表项中的四元组信息进行比较,将四元组信息匹配的第一GRO表项对应的流量编号作为所述数据包所属的流量编号。
可选的,所述控制信息包括第一控制信息和第二控制信息,所述第一控制信息包括1个比特的控制信息,所述第二控制信息包括N个比特的控制信息,所述第一控制信息用于指示所述数据包是否可以进行通用接收卸载GRO处理,所述第二控制信息用于指示所述数据包所属的流量编号。
其中,本申请实施例中的获得单元1001、提取单元1002、生成单元1003和写入单元1004可以是协议处理单元中的显示器。
图10所示的数据包处理装置1000的具体实施可以参见图7至图8所示的方法实施例,此处不再赘述。
本申请实施例中,协议处理单元写入第一存储器的控制信息只需要指示数据包是否可以进行GRO处理,第一存储器无需写入该数据包的四元组信息,可以减少第一存储器的资源浪费。
请参阅图11,图11是本申请实施例提供的一种网卡芯片的结构示意图,如图11所示,该协议处理单元1100包括处理器1101和存储器1102,处理器1101、存储器1102可以通过通信总线1103相互连接。通信总线1103可以是外设部件互连标准(peripheral componentinterconnect,PCI)总线或扩展工业标准结构(extended industry standardarchitecture,EISA)总线等。通信总线1103可以分为地址总线、数据总线、控制总线等。为便于表示,图11中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。存储器1102用于存储计算机程序,计算机程序包括程序指令,处理器1101被配置用于调用程序指令,上述程序包括用于执行图7~图8所示的方法中的部分或全部步骤。
处理器1101可以是通用中央处理器(CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制以上方案程序执行的集成电路。
存储器1102可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、只读光盘(compactdisc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。
本申请实施例中,网卡芯片中的处理器可以是图9中的协议处理器单元。网卡芯片中的存储器可以用于存储程序代码的存储器。
本申请实施例中,协议处理单元写入第一存储器的控制信息只需要指示数据包是否可以进行GRO处理,第一存储器无需写入该数据包的四元组信息,可以减少第一存储器的资源浪费。
本申请实施例还提供一种计算机可读存储介质,其中,该计算机可读存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任何一种数据包处理方法的部分或全部步骤。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在申请明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器、随机存取器、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种数据包处理方法,其特征在于,包括:
协议处理单元从内存获得数据包,提取所述数据包的头部信息,根据所述头部信息生成控制信息,所述控制信息用于指示所述数据包是否可以进行通用接收卸载GRO处理;
所述协议处理单元将所述控制信息写入第一存储器,直接内存访问DMA预处理单元用于从所述第一存储器获取所述控制信息。
2.根据权利要求1所述的方法,其特征在于,所述头部信息包括四元组信息和其他头部信息,所述根据所述头部信息生成控制信息,包括:
根据所述四元组信息和所述其他头部信息确定所述数据包是否可以进行GRO处理。
3.根据权利要求1所述的方法,其特征在于,所述头部信息包括四元组信息和其他头部信息,所述控制信息还用于指示所述数据包所属的流量编号,所述根据所述头部信息生成控制信息,包括:
根据所述四元组信息和所述其他头部信息确定所述数据包是否可以进行GRO处理;
根据所述四元组信息确定所述数据包所属的流量编号。
4.根据权利要求3所述的方法,其特征在于,所述协议处理单元存储每条流量对应的第一GRO表项;所述根据所述四元组信息确定所述数据包所属的流量编号,包括:
将所述四元组信息与每条流量对应的第一GRO表项中的四元组信息进行比较,将四元组信息匹配的第一GRO表项对应的流量编号作为所述数据包所属的流量编号。
5.根据权利要求4所述的方法,其特征在于,所述控制信息包括第一控制信息和第二控制信息,所述第一控制信息包括1个比特的控制信息,所述第二控制信息包括N个比特的控制信息,所述第一控制信息用于指示所述数据包是否可以进行通用接收卸载GRO处理,所述第二控制信息用于指示所述数据包所属的流量编号。
6.一种网卡芯片,其特征在于,包括内存、协议处理单元、直接内存访问DMA预处理单元和DMA处理单元、第一存储器和第二存储器;
所述协议处理单元,用于从所述内存获得数据包,提取所述数据包的头部信息,根据所述头部信息生成控制信息,所述控制信息用于指示所述数据包是否可以进行通用接收卸载GRO处理,以及用于指示所述数据包所属的流量编号;
所述协议处理单元,用于将所述控制信息写入所述第一存储器;
所述DMA预处理单元,用于从所述第一存储器获取所述控制信息,根据所述控制信息将可以进行GRO处理的流量编号相同的数据包链接在一起,得到属于同一流量的链接信息,将所述属于同一流量的链接信息写入所述第二存储器;
所述DMA处理单元,用于从所述第二存储器获取所述属于同一流量的链接信息,根据所述属于同一流量的链接信息执行GRO的DMA流程。
7.一种电子设备,其特征在于,包括如权利要求6所述的网卡芯片和主处理器;
所述网卡芯片,用于将在执行GRO的DMA流程的过程中将所述网卡芯片的内存中可以进行GRO处理的数据包搬迁到所述主处理器。
8.一种数据包处理装置,其特征在于,所述装置应用于协议处理单元,所述装置包括:
获得单元,用于从内存获得数据包;
提取单元,用于提取所述数据包的头部信息;
生成单元,用于根据所述头部信息生成控制信息,所述控制信息用于指示所述数据包是否可以进行通用接收卸载GRO处理;
写入单元,用于将所述控制信息写入第一存储器,预处理单元用于从所述第一存储器获取所述控制信息。
9.一种网卡芯片,其特征在于,包括处理器和存储器,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求1~5任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1~5任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210411412.9A CN114866625A (zh) | 2022-04-19 | 2022-04-19 | 数据包处理方法及相关产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210411412.9A CN114866625A (zh) | 2022-04-19 | 2022-04-19 | 数据包处理方法及相关产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114866625A true CN114866625A (zh) | 2022-08-05 |
Family
ID=82632230
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210411412.9A Pending CN114866625A (zh) | 2022-04-19 | 2022-04-19 | 数据包处理方法及相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114866625A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102160071A (zh) * | 2008-09-18 | 2011-08-17 | 艾利森电话股份有限公司 | 使用组权利的内容管理技术 |
US20180123943A1 (en) * | 2016-11-03 | 2018-05-03 | Futurewei Technologies, Inc. | Global Resource Orchestration System for Network Function Virtualization |
CN111083190A (zh) * | 2018-10-18 | 2020-04-28 | 三星电子株式会社 | 处理数据的方法和电子装置 |
CN112352404A (zh) * | 2018-07-13 | 2021-02-09 | 三星电子株式会社 | 用于处理电子设备的数据分组的装置和方法 |
WO2021230589A1 (ko) * | 2020-05-11 | 2021-11-18 | 삼성전자 주식회사 | 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법 |
-
2022
- 2022-04-19 CN CN202210411412.9A patent/CN114866625A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102160071A (zh) * | 2008-09-18 | 2011-08-17 | 艾利森电话股份有限公司 | 使用组权利的内容管理技术 |
US20180123943A1 (en) * | 2016-11-03 | 2018-05-03 | Futurewei Technologies, Inc. | Global Resource Orchestration System for Network Function Virtualization |
CN112352404A (zh) * | 2018-07-13 | 2021-02-09 | 三星电子株式会社 | 用于处理电子设备的数据分组的装置和方法 |
CN111083190A (zh) * | 2018-10-18 | 2020-04-28 | 三星电子株式会社 | 处理数据的方法和电子装置 |
WO2021230589A1 (ko) * | 2020-05-11 | 2021-11-18 | 삼성전자 주식회사 | 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8161364B1 (en) | Out of order checksum calculation for fragmented packets | |
CN110690943B (zh) | 数据编码方法、解码方法、编解码方法、设备及存储介质 | |
CN103188042B (zh) | 一种ip数据包的匹配方法和匹配加速器 | |
JP2002027023A (ja) | 無線データ送受信装置及びその方法 | |
CN112817602B (zh) | 一种json格式数据发送、接收方法、设备及介质 | |
CN102724122A (zh) | 基于硬件系统的串口可靠传输方法及装置 | |
CN114885045B (zh) | 一种在高速智能网卡/dpu内节约dma通道资源方法和装置 | |
CN113613289B (zh) | 一种蓝牙数据传输方法、系统及通信设备 | |
CN1988543A (zh) | 报文类型识别方法及装置、报文首部压缩方法及系统 | |
CN105469783A (zh) | 音频识别方法及装置 | |
CN115237500A (zh) | 一种池化平台的数据处理方法、装置、设备和介质 | |
CN1444378B (zh) | 超长短消息发送的方法 | |
CN114866625A (zh) | 数据包处理方法及相关产品 | |
CN106293542B (zh) | 一种文件解压缩的方法及装置 | |
CN113630125A (zh) | 数据压缩、编码解压缩方法、装置、电子设备及存储介质 | |
CN115913473B (zh) | 一种数据选择性重传方法及其系统、存储介质、电子设备 | |
CN111478864A (zh) | 数据包的处理方法、装置、电子设备及存储介质 | |
EP3110088B1 (en) | Packet data processing method, device and system | |
CN115801927A (zh) | 报文解析方法及装置 | |
CN114422617B (zh) | 一种报文处理方法、系统及计算机可读存储介质 | |
JP3524914B1 (ja) | チェックサム算出方法、チェックサム記録方法、およびその方法を利用可能な通信装置 | |
CN112187935B (zh) | 信息识别方法与只读内存 | |
CN110769049B (zh) | 一种配电终端及其soe数据上送方法 | |
CN111163100B (zh) | 数据结构、通信方法、装置、存储介质及设备 | |
CN113542445A (zh) | 一种地址转换方法、装置、设备及机器可读存储介质 |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20220805 |