一种嵌入式网络设备中加速网络数据包处理的方法及系统技术方案

技术编号:25185084 阅读:25 留言:0更新日期:2020-08-07 21:13
本申请公开了一种嵌入式网络设备中加速网络数据包处理的方法。步骤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数据包的处理速度。

【技术实现步骤摘要】
一种嵌入式网络设备中加速网络数据包处理的方法及系统
本申请涉及一种网络设备对TCP/IP数据包的处理方法。
技术介绍
以路由器为典型代表的嵌入式网络设备中,最基础的操作就是TCP/IP数据包(datapacket)的转发、过滤、防火墙、以及NAT(networkaddresstranslation,网络地址转换)处理。TCP/IP数据包可能需要经过不同的接口、不同的模块处理。对于单个数据包,处理的时间越短、处理的路径越短,必然带来系统整体吞吐率的提高。为此,设计了各种加速数据包处理的方法。例如内存池(memorypool)的设计用来实现内存快速分配。又如fastpath(快速路径)的设计用来实现快速转发。嵌入式系统(embeddedsystem)中存在多种存储器,比如RAM(randomaccessmemory,随机存取存储器)、ROM(read-onlymemory,只读存储器)、以及特定的内存池。嵌入式系统中还有一块特殊的存储器称为片上缓存(on-chipcache),即嵌入式系统主SoC(SystemonaChip,单片系统)芯片的片上存储器。按照访问速度排序的话,片上缓存是访问速度最快的,其次是预分配的内存池,接下来是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指针的净荷修改为跳过拷贝长度的位置;p本文档来自技高网...

【技术保护点】
1.一种嵌入式网络设备中加速网络数据包处理的方法,其特征是,包括如下步骤;/n步骤S10:从网络接口接收一个TCP/IP数据包,采用一个pbuf数据结构p指针来指示该TCP/IP数据包的真正的存储空间;/n步骤S20:拷贝该TCP/IP数据包的三个头部到片上缓存,采用一个pbuf数据结构q指针来指示该TCP/IP数据包的三个头部在片上缓存的存储空间;所述三个头部是指以太网头部、IPv4头部或IPv6头部、TCP头部或UDP头部;/n步骤S30:重构pbuf链,在pbuf数据结构q指针中记录pbuf链中的下一个pbuf数据结构为pbuf数据结构p指针;/n还修改pbuf数据结构q指针;pbuf数据结构q指针的tot_len字段设置为pbuf数据结构p指针的tot_len字段的内容;pbuf数据结构q指针的len字段设置为该TCP/IP数据包的三个头部在片上缓存的长度,也就是拷贝长度;/n还修改pbuf数据结构p指针;pbuf数据结构p指针的净荷修改为跳过拷贝长度的位置;pbuf数据结构p指针的tot_len以及len字段均修改为减去拷贝长度的值;/n步骤S40:使用新的pbuf链进行该TCP/IP数据包的处理;该TCP/IP数据包处理过程中,对三个头部的处理直接访问的是片上缓存的三个头部,而不是该TCP/IP数据包的三个头部原来的存储位置的三个头部;/n步骤S50:完成处理需要转发接口或者转发应用之前,把位于片上缓存的该TCP/IP数据包的三个头部拷贝并覆盖到该TCP/IP数据包真正的存储空间中的三个头部的存储位置,同时在pbuf数据结构q指针中删除下一个pbuf数据结构为pbuf数据结构p指针的记载;/n步骤S60:在pbuf链中删除pbuf数据结构q指针,释放片上缓存用于保存该TCP/IP数据包的三个头部的存储空间;重构pbuf数据结构p指针,这是指将pbuf数据结构p指针的净荷修改为包含拷贝长度的位置;pbuf数据结构p指针的tot_len以及len字段均修改为包含拷贝长度的值;/n步骤S70:对该TCP/IP数据包或者进行转发、或者送入应用模块处理,随后删除pbuf数据结构p指针,释放该TCP/IP数据包所占用的真正的存储空间。/n...

【技术特征摘要】
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所述的嵌入式网络设备中加速网络数据包处理的方法,其...

【专利技术属性】
技术研发人员:许井泉黄永佳晋荣
申请(专利权)人:翱捷科技上海有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1