CN105915462B - 一种面向tcp会话的对称性rss电路 - Google Patents
一种面向tcp会话的对称性rss电路 Download PDFInfo
- Publication number
- CN105915462B CN105915462B CN201610394135.XA CN201610394135A CN105915462B CN 105915462 B CN105915462 B CN 105915462B CN 201610394135 A CN201610394135 A CN 201610394135A CN 105915462 B CN105915462 B CN 105915462B
- Authority
- CN
- China
- Prior art keywords
- module
- hash
- tcp
- rss
- extraction
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种面向TCP会话的对称性RSS电路,包括TCP/IP头提取模块、Hash函数计算模块、Hash结果重组模块、间接表查询模块和用于存储配置信息的RSS寄存器模块;TCP/IP头提取模块连接有MAC模块,间接表查询模块连接有RQP模块;本发明通过主动地计算反向提取内容的Hash结果,使用由正向提取内容和反向提取内容的Hash结果产生的最终结果作为CPU核的判决依据。因为使用该方法后,TCP会话中的上行数据和下行数据得到的Hash结果相同,因此会指向同一个CPU核,即实现了将不同方向但却属于同一个TCP/IP链接的报文分配到相同的CPU核上进行处理,实现了对现有RSS的兼容。
Description
技术领域
本发明属于计算机网络领域,涉及一种网络控制器中的接收端调控机构,尤其适用于网络安全领域的对TCP会话敏感的高性能网络数据处理系统,如网络入侵检测系统和硬件防火墙系统等,具体涉及一种面向TCP会话的对称性RSS电路。
背景技术
目前在主流的以太网控制器中,都使用了Receive-side Scaling(RSS,接收端调控)技术。RSS技术通过对接收到的数据报文进行分析处理,将属于同一个TCP/IP流的数据分配到相同的CPU核上处理,从而在多处理器(多核)系统之间平衡了网络数据吞吐,同时也提高了CPU对网络数据的处理能力。
然而在网络安全领域,如网络入侵检测系统和硬件防火墙系统中,为了确保网络的安全和可靠,都需要对整个网络的数据进行监测和分析。因为TCP会话是双向的,因此网络入侵检测系统和硬件防火墙系统会接收到双向的TCP/IP报文。这就需要其对TCP会话具有非常高的处理能力,但是现有的RSS不能够保证属于同一个TCP会话的上行数据和下行数据都在同一个CPU核中处理,这样一来就会产生多核之间跨线程访问等问题,从而增大了CPU的开销,降低了系统的性能。
一种通过修改RSS算法中的Key值来实现对称的RSS方法(Shinae Woo,ScalableTCP Session Monitoring with Symmetric Receive-side Scaling),通过对RSS中采用的Toeplitz Hash算法的研究,发现当Hash类型为带有TCP头的IPv4情况时,只要Hash Key为16位循环的方式,那么对于同一个TCP/IP会话,无论其是上行数据还是下行数据,最终计算出的Hash结果是相同的,这也就意味着将会由一个CPU核来处理双向的数据。该方法实现起来简单,只需要将Hash Key配成16位循环的方式即可,但是其还是存在以下缺陷:1、存在边界条件(corner cases),当Hash Key全为1或全为0时,该方法将失效;2、适用性不强。该方法只针对一种Hash类型,对于其它三种Hash类型并不适用。3、存在潜在的风险。修改HashKey使该方法成为了Toeplitz Hash算法的子集,不能保证Hash结果的唯一性。
一种面向多核处理器系统的传输友好的网卡,(Wenji Wu,Phil DeMar,ATransport-Friendly NIC for Multicore/Multiprocessor Systems,2012),通过操作系统软件和网卡硬件电路的配合,在原有的RSS电路基础上,由软件来计算和维护间接表,从而得到数据流-CPU核的对应关系,实现对双向TCP/IP数据的同核处理。该架构存在的主要缺陷是:1、硬件设计相对传统的RSS较为复杂,且需要大量的memory来存储数据流-CPU核的对应关系;2、需要操作系统的支持,需要对操作系统进行一定的修改,风险较高,可移植性较差。
一种Ethernet Flow Director技术的提出,虽然能够保证属于同一个TCP会话的上行数据和下行数据都在同一个CPU核中处理,但是其存在TCP报文重排序的问题,无法保障QoS。因此,RSS仍然被广泛地应用在网络控制器设计中。这主要是因为RSS技术相对来说较成熟,且具有很好的软件兼容性。
发明内容
本发明为了有效解决在对TCP会话敏感的处理系统中TCP上行和下行数据不在同一个CPU核中处理的问题,目的在于提出一种面向TCP会话的对称性RSS电路,有效解决双向TCP报文与CPU核的唯一绑定问题,且与现有的RSS兼容,无需软件层面做任何的修改,同时实现了将不同方向但却属于同一个TCP/IP链接的报文分配到相同的CPU核上进行处理。
为实现上述目的,本发明采用如下的技术方案来实现:
一种面向TCP会话的对称性RSS电路,包括TCP/IP头提取模块、Hash函数计算模块、Hash结果重组模块、间接表查询模块和用于存储配置信息的RSS寄存器模块;TCP/IP头提取模块连接有MAC模块,间接表查询模块连接有RQP模块;
TCP/IP头提取模块用于根据RSS寄存器模块中Hash类型寄存器的配置,对从MAC模块接收到的数据帧分别进行TCP/IP头和反向的TCP/IP头的提取,并将提取结果分别发送到Hash函数计算模块;
Hash函数计算模块用于完成对接收到的TCP/IP头提取模块1的提取结果的Hash结果计算,包括对正向提取内容的计算和反向提取内容的计算;并将计算结果发送到Hash结果重组模块;
Hash结果重组模块用于接收到正向提取内容和反向提取内容的Hash结果,并对两个结果进行重组,重组的方式为:对两个结果做算术加法运算,取运算结果的低7位作为重组后的输出结果,并发送到间接表查询模块;
间接表查询模块用于根据接收到的Hash结果重组模块输出的结果决定由哪个CPU核来对该报文进行处理。
本发明进一步的改进在于,RSS寄存器模块存储的配置信息包括Hash类型、HashKey和间接表。
本发明进一步的改进在于,反向的TCP/IP头的提取的规则是将源IP地址和目的IP地址以及源端口地址和目的端口地址分别进行交换。
本发明进一步的改进在于,针对4种Hash类型,具体的提取方式如下:
(1)带TCP头的IPv4帧
正向提取内容={源IPv4地址,目的IPv4地址,源端口地址,目的端口地址};
反向提取内容={目的IPv4地址,源IPv4地址,目的端口地址,源端口地址};
(2)IPv4帧
正向提取内容={源IPv4地址,目的IPv4地址};
反向提取内容={目的IPv4地址,源IPv4地址};
(3)带TCP头的IPv6帧
正向提取内容={源IPv6地址,目的IPv6地址,源端口地址,目的端口地址};
反向提取内容={目的IPv6地址,源IPv6地址,目的端口地址,源端口地址};
(4)IPv6帧
正向提取内容={源IPv6地址,目的IPv6地址};
反向提取内容={目的IPv6地址,源IPv6地址};
对于带TCP头的IPv4的数据帧和IPv4的数据帧,其提取内容长度分别为12bytes和8bytes;对于带TCP头的IPv6数据帧和IPv6数据帧的提取内容长度分别为36bytes和32bytes。
本发明进一步的改进在于,Hash函数计算模块由两套功能相同的计算结构组成,分别对TCP/IP头提取模块送来的正向提取内容和反向提取内容进行Hash结果计算,每套计算结构包括由1个提取内容分割模块、1个Key值分割模块、字节Hash计算模块以及1个结果输出模块构成;
提取内容分割模块根据RSS寄存器模块中Hash类型寄存器的配置,判断出接收到的提取内容的长度,接着对接收到的提取内容进行分割;
Key值分割模块根据RSS寄存器模块中Hash Key寄存器的配置,获得相应的Key值,并对Key值进行分割;
提取内容分割模块和Key值分割模块分别将分割后的结果按照一一对应的关系送入字节Hash计算模块8,完成一个字节的Hash结果计算;字节Hash计算模块共有36个,按照Toeplitz函数的算法完成对8位提取内容的计算,完成计算后将32位计算结果输送给结果输出模块;
结果输出模块接收来自36个字节Hash计算模块的计算结果,并对36组32位的结果进行异或运算,输出32位的最终结果。
本发明进一步的改进在于,提取内容分割模块分割的方式为按照从数据最高位到最低位的方向,从数据的最高位开始,每连续8位分为一组,然后将分好的各组数据并行输出;对于带TCP头的IPv4数据帧的提取内容,其分组数为12组;对于IPv4数据帧的提取内容,其分组数为8组;对于带TCP头的IPv6数据帧的提取内容,其分组数为36组;对于IPv6数据帧的提取内容,其分组数为32组。
本发明进一步的改进在于,提取内容分割模块最多支持36组数据的并行输出,对于分割组数不到36组的情况,指定剩余的组的输出值为全零。
本发明进一步的改进在于,Key值分割模块分割的方式为按照从Key值最高位到最低位的方向,从Key值的最高位开始,每间隔8位向后取40位Key值组成一组,然后将分好的各组Key值并行输出。
本发明进一步的改进在于,间接表查询模块根据接收到的Hash结果重组模块输出的结果决定由哪个CPU核来对该报文进行处理的具体的工作过程是:间接表查询模块根据输入的7位结果,进行相应的地址转换,然后用转换后的地址从RSS寄存器模块5中读出间接表信息并输出给RQP模块;从间接表中读出的信息是一组4位的数据,其值分别对应CPU0~CPU15,RQP模块根据4位数据的结果将数据帧分配给对应的CPU核处理。
与现有技术相比,本发明具有的有益效果:本发明通过主动地计算反向提取内容的Hash结果,使用由正向提取内容和反向提取内容的Hash结果产生的最终结果来作为CPU核的判决依据。因为使用该方法后,TCP会话中的上行数据和下行数据得到的Hash结果相同,因此会指向同一个CPU核,即实现了将不同方向但却属于同一个TCP/IP链接的报文分配到相同的CPU核上进行处理,克服了现有RSS技术的不足,实现了对现有RSS的兼容。
本发明有效解决了双向TCP报文与CPU核的唯一绑定问题,即实现了将不同方向但却属于同一个TCP/IP链接的报文分配到相同的CPU核上进行处理,从而提高了CPU对网络数据的处理能力,避免了多核之间跨线程访问的问题,动态地调节了数据接收时的性能,使网络吞吐达到最高状态。
通过对该发明进行功能仿真,并与现有的RSS方法进行比较。在测试环境中,随机产生1000组双向的TCP报文,并分别采用现有的RSS电路和该发明提出的对称性RSS电路对这些报文进行Hash值的计算。其中,Hash类型、Hash Key以及间接表信息均相同。仿真结果表明,对称性RSS电路对于同一个TCP链接,无论方向如何,计算出的Hash结果值均相同。同时,为了与现有RSS比较,对两种电路的计算结果分别计算了变化系数。变化系数越接近零就表明CPU核间的负载越平衡。分别在CPU核数为4、8、12、16的情况下对Hash计算结果进行了变化系数的计算。计算结果表明,在CPU核数为4、12、16的情况下,对称性RSS的变化系数均略高于现有RSS的变化系数;在CPU核数为8的情况下,对称性RSS的变化系数均低于现有RSS的变化系数。但在四种情况下,对称性RSS的变化系数和现有RSS的变化系数均低于0.008,属于同一个数量级。因此,对称性RSS可以保持与现有RSS相同数量级的负载平衡。
附图说明
图1为对称性RSS电路总体结构框图。
图2为Hash函数计算模块的结构框图。
图中,1为TCP/IP头提取模块,2为Hash函数计算模块,3为Hash结果重组模块,4为间接表查询模块,5为RSS寄存器模块,6为提取内容分割模块,7为Key值分割模块,8为字节Hash计算模块,9为结果输出模块。
具体实施方式
下面结合附图对本发明进行详细说明。
本发明的总体结构框图如图1所示。其中,虚线内部结构为本发明所提出的对称性RSS电路结构,虚线外部为与其连接的网络控制器中的其它模块,其中MAC模块为媒体接入控制模块,负责完成数据帧的封装、解封、发送和接收功能,RQP(Receive QueuePlacement)模块为接收队列分配模块,将数据帧分配到不同的接收队列中,并由不同的CPU核对其进行处理。
参见图1,包括TCP/IP头提取模块1、Hash函数计算模块2、Hash结果重组模块3、间接表查询模块4和用于存储配置信息的RSS寄存器模块5;TCP/IP头提取模块1连接有MAC模块10,间接表查询模块4连接有RQP模块11;
TCP/IP头提取模块1主要功能是根据RSS寄存器模块5中Hash类型寄存器的配置,对从MAC接收到的数据帧分别进行TCP/IP头和反向的TCP/IP头的提取,并将提取结果分别发送到Hash函数计算模块。与现有RSS技术一致,该模块支持4种Hash类型的TCP/IP头提取,分别为IPv4、带TCP头的IPv4、IPv6以及带TCP头的IPv6。不同之处是该模块除了对数据帧的TCP/IP头进行提取,还需要对反向的TCP/IP头进行提取。反向提取的规则是将源IP地址和目的IP地址以及源端口地址和目的端口地址分别进行交换。针对支持的4种Hash类型,下面给出具体的提取方式:
(1)带TCP头的IPv4帧
正向提取内容={源IPv4地址,目的IPv4地址,源端口地址,目的端口地址};
反向提取内容={目的IPv4地址,源IPv4地址,目的端口地址,源端口地址}。
(2)IPv4帧
正向提取内容={源IPv4地址,目的IPv4地址};
反向提取内容={目的IPv4地址,源IPv4地址}。
(3)带TCP头的IPv6帧
正向提取内容={源IPv6地址,目的IPv6地址,源端口地址,目的端口地址};反向提取内
容={目的IPv6地址,源IPv6地址,目的端口地址,源端口地址}。
(4)IPv6帧
正向提取内容={源IPv6地址,目的IPv6地址};
反向提取内容={目的IPv6地址,源IPv6地址}。
因为IPv4地址为32位,IPv6地址为128位,而端口地址均为16位,所以针对4种不同的Hash类型,其提取内容长度也不相同。具体说来,对于带TCP头的IPv4的数据帧和IPv4的数据帧,其提取内容长度分别为12bytes和8bytes;对于带TCP头的IPv6数据帧和IPv6数据帧的提取内容长度分别为36bytes和32bytes。
参见图2,Hash函数计算模块2主要功能是完成对提取内容的Hash结果计算,包括对正向提取内容的计算和反向提取内容的计算。该模块主要由2个提取内容分割模块、2个Key值分割模块、72个字节Hash计算模块以及2个结果输出模块构成,其结构框图如图2所示。
该模块由两套功能相同的计算结构组成,分别对TCP/IP头提取模块送来的正向提取内容和反向提取内容进行Hash结果计算。RSS技术中的Hash计算采用Toeplitz函数。下面详细地介绍该模块中的一套计算结构是如何实现Hash计算的。
首先,提取内容分割模块6根据RSS寄存器模块5中Hash类型寄存器的配置,判断出接收到的提取内容的长度,接着对接收到的提取内容进行分割。分割的方式为按照从数据最高位到最低位的方向,从数据的最高位开始,每连续8位分为一组,然后将分好的各组数据并行输出。因为4种类型的提取内容长度不同,所以分组数也不相同。具体说来,对于带TCP头的IPv4数据帧的提取内容,其分组数为12组;对于IPv4数据帧的提取内容,其分组数为8组;对于带TCP头的IPv6数据帧的提取内容,其分组数为36组;对于IPv6数据帧的提取内容,其分组数为32组。
提取内容分割模块6最多支持36组数据的并行输出,对于分割组数不到36组的情况,指定剩余的组的输出值为全零。
同时,Key值分割模块7根据RSS寄存器模块中Hash Key寄存器的配置,获得相应的Key值,并对Key值进行分割。分割的方式为按照从Key值最高位到最低位的方向,从Key值的最高位开始,每间隔8位向后取40位Key值组成一组,然后将分好的各组Key值并行输出。
为了更准确、更清楚的描述Key值的分割方法和思想,下面以Key值为320位为例给出分割结果。当Key值为320位时(最高位在最左边),其各组分割结果为Key[319:279],Key[311:271],Key[303:263],Key[295:255],……,Key[48:8],Key[40:0]。对于带TCP头的IPv6数据帧,Key值有320位,对于带TCP头的IPv4数据帧,Key值有128位。因此Key值分割模块也需要根据Hash类型寄存器的配置,读取出相应的Key值。Key值分割模块最多支持36组分割结果的并行输出。对于IPv6的320位Key值来说,按照上述分割方法,正好分割为36组;然而对于IPv4的128位的Key值,按照上述分割方法只能分割出11组。因此,对于分割组数不到36组的情况,指定剩余组的输出值为全零。
提取内容分割模块6和Key值分割模块7分别将分割后的结果按照一一对应的关系送入字节Hash计算模块8,完成一个字节的Hash结果计算。一套计算结构中字节Hash计算模块8共有36个,按照Toeplitz函数的算法完成对8位提取内容的计算。该模块由纯硬件电路实现,完成计算后将32位计算结果输送给结果输出模块9。
结果输出模块9接收来自36个字节Hash计算模块的计算结果,并对36组32位的结果进行异或运算,输出32位的最终结果。
至此,Hash结果计算过程结束。
Hash函数计算模块2通过硬件实现了Toeplitz函数的算法,并且通过对算法的分析,采用分割计算的方式,实现了并行的处理,提高了计算的速率。除此之外,对于分割组数不到36组的情况,指定剩余组的输出值为全零,有效的避免了设计中使能信号的产生,因为其计算结果必定为全零,因此在结果输出模块中,该结果对最终的结果没有产生任何影响。
Hash结果重组模块3主要功能是完成对正向和反向提取内容的Hash结果的再次计算,并输出重组后的结果。Hash结果重组模块会分别接收到正向提取内容和反向提取内容的Hash结果,对两个结果进行重组的方式为:对两个结果做算术加法运算,取运算结果的低7位作为重组后的输出结果。
间接表查询模块4主要功能是根据输入的7位结果决定由哪个CPU核来对该报文进行处理。
具体的工作过程是:间接表查询模块根据输入的7位结果,进行相应的地址转换,然后用转换后的地址从RSS寄存器模块中读出间接表信息并输出给RQP(Receive QueuePlacement)模块。从间接表中读出的信息是一组4位的数据,其值分别对应CPU0~CPU15,因此该RSS电路最多支持16个CPU核的系统。RQP模块根据4位数据的结果将数据帧分配给对应的CPU核处理。
RSS寄存器模块5主要存储整个对称性RSS电路的配置信息。主要的配置信息包括Hash类型、Hash Key和间接表。该模块上电后由主机驱动程序进行配置,并且在实时工作中,驱动程序也可以根据需求动态地修改相应的寄存器信息,从而达到动态的负载平衡。
本发明的核心思想是通过主动地计算反向提取内容的Hash结果,使用由正向和反向的Hash结果产生的最终结果来作为CPU核的判决依据。因为使用该方法后,TCP会话中的上行数据和下行数据得到的结果相同,因此会指向同一个CPU核,即实现了将不同方向但却属于同一个TCP/IP链接的报文分配到相同的CPU核上进行处理。
下面对图1中模块进行详细说明。
TCP/IP头提取模块1,其数量为1,主要功能是根据RSS寄存器模块中Hash类型寄存器的配置,对从MAC接收到的数据帧分别进行TCP/IP头和反向的TCP/IP头的提取,并将提取结果分别发送到Hash函数计算模块。
Hash函数计算模块2,其数量为1,主要功能是完成对提取内容的Hash结果计算,包括对正向提取内容的计算和反向提取内容的计算。
Hash结果重组模块3,其数量为1,主要功能是完成对正向和反向提取内容的Hash结果的再次计算,并输出重组后的结果。
间接表查询模块4,其数量为1,主要功能是根据输入的7位结果决定由哪个CPU核来对该报文进行处理。
RSS寄存器模块5,其数量为1,主要存储整个对称性RSS电路的配置信息。
图2为Hash函数计算模块的结构框图。
下面对图2中模块进行详细说明。
提取内容分割模块6,其数量为2,主要功能是根据RSS寄存器模块中Hash类型寄存器的配置,判断出接收到的提取内容的长度,接着对接收到的提取内容进行分割。
Key值分割模块7,其数量为2,主要功能是根据RSS寄存器模块中Hash Key寄存器的配置,获得相应的Key值,并对Key值进行分割。
字节Hash计算模块8,其数量为72,主要功能是完成一个字节的Hash结果计算。
结果输出模块9,其数量为2,主要功能是接收来自36个字节Hash计算模块的计算结果,并对36组32位的结果进行异或运算,输出32位的最终结果。
本发明可用于具有RSS功能的网络控制器中,特别适用于对TCP会话敏感的、高性能网络数据处理系统中。
在网络安全领域,如网络入侵检测系统和硬件防火墙系统中,为了确保网络的安全和可靠,都需要对整个网络的数据进行监测和分析。因为TCP会话是双向的,因此网络入侵检测系统和硬件防火墙系统会接收到双向的TCP/IP报文。这就需要其对TCP会话具有非常高的处理能力,但是现有的RSS不能够保证属于同一个TCP会话的上行数据和下行数据都在同一个CPU核中处理,这样一来就会产生多核之间跨线程访问等问题,从而增大了CPU的开销,降低了系统的性能。
采用本发明提出的对称性RSS电路,可对现有的RSS技术做完全的兼容,在网络控制器的设计中可以完整地替代现有的RSS电路,同时实现将不同方向但却属于同一个TCP/IP链接的报文分配到相同的CPU核上进行处理的功能。
根据上述方案,用Verilog语言对本发明中各个模块的逻辑设计进行描述,并将其与网络控制器中的其它模块集成在一起,进行系统级的验证。验证结果表明,本发明实现了设计功能,且性能满足预期。
通过对该发明进行功能仿真,并与现有的RSS方法进行比较。在测试环境中,随机产生1000组双向的TCP报文,并分别采用现有的RSS电路和该发明提出的对称性RSS电路对这些报文进行Hash值的计算。其中,Hash类型、Hash Key以及间接表信息均相同。仿真结果表明,对称性RSS电路对于同一个TCP链接,无论方向如何,计算出的Hash结果值均相同。同时,为了与现有RSS比较,对两种电路的计算结果分别计算了变化系数。变化系数越接近零就表明CPU核间的负载越平衡。分别在CPU核数为4、8、12、16的情况下对Hash计算结果进行了变化系数的计算。计算结果表明,在CPU核数为4、12、16的情况下,对称性RSS的变化系数均略高于现有RSS的变化系数;在CPU核数为8的情况下,对称性RSS的变化系数均低于现有RSS的变化系数。但在四种情况下,对称性RSS的变化系数和现有RSS的变化系数均低于0.008,属于同一个数量级。因此,对称性RSS可以保持与现有RSS相同数量级的负载平衡。
Claims (8)
1.一种面向TCP会话的对称性RSS电路,其特征在于,包括TCP/IP头提取模块(1)、Hash函数计算模块(2)、Hash结果重组模块(3)、间接表查询模块(4)和用于存储配置信息的接收端调控(RSS)寄存器模块(5);TCP/IP头提取模块(1)连接有MAC模块(10),间接表查询模块(4)连接有接收队列分配(RQP)模块(11);
TCP/IP头提取模块(1)用于根据RSS寄存器模块(5)中Hash类型寄存器的配置,对从MAC模块接收到的数据帧分别进行TCP/IP头和反向的TCP/IP头的提取,并将提取结果分别发送到Hash函数计算模块(2);
Hash函数计算模块(2)用于完成对接收到的TCP/IP头提取模块1的提取结果的Hash结果计算,包括对正向提取内容的计算和反向提取内容的计算;并将计算结果发送到Hash结果重组模块(3);
Hash函数计算模块(2)由两套功能相同的计算结构组成,分别对TCP/IP头提取模块送来的正向提取内容和反向提取内容进行Hash结果计算,每套计算结构包括由1个提取内容分割模块(6)、1个Key值分割模块(7)、字节Hash计算模块(8)以及1个结果输出模块(9)构成;
提取内容分割模块(6)根据RSS寄存器模块(5)中Hash类型寄存器的配置,判断出接收到的提取内容的长度,接着对接收到的提取内容进行分割;
Key值分割模块(7)根据RSS寄存器模块(5)中Hash Key寄存器的配置,获得相应的Key值,并对Key值进行分割;
提取内容分割模块(6)和Key值分割模块(7)分别将分割后的结果按照一一对应的关系送入字节Hash计算模块8,完成一个字节的Hash结果计算;字节Hash计算模块(8)共有36个,按照Toeplitz函数的算法完成对8位提取内容的计算,完成计算后将32位计算结果输送给结果输出模块(9);
结果输出模块(9)接收来自36个字节Hash计算模块(8)的计算结果,并对36组32位的结果进行异或运算,输出32位的最终结果;
Hash结果重组模块(3)用于接收到正向提取内容和反向提取内容的Hash结果,并对两个结果进行重组,重组的方式为:对两个结果做算术加法运算,取运算结果的低7位作为重组后的输出结果,并发送到间接表查询模块(4);
间接表查询模块(4)用于根据接收到的Hash结果重组模块(3)输出的结果决定由哪个CPU核来对报文进行处理。
2.根据权利要求1所述的一种面向TCP会话的对称性RSS电路,其特征在于,RSS寄存器模块(5)存储的配置信息包括Hash类型、Hash Key和间接表。
3.根据权利要求1所述的一种面向TCP会话的对称性RSS电路,其特征在于,反向的TCP/IP头的提取的规则是将源IP地址和目的IP地址以及源端口地址和目的端口地址分别进行交换。
4.根据权利要求3所述的一种面向TCP会话的对称性RSS电路,其特征在于,针对4种Hash类型,具体的提取方式如下:
(1)带TCP头的IPv4帧
正向提取内容={源IPv4地址,目的IPv4地址,源端口地址,目的端口地址};
反向提取内容={目的IPv4地址,源IPv4地址,目的端口地址,源端口地址};
(2)IPv4帧
正向提取内容={源IPv4地址,目的IPv4地址};
反向提取内容={目的IPv4地址,源IPv4地址};
(3)带TCP头的IPv6帧
正向提取内容={源IPv6地址,目的IPv6地址,源端口地址,目的端口地址};
反向提取内容={目的IPv6地址,源IPv6地址,目的端口地址,源端口地址};
(4)IPv6帧
正向提取内容={源IPv6地址,目的IPv6地址};
反向提取内容={目的IPv6地址,源IPv6地址};
对于带TCP头的IPv4的数据帧和IPv4的数据帧,其提取内容长度分别为12bytes和8bytes;对于带TCP头的IPv6数据帧和IPv6数据帧的提取内容长度分别为36bytes和32bytes。
5.根据权利要求1所述的一种面向TCP会话的对称性RSS电路,其特征在于,提取内容分割模块(6)分割的方式为按照从数据最高位到最低位的方向,从数据的最高位开始,每连续8位分为一组,然后将分好的各组数据并行输出;对于带TCP头的IPv4数据帧的提取内容,其分组数为12组;对于IPv4数据帧的提取内容,其分组数为8组;对于带TCP头的IPv6数据帧的提取内容,其分组数为36组;对于IPv6数据帧的提取内容,其分组数为32组。
6.根据权利要求5所述的一种面向TCP会话的对称性RSS电路,其特征在于,提取内容分割模块(6)最多支持36组数据的并行输出,对于分割组数不到36组的情况,指定剩余的组的输出值为全零。
7.根据权利要求1所述的一种面向TCP会话的对称性RSS电路,其特征在于,Key值分割模块(7)分割的方式为按照从Key值最高位到最低位的方向,从Key值的最高位开始,每间隔8位向后取40位Key值组成一组,然后将分好的各组Key值并行输出。
8.根据权利要求1所述的一种面向TCP会话的对称性RSS电路,其特征在于,间接表查询模块(4)根据接收到的Hash结果重组模块(3)输出的结果决定由哪个CPU核来对报文进行处理的具体的工作过程是:间接表查询模块(4)根据输入的7位结果,进行相应的地址转换,然后用转换后的地址从RSS寄存器模块5中读出间接表信息并输出给RQP模块;从间接表中读出的信息是一组4位的数据,其值分别对应CPU0~CPU15,RQP模块根据4位数据的结果将数据帧分配给对应的CPU核处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610394135.XA CN105915462B (zh) | 2016-06-03 | 2016-06-03 | 一种面向tcp会话的对称性rss电路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610394135.XA CN105915462B (zh) | 2016-06-03 | 2016-06-03 | 一种面向tcp会话的对称性rss电路 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105915462A CN105915462A (zh) | 2016-08-31 |
CN105915462B true CN105915462B (zh) | 2018-08-31 |
Family
ID=56749752
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610394135.XA Active CN105915462B (zh) | 2016-06-03 | 2016-06-03 | 一种面向tcp会话的对称性rss电路 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105915462B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109218229B (zh) * | 2017-06-30 | 2020-12-01 | 华为技术有限公司 | 一种报文处理方法、网络设备及存储介质 |
CN107911349A (zh) * | 2017-11-01 | 2018-04-13 | 西安微电子技术研究所 | 一种面向UDP传输的对称性Receive‑side Scaling电路 |
CN107832149B (zh) * | 2017-11-01 | 2020-05-12 | 西安微电子技术研究所 | 一种针对多核处理器动态分组管理的Receive-side Scaling电路 |
CN109905898B (zh) * | 2017-12-07 | 2022-10-11 | 北京中科晶上科技股份有限公司 | 基带处理资源分配方法 |
CN108111530B (zh) * | 2017-12-30 | 2020-11-13 | 世纪网通成都科技有限公司 | 用于侦测voip通话状态的计算机可读存储介质和应用该介质的侦测系统 |
CN110177047B (zh) * | 2019-05-27 | 2022-03-04 | 北京字节跳动网络技术有限公司 | 报文发送方法、装置、电子设备和计算机可读存储介质 |
CN110912832A (zh) * | 2019-10-15 | 2020-03-24 | 深圳市恒扬数据股份有限公司 | 流量负载均衡的处理方法、装置、电子设备及存储介质 |
CN111031065B (zh) * | 2019-12-25 | 2022-02-11 | 东软集团股份有限公司 | 一种文件传输方法、系统、客户端及防火墙 |
CN113098794B (zh) * | 2021-03-30 | 2022-04-05 | 郑州信大捷安信息技术股份有限公司 | 利用二次分流实现隧道报文对称rss处理的方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102483707A (zh) * | 2009-06-22 | 2012-05-30 | 思杰系统有限公司 | 在负载平衡的多核环境中保持源ip的系统和方法 |
CN102549984A (zh) * | 2009-05-05 | 2012-07-04 | 思杰系统有限公司 | 在多核架构中分组引导的系统和方法 |
-
2016
- 2016-06-03 CN CN201610394135.XA patent/CN105915462B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102549984A (zh) * | 2009-05-05 | 2012-07-04 | 思杰系统有限公司 | 在多核架构中分组引导的系统和方法 |
CN102483707A (zh) * | 2009-06-22 | 2012-05-30 | 思杰系统有限公司 | 在负载平衡的多核环境中保持源ip的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105915462A (zh) | 2016-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105915462B (zh) | 一种面向tcp会话的对称性rss电路 | |
US10944660B2 (en) | Managing congestion in a network | |
Caulfield et al. | A cloud-scale acceleration architecture | |
Agrawal et al. | Intel tofino2–a 12.9 tbps p4-programmable ethernet switch | |
CN113849452A (zh) | 堆叠管芯网络接口控制器电路 | |
US11909642B2 (en) | Offload of acknowledgements to a network device | |
US20210328930A1 (en) | Predictive queue depth | |
CN116018790A (zh) | 基于接收方的精密拥塞控制 | |
CN107911349A (zh) | 一种面向UDP传输的对称性Receive‑side Scaling电路 | |
US9900090B1 (en) | Inter-packet interval prediction learning algorithm | |
CN103139093B (zh) | 基于fpga的高速网络数据流负载均衡调度方法 | |
WO2020181977A1 (zh) | 具有多个异构网络接口端口的存储控制器的系统、方法和装置 | |
US20220078119A1 (en) | Network interface device with flow control capability | |
CN107832149B (zh) | 一种针对多核处理器动态分组管理的Receive-side Scaling电路 | |
US20220124035A1 (en) | Switch-originated congestion messages | |
US20220311711A1 (en) | Congestion control based on network telemetry | |
US20240195749A1 (en) | Path selection for packet transmission | |
Choi et al. | Accelerating memcached on aws cloud fpgas | |
US20190207853A1 (en) | Selection of inputs for lookup operations | |
CN101442490A (zh) | 流量负载均衡处理方法 | |
US9344384B2 (en) | Inter-packet interval prediction operating algorithm | |
US20220278946A1 (en) | Programmable packet processing pipeline with offload circuitry | |
CN112995245B (zh) | 一种基于fpga的可配置负载均衡系统与方法 | |
Su et al. | Technology trends in large-scale high-efficiency network computing | |
Biswas et al. | Implementing a partial group based routing for homogeneous fat tree network on chip architecture |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |