一种网络通信中数据包的处理方法和系统与流程

文档序号:37194956发布日期:2024-03-01 13:09阅读:17来源:国知局
一种网络通信中数据包的处理方法和系统与流程

本发明涉及网络通信领域,特别是涉及一种网络通信中数据包的处理方法和系统。


背景技术:

1、传统的linux对称多处理器(symmetrical mulit-processing,简写为:smp)环境下,多个中央处理器(central processing unit,简写为:cpu)运行操作系统的单一复本,并且各cpu之间共享内存子系统和总线架构。在linux smp环境下,因共享内存、多核调度、中断等带来的高额系统开销,导致数据包的处理性能并不能随着处理器核数的增加而线性增长。

2、数据平面开发套件(data plane development kit,简写为:dpdk)是一个开源的数据平面开发工具集,是intel为了解决linux smp环境下数据包处理性能问题提供的一个用户空间下的高效数据包处理函数库和驱动集。dpdk通过环境抽象层的旁路操作系统(operating system,简写为:os)运行环境、轮询模式的数据无中断收发、优化内存、缓冲区、队列管理、巨页内存等多项技术,实现了smp环境下的高性能数据包处理能力,用户可以在linux用户空间中开发各类高效数据包处理应用,也适合于集成到各类商业化的数据平面加速解决方案中。

3、应用dpdk技术进行网络数据包的高效处理,需应用程序自行实现网际互连协议(internet protocol,简写为:ip)网络的网络协议栈及各类型网络服务功能。在大流量场景下采用dpdk方式时采集数据包效率较低,多核调度得不到充分利用。

4、鉴于此,如何克服现有技术所存在的缺陷,解决大流量场景中dpdk对数据包的处理效率较低的现象,是本技术领域待解决的问题。


技术实现思路

1、针对现有技术的以上缺陷或改进需求,本发明解决了在大流量场景下采用dpdk方式时采集数据包效率较低,多核调度得不到充分利用的问题。

2、本发明实施例采用如下技术方案:

3、第一方面,本发明提供了一种网络通信中数据包的处理方法,具体为:获取传输数据包的队列与处理器件绑定时的配置参数,按照配置参数将队列与相应的处理器件进行绑定;其中,属于同一个网络套接字的处理器件与同一个队列绑定;具体包括:第一处理器件执行数据包的第一处理过程,按照配置参数将处理后的数据包输出至一个或多个队列中;第二处理器件按照配置参数获取一个或多个队列中的数据包,并执行数据包的第二处理过程。

4、优选的,所述获取传输数据包的队列与处理器件绑定时的配置参数,具体包括:配置参数的左值中包含第一处理器件的标识和第二处理器件的标识,用于表示数据包由第一处理器件输出至队列,再由队列输出至第二处理器件;配置参数的右值由一条或多条三元多项式构成,在每条三元多项式中,第一变量为第一处理器件的标识,第二变量为队列的标识,第三变量为第二处理器件的标识。

5、当第一处理器件为共享内存且第二处理器件为逻辑核心时,所述按照配置参数将队列与相应的处理器件进行绑定,还包括:当一个或多个队列中的数据包会被多个逻辑核心共享时,将所述一个或多个队列与同一个共享内存进行绑定。

6、优选的,当第一处理器件为网卡,且第二处理器件为逻辑核心时,所述按照配置参数将处理后的数据包输出至一个或多个队列中,具体包括:网卡根据指定的分发策略解析数据包的ip层,以获取数据包中的源ip、目的ip、源端口、目的端口和协议类型;根据解析结果组建五元组,通过五元组信息选择绑定的队列,以进行数据包的输出。

7、优选的,当第一处理设备为网卡时,所述按照配置参数将处理后的数据包输出至一个或多个队列中之前,还包括:按照网络协议层的顺序,对队列中的每个数据包自底层向上逐层剥离,直至达到应用层,将剥离出的中间值和最终数据保存在数据包封装结构的指定空间中。

8、另一方面,本发明提供了一种网络通信中数据包的处理系统,具体为:一个或多个网卡、一个或多个逻辑核心和一个或多个共享内存,其特征在于:所述网卡和共享内存由操作系统的内核态空间进行管理,所述逻辑核心由操作系统的用户态空间进行管理;用户态空间中包含数据平面开发套件的收发接口,所述收发接口和内核态空间之间,根据权利要求1-5中任一项所述的网络通信中数据包的处理方法,通过绑定的队列完成的数据包传输。

