CN111506541A - 一种嵌入式网络设备中加速网络数据包处理的方法及系统 - Google Patents
一种嵌入式网络设备中加速网络数据包处理的方法及系统 Download PDFInfo
- Publication number
- CN111506541A CN111506541A CN202010606097.6A CN202010606097A CN111506541A CN 111506541 A CN111506541 A CN 111506541A CN 202010606097 A CN202010606097 A CN 202010606097A CN 111506541 A CN111506541 A CN 111506541A
- Authority
- CN
- China
- Prior art keywords
- pbuf
- tcp
- pointer
- data structure
- header
- 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.)
- Granted
Links
- 238000012545 processing Methods 0.000 title claims abstract description 96
- 238000000034 method Methods 0.000 title claims abstract description 33
- 238000001914 filtration Methods 0.000 claims description 10
- 238000012986 modification Methods 0.000 claims description 10
- 230000004048 modification Effects 0.000 claims description 10
- 230000015654 memory Effects 0.000 abstract description 22
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000013507 mapping Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000005641 tunneling Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/781—On-chip cache; Off-chip memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- 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/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
Abstract
本申请公开了一种嵌入式网络设备中加速网络数据包处理的方法。步骤S10:采用p指针来指示TCP/IP数据包的真正的存储空间。步骤S20:拷贝该TCP/IP数据包的三个头部到片上缓存,采用q指针来指示三个头部在片上缓存的存储空间。步骤S30:重构pbuf链,修改pbuf数据结构q指针和p指针。步骤S40:使用新的pbuf链进行该TCP/IP数据包的处理。步骤S50:把位于片上缓存的的三个头部拷贝并覆盖到真正的存储空间中的三个头部的存储位置,并在q指针中删除指向p指针。步骤S60:删除pbuf数据结构q指针,释放片上缓存;重构pbuf数据结构p指针。步骤S70:删除pbuf数据结构p指针,释放该TCP/IP数据包的真正的存储空间。本申请利用片上缓存来缓存TCP/IP数据包的头部,加快了TCP/IP数据包的处理速度。
Description
技术领域
本申请涉及一种网络设备对TCP/IP数据包的处理方法。
背景技术
以路由器为典型代表的嵌入式网络设备中,最基础的操作就是TCP/IP数据包(data packet)的转发、过滤、防火墙、以及NAT(network address translation,网络地址转换)处理。TCP/IP数据包可能需要经过不同的接口、不同的模块处理。对于单个数据包,处理的时间越短、处理的路径越短,必然带来系统整体吞吐率的提高。为此,设计了各种加速数据包处理的方法。例如内存池(memory pool)的设计用来实现内存快速分配。又如fastpath(快速路径)的设计用来实现快速转发。
嵌入式系统(embedded system)中存在多种存储器,比如RAM(randomaccessmemory,随机存取存储器)、ROM(read-only memory,只读存储器)、以及特定的内存池。嵌入式系统中还有一块特殊的存储器称为片上缓存(on-chip cache),即嵌入式系统主SoC(System on a Chip,单片系统)芯片的片上存储器。按照访问速度排序的话,片上缓存是访问速度最快的,其次是预分配的内存池,接下来是RAM,最后是ROM。但是片上缓存一般都很小,通常为几百KB的量级,用于做TCP/IP数据包的内存分配空间显然是不够的。所以很少有系统考虑直接拿片上缓存来做网络数据包处理。
发明内容
本申请所要解决的技术问题是提出一种对TCP/IP数据包的处理方法,利用片上缓存来缓存TCP/IP数据包的头部,加速数据访问,提高数据包处理速度,从而提高系统整体的吞吐率。
为解决上述技术问题,本申请提出了一种嵌入式网络设备中加速网络数据包处理的方法,包括如下步骤。步骤S10:从网络接口接收一个TCP/IP数据包,采用一个pbuf数据结构p指针来指示该TCP/IP数据包的真正的存储空间。步骤S20:拷贝该TCP/IP数据包的三个头部到片上缓存,采用一个pbuf数据结构q指针来指示该TCP/IP数据包的三个头部在片上缓存的存储空间;所述三个头部是指以太网头部、IPv4头部或IPv6头部、TCP头部或UDP头部。步骤S30:重构pbuf链,在pbuf数据结构q指针中记录pbuf链中的下一个pbuf数据结构为pbuf数据结构p指针。还修改pbuf数据结构q指针;pbuf数据结构q指针的tot_len字段设置为pbuf数据结构p指针的tot_len字段的内容;pbuf数据结构q指针的len字段设置为该TCP/IP数据包的三个头部在片上缓存的长度,也就是拷贝长度。还修改pbuf数据结构p指针;pbuf数据结构p指针的净荷修改为跳过拷贝长度的位置;pbuf数据结构p指针的tot_len以及len字段均修改为减去拷贝长度的值。步骤S40:使用新的pbuf链进行该TCP/IP数据包的处理;该TCP/IP数据包处理过程中,对三个头部的处理直接访问的是片上缓存的三个头部,而不是该TCP/IP数据包的三个头部原来的存储位置的三个头部。步骤S50:完成处理需要转发接口或者转发应用之前,把位于片上缓存的该TCP/IP数据包的三个头部拷贝并覆盖到该TCP/IP数据包真正的存储空间中的三个头部的存储位置,同时在pbuf数据结构q指针中删除下一个pbuf数据结构为pbuf数据结构p指针的记载。步骤S60:在pbuf链中删除pbuf数据结构q指针,释放片上缓存用于保存该TCP/IP数据包的三个头部的存储空间;重构pbuf数据结构p指针,这是指将pbuf数据结构p指针的净荷修改为包含拷贝长度的位置;pbuf数据结构p指针的tot_len以及len字段均修改为包含拷贝长度的值。步骤S70:对该TCP/IP数据包或者进行转发、或者送入应用模块处理,随后删除pbuf数据结构p指针,释放该TCP/IP数据包所占用的真正的存储空间。上述方法利用片上缓存来缓存TCP/IP数据包的三个头部,加快了TCP/IP数据包的处理速度。
进一步地,所述步骤S20中,根据该TCP/IP数据包的IP头部是IPv4头部还是IPv6头部来设置需要拷贝的长度;所述需要拷贝的长度至少为该TCP/IP数据包的以太网头部的长度+IPv4头部基础头部或IPv6头部的基础头部的长度+TCP头部基础头部或UDP头部的基础头部的长度之和。这是如何设置“拷贝长度”的具体说明。在一些特定的应用场景中,如果TCP/IP数据包的三个头部不是基础头部,那么根据三个头部的实际长度总和作为设置“拷贝长度”的下限值。
进一步地,所述步骤S40中,所述对TCP/IP数据包的处理包括以太网包的处理、IPv4头部或IPv6头部头部的检查和处理、TCP头部或UDP头部的检查和处理。这是一些常规的对网络数据包的处理操作。
进一步地,所述步骤S40中,所述对TCP/IP数据包的处理还包括中间模块对TCP/IP数据包的处理;所述中间模块包括防火墙模块、IP过滤模块、NAT模块的任意一种或多种。这是另一些常见的对网络数据包的处理操作。
进一步地,所述步骤S40中,如果中间模块未修改该TCP/IP数据包位于片上缓存的头部,则省略步骤S50中的拷贝并覆盖的操作,但保留在pbuf数据结构q指针中删除下一个pbuf数据结构为pbuf数据结构p指针的记载。在满足特定条件时,可以省略步骤S50中的部分操作,从而简化了整个处理流程。
进一步地,所述步骤S40中,如果中间模块修改了该TCP/IP数据包位于片上缓存的头部,则修改步骤S50为步骤S55。步骤S55:把位于片上缓存的该TCP/IP数据包的三个头部的修改部分的数据拷贝到该TCP/IP数据包真正的存储空间中相对应的部分并覆盖,并在pbuf数据结构q指针中删除下一个pbuf数据结构为pbuf数据结构p指针的记载。在满足特定条件时,可以将步骤S50简化为步骤S55(仅需拷贝并覆盖部分数据),从而简化了整个处理流程。
本申请还提出了一种嵌入式网络设备中加速网络数据包处理的系统,包括指示单元、缓存单元、重构单元、处理单元、合并单元、缓存释放单元和存储释放单元。所述指示单元从网络接口接收TCP/IP数据包,并采用一个pbuf数据结构p指针来指示该TCP/IP数据包的真正的存储空间。所述缓存单元拷贝该TCP/IP数据包的三个头部到片上缓存,并采用一个pbuf数据结构q指针来指示该TCP/IP数据包的三个头部在片上缓存的存储空间;所述三个头部是指以太网头部、IPv4头部或IPv6头部、TCP头部或UDP头部。所述重构单元重构pbuf链,在pbuf数据结构q指针中记录pbuf链中的下一个pbuf数据结构为pbuf数据结构p指针;所述重构单元还修改pbuf数据结构q指针;pbuf数据结构q指针的tot_len字段设置为pbuf数据结构p指针的tot_len字段的内容;pbuf数据结构q指针的len字段设置为该TCP/IP数据包的三个头部在片上缓存的长度,也就是拷贝长度;所述重构单元还修改pbuf数据结构p指针;pbuf数据结构p指针的净荷修改为跳过拷贝长度的位置;pbuf数据结构p指针的tot_len以及len字段均修改为减去拷贝长度的值。所述处理单元使用重构单元生成的新的pbuf链进行该TCP/IP数据包的处理;该TCP/IP数据包处理过程中,对三个头部的处理直接访问的是片上缓存的三个头部,而不再是该TCP/IP数据包的三个头部原来的存储位置的三个头部。所述合并单元把位于片上缓存的该TCP/IP数据包的三个头部拷贝并覆盖到该TCP/IP数据包真正的存储空间中的三个头部的存储位置,并在pbuf数据结构q指针中删除下一个pbuf数据结构为pbuf数据结构p指针的记载。所述缓存释放单元删除pbuf数据结构q指针,释放片上缓存用于保存该TCP/IP数据包的三个头部的存储空间,重构pbuf数据结构p指针,这是指将pbuf数据结构p指针的净荷修改为包含拷贝长度的位置;pbuf数据结构p指针的tot_len以及len均修改为包含拷贝长度的值。所述存储释放单元对该TCP/IP数据包或者进行转发、或者送入应用模块处理,随后删除pbuf数据结构p指针,释放该TCP/IP数据包所占用的真正的存储空间。上述系统利用片上缓存来缓存TCP/IP数据包的三个头部,加快了TCP/IP数据包的处理速度。
进一步地,所述处理单元为中间模块,所述中间模块包括防火墙模块、IP过滤模块、NAT模块的任意一个或多个。这是处理单元的一些常见的类型。
进一步地,如果中间模块未修改该TCP/IP数据包位于片上缓存的头部,则所述合并单元省略拷贝并覆盖的操作,但保留在pbuf数据结构q指针中删除下一个pbuf数据结构为pbuf数据结构p指针的记载。在满足特定条件时,可以省略合并单元的部分操作,从而简化了整个处理流程。
进一步地,如果中间模块修改了该TCP/IP数据包位于片上缓存的头部,则所述合并单元改为把位于片上缓存的该TCP/IP数据包的三个头部的修改部分的数据拷贝到该TCP/IP数据包真正的存储空间中相对应的部分并覆盖,并在pbuf数据结构q指针中删除下一个pbuf数据结构为pbuf数据结构p指针的记载。在满足特定条件时,可以简化合并单元的操作(仅需拷贝并覆盖部分数据),从而简化了整个处理流程。
本申请取得的技术效果包括如下几个方面。
第一,嵌入式网络设备最常规的也是最主要的处理任务是对网络数据包的三个头部的处理,嵌入式系统中访问速度最快的存储器是片上缓存,本申请把这两者结合,创新性地提出利用片上缓存来缓存TCP/IP的三个头部的方法,加速数据访问,提高网络数据包处理速度,从而提高系统整体的吞吐率。
第二,利用高速的片上缓存加速TCP/IP数据包,处理过程实施简单,对现有的各种内存优化方案兼容,不影响现有的处理流程,也并不修改内存分配方式,可以做到较少的代码实现加速方案。
第三,对于转发的数据包,前期完成一次片上缓存对网络数据包的三个头部缓存后,后续的三个头部处理过程完全无感知,虽然处理流程并没有变化,但得益于片上缓存的高速访问速度,处理速度得到明显改善。
附图说明
图1是嵌入式网络设备使用的RTOS系统的典型实现框图。
图2是基本的TCP/IP数据包的格式的示意图。
图3是本申请提出的嵌入式网络设备中加速网络数据包处理的方法的流程图。
图4是本申请处理网络数据包的数据流向及位置示意图。
图5是本申请提出的嵌入式网络设备中加速网络数据包处理的系统的结构示意图。
图中附图标记说明:10为指示单元;20为缓存单元;30为重构单元;40为处理单元;50为合并单元;60为缓存释放单元;70为存储释放单元。
具体实施方式
嵌入式网络设备出于成本和功耗的考虑,一般采用RTOS系统(Real-timeoperating system,实时操作系统),配合嵌入式系统专用的TCP/IP协议栈实现。RTOS系统中任务的调度一般采用线程(thread)的方式。存储器对所有线程是共享的,这也包括了片上缓存空间。lwIP(lightweight IP,轻量IP)是一个开源的TCP/IP协议栈,其特点是在保持TCP/IP协议主要功能的基础上减少对RAM的占用,只需十几KB的RAM和40KB左右的ROM就可以运行,这使LwIP协议栈适合在硬件资源有限的嵌入式系统中使用,因而在嵌入式系统开发中得到广泛应用。本申请适用于采用RTOS系统以及lwIP协议栈的嵌入式网络设备,特别适用于基于LwIP协议栈的RTOS系统的无线路由器。
请参阅图1,这是嵌入式网络设备使用的RTOS系统的典型实现框图。嵌入式网络设备中一般具有多个LAN(Local Area Network,局域网)接口以及至少一个WAN(Wide AreaNetwork,广域网)接口。LAN接口简称为LAN口,WAN接口简称为WAN口。这些LAN口通过RTOS系统中的报文处理主线程共享单个或多个WAN接口接入Internet网络。每个LAN口可用于连接一台接入设备。WAN口可用于连接网络出口设备。
如图1所示,基于RTOS系统的网络设备具有多个网络接口,每个接口可能对应不同的接入协议。网络设备完成的功能主要有数据转发、防火墙、IP地址过滤、NAT处理等。通过分析TCP/IP数据包可以发现,绝大多数的处理任务集中在TCP/IP数据包的头部,只有特殊的功能比如VPN(virtual private network,虚拟专用网)处理需要对TCP/IP数据包的数据部分进行处理。
请参阅图2,最基础的TCP/IP数据包的格式依次包括以下几个部分。
——以太网(ethernet)头部,长度是固定的。
——IP头部,分为IPv4头部和IPv6头部,基础头部格式固定。
——TCP或UDP头部,基本头部格式固定。
——净荷(payload),长度不固定。
具备基础头部的TCP/IP数据包是大多数场景下最常见的TCP/IP数据包格式,而前三个头部为基础头部时长度固定,这就为只拷贝TCP/IP数据包的头部的方案提供了可能。为了兼容一些特殊使用场景,比如GRE(generic routing encapsulation,通用路由封装)隧道协议,可以在三个基础头部总和的长度基础上增加一定大小的余量空间,具体的大小可以根据片上缓存的使用大小以及具体网络设备的要求进行调整。
LwIP协议栈在实现中,采用pbuf数据结构来组织TCP/IP数据包。一个完整的TCP/IP数据包可以由一个pbuf数据结构实现、或者由多个pbuf数据结构组成的pbuf链(pbufchain)来实现。对于其他的嵌入式TCP/IP协议栈,有类似的数据结构来组织TCP/IP数据包。本申请以LwIP协议栈的pbuf数据结构为例进行说明,相同原理也适用于其他TCP/IP协议栈。
pbuf数据结构简单描述如下,其中/*到*/之间的内容为注释说明。
struct pbuf {
struct pbuf *next; /*pbuf链中下一个pbuf数据结构的指针*/
void *payload; /*当前pbuf数据结构指示的TCP/IP数据包的净荷的指针*/
u16_t tot_len; /*pbuf链指示的TCP/IP数据包的净荷的总长度*/
u16_t len;/*当前pbuf数据结构指示的TCP/IP数据包的净荷的长度*/
}
请参阅图3,本申请提出的嵌入式网络设备中加速网络数据包处理的方法包括如下步骤。
步骤S10:从网络接口接收一个TCP/IP数据包,为其分配存储空间。LwIP协议栈会分配一个pbuf数据结构来指示该TCP/IP数据包,设定当前的pbuf数据结构为p指针。pbuf数据结构p指针的净荷指向该TCP/IP数据包的真正的存储空间。
步骤S20:根据该TCP/IP数据包的IP头部是IPv4头部还是IPv6头部来设置当前需要拷贝的长度。所述需要拷贝的长度至少为该TCP/IP数据包的以太网头部的长度+IPv4头部的基础头部或IPv6头部的基础头部的长度+TCP头部的基础头部或UDP头部的基础头部的长度之和。例如,采用IPv4和TCP协议的TCP/IP数据包的IP头部是以太网头部的长度+IPv4头部基础头部的长度+TCP头部基础头部的长度之和。又如,采用IPv6和TCP协议的TCP/IP数据包的IP头部是以太网头部的长度+IPv6头部基础头部的长度+TCP头部基础头部的长度之和。又如,采用IPv4和UDP协议的TCP/IP数据包的IP头部是以太网头部的长度+IPv4头部基础头部的长度+UDP头部基础头部的长度之和。又如,采用IPv6和UDP协议的TCP/IP数据包的IP头部是以太网头部的长度+IPv6头部基础头部的长度+UDP头部基础头部的长度之和。拷贝该TCP/IP数据包的三个头部到片上缓存,分配一个新的pbuf数据结构q指针来指示。pbuf数据结构q指针的净荷指向该TCP/IP数据包的三个头部在片上缓存的存储空间。
步骤S30:重构pbuf链,在pbuf数据结构q指针的next字段中指向pbuf数据结构p指针。这样就以pbuf数据结构q指针作为处理的pbuf数据结构。
这一步还修改pbuf数据结构q指针。pbuf数据结构q指针的tot_len字段的内容设置为pbuf数据结构p指针的tot_len字段的内容;pbuf数据结构q指针的len字段的内容设置为该TCP/IP数据包的三个头部在片上缓存的长度,也就是拷贝长度。
这一步还修改pbuf数据结构p指针。pbuf数据结构p指针的净荷修改为跳过拷贝长度的位置;pbuf数据结构p指针的tot_len以及len字段的内容均修改为减去拷贝长度的值。
步骤S40:使用新的pbuf链进行该TCP/IP数据包的处理。该TCP/IP数据包处理过程中,对三个头部的处理直接访问的是高速的片上缓存,而不再是该TCP/IP数据包的三个头部的原来的存储位置。所述对TCP/IP数据包的处理例如包括以太网包的处理、IPv4头部或IPv6头部的检查和处理、TCP头部或UDP头部的检查和处理等。
步骤S50:处理完之后,该TCP/IP数据包或者需要转发、或者需要进入应用模块处理。此时把位于片上缓存的该TCP/IP数据包的三个头部拷贝并覆盖到该TCP/IP数据包真正的存储空间中的三个头部的存储位置,并将pbuf数据结构q指针中的next字段所记录的p指针删除(即解绑q指针和p指针),为重新使用pbuf数据结构p指针做好准备。
步骤S60:在pbuf链中删除pbuf数据结构q指针,这样就以pbuf数据结构p指针作为处理的pbuf数据结构。这一步还释放片上缓存用于保存该TCP/IP数据包的三个头部的存储空间;重构pbuf数据结构p指针。所述重构pbuf数据结构p指针是指将pbuf数据结构p指针的净荷修改为包含拷贝长度的位置;pbuf数据结构p指针的tot_len以及len字段的内容均修改为包含拷贝长度的值。
步骤S70:对该TCP/IP数据包或者进行转发、或者送入应用模块处理,随后删除pbuf数据结构p指针,释放该TCP/IP数据包所占用的真正的存储空间。
进一步地,所述步骤S40中,所述对TCP/IP数据包的处理还包括防火墙模块、IP过滤模块、NAT模块等中间模块对TCP/IP数据包的处理。有些中间模块只是使用该TCP/IP数据包位于片上缓存的头部,并不做修改,例如防火墙模块、IP过滤模块。而有些中间模块则会修改该TCP/IP数据包位于片上缓存的头部,例如NAT模块。NAT模块会对采用IPv4协议的TCP/IP数据包进行端口加IP地址的映射修改,这种修改的位置和长度都是固定的。
进一步地,如果中间模块未修改该TCP/IP数据包位于片上缓存的头部,则省略步骤S50中的拷贝并覆盖的操作,但保留将pbuf链中的pbuf数据结构q指针中的next字段所记录的p指针删除。
进一步地,如果中间模块修改了该TCP/IP数据包位于片上缓存的头部,则修改步骤S50为步骤S55。步骤S55:把位于片上缓存的该TCP/IP数据包的三个头部的修改部分的数据(例如修改后的端口和IP地址)拷贝到该TCP/IP数据包真正的存储空间中相对应的部分并覆盖,并将pbuf链中的pbuf数据结构q指针中的next字段所记录的p指针删除。
请参阅图4,结合TCP/IP内核的网络Hook(钩子函数)位置点,分析本申请的技术方案。在PREROUTING(路由前)的Hook位置点,进行步骤S10至步骤S30。那么直到POSTROUTING(路由后)的Hook位置点之前,对TCP/IP数据包的处理,主要涉及到数据包头部的处理,访问的是片上缓存的三个头部,数据存取速度快,加快了数据包的处理速度。在POSTROUTING的Hook位置点,对需要拷贝片上缓存的头部数据到TCP/IP数据包的真正存储空间的,比如NAT模块处理后的片上缓存的头部数据,进行数据拷贝。对不需要拷贝片上缓存的头部数据到TCP/IP数据包的真正存储空间的,则直接转发原TCP/IP数据包到发送接口。
请参阅图5,本申请提出的嵌入式网络设备中加速网络数据包处理的系统包括指示单元10、缓存单元20、重构单元30、处理单元40、合并单元50、缓存释放单元60和存储释放单元70。
所述指示单元10从网络接口接收TCP/IP数据包,为其分配存储空间,并采用一个pbuf数据结构(称为p指针)来指示该TCP/IP数据包。pbuf数据结构p指针的净荷指向该TCP/IP数据包的真正的存储空间。
所述缓存单元20根据该TCP/IP数据包的IP头部是IPv4头部还是IPv6头部来设置当前需要拷贝的长度,并拷贝该TCP/IP数据包的三个头部到片上缓存,分配一个新的pbuf数据结构(称为q指针)来指示。pbuf数据结构q指针的净荷指向该TCP/IP数据包的三个头部在片上缓存的存储空间。
所述重构单元30重构pbuf链,这是指在pbuf数据结构q指针的next字段中指向pbuf数据结构p指针。所述重构单元30还修改pbuf数据结构q指针。pbuf数据结构q指针的tot_len字段设置为pbuf数据结构p指针的tot_len字段的内容;pbuf数据结构q指针的len字段设置为该TCP/IP数据包的三个头部在片上缓存的长度,也就是拷贝长度。所述重构单元30还修改pbuf数据结构p指针。pbuf数据结构p指针的净荷修改为跳过拷贝长度的位置;pbuf数据结构p指针的tot_len以及len字段均修改为减去拷贝长度的值。
所述处理单元40使用重构单元30生成的新的pbuf链进行该TCP/IP数据包的处理。该TCP/IP数据包处理过程中,对三个头部的处理直接访问的是高速的片上缓存,而不再是该TCP/IP数据包的三个头部原来的存储位置。
所述合并单元50把位于片上缓存的该TCP/IP数据包的三个头部拷贝并覆盖到该TCP/IP数据包真正的存储空间中的三个头部的存储位置,并将pbuf数据结构q指针中的next字段所记录的p指针删除。
所述缓存释放单元60在pbuf链中删除pbuf数据结构q指针,释放片上缓存用于保存该TCP/IP数据包的三个头部的存储空间,重构pbuf数据结构p指针。所述重构pbuf数据结构p指针是指将pbuf数据结构p指针的净荷修改为包含拷贝长度的位置;pbuf数据结构p指针的tot_len以及len字段均修改为包含拷贝长度的值。
所述存储释放单元70完成对该TCP/IP数据包或者进行转发、或者送入应用模块处理,随后删除pbuf数据结构p指针,释放该TCP/IP数据包所占用的真正的存储空间。
进一步地,所述处理单元40为防火墙模块、IP过滤模块、NAT模块等中间模块的任意一个或多个。有些中间模块只是使用该TCP/IP数据包位于片上缓存的头部,并不做修改,例如防火墙模块、IP过滤模块。而有些中间模块则会修改该TCP/IP数据包位于片上缓存的头部,例如NAT模块。NAT模块会对采用IPv4协议的TCP/IP数据包进行端口加IP地址的映射修改,这种修改的位置和长度都是固定的。
进一步地,如果中间模块未修改该TCP/IP数据包位于片上缓存的头部,则所述合并单元50省略拷贝并覆盖的操作,但保留将pbuf数据结构q指针中的next字段所记录的p指针删除。
进一步地,如果中间模块修改了该TCP/IP数据包位于片上缓存的头部,则所述合并单元50改为把位于片上缓存的该TCP/IP数据包的三个头部的修改部分的数据(例如修改后的端口和IP地址)拷贝到该TCP/IP数据包真正的存储空间中相对应的部分并覆盖,并将pbuf数据结构q指针中的next字段所记录的p指针删除。
以上仅为本申请的优选实施例,并不用于限定本申请。对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种嵌入式网络设备中加速网络数据包处理的方法,其特征是,包括如下步骤;
步骤S10:从网络接口接收一个TCP/IP数据包,采用一个pbuf数据结构p指针来指示该TCP/IP数据包的真正的存储空间;
步骤S20:拷贝该TCP/IP数据包的三个头部到片上缓存,采用一个pbuf数据结构q指针来指示该TCP/IP数据包的三个头部在片上缓存的存储空间;所述三个头部是指以太网头部、IPv4头部或IPv6头部、TCP头部或UDP头部;
步骤S30:重构pbuf链,在pbuf数据结构q指针中记录pbuf链中的下一个pbuf数据结构为pbuf数据结构p指针;
还修改pbuf数据结构q指针;pbuf数据结构q指针的tot_len字段设置为pbuf数据结构p指针的tot_len字段的内容;pbuf数据结构q指针的len字段设置为该TCP/IP数据包的三个头部在片上缓存的长度,也就是拷贝长度;
还修改pbuf数据结构p指针;pbuf数据结构p指针的净荷修改为跳过拷贝长度的位置;pbuf数据结构p指针的tot_len以及len字段均修改为减去拷贝长度的值;
步骤S40:使用新的pbuf链进行该TCP/IP数据包的处理;该TCP/IP数据包处理过程中,对三个头部的处理直接访问的是片上缓存的三个头部,而不是该TCP/IP数据包的三个头部原来的存储位置的三个头部;
步骤S50:完成处理需要转发接口或者转发应用之前,把位于片上缓存的该TCP/IP数据包的三个头部拷贝并覆盖到该TCP/IP数据包真正的存储空间中的三个头部的存储位置,同时在pbuf数据结构q指针中删除下一个pbuf数据结构为pbuf数据结构p指针的记载;
步骤S60:在pbuf链中删除pbuf数据结构q指针,释放片上缓存用于保存该TCP/IP数据包的三个头部的存储空间;重构pbuf数据结构p指针,这是指将pbuf数据结构p指针的净荷修改为包含拷贝长度的位置;pbuf数据结构p指针的tot_len以及len字段均修改为包含拷贝长度的值;
步骤S70:对该TCP/IP数据包或者进行转发、或者送入应用模块处理,随后删除pbuf数据结构p指针,释放该TCP/IP数据包所占用的真正的存储空间。
2.根据权利要求1所述的嵌入式网络设备中加速网络数据包处理的方法,其特征是,所述步骤S20中,根据该TCP/IP数据包的IP头部是IPv4头部还是IPv6头部来设置需要拷贝的长度;所述需要拷贝的长度至少为该TCP/IP数据包的以太网头部的长度+IPv4头部的基础头部或IPv6头部的基础头部的长度+TCP头部的基础头部或UDP头部的基础头部的长度之和。
3.根据权利要求1所述的嵌入式网络设备中加速网络数据包处理的方法,其特征是,所述步骤S40中,所述对TCP/IP数据包的处理包括以太网包的处理、IPv4头部或IPv6头部的检查和处理、TCP头部或UDP头部的检查和处理。
4.根据权利要求1所述的嵌入式网络设备中加速网络数据包处理的方法,其特征是,所述步骤S40中,所述对TCP/IP数据包的处理还包括中间模块对TCP/IP数据包的处理;所述中间模块包括防火墙模块、IP过滤模块、NAT模块的任意一种或多种。
5.根据权利要求4所述的嵌入式网络设备中加速网络数据包处理的方法,其特征是,所述步骤S40中,如果中间模块未修改该TCP/IP数据包位于片上缓存的头部,则省略步骤S50中的拷贝并覆盖的操作,但保留在pbuf数据结构q指针中删除下一个pbuf数据结构为pbuf数据结构p指针的记载。
6.根据权利要求4所述的嵌入式网络设备中加速网络数据包处理的方法,其特征是,所述步骤S40中,如果中间模块修改了该TCP/IP数据包位于片上缓存的头部,则修改步骤S50为步骤S55;
步骤S55:把位于片上缓存的该TCP/IP数据包的三个头部的修改部分的数据拷贝到该TCP/IP数据包真正的存储空间中相对应的部分并覆盖,并在pbuf数据结构q指针中删除下一个pbuf数据结构为pbuf数据结构p指针的记载。
7.一种嵌入式网络设备中加速网络数据包处理的系统,其特征是,包括指示单元、缓存单元、重构单元、处理单元、合并单元、缓存释放单元和存储释放单元;
所述指示单元从网络接口接收TCP/IP数据包,并采用一个pbuf数据结构p指针来指示该TCP/IP数据包的真正的存储空间;
所述缓存单元拷贝该TCP/IP数据包的三个头部到片上缓存,并采用一个pbuf数据结构q指针来指示该TCP/IP数据包的三个头部在片上缓存的存储空间;所述三个头部是指以太网头部、IPv4头部或IPv6头部、TCP头部或UDP头部;
所述重构单元重构pbuf链,在pbuf数据结构q指针中记录pbuf链中的下一个pbuf数据结构为pbuf数据结构p指针;所述重构单元还修改pbuf数据结构q指针;pbuf数据结构q指针的tot_len字段设置为pbuf数据结构p指针的tot_len字段的内容;pbuf数据结构q指针的len字段设置为该TCP/IP数据包的三个头部在片上缓存的长度,也就是拷贝长度;所述重构单元还修改pbuf数据结构p指针;pbuf数据结构p指针的净荷修改为跳过拷贝长度的位置;pbuf数据结构p指针的tot_len以及len字段均修改为减去拷贝长度的值;
所述处理单元使用重构单元生成的新的pbuf链进行该TCP/IP数据包的处理;该TCP/IP数据包处理过程中,对三个头部的处理直接访问的是片上缓存的三个头部,而不再是该TCP/IP数据包的三个头部原来的存储位置的三个头部;
所述合并单元把位于片上缓存的该TCP/IP数据包的三个头部拷贝并覆盖到该TCP/IP数据包真正的存储空间中的三个头部的存储位置,并在pbuf数据结构q指针中删除下一个pbuf数据结构为pbuf数据结构p指针的记载;
所述缓存释放单元删除pbuf数据结构q指针,释放片上缓存用于保存该TCP/IP数据包的三个头部的存储空间,重构pbuf数据结构p指针,这是指将pbuf数据结构p指针的净荷修改为包含拷贝长度的位置;pbuf数据结构p指针的tot_len以及len均修改为包含拷贝长度的值;
所述存储释放单元对该TCP/IP数据包或者进行转发、或者送入应用模块处理,随后删除pbuf数据结构p指针,释放该TCP/IP数据包所占用的真正的存储空间。
8.根据权利要求7所述的嵌入式网络设备中加速网络数据包处理的系统,其特征是,所述处理单元为中间模块,所述中间模块包括防火墙模块、IP过滤模块、NAT模块的任意一个或多个。
9.根据权利要求8所述的嵌入式网络设备中加速网络数据包处理的系统,其特征是,如果中间模块未修改该TCP/IP数据包位于片上缓存的头部,则所述合并单元省略拷贝并覆盖的操作,但保留在pbuf数据结构q指针中删除下一个pbuf数据结构为pbuf数据结构p指针的记载。
10.根据权利要求8所述的嵌入式网络设备中加速网络数据包处理的系统,其特征是,如果中间模块修改了该TCP/IP数据包位于片上缓存的头部,则所述合并单元改为把位于片上缓存的该TCP/IP数据包的三个头部的修改部分的数据拷贝到该TCP/IP数据包真正的存储空间中相对应的部分并覆盖,并在pbuf数据结构q指针中删除下一个pbuf数据结构为pbuf数据结构p指针的记载。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010606097.6A CN111506541B (zh) | 2020-06-30 | 2020-06-30 | 一种嵌入式网络设备中加速网络数据包处理的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010606097.6A CN111506541B (zh) | 2020-06-30 | 2020-06-30 | 一种嵌入式网络设备中加速网络数据包处理的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111506541A true CN111506541A (zh) | 2020-08-07 |
CN111506541B CN111506541B (zh) | 2020-09-22 |
Family
ID=71872250
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010606097.6A Active CN111506541B (zh) | 2020-06-30 | 2020-06-30 | 一种嵌入式网络设备中加速网络数据包处理的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111506541B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113438097A (zh) * | 2021-05-21 | 2021-09-24 | 翱捷科技股份有限公司 | 一种网络加速的实现方法及装置 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102567278A (zh) * | 2011-12-29 | 2012-07-11 | 中国科学院计算技术研究所 | 一种片上多核数据传输方法和装置 |
CN103988483A (zh) * | 2011-10-14 | 2014-08-13 | 思杰系统有限公司 | 用于网络加速器的动态适应的系统和方法 |
US20140237072A1 (en) * | 2013-02-18 | 2014-08-21 | Ricoh Company, Limited | Device and method for data communication |
CN104601599A (zh) * | 2015-02-11 | 2015-05-06 | 中国科学院光电技术研究所 | 一种基于tcp/ip的嵌入式高速实时数据并发系统 |
CN107257329A (zh) * | 2017-05-31 | 2017-10-17 | 中国人民解放军国防科学技术大学 | 一种数据分段卸载发送方法 |
CN107707400A (zh) * | 2017-09-29 | 2018-02-16 | 武汉理工大学 | 一种双级隔离式以太网双冗余通信系统 |
CN108292261A (zh) * | 2015-04-22 | 2018-07-17 | 色彩象征有限公司 | 对象存储器管理单元 |
CN110011933A (zh) * | 2018-01-05 | 2019-07-12 | 华为技术有限公司 | 发送数据包的方法、装置及计算机可读存储介质 |
US20200059536A1 (en) * | 2013-08-28 | 2020-02-20 | Luminati Networks Ltd. | System and Method for Improving Internet Communication by Using Intermediate Nodes |
CN111478855A (zh) * | 2020-06-23 | 2020-07-31 | 翱捷科技(上海)有限公司 | 基于LwIP协议栈的网络设备快速转发的方法及系统 |
-
2020
- 2020-06-30 CN CN202010606097.6A patent/CN111506541B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103988483A (zh) * | 2011-10-14 | 2014-08-13 | 思杰系统有限公司 | 用于网络加速器的动态适应的系统和方法 |
CN102567278A (zh) * | 2011-12-29 | 2012-07-11 | 中国科学院计算技术研究所 | 一种片上多核数据传输方法和装置 |
US20140237072A1 (en) * | 2013-02-18 | 2014-08-21 | Ricoh Company, Limited | Device and method for data communication |
US20200059536A1 (en) * | 2013-08-28 | 2020-02-20 | Luminati Networks Ltd. | System and Method for Improving Internet Communication by Using Intermediate Nodes |
CN104601599A (zh) * | 2015-02-11 | 2015-05-06 | 中国科学院光电技术研究所 | 一种基于tcp/ip的嵌入式高速实时数据并发系统 |
CN108292261A (zh) * | 2015-04-22 | 2018-07-17 | 色彩象征有限公司 | 对象存储器管理单元 |
CN107257329A (zh) * | 2017-05-31 | 2017-10-17 | 中国人民解放军国防科学技术大学 | 一种数据分段卸载发送方法 |
CN107707400A (zh) * | 2017-09-29 | 2018-02-16 | 武汉理工大学 | 一种双级隔离式以太网双冗余通信系统 |
CN110011933A (zh) * | 2018-01-05 | 2019-07-12 | 华为技术有限公司 | 发送数据包的方法、装置及计算机可读存储介质 |
CN111478855A (zh) * | 2020-06-23 | 2020-07-31 | 翱捷科技(上海)有限公司 | 基于LwIP协议栈的网络设备快速转发的方法及系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113438097A (zh) * | 2021-05-21 | 2021-09-24 | 翱捷科技股份有限公司 | 一种网络加速的实现方法及装置 |
CN113438097B (zh) * | 2021-05-21 | 2022-08-23 | 翱捷科技股份有限公司 | 一种网络加速的实现方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111506541B (zh) | 2020-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108809854B (zh) | 一种用于大流量网络处理的可重构芯片架构 | |
US7269663B2 (en) | Tagging packets with a lookup key to facilitate usage of a unified packet forwarding cache | |
US9444737B2 (en) | Packet data processor in a communications processor architecture | |
JP3777161B2 (ja) | マルチキャスト伝送の効率的処理 | |
US7577758B2 (en) | Hardware support for wire-speed, stateful matching and filtration of network traffic | |
US6049808A (en) | System and method for efficient remote disk I/O | |
US6675218B1 (en) | System for user-space network packet modification | |
CA3021969A1 (en) | System and method for tcp offload for nvme over tcp-ip | |
US8539199B2 (en) | Hash processing in a network communications processor architecture | |
US8059532B2 (en) | Data and control plane architecture including server-side triggered flow policy mechanism | |
US6781990B1 (en) | Method and system for managing traffic in a packet network environment | |
US6882654B1 (en) | Packet data analysis with efficient buffering scheme | |
US7333484B2 (en) | Services processor having a packet editing unit | |
US9356844B2 (en) | Efficient application recognition in network traffic | |
CN109992465A (zh) | 服务追踪方法、装置和计算机可读存储介质 | |
CN111107081B (zh) | 基于dpdk的多进程dns服务方法和系统 | |
CN112558948A (zh) | 一种海量流量下报文识别的方法和装置 | |
EP3831017A1 (en) | Advanced network tracing in the data plane | |
EP1636967A1 (en) | Network protocol off-load engine memory management | |
CN111506541B (zh) | 一种嵌入式网络设备中加速网络数据包处理的方法及系统 | |
CN111597142A (zh) | 一种基于fpga的网络安全加速卡及加速方法 | |
US9961147B2 (en) | Communication apparatus, information processor, communication method, and computer-readable storage medium | |
CN105933325B (zh) | 一种基于NFSoRDMA的内核态RPC通信加速方法 | |
US20040024985A1 (en) | Netbufs: communication protocol packet buffering using paged memory management | |
US20030023785A1 (en) | Data processing program, computer readable recording medium recorded with data processing program and data processing 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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: 201203 Floor 9, building 10, No. 399, Keyuan Road, China (Shanghai) free trade pilot zone, Pudong New Area, Shanghai Patentee after: Aojie Technology Co., Ltd Address before: 201203 No. 399, Keyuan Road, Zhangjiang High-tech Park, Pudong New Area, Shanghai Patentee before: Aojie Technology (Shanghai) Co.,Ltd. |
|
CP03 | Change of name, title or address |