基于哈希运算和索引值比对的双向报文对称RSS处理方法及系统技术方案

技术编号:29400133 阅读:21 留言:0更新日期:2021-07-23 22:37
本发明专利技术涉及一种基于哈希运算和索引值比对的双向报文对称RSS处理方法及系统,第一隧道设备和第二隧道设备设置有RSS模块,哈希模块,间接寻址模块及若干CPU、环形缓冲区队列和普通队列;RSS模块对客户端和服务器端数据报文利用哈希模块进行哈希运算并通过间接寻址模块索引值匹配,通过普通队列分发至匹配索引值序号CPU上;CPU读取报文并通过索引值与自身序号匹配,匹配正确则进行相应报文处理,否则将报文送至CPU对应的环形缓冲区队列中进行缓存;第一隧道设备和第二隧道设备中的任一CPU均与对应的哈希模块和间接寻址模块连接,CPU利用哈希模块运算获取的哈希值与间接寻址模块索引值比对来确定报文分配的目标CPU索引值序号,提升DPDK架构下报文处理速度和效率。

【技术实现步骤摘要】
基于哈希运算和索引值比对的双向报文对称RSS处理方法及系统
本专利技术属于网络
,特别涉及一种基于哈希运算和索引值比对的双向报文对称RSS处理方法及系统。
技术介绍
DPDK(DataPlaneDevelopmentKit,数据平面开发套件)是由6WIND、Intel等多家公司开发,主要基于Linux系统运行,用于快速数据包处理的函数库与驱动集合,可以极大提高数据处理性能和吞吐量,提高数据平面应用程序的工作效率。DPDK是一个开源的数据平面开发工具集。其通过网卡RSS、旁路OS、网卡无中断轮询、用户态驱动、独占CPU、大页内存等技术提供了用户态下高性能的数据包处理能力。在DPDK架构中为了提供更高报文处理性能,往往启用多个核心(CPU)、多线程模式,各自CPU独立处理。网卡收到报文后根据报文特征{源IP地址、源端口号、目的IP地址、目的端口号等}对接收报文进行RSS处理分发到不同的CPU处理。在网络应用中,如果同一个连接的双向报文在开启RSS之后被分发到同一个CPU上处理,这种RSS就称为对称RSS。对于需要为连接保存一些信息的网络应用来说,对称RSS对性能提升有很大帮助。如果同一个连接的双向报文被分发到不同的CPU,那么两个CPU之间共享这个连接的信息就会涉及到锁,而锁显然是会影响处理性能的。在基于DPDK技术的隧道设备实现中,当基于DPDK的多CPU高性能模式运行时,会面临到对称RSS问题:即如何保证经由隧道设备的某一个CPU处理并封装了原始报文的隧道报文在发到另一端隧道设备后和收到从该另一端隧道设备返回的前述原始报文的响应隧道报文时,该响应隧道报文能够再次分配回归到与先前相同的同一个CPU进行后续处理。之所以出现对称RSS失效问题是因为正向报文是基于原始报文四元组{客户端的IP地址,客户端的端口号,服务器端的IP地址,服务器端的端口号}的哈希值来计算由哪个CPU进行处理,而反向报文是基于隧道报文四元组{第二隧道设备的IP地址,第二隧道设备的端口号,第一隧道设备的IP地址,第一隧道设备的端口号}的哈希值来计算由哪个CPU进行处理,两者的哈希值不同,所以,不能分配到同一个CPU上进行处理。如何根据隧道报文的处理过程和对称RSS的特点,实现DPDK架构下的隧道报文对称RSS处理,从而提升CPU匹配及报文处理速度和效率,是目前急需解决的问题。
技术实现思路
为此,本专利技术提供一种基于哈希运算和索引值比对的双向报文对称RSS处理方法及系统,解决原始报文与隧道报文的隧道设备上的处理核心CPU不一致问题,实现隧道报文的对称RSS处理,提升DPDK架构下报文处理速度和效率。按照本专利技术所提供的设计方案,提供一种基于哈希运算和索引值比对的双向报文对称RSS处理系统,包括客户端,服务器端,及设置于客户端和服务器端之间用于正向报文和反向报文传送的第一隧道设备和第二隧道设备,第一隧道设备和第二隧道设备共同构成正向报文和反向报文传送隧道的两端,所述第一隧道设备和第二隧道设备内均设置有RSS模块,哈希模块,间接寻址模块及若干CPU、环形缓冲区队列和普通队列,其中,每个隧道设备的CPU个数均与对应的环形缓冲区队列和普通队列相一致,CPU、环形缓冲区队列及普通队列三者通过索引值相匹配;RSS模块对客户端和服务器端传送的数据报文利用哈希模块进行哈希运算并通过间接寻址模块索引值匹配,通过普通队列分发至匹配到的索引值序号CPU上;CPU读取报文并通过索引值与自身序号匹配,匹配正确则进行相应报文处理,否则将报文送至CPU对应的环形缓冲区队列中进行缓存;第一隧道设备和第二隧道设备中的任一CPU均与对应的哈希模块和间接寻址模块连接,CPU利用哈希模块运算获取的哈希值与间接寻址模块索引值比对来确定报文分配的目标CPU索引值序号。作为本专利技术基于哈希运算和索引值比对的双向报文对称RSS处理系统,进一步地,哈希值包括源IP地址、源端口号、目的端IP地址和目的端口号。作为本专利技术基于哈希运算和索引值比对的双向报文对称RSS处理系统,进一步地,针对第一隧道设备和第二隧道设备中,每个隧道设备至少包含一个CPU、一个环形缓冲区队列和一个普通队列,且两个隧道设备内的CPU个数相同。作为本专利技术基于哈希运算和索引值比对的双向报文对称RSS处理系统,进一步地,第一隧道设备中CPU、环形缓冲区队列和普通队列分别用CPU1i、RING1i和QUE1i表示,其哈希模块和间接寻址模块与每个CPU1i相连接,其RSS模块与每个QUE1i相连接,并通过第一网口与客户端连接,通过第二网口与第二隧道设备对应连接,其中,i=1,2,…,n,n为第一隧道设备内实际CPU个数;第二隧道设备中CPU、环形缓冲区队列和普通队列分别用CPU2i、RING2i和QUE2i表示,第二隧道设备的哈希模块和间接寻址模块分别与与每个CPU1i相连接,第二隧道设备的RSS模块与每个QUE2i相连接,且通过第三网口与第一隧道设备连接,通过第四网口与服务器端连接。进一步地,基于上述的系统,本专利技术还提供一种基于哈希运算和索引值比对的双向报文对称RSS处理方法,利用CPU的普通队列和环形缓冲区队列对接收到的双向报文进行二次分流以实现同一个连接的双向报文处理,具体包含如下内容:针对客户端生成的第一原始报文,第一隧道设备利用其哈希模块对第一原始报文进行哈希运算,并将哈希运算的哈希值与其间接寻址模块索引值进行比对,通过比对结果将第一原始报文发送至对应索引值的第一隧道设备CPU的普通队列;CPU从普通队列中读取第一原始报文,并添加隧道信息后封装成第一隧道报文,发送至第二隧道设备;第二隧道设备利用其哈希模块对第一隧道报文进行哈希运算获取哈希值,第二隧道设备的RSS模块利用哈希值和第二隧道设备的间接寻址模块索引值进行比对,通过比对结果将第一隧道报文发送至相应的第二隧道设备CPU的普通队列中;CPU从普通队列中读取第一隧道报文来获取第一隧道报文内的第一原始报文,并通过调用第二隧道设备的哈希模块对第一原始报文进行哈希运算,将哈希运算获取的哈希值与第二隧道设备的间接寻址模块索引值进行比对,根据比对结果确定第一隧道报文发送的CPU索引值序号,判断该索引值序号与其自身序号是否相同,若不同,则将该第一隧道报文发送至索引值序号对应的CPU环形缓冲区队列中缓存,与索引值序号对应的第二隧道设备CPU从其环形缓冲区队列中读取第一隧道报文来获取与索引值序号一致的CPU;与索引值序号一致的第二隧道设备CPU对第一隧道报文进行拆分,得到第一隧道报文内的第一原始报文,并将第一原始报文发送至服务器端;服务器端对第一原始报文进行响应,生成第二原始报文并发送至第二隧道设备;第二隧道设备利用其哈希模块对第二原始报文进行拆解和哈希运算,第二隧道设备的RSS模块将哈希运算获取的哈希值与第二隧道设备的间接寻址模块内索引值比对,根据比对结果将第二原始报文发送至第二隧道设备相应CPU的普通队列中;CPU从普通队列中读取第二原始报文,将第二原始报文通过添加隧道相关信息进行封装后生成第二隧道报文发送至第一隧道设备;本文档来自技高网
...