9、优选的,所述用户态空间中包含接收模块、分发模块、统计模块、解析模块和写包模块:具体包括:每个模块运行在一个或多个逻辑核心中,各个模块之间通过绑定的队列进行数据传输;其中:所述接收模块用于计算数据包的多队列接收值和摘要值,并根据多队列接收值确定用于数据包输出的队列;所述分发模块用于选择接受网卡输出的数据包的队列,取出数据包中的多队列接收值和摘要值,并根据多队列接收值选择用于数据包输出的队列;所述统计模块用于对数据包进行统计,并通过绑定的队列定期将时间段内的统计结果写入共享内存中,以便于将统计结果转存至数据库中;所述解析模块用于根据摘要值对数据包进行过滤,完成对数据包的解析,并根据多队列接收值将解析后的数据包拷贝到相应的共享内存中;所述写包模块用于对数据包的原始包文件和索引文件进行存储,并根据多队列接收值将数据包拷贝相应的共享内存中。

10、优选的,所述系统还包括:当数据包由网卡传输至接收模块时,以及当数据包由接收模块分发至统计模块、分析模块和写包模块时,进行零拷贝传输;当数据包由统计模块、分析模块或写包模块传输至共享内存中时,将数据包中的数据拷贝至共享内存中。

11、优选的,所述根据多队列接收值将解析后的数据包拷贝到相应的共享内存中,具体包括:获取每个数据包的多队列接收值,使用获取的多队列接收值对关联的共享内存个数求余,根据余数确定用于数据输出的共享内存;获取用于数据输出的共享内存绑定的队列,通过获取的队列将数据包输出至共享内存中。

12、优选的,所述根据摘要值对数据包进行过滤,具体包括:分发模块计算每个数据包的摘要值,并将摘要值写入数据包的预留内存段中;分发模块从数据包的预留内存段中获取每个数据包的摘要值;解析模块对接收到的每个数据包的摘要值进行缓存,根据缓存的摘要值和获取的摘要值对重复的数据包进行过滤。

13、与现有技术相比,本发明的有益效果在于:在不同的数据处理器件之间绑定多个队列进行数据交互,将属于同一个网络套接字的数据处理器件绑定在同一个队列上,从而确保网卡、逻辑核心和共享内存之间能够达到最优化的绑定关系,通过绑定队列的,在用户态实现对数据包的处理,绕过linux内核。并且,通过配置参数实现绑定关系的灵活调整,针对网卡的队列个数进行数据分发,充分利用计算机设备的多核调度,实现整个处理流程中数据传输拷贝较少,提升处理性能,并实现网卡i/o性能最优化。



技术特征:

1.一种网络通信中数据包的处理方法,其特征在于:获取传输数据包的队列与处理器件绑定时的配置参数,按照配置参数将队列与相应的处理器件进行绑定;其中,属于同一个网络套接字的处理器件与同一个队列绑定;

2.根据权利要求1所述的网络通信中数据包的处理方法,其特征在于,所述获取传输数据包的队列与处理器件绑定时的配置参数,具体包括:

3.根据权利要求1所述的网络通信中数据包的处理方法,其特征在于,当第一处理器件为共享内存且第二处理器件为逻辑核心时,所述按照配置参数将队列与相应的处理器件进行绑定,还包括:

4.根据权利要求1所述的网络通信中数据包的处理方法,其特征在于,当第一处理器件为网卡,且第二处理器件为逻辑核心时,所述按照配置参数将处理后的数据包输出至一个或多个队列中,具体包括:

5.根据权利要求1所述的网络通信中数据包的处理方法,其特征在于,当第一处理设备为网卡时,所述按照配置参数将处理后的数据包输出至一个或多个队列中之前,还包括:

6.一种网络通信中数据包的处理系统,包括:一个或多个网卡、一个或多个逻辑核心和一个或多个共享内存,其特征在于:

7.根据权利要求6所述的网络通信中数据包的处理系统,其特征在于,所述用户态空间中包含接收模块、分发模块、统计模块、解析模块和写包模块:

8.根据权利要求7所述的网络通信中数据包的处理系统,其特征在于,所述系统还包括:

9.根据权利要求7所述的网络通信中数据包的处理系统,其特征在于,所述根据多队列接收值将解析后的数据包拷贝到相应的共享内存中,具体包括:

10.根据权利要求8所述的网络通信中数据包的处理系统,其特征在于,所述根据摘要值对数据包进行过滤,具体包括:


技术总结
本发明涉及网络通信领域,特别是涉及一种网络通信中数据包的处理方法和系统。主要包括:获取传输数据包的队列与处理器件绑定时的配置参数,按照配置参数将队列与相应的处理器件进行绑定;其中,属于同一个网络套接字的处理器件与同一个队列绑定;具体包括:第一处理器件执行数据包的第一处理过程,按照配置参数将处理后的数据包输出至一个或多个队列中;第二处理器件按照配置参数获取一个或多个队列中的数据包,并执行数据包的第二处理过程。本发明可以将属于同一个网络套接字的数据处理器件绑定在同一个队列上以达到最优化的绑定关系,通过配置参数实现绑定关系的灵活调整,针对网卡的队列个数进行数据分发。

技术研发人员:李翔宇
受保护的技术使用者:中国船舶集团有限公司第七〇九研究所
技术研发日:
技术公布日:2024/2/29
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1