CN113098794B - 利用二次分流实现隧道报文对称rss处理的方法及系统 - Google Patents

利用二次分流实现隧道报文对称rss处理的方法及系统 Download PDF

Info

Publication number
CN113098794B
CN113098794B CN202110343516.6A CN202110343516A CN113098794B CN 113098794 B CN113098794 B CN 113098794B CN 202110343516 A CN202110343516 A CN 202110343516A CN 113098794 B CN113098794 B CN 113098794B
Authority
CN
China
Prior art keywords
tunnel
message
cpu
original
rss
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.)
Active
Application number
CN202110343516.6A
Other languages
English (en)
Other versions
CN113098794A (zh
Inventor
穆远彪
李昭熹
冀博
马骥
孙晓鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhengzhou Xinda Jiean Information Technology Co Ltd
Original Assignee
Zhengzhou Xinda Jiean Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhengzhou Xinda Jiean Information Technology Co Ltd filed Critical Zhengzhou Xinda Jiean Information Technology Co Ltd
Priority to CN202110343516.6A priority Critical patent/CN113098794B/zh
Publication of CN113098794A publication Critical patent/CN113098794A/zh
Application granted granted Critical
Publication of CN113098794B publication Critical patent/CN113098794B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4633Interconnection of networks using encapsulation techniques, e.g. tunneling

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明涉及一种利用二次分流实现隧道报文对称RSS处理的方法及系统,在第一隧道设备和第二隧道设备内均设置有RSS模块,及若干CPU、环形缓冲区队列和普通队列;CPU读取报文并通过索引值进行匹配并将未匹配成功的报文送至CPU对应的环形缓冲区队列中缓存;RSS模块包含用于对报文执行哈希运算获取哈希值的哈希模块和用于通过哈希值和索引值将报文分配至对应普通队列模块的间接寻址模块。本发明利用第一隧道设备和第二隧道设备中CPU的环形缓冲区队列和普通队列实现二次分流方案,将预期处理的核心CPU ID携带在报文中进行传递到接收的隧道设备中,接收隧道报文设备根据携带核心CPU ID进行二次分流到对应的正确核心上进行报文处理,实现隧道报文的对称RSS处理。

Description

利用二次分流实现隧道报文对称RSS处理的方法及系统
技术领域
本发明属于网络技术领域,特别涉及一种利用二次分流实现隧道报文对称RSS处理的方法及系统。
背景技术
DPDK(Data Plane Development Kit,数据平面开发套件)是由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处理的,从而提升报文处理速度和效率,是目前急需解决的问题。
发明内容
为此,本发明提供一种利用二次分流实现隧道报文对称RSS处理的方法及系统,以提升DPDK架构下报文处理速度和效率。
按照本发明所提供的设计方案,提供一种利用二次分流实现隧道报文对称RSS处理的系统,包括客户端,服务器端,及设置于客户端和服务器端之间用于正向报文和反向报文传送的第一隧道设备和第二隧道设备,第一隧道设备和第二隧道设备共同构成正向报文和反向报文传送隧道的两端,所述第一隧道设备和第二隧道设备内均设置有RSS模块,及若干CPU、环形缓冲区队列和普通队列,其中,每个隧道设备的CPU个数均与对应的环形缓冲区队列和普通队列相一致,CPU、环形缓冲区队列及普通队列三者通过索引值相匹配;RSS模块对客户端和服务器端传送的数据报文通过普通队列分发至对应CPU;CPU读取报文并通过索引值进行匹配,匹配正确则进行相应报文处理,否则将报文送至CPU对应的环形缓冲区队列中进行缓存;所述RSS模块包含用于对报文执行哈希运算获取哈希值的哈希模块和用于通过哈希值和索引值将报文分配至对应普通队列模块的间接寻址模块,每个间接寻址模块内均预置有若干索引值。
作为本发明利用二次分流实现隧道报文对称RSS处理的系统,进一步地,哈希值包括源IP地址、源端口号、目的端IP地址和目的端口号。
作为本发明利用二次分流实现隧道报文对称RSS处理的系统,进一步地,针对第一隧道设备和第二隧道设备中,每个隧道设备至少包含一个CPU、一个环形缓冲区队列和一个普通队列,且两个隧道设备内的CPU个数相同。
作为本发明利用二次分流实现隧道报文对称RSS处理的系统,进一步地,第一隧道设备中CPU、环形缓冲区队列和普通队列分别用CPU1i、RING1i和QUE1i表示,其RSS模块与每个QUE1i相连接,并通过第一网口与客户端连接,通过第二网口与第二隧道设备对应连接,其中,i=1,2,…,n,n为第一隧道设备内实际CPU个数;第二隧道设备中CPU、环形缓冲区队列和普通队列分别用CPU2i、RING2i和QUE2i表示,第二隧道设备的RSS模块与每个QUE2i相连接,且通过第三网口与第一隧道设备连接,通过第四网口与服务器端连接。
进一步地,基于上述的系统,本发明还提供一种利用二次分流实现隧道报文对称RSS处理的方法,利用CPU的普通队列和环形缓冲区队列对接收到的报文进行二次分流以实现同一个连接的双向报文处理,具体包含如下内容:
针对客户端生成的第一原始报文,第一隧道设备利用其RSS模块对第一原始报文进行哈希运算,并将哈希运算的哈希值与其间接寻址模块索引值进行比对,通过比对结果将第一原始报文发送至对应索引值的第一隧道设备CPU的普通队列;CPU从普通队列中读取第一原始报文,将其索引值序号与第一原始报文组合并添加隧道信息后封装成第一隧道报文,发送至第二隧道设备;
第二隧道设备利用其RSS模块对第一隧道报文进行哈希运算获取哈希值,利用哈希值和其间接寻址模块索引值进行比对,通过比对结果将第一隧道报文发送至相应的第二隧道设备CPU的普通队列中;CPU从普通队列中读取第一隧道报文并获取第一隧道报文内对应CPU索引值序号,判断获取的索引值序号与其自身序号是否相同,若不同,则将该第一隧道报文发送至索引值序号对应的CPU环形缓冲区队列中缓存,与索引值序号对应的CPU从其环形缓冲区队列中读取第一隧道报文来获取与索引值序号一致的CPU;索引值序号一致的第二隧道设备CPU对第一隧道报文进行拆分,得到第一隧道报文内的第一原始报文,并将第一原始报文发送至服务器端;
服务器端对第一原始报文进行响应,生成第二原始报文并发送至第二隧道设备;第二隧道设备利用其RSS模块对第二原始报文进行拆解和哈希运算,并与其间接寻址模块内索引值比对,根据比对结果将第二原始报文发送至第二隧道设备相应CPU的普通队列中;CPU从普通队列中读取第二原始报文,将其序号与第二原始报文组合并添加隧道相关信息封装后生成第二隧道报文发送至第一隧道设备;
第一隧道设备调用其RSS模块对第二隧道报文进行哈希运算获取哈希值,将哈希值与其间接寻址模块内索引值比对,根据比对结果将第二隧道报文发送至相应CPU普通队列;CPU从普通队列中读取第二隧道报文并获取第二隧道报文内CPU对应的索引值序号,并判断该序号与其自身索引值序号是否相同,若不同,则将第二隧道报文发送至索引值序号对应的CPU环形缓冲队列中缓存,索引值序号对应的CPU从环形缓冲队列中读取第二隧道报文来获取与索引值序号对应的CPU;与索引值序号一致的CPU对第二隧道报文进行拆分获取第二原始报文,并将第二原始报文发送至客户端。
作为本发明利用二次分流实现隧道报文对称RSS处理的方法,进一步地,第一原始报文和第二原始报文均包含原始源IP地址、原始源端口号、原始目的IP地址、原始目的端口号和原始报文数据。
作为本发明利用二次分流实现隧道报文对称RSS处理的方法,进一步地,第一原始报文包括客户端IP地址、客户端端口号、服务器端IP地址、服务器端端口号和第一原始报文数据;第二原始报文包括服务器端IP地址、服务器端端口号、客户端IP地址、客户端端口号和第二原始报文数据。
作为本发明利用二次分流实现隧道报文对称RSS处理的方法,进一步地,第一隧道报文和第二隧道报文均包含隧道源IP地址、隧道源端口号、隧道目的IP地址、隧道目的端口号和隧道报文数据。
作为本发明利用二次分流实现隧道报文对称RSS处理的方法,进一步地,第一隧道设备和第二隧道设备两者的RSS模块中的间接寻址模块内均预先设置有用于CPU间接寻址的索引值,且预先设置的索引值相匹配,第一隧道设备和第二隧道设备内的CPU个数相同。
作为本发明利用二次分流实现隧道报文对称RSS处理的方法,进一步地,第二隧道设备中RSS模块对第二原始报文进行拆解,组合成包含客户端IP地址、客户端端口号、服务器端IP地址和服务器端端口号的新四元组报文数据,并通过对该新四元组报文数据进行哈希运算来获取哈希值。
本发明的有益效果:
本发明利用第一隧道设备和第二隧道设备中CPU的环形缓冲区队列和普通队列实现二次分流方案,将预期处理的核心CPU ID携带在报文中进行传递到接收的隧道设备中,接收隧道报文的设备根据携带的核心CPU ID进行二次分流到对应的正确核心上进行报文处理,以此解决处理核心CPU不一致问题,从而实现隧道报文的对称RSS处理,其中,二次分流中报文首先根据一定的规则分配到隧道设备的某个CPU,然后,将该CPU ID记录到报文数据中;在报文到达另一端的隧道设备时,先按既定规则把报文分配到某个CPU,该CPU再判断报文中所指示的CPU ID,再二次将该报文通过一定的方式分发到对应的CPU进行最终处理;在第一隧道设备和第二隧道设备都实现报文的对称RSS处理,提升报文处理速度和效率,特别是对于同一个连接的双向报文,将不会再被分发到不同的CPU,从而避免了在两个不同的CPU之间处理和共享这个连接的信息时可能遇到的时间和性能方面的影响。既安全可靠,又简单高效,具有较好的应用前景。
附图说明:
图1为实施例中利用二次分流实现隧道报文对称RSS处理的系统原理示意。
具体实施方式:
为使本发明的目的、技术方案和优点更加清楚、明白,下面结合附图和技术方案对本发明作进一步详细的说明。
RSS(Receive Side Scaling)是由微软提出的一种负载分流方法,通过计算网络数据报文中的网络层和传输层二/三/四元组的HASH哈希值,取HASH值的最低有效位(LSB)用于索引间接寻址表RETA(Redirection Table),间接寻址表RETA中的保存索引值用于分配数据报文到不同的CPU进行处理。现阶段RSS基本已有硬件实现,通过这项技术能够将网络流量分载到多个CPU上,降低操作系统单个CPU的占用率。索引间接寻址表RETA的一个例子是INTEL82576/82599RETA,它作为一个包含位宽4位的128项的索引映射表,通过取固定取HASH值低7位,将其映射到RETA表项,输出索引可在运行时动态调整更新来实现网络流量动态的负载均衡。隧道,即网络隧道技术,指的是利用一种网络协议(称为隧道协议)来传输另一种网络协议(称为原始协议),如VXLAN、VPN隧道等。隧道是指,通过用户设定的隧道两端隧道设备的源、目的IP地址和源、目的端口作为隧道报文的隧道包头信息,同时将需要通过隧道传输的报文(即原始报文)封装到隧道报文的隧道报文数据部分,从而构成整个隧道报文。隧道设备是指处理隧道报文的设备。支持对输入的原始报文可封装和输出隧道报文、对输入的隧道报文可解封装得到原始报文。常规隧道设备中,原始报文从普通网络端口进入隧道设备,经过预配置的隧道模块处理后会封装外层隧道头信息将报文转发到隧道另一端的隧道设备。另一端的隧道设备从其隧道网络端口接收到隧道报文后,进行解封装隧道报文,得到相应的原始报文。本发明实施例,提供一种利用二次分流实现隧道报文对称RSS处理的系统,包括客户端,服务器端,及设置于客户端和服务器端之间用于正向报文和反向报文传送的第一隧道设备和第二隧道设备,第一隧道设备和第二隧道设备共同构成正向报文和反向报文传送隧道的两端,所述第一隧道设备和第二隧道设备内均设置有RSS模块,及若干CPU、环形缓冲区队列和普通队列,其中,每个隧道设备的CPU个数均与对应的环形缓冲区队列和普通队列相一致,CPU、环形缓冲区队列及普通队列三者通过索引值相匹配;RSS模块对客户端和服务器端传送的数据报文通过普通队列分发至对应CPU;CPU读取报文并通过索引值进行匹配,匹配正确则进行相应报文处理,否则将报文送至CPU对应的环形缓冲区队列中进行缓存;所述RSS模块包含用于对报文执行哈希运算获取哈希值的哈希模块和用于通过哈希值和索引值将报文分配至对应普通队列模块的间接寻址模块,每个间接寻址模块内均预置有若干索引值。
在基于DPDK架构实现的隧道设备中,由于隧道报文的特殊性,导致面临对称RSS问题,以下简要地说明存在问题及原因:假设整个报文处理系统包括:客户端、第一隧道设备、第二隧道设备和服务器端。设第一隧道设备和第二隧道设备内CPU数量均为n个(n为隧道设备内实际CPU的个数,为大于等于1的自然数),第一隧道设备和第二隧道设备共同构成隧道的两端;第一隧道设备和第二隧道设备具备RSS和封装拆解隧道报文等功能;客户端所发出的正向原始报文经第一隧道设备和第二隧道设备所构成隧道传送给服务器端;服务器端所发出的反向原始报文经第一隧道设备和第二隧道设备所构成隧道传送给客户端。其中,正向报文/反向报文的含义为:转发设备中标记报文流量方向是正向或者反向。报文流量的方向是一个相对的概念,通过四元组{IPi,PORTi,IPj,PORTj}进行描述。一般认为转发设备中接收到连接首次发起方的报文时,认为此时该报文的四元组描述的连接方向的报文为正向报文,而接收到的与正向报文连接的四元组的源IP地址和端口号、目的IP地址和端口号相反的连接报文则认为是反向报文。例如客户端发起四元组为{IP1,PORT1,IP2,PORT2}的报文后,在转发设备收到后,认为该四元组{IP1,PORT1,IP2,PORT2}描述的连接为正向报文。而转发设备收到该连接的反向连接四元组{IP2,PORT2,IP1,PORT1}时,则认为是反向报文,其中IP代表IP地址,PORT代表端口号。哈希运算用HA{·}表示。
(1)第一隧道设备从客户端接收正向原始报文,通过RSS计算,得出哈希值HA1=HA{客户端的IP地址,客户端的端口号,服务器端的IP地址,服务器端的端口号},RSS根据HA1将该正向原始报文分配到CPU i进行处理,其中,i=1,2,…,n;
(2)CPU i上的隧道模块处理正向原始报文得到正向隧道报文,正向隧道报文是包括了步骤(1)接收的正向原始报文进行封装后的新报文,其四元组从正向原始报文{客户端的IP地址,客户端的端口号,服务器端的IP地址,服务器端的端口号}更改为正向隧道报文{第一隧道设备的IP地址,第一隧道设备的端口号,第二隧道设备的IP地址,第二隧道设备的端口号};然后,第一隧道设备将该正向隧道报文发送给第二隧道设备;
(3)第二隧道设备在收到正向隧道报文后,对其进行拆解,还原出正向原始报文后发送给服务器端;服务器端生成反向原始报文后发送回第二隧道设备,并按与上述步骤(1)和(2)类似的方法进行处理,生成反向隧道报文,反向隧道报文的四元组为{第二隧道设备的IP地址,第二隧道设备的端口号,第一隧道设备的IP地址,第一隧道设备的端口号};第二隧道设备将反向隧道报文发送给第一隧道设备;
(4)第一隧道设备在收到正向隧道报文后,通过RSS计算,得出哈希值HA2=HA{第二隧道设备的IP地址,第二隧道设备的端口号,第一隧道设备的IP地址,第一隧道设备的端口号},此时,显然,HA2不等于步骤(1)中的HA1,那么在RSS根据HA2将该正向原始报文分配给CPU时,就不再是CPU i了,而是另一个CPU j,其中,i,j=1,2,…,n;j≠i。
本案实施例中,参见图1所示,系统内收发的数据包称统为报文,所述第一隧道设备包括至少一个CPU、至少一个环形缓冲区队列和至少一个普通队列,分别用CPU1i、RING1i和QUE1i表示;所述CPU1i、RING1i和QUE1i的数量相同;所述CPU1i和QUE1i相连接,所述CPU1i从QUE1i中读取数据;所述CPU1i与每个环形缓冲区队列RING1i相连接,所述CPU1i从RING1i中读取数据;所述第一隧道设备还包括第一RSS模块、第一网口和第二网口;所述第一RSS模块包括第一哈希模块和第一间接寻址模块;所述第一网口和第二网口分别与所述第一RSS模块相连接;所述第一RSS模块与每个QUE1i相连接;其中i=1,2,…,n;n为第一隧道设备内实际CPU的个数;
所述第二隧道设备包括至少一个CPU、至少一个环形缓冲区队列和至少一个普通队列,分别用CPU2i、RING2i和QUE2i表示;所述CPU2i、RING2i和QUE2i的数量相同;所述CPU2i和QUE2i相连接;所述CPU2i从QUE2i中读取数据;所述CPU2i与每个环形缓冲区队列RING2i相连接,所述CPU2i从RING2i中读取数据;所述第二隧道设备还包括第二RSS模块、第三网口和第四网口;所述第二RSS模块包括第二哈希模块和第二间接寻址模块;所述第三网口和第四网口均与所述第二RSS模块相连接;所述第二RSS模块与每个QUE2i相连接;其中i=1,2,…,n;第二隧道设备内实际CPU的个数与第一隧道设备内实际CPU的个数相同均为n个;
所述第一哈希模块和所述第二哈希模块用于执行哈希运算,所述哈希运算用HA{·}表示;
所述客户端用于与所述第一隧道设备的第一网口进行通信,以收发第一原始报文;所述服务器端用于与所述第二隧道设备的第四网口进行通信,以收发第二原始报文;所述第一原始报文和第二原始报文均包括原始源IP地址、原始源端口号、原始目的IP地址、原始目的端口号和原始报文数据;所述第一原始报文具体包括客户端的IP地址、客户端的端口号、服务器端的IP地址、服务器端的端口号和第一原始报文数据;所述第二原始报文具体包括服务器端的IP地址、服务器端的端口号、客户端的IP地址、客户端的端口号和第二原始报文数据;
所述第一隧道设备和所述第二隧道设备共同构成隧道的两端;所述第一隧道设备的第二网口与所述第二隧道设备的第三网口进行通信,以收发隧道报文;所述第一隧道设备内预先配置保存有用于组成第一隧道报文的所述第二隧道设备的第三网口的IP地址和端口号;所述第二隧道设备内预先配置保存有用于组成第二隧道报文的所述第一隧道设备的第二网口的IP地址和端口号;第一隧道报文由所述第一隧道设备的第二网口发送给所述第二隧道设备的第三网口;第二隧道报文由所述第二隧道设备的第三网口发送给所述第一隧道设备的第二网口;所述第一隧道报文和第二隧道报文均包括隧道源IP地址、隧道源端口号、隧道目的IP地址、隧道目的端口号和隧道报文数据;
所述第一间接寻址模块内预先设置有预先确定好的若干第一索引值,所述第一RSS模块将所述第一哈希模块对相应报文进行哈希运算后所得的哈希值与各所述第一索引值进行比对,然后根据比对结果将报文分配到所述第一隧道设备内的对应的CPU所对应的普通队列QUE,以供所述第一隧道设备内的相应CPU进行处理;
所述第二间接寻址模块内预先设置有预先确定好的若干第二索引值,所述第二RSS模块将所述第二哈希模块对相应报文进行哈希运算后所得的哈希值与各所述第二索引值进行比对,然后根据比对结果将报文分配到所述第二隧道设备内的对应的CPU所对应的普通队列QUE,以供所述第二隧道设备内的相应CPU进行处理;
所述第一间接寻址模块内的第一索引值与所述第二间接寻址模块内的第二索引值配置为相同的值。
进一步地,基于上述的系统,本发明实施例还提供一种利用二次分流实现隧道报文对称RSS处理的方法,利用CPU的普通队列和环形缓冲区队列对接收到的报文进行二次分流以实现同一个连接的双向报文处理,具体包含如下内容:
针对客户端生成的第一原始报文,第一隧道设备利用其RSS模块对第一原始报文进行哈希运算,并将哈希运算的哈希值与其间接寻址模块索引值进行比对,通过比对结果将第一原始报文发送至对应索引值的第一隧道设备CPU的普通队列;CPU从普通队列中读取第一原始报文,将其索引值序号与第一原始报文组合并添加隧道信息后封装成第一隧道报文,发送至第二隧道设备;
第二隧道设备利用其RSS模块对第一隧道报文进行哈希运算获取哈希值,利用哈希值和其间接寻址模块索引值进行比对,通过比对结果将第一隧道报文发送至相应的第二隧道设备CPU的普通队列中;CPU从普通队列中读取第一隧道报文并获取第一隧道报文内对应CPU索引值序号,判断获取的索引值序号与其自身序号是否相同,若不同,则将该第一隧道报文发送至索引值序号对应的CPU环形缓冲区队列中缓存,与索引值序号对应的CPU从其环形缓冲区队列中读取第一隧道报文来获取与索引值序号一致的CPU;索引值序号一致的第二隧道设备CPU对第一隧道报文进行拆分,得到第一隧道报文内的第一原始报文,并将第一原始报文发送至服务器端;
服务器端对第一原始报文进行响应,生成第二原始报文并发送至第二隧道设备;第二隧道设备利用其RSS模块对第二原始报文进行拆解和哈希运算,并与其间接寻址模块内索引值比对,根据比对结果将第二原始报文发送至第二隧道设备相应CPU的普通队列中;CPU从普通队列中读取第二原始报文,将其序号与第二原始报文组合并添加隧道相关信息封装后生成第二隧道报文发送至第一隧道设备;
第一隧道设备调用其RSS模块对第二隧道报文进行哈希运算获取哈希值,将哈希值与其间接寻址模块内索引值比对,根据比对结果将第二隧道报文发送至相应CPU普通队列;CPU从普通队列中读取第二隧道报文并获取第二隧道报文内CPU对应的索引值序号,并判断该序号与其自身索引值序号是否相同,若不同,则将第二隧道报文发送至索引值序号对应的CPU环形缓冲队列中缓存,索引值序号对应的CPU从环形缓冲队列中读取第二隧道报文来获取与索引值序号对应的CPU;与索引值序号一致的CPU对第二隧道报文进行拆分获取第二原始报文,并将第二原始报文发送至客户端。
利用第一隧道设备和第二隧道设备中CPU的环形缓冲区队列和普通队列实现二次分流方案,将预期处理的核心CPU ID携带在报文中进行传递到接收的隧道设备中,接收隧道报文的设备根据携带的核心CPU ID进行二次分流到对应的正确核心上进行报文处理,以此解决处理核心CPU不一致问题,从而实现隧道报文的对称RSS处理。下面结合图1所示的系统架构,对本案方案流程做进一步解释说明:
步骤1,客户端生成第一原始报文,然后发送到所述第一隧道设备的第一网口;所述第一网口接收到客户端发来的第一原始报文后,将所述第一原始报文发送给第一RSS模块,所述第一RSS模块调用第一哈希模块对所述第一原始报文中的四元组{客户端的IP地址,客户端的端口号,服务器端的IP地址,服务器端的端口号}进行哈希运算得到哈希值HA{客户端的IP地址,客户端的端口号,服务器端的IP地址,服务器端的端口号},然后,所述第一RSS模块将所述哈希值HA{客户端的IP地址,客户端的端口号,服务器端的IP地址,服务器端的端口号}与所述第一间接寻址模块内预先设置的若干第一索引值进行比对,然后根据比对结果将所述第一原始报文发送到相应的CPU1i所对应的QUE1i,其中i=1,2,…,n;
步骤2,CPU1i从QUE1i中读取第一原始报文后,将CPU1i所对应的序号i和所述第一原始报文一起组合成第一隧道报文数据,并加上隧道相关信息后封装得到第一隧道报文,所述第一隧道报文包括第二网口的IP地址、第二网口的端口号、第三网口的IP地址、第三网口的端口号和所述第一隧道报文数据;所述CPU1i将所述第一隧道报文经所述第一RSS模块和所述第二网口发送给所述第二隧道设备的第三网口;
步骤3,所述第二隧道设备的第三网口将所述第一隧道报文传送给所述第二RSS模块;所述第二RSS模块调用第二哈希模块对所述第一隧道报文的四元组{第二网口的IP地址,第二网口的端口号,第三网口的IP地址,第三网口的端口号}进行哈希运算得到哈希值HA{第二网口的IP地址,第二网口的端口号,第三网口的IP地址,第三网口的端口号},然后,所述第二RSS模块将所述哈希值HA{第二网口的IP地址,第二网口的端口号,第三网口的IP地址,第三网口的端口号}与所述第二间接寻址模块内预先设置的若干第二索引值进行比对,然后根据比对结果将所述第一隧道报文发送到相应的CPU2j所对应的QUE2j,其中j=1,2,…,n;
步骤4,CPU2j从QUE2j中读取所述第一隧道报文后,CPU2j对所述第一隧道报文进行拆分,得到封装在所述第一隧道报文数据内的所述CPU1i所对应的序号i;然后,判断i值是否与j值相同,若i≠j,则CPU2j将所述第一隧道报文发送到RING2i,然后CPU2i从RING2i中读取所述第一隧道报文;若i=j,则CPU2j即为CPU2i
步骤5,CPU2i对所述第一隧道报文进行拆分,得到封装在所述第一隧道报文数据内的所述第一原始报文;然后,通过所述第四网口将所述第一原始报文发送给所述服务器端;
步骤6,所述服务器端在收到第一原始报文后,对其进行响应,生成第二原始报文,然后将所述第二原始报文发送到所述第二隧道设备的第四网口;所述第四网口将所收到的所述服务器端发送回来的第二原始报文发送给所述第二RSS模块,所述第二RSS模块将第二原始报文的四元组{服务器端的IP地址,服务器端的端口号,客户端的IP地址,客户端的端口号}进行拆解,组合成新的四元组{客户端的IP地址,客户端的端口号,服务器端的IP地址,服务器端的端口号};然后再计算该新四元组的哈希值HA{客户端的IP地址,客户端的端口号,服务器端的IP地址,服务器端的端口号};然后,第二RSS模块将所述哈希值HA{客户端的IP地址,客户端的端口号,服务器端的IP地址,服务器端的端口号}与所述第二间接寻址模块内预先设置的若干第二索引值进行比对,然后根据比对结果将所述第二原始报文发送到相应的CPU2i所对应的QUE2i,其中i=1,2,…,n;
步骤7,CPU2i从QUE2i中读取第二原始报文后,将CPU2i所对应的序号i和所述第二原始报文一起组合成第二隧道报文数据,并加上隧道相关信息后封装得到第二隧道报文,所述第二隧道报文包括第三网口的IP地址、第三网口的端口号、第二网口的IP地址、第二网口的端口号和所述第二隧道报文数据;所述CPU2i将所述第二隧道报文经所述第二RSS模块和所述第三网口发送给所述第一隧道设备的第二网口;
步骤8,所述第一隧道设备的第二网口将所述第二隧道报文传送给所述第一RSS模块;所述第一RSS模块调用第一哈希模块对所述第二隧道报文的四元组{第三网口的IP地址,第三网口的端口号,第二网口的IP地址,第二网口的端口号}进行哈希运算得到哈希值HA{第三网口的IP地址,第三网口的端口号,第二网口的IP地址,第二网口的端口号},然后,所述第一RSS模块将所述哈希值HA{第三网口的IP地址,第三网口的端口号,第二网口的IP地址,第二网口的端口号}与所述第一间接寻址模块内预先设置的若干第一索引值进行比对,然后根据比对结果将所述第二隧道报文发送到相应的CPU1k所对应的QUE1k,其中k=1,2,…,n;
步骤9,CPU1k从QUE1k中读取所述第二隧道报文后,CPU1k对所述第二隧道报文进行拆分,得到封装在所述第二隧道报文数据内的所述CPU2i所对应的序号i;然后,判断i值是否与k值相同,若i≠k,则CPU1k将所述第一隧道报文发送到RING1i,然后CPU1i从RING1i中读取所述第二隧道报文;若i=k,则CPU1k即为CPU1i
步骤10,CPU1i对所述第二隧道报文进行拆分,得到封装在所述第二隧道报文数据内的所述第二原始报文;然后,通过所述第一网口将所述第二原始报文发送给所述客户端。
所述第一原始报文、所述第一隧道报文均为正向报文;所述第二原始报文、所述第二隧道报文均为反向报文。
所述环形缓冲区队列是指一种环状的存储数据的区域,是一种先进先出的队列类型结构,其空间使用数组或链表等技术来进行构造。环形缓冲区队列特点是对其读出和写入可以是分开的,写入数据之后可以先不去读取,等到需要读取的时候再去读取。假设CPU有n个,则对应的环形缓冲区队列也相应的有n个,CPU i可以从环形缓冲区队列i接收数据包,但CPU i可以根据一定的规则向每个环形缓冲区队列发送数据包,其中,i=1,2,…,n。
所述普通队列是指一种先进先出FIFO(First Input First Output)的队列类型结构,其特点是先存入的数据先被提取。
HASH,又称作散列、杂凑或哈希,是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对步骤、数字表达式和数值并不限制本发明的范围。
在这里示出和描述的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制,因此,示例性实施例的其他示例可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (10)

1.一种利用二次分流实现隧道报文对称RSS处理的方法,其特征在于,利用CPU的普通队列和环形缓冲区队列对接收到的报文进行二次分流以实现同一个连接的双向报文处理,具体包含如下内容:
针对客户端生成的第一原始报文,第一隧道设备利用其RSS模块对第一原始报文进行哈希运算,并将哈希运算的哈希值与其间接寻址模块索引值进行比对,通过比对结果将第一原始报文发送至对应索引值的第一隧道设备CPU的普通队列;CPU从普通队列中读取第一原始报文,将其索引值序号与第一原始报文组合并添加隧道信息后封装成第一隧道报文,发送至第二隧道设备;
第二隧道设备利用其RSS模块对第一隧道报文进行哈希运算获取哈希值,利用哈希值和其间接寻址模块索引值进行比对,通过比对结果将第一隧道报文发送至相应的第二隧道设备CPU的普通队列中;CPU从普通队列中读取第一隧道报文并获取第一隧道报文内对应CPU索引值序号,判断获取的索引值序号与其自身序号是否相同,若不同,则将该第一隧道报文发送至索引值序号对应的CPU环形缓冲区队列中缓存,与索引值序号对应的CPU从其环形缓冲区队列中读取第一隧道报文来获取与索引值序号一致的CPU;索引值序号一致的第二隧道设备CPU对第一隧道报文进行拆分,得到第一隧道报文内的第一原始报文,并将第一原始报文发送至服务器端;
服务器端对第一原始报文进行响应,生成第二原始报文并发送至第二隧道设备;第二隧道设备利用其RSS模块对第二原始报文进行拆解和哈希运算,并与其间接寻址模块内索引值比对,根据比对结果将第二原始报文发送至第二隧道设备相应CPU的普通队列中;CPU从普通队列中读取第二原始报文,将其序号与第二原始报文组合并添加隧道相关信息封装后生成第二隧道报文发送至第一隧道设备;
第一隧道设备调用其RSS模块对第二隧道报文进行哈希运算获取哈希值,将哈希值与其间接寻址模块内索引值比对,根据比对结果将第二隧道报文发送至相应CPU普通队列;CPU从普通队列中读取第二隧道报文并获取第二隧道报文内CPU对应的索引值序号,并判断该序号与其自身索引值序号是否相同,若不同,则将第二隧道报文发送至索引值序号对应的CPU环形缓冲队列中缓存,索引值序号对应的CPU从环形缓冲队列中读取第二隧道报文来获取与索引值序号对应的CPU;与索引值序号一致的CPU对第二隧道报文进行拆分获取第二原始报文,并将第二原始报文发送至客户端。
2.根据权利要求1所述的利用二次分流实现隧道报文对称RSS处理的方法,其特征在于,第一原始报文和第二原始报文均包含原始源IP地址、原始源端口号、原始目的IP地址、原始目的端口号和原始报文数据。
3.根据权利要求1或2所述的利用二次分流实现隧道报文对称RSS处理的方法,其特征在于,第一原始报文包括客户端IP地址、客户端端口号、服务器端IP地址、服务器端端口号和第一原始报文数据;第二原始报文包括服务器端IP地址、服务器端端口号、客户端IP地址、客户端端口号和第二原始报文数据。
4.根据权利要求1所述的利用二次分流实现隧道报文对称RSS处理的方法,其特征在于,第一隧道报文和第二隧道报文均包含隧道源IP地址、隧道源端口号、隧道目的IP地址、隧道目的端口号和隧道报文数据。
5.根据权利要求1所述的利用二次分流实现隧道报文对称RSS处理的方法,其特征在于,第一隧道设备和第二隧道设备两者的RSS模块中的间接寻址模块内均预先设置有用于CPU间接寻址的索引值,且预先设置的索引值相匹配,第一隧道设备和第二隧道设备内的CPU个数相同。
6.根据权利要求1所述的利用二次分流实现隧道报文对称RSS处理的方法,其特征在于,第二隧道设备中RSS模块对第二原始报文进行拆解,组合成包含客户端IP地址、客户端端口号、服务器端IP地址和服务器端端口号的新四元组报文数据,并通过对该新四元组报文数据进行哈希运算来获取哈希值。
7.一种用于实施根据权利要求1至6之一所述的利用二次分流实现隧道报文对称RSS处理的方法的利用二次分流实现隧道报文对称RSS处理的系统,包括客户端,服务器端,及设置于客户端和服务器端之间用于正向报文和反向报文传送的第一隧道设备和第二隧道设备,第一隧道设备和第二隧道设备共同构成正向报文和反向报文传送隧道的两端,其特征在于,所述第一隧道设备和第二隧道设备内均设置有RSS模块,及若干CPU、环形缓冲区队列和普通队列,其中,每个隧道设备的CPU个数均与对应的环形缓冲区队列和普通队列相一致,CPU、环形缓冲区队列及普通队列三者通过索引值相匹配;RSS模块对客户端和服务器端传送的数据报文通过普通队列分发至对应CPU;CPU读取报文并通过索引值进行匹配,匹配正确则进行相应报文处理,否则将报文送至CPU对应的环形缓冲区队列中进行缓存;所述RSS模块包含用于对报文执行哈希运算获取哈希值的哈希模块和用于通过哈希值和索引值将报文分配至对应普通队列模块的间接寻址模块,每个间接寻址模块内均预置有若干索引值。
8.根据权利要求7所述的利用二次分流实现隧道报文对称RSS处理的系统,其特征在于,哈希值包括源IP地址、源端口号、目的端IP地址和目的端口号。
9.根据权利要求7所述的利用二次分流实现隧道报文对称RSS处理的系统,其特征在于,针对第一隧道设备和第二隧道设备中,每个隧道设备至少包含一个CPU、一个环形缓冲区队列和一个普通队列,且两个隧道设备内的CPU个数相同。
10.根据权利要求7或9所述的利用二次分流实现隧道报文对称RSS处理的系统,其特征在于,第一隧道设备中CPU、环形缓冲区队列和普通队列分别用CPU1i、RING1i和QUE1i表示,其RSS模块与每个QUE1i相连接,并通过第一网口与客户端连接,通过第二网口与第二隧道设备对应连接,其中,i=1,2,…,n,n为第一隧道设备内实际CPU个数;第二隧道设备中CPU、环形缓冲区队列和普通队列分别用CPU2i、RING2i和QUE2i表示,第二隧道设备的RSS模块与每个QUE2i相连接,且通过第三网口与第一隧道设备连接,通过第四网口与服务器端连接。
CN202110343516.6A 2021-03-30 2021-03-30 利用二次分流实现隧道报文对称rss处理的方法及系统 Active CN113098794B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110343516.6A CN113098794B (zh) 2021-03-30 2021-03-30 利用二次分流实现隧道报文对称rss处理的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110343516.6A CN113098794B (zh) 2021-03-30 2021-03-30 利用二次分流实现隧道报文对称rss处理的方法及系统

Publications (2)

Publication Number Publication Date
CN113098794A CN113098794A (zh) 2021-07-09
CN113098794B true CN113098794B (zh) 2022-04-05

Family

ID=76671587

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110343516.6A Active CN113098794B (zh) 2021-03-30 2021-03-30 利用二次分流实现隧道报文对称rss处理的方法及系统

Country Status (1)

Country Link
CN (1) CN113098794B (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101964749A (zh) * 2010-09-21 2011-02-02 北京网康科技有限公司 一种基于多核构架的报文转发方法及系统
CN105871725A (zh) * 2015-01-23 2016-08-17 阿里巴巴集团控股有限公司 一种报文分流方法及装置
CN105871741A (zh) * 2015-01-23 2016-08-17 阿里巴巴集团控股有限公司 一种报文分流方法及装置
CN105915462A (zh) * 2016-06-03 2016-08-31 中国航天科技集团公司第九研究院第七七研究所 一种面向tcp会话的对称性rss电路
CN107196870A (zh) * 2017-07-20 2017-09-22 哈尔滨工业大学 一种基于dpdk的流量动态负载均衡方法
CN107547508A (zh) * 2017-06-29 2018-01-05 新华三信息安全技术有限公司 一种报文发送、接收方法、装置及网络设备
CN108494623A (zh) * 2018-03-14 2018-09-04 东软集团股份有限公司 一种网络转发设备的性能测试方法及设备
CN109218229A (zh) * 2017-06-30 2019-01-15 华为技术有限公司 一种报文处理方法、网络设备及存储介质
CN111984415A (zh) * 2020-08-24 2020-11-24 北京亚鸿世纪科技发展有限公司 一种基于流水线转发模型的负载均衡方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8635352B2 (en) * 2011-02-22 2014-01-21 Qwilt, Inc. System and method for symmetric receive-side scaling (RSS)
US10701107B2 (en) * 2017-12-06 2020-06-30 Nicira, Inc. Deterministic load balancing of IPSec processing
US10944717B2 (en) * 2018-03-12 2021-03-09 Stellar Cyber, Inc. LSB based symmetric receive-side scaling

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101964749A (zh) * 2010-09-21 2011-02-02 北京网康科技有限公司 一种基于多核构架的报文转发方法及系统
CN105871725A (zh) * 2015-01-23 2016-08-17 阿里巴巴集团控股有限公司 一种报文分流方法及装置
CN105871741A (zh) * 2015-01-23 2016-08-17 阿里巴巴集团控股有限公司 一种报文分流方法及装置
CN105915462A (zh) * 2016-06-03 2016-08-31 中国航天科技集团公司第九研究院第七七研究所 一种面向tcp会话的对称性rss电路
CN107547508A (zh) * 2017-06-29 2018-01-05 新华三信息安全技术有限公司 一种报文发送、接收方法、装置及网络设备
CN109218229A (zh) * 2017-06-30 2019-01-15 华为技术有限公司 一种报文处理方法、网络设备及存储介质
CN107196870A (zh) * 2017-07-20 2017-09-22 哈尔滨工业大学 一种基于dpdk的流量动态负载均衡方法
CN108494623A (zh) * 2018-03-14 2018-09-04 东软集团股份有限公司 一种网络转发设备的性能测试方法及设备
CN111984415A (zh) * 2020-08-24 2020-11-24 北京亚鸿世纪科技发展有限公司 一种基于流水线转发模型的负载均衡方法及装置

Also Published As

Publication number Publication date
CN113098794A (zh) 2021-07-09

Similar Documents

Publication Publication Date Title
CN101019385B (zh) 在整个设备堆栈中的端口聚合
US6628615B1 (en) Two level virtual channels
US6904040B2 (en) Packet preprocessing interface for multiprocessor network handler
US6909713B2 (en) Hash-based data frame distribution for web switches
US11687375B2 (en) Technologies for hybrid field-programmable gate array application-specific integrated circuit code acceleration
US20030195919A1 (en) Packet distributing system and method for distributing access packets to a plurality of server apparatuses
US10666564B2 (en) Increasing entropy across routing table segments
US10044625B2 (en) Hash level load balancing for deduplication of network packets
US20210359952A1 (en) Technologies for protocol-agnostic network packet segmentation
US5864553A (en) Multiport frame exchange system
WO2020171989A1 (en) Rdma transport with hardware integration and out of order placement
CN113326228A (zh) 基于远程直接数据存储的报文转发方法、装置及设备
EP3928213A1 (en) Rdma transport with hardware integration
WO2012055319A1 (zh) 调度tcam查询和刷新消息的方法和装置
CN113157445B (zh) 基于哈希运算和索引值比对的双向报文对称rss处理方法及系统
CN113079077B (zh) 基于队列实现的dpdk架构下隧道报文对称rss处理方法及系统
US6728778B1 (en) LAN switch with compressed packet storage
CN113098794B (zh) 利用二次分流实现隧道报文对称rss处理的方法及系统
CN113986811A (zh) 一种高性能内核态网络数据包加速方法
CN116248304A (zh) 一种高性能计算的云服务消息传递监测系统及其使用方法
US20190356607A1 (en) Merging read requests in network device architecture
US20220217085A1 (en) Server fabric adapter for i/o scaling of heterogeneous and accelerated compute systems
US11563715B2 (en) Pattern matching by a network device for domain names with wildcard characters
US7940764B2 (en) Method and system for processing multicast packets
CN110519169B (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
GR01 Patent grant
GR01 Patent grant
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: A Method and System for Symmetric RSS Processing of Tunnel Messages Using Secondary Diversion

Granted publication date: 20220405

Pledgee: Bank of Zhengzhou Co.,Ltd. Zhongyuan Science and Technology City Sub branch

Pledgor: ZHENGZHOU XINDA JIEAN INFORMATION TECHNOLOGY Co.,Ltd.

Registration number: Y2024980007004

PE01 Entry into force of the registration of the contract for pledge of patent right