【技术保护点】
1.一种基于哈希运算和索引值比对的双向报文对称RSS处理系统,包括客户端,服务器端,及设置于客户端和服务器端之间用于正向报文和反向报文传送的第一隧道设备和第二隧道设备,第一隧道设备和第二隧道设备共同构成正向报文和反向报文传送隧道的两端,其特征在于,所述第一隧道设备和第二隧道设备内均设置有RSS模块,哈希模块,间接寻址模块及若干CPU、环形缓冲区队列和普通队列,其中,每个隧道设备的CPU个数均与对应的环形缓冲区队列和普通队列相一致,CPU、环形缓冲区队列及普通队列三者通过索引值相匹配;RSS模块对客户端和服务器端传送的数据报文利用哈希模块进行哈希运算并通过间接寻址模块索引值匹配,通过普通队列分发至匹配到的索引值序号CPU上;CPU读取报文并通过索引值与自身序号匹配,匹配正确则进行相应报文处理,否则将报文送至CPU对应的环形缓冲区队列中进行缓存;第一隧道设备和第二隧道设备中的任一CPU均与对应的哈希模块和间接寻址模块连接,CPU利用哈希模块运算获取的哈希值与间接寻址模块索引值比对来确定报文分配的目标CPU索引值序号。/n

【技术特征摘要】
1.一种基于哈希运算和索引值比对的双向报文对称RSS处理系统,包括客户端,服务器端,及设置于客户端和服务器端之间用于正向报文和反向报文传送的第一隧道设备和第二隧道设备,第一隧道设备和第二隧道设备共同构成正向报文和反向报文传送隧道的两端,其特征在于,所述第一隧道设备和第二隧道设备内均设置有RSS模块,哈希模块,间接寻址模块及若干CPU、环形缓冲区队列和普通队列,其中,每个隧道设备的CPU个数均与对应的环形缓冲区队列和普通队列相一致,CPU、环形缓冲区队列及普通队列三者通过索引值相匹配;RSS模块对客户端和服务器端传送的数据报文利用哈希模块进行哈希运算并通过间接寻址模块索引值匹配,通过普通队列分发至匹配到的索引值序号CPU上;CPU读取报文并通过索引值与自身序号匹配,匹配正确则进行相应报文处理,否则将报文送至CPU对应的环形缓冲区队列中进行缓存;第一隧道设备和第二隧道设备中的任一CPU均与对应的哈希模块和间接寻址模块连接,CPU利用哈希模块运算获取的哈希值与间接寻址模块索引值比对来确定报文分配的目标CPU索引值序号。


2.根据权利要求1所述的基于哈希运算和索引值比对的双向报文对称RSS处理系统,其特征在于,哈希值包括源IP地址、源端口号、目的端IP地址和目的端口号。


3.根据权利要求1所述的基于哈希运算和索引值比对的双向报文对称RSS处理系统,其特征在于,针对第一隧道设备和第二隧道设备,每个隧道设备至少包含一个CPU、一个环形缓冲区队列和一个普通队列,且两个隧道设备内的CPU个数相同。


4.根据权利要求1或3所述的基于哈希运算和索引值比对的双向报文对称RSS处理系统,其特征在于,第一隧道设备中CPU、环形缓冲区队列和普通队列分别用CPU1i、RING1i和QUE1i表示,其哈希模块和间接寻址模块与每个CPU1i相连接,其RSS模块与每个QUE1i相连接,并通过第一网口与客户端连接,通过第二网口与第二隧道设备对应连接,其中,i=1,2,…,n,n为第一隧道设备内实际CPU个数;第二隧道设备中CPU、环形缓冲区队列和普通队列分别用CPU2i、RING2i和QUE2i表示,第二隧道设备的哈希模块和间接寻址模块分别与与每个CPU1i相连接,第二隧道设备的RSS模块与每个QUE2i相连接,且通过第三网口与第一隧道设备连接,通过第四网口与服务器端连接。


5.一种基于哈希运算和索引值比对的双向报文对称RSS处理方法,其特征在于,基于权利要求1所述的系统实现,利用CPU的普通队列和环形缓冲区队列对接收到的双向报文进行二次分流以实现同一个连接的双向报文处理,具体包含如下内容:
针对客户端生成的第一原始报文,第一隧道设备利用其哈希模块对第一原始报文进行哈希运算,并将哈希运算的哈希值与其间接寻址模块索引值进行比对,通过比对结果将第一原始报文发送至对应索引值的第一隧道设备CPU的普通队列;CPU从普通队列中读取第一原始报文,并添加隧道信息后封装成第一隧道报文,发送至第二隧道设备;
第二隧道设备利用其哈希模块对第一隧道报文进行哈希运算获取哈希值,第二隧道设备的RSS模块利用哈希值和第二隧道设备的间接寻址模块索引值进行比对,通过比对结果将第一隧道报文发送至相应的第二隧道设备CPU的普通队列中;CPU从普通队列中读取第一隧道报文来获取第一隧道报文内的第一原始报文,并通过调用第二隧道设备的哈希模块对第一原始报文进行哈希运算,将哈希运算获取的哈希值与第...

【专利技术属性】
技术研发人员:李平穆远彪廖正赟彭金辉李鑫
申请(专利权)人:郑州信大捷安信息技术股份有限公司
类型:发明
国别省市:河南;41

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

1