CN104580017B - 基于rss的网络会话分发方法及系统 - Google Patents
基于rss的网络会话分发方法及系统 Download PDFInfo
- Publication number
- CN104580017B CN104580017B CN201410851928.0A CN201410851928A CN104580017B CN 104580017 B CN104580017 B CN 104580017B CN 201410851928 A CN201410851928 A CN 201410851928A CN 104580017 B CN104580017 B CN 104580017B
- Authority
- CN
- China
- Prior art keywords
- key
- hash
- values
- bluedrama
- optimal
- 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
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种基于RSS的网络会话分发方法及系统,其中的方法包括:在低会话高流量场景下,通过RSS将各条网络会话均匀分配到网卡的cpu接收队列序号id上,以实现cpu资源的均衡利用。利用本发明,基于RSS利用r组合算法、转换规则、特定分组算法以及方差计算获取最优的key与redirection table,能够解决网络会话不能均匀分配到各个id上的问题,从而提高设备的性能。
Description
技术领域
本发明涉及网络会话分发技术领域,更为具体地,涉及一种基于RSS的网络会话分发方法及系统。
背景技术
为了提升计算机的性能,现代计算机一般采用多核架构处理数据。对于基于多核架构的网络设备而言,当它接收到一个网络数据包时,相关的网卡需要通过一种机制决定将这个数据包交给哪个CPU处理,RSS(receive side scaling,接收端调节)是一种网络数据包分发机制,已被广泛应用,尤其是应用在一些高性能的网络硬件设备中,如Intel推出的基于8259910Gb以太网控制器的万兆网卡就支持使用开发者给定的参数,通过RSS来进行CPU的任务分配。
为了详细说明RSS进行数据包分发的过程,图1示出了现有的RSS的处理流程,如图1所示,RSS的处理流程包括如下几个简要步骤:
首先,确定入参;包括一个40字节(320比特)的key的入参和一个长度为128的数组redirection table(重定向表)的入参。一般情况下,这两个入参可以由开发者指定,以满足特定场景下的计算需求。Key用于计算hash值,redirection table则用于将hash值映射到各个CPU(即各个发送队列的id)上。
然后,根据key和input(输入的网络数据信息)通过给定的hash算法(compute_hash)计算出一个32位的hash值。input的选取一般有两种形式,一种是取源IP与目的IP二元组连接成的数据段,另一种是取源IP、目的IP、源端口、目的端口四元组连接成的数据段。在计算TCP或UDP等常用数据包时,一般都采用后一种(即四元组的数据段)作为input,四元组的input共包含12个字节,它作为一串8*12位的数字参与计算。关于hash算法,其对应的32位hash值由如下步骤产生:
S1:先将hash结果result置为0;
S2:如果input最左端的一位为1,则将result更新为result自身与key最左端32位的异或值;否则,result不变。
S3:将input与key均左移一位。
S4:如果input为0,则将result作为输出结果;否则,重复S2、S3和S4。
接着,取出上述hash值(result)的7位最低有效位(LSB,即二进制数的最右侧7位)作为redirection table的下标。
最后,按照取出的下标读取相应redirection table上的id值。
一般情况下,随机选取key和redirection table中的对应关系满足取模运算,即:当用n表示id的总个数时,有id=(result&0x7f)%n,当网络会话(session)数目足够多时,上述的RSS算法基本上能够保证将各个网络会话均匀的分配到各个id上。这样,在高流量场景下,各个CPU都能尽可能大的发挥其各自性能。但是,在一些特定场景下,如:向一些特定VIP用户提供专属服务的大流量服务器部署环境或吞吐量测试环境,之前高会话数的条件往往无法得到满足。这时,如果key和redirection table选取的不好,RSS就有可能把有限的网络会话只分配到有限的CPU资源上,使得相应的设备无法发挥其应有的高性能,造成资源浪费。
发明内容
鉴于上述问题,本发明的目的是提供一种RSS的网络会话分发方法及系统,以解决网络会话不能均匀分配到各个id上问题,从而提高设备的性能。
根据本发明的一个方面,提供一种基于RSS的网络会话分发方法,包括:在低会话高流量场景下,通过RSS将各条网络会话均匀分配到网卡的cpu接收队列序号id上,以实现cpu资源的均衡利用;
其中,通过RSS将各条网络会话平均分配到各个id上的过程包括:
将RSS表示为:hash=f(s,k)和id=g(hash,t);
其中,s表示输入的网络数据,
s=(ip1,ip2,port1,port2)=(s1,s2,……,s96),ip1表示32位的源IP,ip2表示32位的目的IP,port1表示16位的源端口,port2表示16位的目的端口;k表示320位的key,k=(k1,k2,……,k320);t表示长度为128的数组redirection table;id表示s在RSS作用下分配的网络端口的地址;
在低会话高流量场景下,求解获得RSS中的最优key值,使得各条网络会话平均分配到各个id上;
其中,首先通过转换规则和r组合算法确定key值,然后对所确定的每一个key值进行方差计算,获取最优key值和最优分组结果;
根据获取的最优key值和最优分组结果,确定redirection table,使各条网络会话平均分配到各个id上,完成网络端口资源的分配。
根据本发明的另一方面,提供一种基于RSS的网络会话分发系统,用于在低会话高流量场景下,通过RSS将各条网络会话均匀分配到网卡的cpu接收队列序号id上,以实现cpu资源的均衡利用;
其中,系统包括:公式转换单元,用于将RSS转化为数学公式;
将RSS表示为:hash=f(s,k)和id=g(hash,t);
其中,s表示输入的网络数据,
s=(ip1,ip2,port1,port2)=(s1,s2,……,s96),ip1表示32位的源IP,ip2表示32位的目的IP,port1表示16位的源端口,port2表示16位的目的端口;k表示320位的key,k=(k1,k2,……,k320);t表示长度为128的数组redirection table;id表示s在RSS作用下分配的网络端口的地址;
最优key值获取单元,用于在低会话高流量场景下,求解获得RSS中的最优key值,使得各条网络会话平均分配到各个id上;
其中,首先通过转换规则和r组合算法确定key值,然后对所确定的每一个key值进行方差计算,获取最优key值和最优分组结果;
redirection table确定单元,用于根据获取的最优key值和最优分组结果,确定redirection table,使各条网络会话平均分配到各个id上,完成网络端口资源的分配。
从上面的技术方案可知,本发明提供的基于RSS的网络会话分发方法及系统,在低会话高流量下,通过数学分析的方式总结出了RSS算法的一些固有性质,并利用转换规则、r组合算法、特定分组算法以及方差计算获取最优的key与redirection table,能够将各条网络会话平均分配到各个id上,提高设备的性能,并且避免资源浪费。
为了实现上述以及相关目的,本发明的一个或多个方面包括后面将详细说明并在权利要求中特别指出的特征。下面的说明以及附图详细说明了本发明的某些示例性方面。然而,这些方面指示的仅仅是可使用本发明的原理的各种方式中的一些方式。此外,本发明旨在包括所有这些方面以及它们的等同物。
附图说明
通过参考以下结合附图的说明及权利要求书的内容,并且随着对本发明的更全面理解,本发明的其它目的及结果将更加明白及易于理解。在附图中:
图1为现有的RSS的处理流程示意图;
图2为根据本发明实施例的基于RSS的网络会话分发流程示意图;
图3为根据本发明实施例的最优key的确定流程示意图;
图4为根据本发明实施例的基于RSS的网络会话分发系统结构框图。
在所有附图中相同的标号指示相似或相应的特征或功能。
具体实施方式
在下面的描述中,出于说明的目的,为了提供对一个或多个实施例的全面理解,阐述了许多具体细节。然而,很明显,也可以在没有这些具体细节的情况下实现这些实施例。
针对现有技术提出的在低会话高流量场景下,网络会话不能均匀分配到各个id上问题,为解决此问题,本发明提出一种基于RSS的网络会话分发方法及系统,通过数学方法总结出RSS算法的一些固有性质,并根据总结出的固有性质得出一个结论:一条网络会话在任意key上的RSS哈希值均可表示为一组基底相互做异或运算的结果。基于上述结论,利用网络会话在RSS下的异或分解性质将96位的网络会话简化为一个16比特位的s0;利用key在RSS下的异或分解性质将RSS哈希值的计算简化为至多16个RSS基底值的异或运算;并利用转换规则、r组合算法、特定分组算法以及方差计算获取最优的key与redirection table,能够将各条网络会话平均分配到各个id上,从而提高设备的性能,并且避免资源浪费。
以下将结合附图对本发明的具体实施例进行详细描述。
为了说明本发明提供的基于RSS的网络会话分发方法,图2示出了根据本发明实施例的基于RSS的网络会话分发流程。
如图2所示,本发明提供的基于RSS的网络会话分发方法,包括:在低会话高流量场景下,通过RSS将各条网络会话均匀分配到网卡的cpu接收队列序号id上,以实现cpu资源的均衡利用。
其中,通过RSS将各条网络会话平均分配到各个id上的过程包括:
S210:将RSS表示为:hash=f(s,k)和id=g(hash,t)。
具体地,RSS所提供的是一种从输入的网络数据信息input到id的映射,id与CPU相对应。根据背景技术中现有的RSS的处理流程可以得出,RSS的流程共需四步,为了表述方便,将前三步表示为:hash=f(s,k),第四步表示为:id=g(hash,t)。
其中,s表示input,即:在取四元组的情况下,表示输入的网络数据信息,s=(ip1,ip2,port1,port2)=(s1,s2,……,s96);ip1表示32位的源IP;ip2表示32位的目的IP;port1表示16位的源端口;port2表示16位的目的端口;k表示320位的key,共320位,可进一步记为:k=(k1,k2,……,k320);hash表示前三步的计算结果,获得计算结果共7位;t表示长度为128的数组redirection table;id表示s在RSS作用下分配的网络端口的地址,也就是s在RSS作用下最后的分配结果。
S220:在低会话高流量场景下,求解获得RSS中的最优key值,使得各条网络会话平均分配到各个id上;
其中,首先通过转换规则和r组合算法确定key值,然后对所确定的每一个key值进行方差计算,获取最优key值和最优分组结果;
S230:根据获取的最优key值和最优分组结果,确定redirection table,使各条网络会话平均分配到各个id上,完成网络端口资源的分配。
具体地,一般情况下,在实际的应用场景中,为了提升CPU使用效能,将一条会话两个方向上的数据包在RSS作用下均能hash到一个id上,记:
f((ip1,ip2,port1,port2),k)=f((ip2,ip1,port2,port1),k)
根据已有的研究成果,当k满足以16为周期时,上式即可满足。出于实际应用的需要,如下描述都在此认知下进行,但相应的方法也可推广到一般的非周期情况。
分析函数f的性质,假设s的96个比特中有n位为1,分别为(i1,i2,……,in),其中1≤i1<i2<……<in≤96,那么根据RSS算法,则
假设,如果s的前T个比特位均为0,即:i1>T,且ki以T为周期,即ki=ki+T,那么,
下面考虑s的分解,如果s可以分解为两个数的异或之和,即s=s1^s2,设s1所对应的1比特位为(r1,r2,……,rn1),s2所对应的1比特位为(t1,t2,……,tn2)。当s1与s2没有共同的1比特位,即s1&s2=0时,s所对应的(i1,i2,……,in)就是与的并集,根据公式(1),则
进一步考虑一般化情况,s1与s2可以表示为:
s1=(s1&(~s2))^(s1&s2),s2=(s2&(~s1))^(s2&s1)
其中,(s1&(~s2))&(s1&s2)=0且(s2&(~s1))&(s2&s1)=0;
根据公式(3),则:
f(s1,k)=f((s1&(~s2)),k)^f((s1&s2),k)
f(s2,k)=f((s2&(~s1)),k)^f((s2&s1),k) (4)
又由于
s=s1^s2=((s1&(~s2))^(s1&s2))^((s2&(~s1))^(s2&s1))
=(s1&(~s2))^((s1&s2)^(s2&s1))^(s2&(~s1))
=(s1&(~s2))^(s2&(~s1))
且
(s1&(~s2))&(s2&(~s1))=0
根据公式(3)和(4),可得
f(s,k)=f((s1&(~s2))^(s2&(~s1)),k)
=f((s1&(~s2)),k)^f((s2&(~s1)),k)
=f((s1&(~s2)),k)^(f((s1&s2),k)^f((s2&s1),k))^f((s2&(~s1)),k)
=(f((s1&(~s2)),k)^f((s1&s2),k))^(f((s2&(~s1)),k)^f((s2&s1),k))
=f(s1,k)^f(s2,k)
得出如下结论:
对于s的任意分解s=s1^s2,均有f(s,k)=f(s1,k)^f(s2,k) (5)
因此,综上所述,可以得出,当key以16为周期时网络会话的双向数据流可以被分配到同一个id上;这是由于根据公式(2)和(5),当T为16时,则
f((ip1,ip2,port1,port2),k)=f(((ip1<<64)^(ip2<<32)^(port1<<16)^port2),k)
=f((ip1<<64),k)^f((ip2<<32),k)^f((port1<<16),k)^f(port2,k)
=f(ip1,k)^f(ip2,k)^f(port1,k)^f(port2,k)
=f((ip2<<64),k)^f((ip1<<32),k)^f((port2<<16),k)^f(port1,k)
=f(((ip2<<64)^(ip1<<32)^(port2<<16)^port1),k)
=f((ip2,ip1,port2,port1),k)
此外,根据公式(2)和(5),得出如下结论:
当key满足以16为周期时,对于任意的s=(ip1,ip2,port1,port2)=(s1,s2,……,s96),取16比特的s0,并且,
s0=(s1,s2,……,s16)^(s17,s18,……,s32)^……^(s81,s82,……,s96),
则一定获得:f(s,k)=f(s0,k) (6)
下面考虑k的分解。为了方便k的分解,本实施例用{efh}1≤h≤7,{esi}1≤i≤96,{ekj}1≤j≤320分别表示7维、96维和320维向量空间的一组基底,例如:ef2=(0,1,0,0,0,0,0));当s中取1的比特位为第(i1,i2,……,in)位时,则同理,当k中取1的比特位为(j1,j2,……,jd)时,则
由于f(esi,k)=(0x7f)&(kiki+1…ki+31)=(ki+25ki+26…ki+31),当i+25≤j≤i+31时,f(esi,ekj)=efj-i-24,并且,
f(esi,k)^f(esi,ekj)=(ki+25ki+26…ki+31)^efj-i-24=(ki+25…(~kj-i-24)…ki+31)=f(esi,k^ekj),当1≤j<i+25或i+31<j≤320时,f(esi,ekj)=0,并且
f(esi,k)^f(esi,ekj)=f(esi,k)^0=f(esi,k)=(ki+25ki+26…ki+31)=f(esi,k^ekj)
因此,对任意的k,i,j值,均有
f(esi,k^ekj)=f(esi,k)^f(esi,ekj) (7)
进一步,根据公式(7),则
利用公式(8),如前述s分解性质完全相同的证明方式,不难证明如下性质:
对于任意的key值,分解k=k1^k2及基底esi,则
f(esi,k)=f(esi,k1)^f(esi,k2) (9)
因此,对于任意的根据公式(5)和公式(9)可得:
至此,获得如下结论:
对于k的任意分解k=k1^k2,均有
f(s,k)=f(s,k1)^f(s,k2) (10)
并且,记K为{ekj}1≤j≤320,表示320维向量空间的一组基底,当k中取1的比特位为(j1,j2,……,jd),也就是说,
下面根据公式(6)、(10)和(11),基于RSS算法,分为三个阶段使各条网络会话均匀分配到各个id上。
第一阶段:基础数据计算。
由于在低会话高流量场景下,s的数量是有限的,设为n个。在实际应用中,能够很容易通过网卡收集到这n个网络会话的对应信息,即(ip1,ip2,port1,port2)。
根据公式(6),s在某一固定key的作用下,其相应的hash结果可以由16位的s0确定,因此先行计算出这n个网络会话相对应的m个s0,记为{s01,s02,……,s0m}m≤n,同时,记录s0出现的重复次数(相对应的网络会话的个数),用{ci}1≤i≤m表示。
根据公式(11),任一s0在某一key下的hash值均可表示为其在key的各个基底下的异或运算。由于key以16为周期,将16维向量空间的16个基底做周期性扩展,形成16个320比特的新基底,记为:{k1,k2,…,ki,…,k16},其中,ki=eki^eki+16^……^eki+16*19。
进一步,假设共有n条网络会话,相对应的s0有m个,记为{s01,s02,……,s0m}m≤n,则计算出每个s0在这16个基底下所对应的hash值,组成一个m*16维的哈希矩阵:H={hi,j}1≤i≤m,1≤j≤16,其中,hi,j=f(s0i,kj)。
对于一个特定的i,如果H的第i列均为同一个值,则需要将该列从H中删除。这是由于当a≠b时,必然有a^c≠b^c;根据公式(10),所有的网络会话所对应的hash值异或上一个相同的值,对于结果的区分(第二阶段寻找最优化分组)无法起到任何作用(也就是说,方差值不会改变),因此,最终的H只记录那些有效的列(共有z个有效列,有效列是指重新设置的哈希矩阵的每个列上有不同元素,),即:H={hi,j}1≤i≤m,1≤j≤z。
第二阶段:启发式寻找最优key值。
假设共有q个cpu用于接收网卡收到的数据,每个cpu都在接收端口上设置一个接收队列。将各个s0在f的作用下能够尽可能的分为q组,且相同hash值的网络会话必须分到同一组中。能够实现这一目的的key找出“最优”的。
寻找最优key的过程从最简单的k1开始,如果通过计算无法判别当前的key是最优的,则转换到下一个key进行计算,其中,转换的规则如下:
首先,按照比特位1的数目从少到多转换,第一轮先寻找16位周期中只有一个1的key,如k1,k2,……,第二轮寻找16位周期中有两个1的key,如k1^k2,k1^k3,……,根据第一阶段哈希值的计算结果,以此类推,寻找key。
然后,在每一轮中,按照特定的组合数生成算法确定key值。根据《组合数学》中第4.4节介绍的r组合生成算法,确定key值的方法如下:
在第r轮中,即:1≤r≤z,对于r子集a1a2…ar,key定义为k=ka1^ka2^…^kar;让r子集从a1a2…ar=12…r开始,当a1a2…ar≠(n-r+1)(n-r+2)…n时,执行下列操作:
第一步:确定最大的整数t,使得at+1≤n且at+1不是a1a2…ar中的一个;
第二步:用r子集a1…at-1(at+1)(at+2)…(at+r-t+1)替换a1a2…ar,进而生成新的key。
图3示出了根据本发明实施例的最优key的确定流程,如图3所示,对于每一个确定的key值,判定其是否为最优的步骤包括:
S310:计算当前key值下所对应的m个hash值;若k=ka1^ka2^…^kar,则这m个hash值可以通过H={hi,j}1≤i≤m,1≤j≤z轻松求出。根据公式(10)和(11),将H={hi,j}1≤i≤m,1≤j≤z的第a1a2…ar列取出做异或运算即可。
S320:将这m个hash值排序形成序列。
S330:遍历排序后的序列,结合{ci}1≤i≤m,确定每个hash值所对应的网络会话个数,统一记为{ti}1≤i≤m'≤m,其中的m’表示共有m’个互不相同的hash值。
S340:将网络会话个数(即:){ti}1≤i≤m'按从大到小的顺序排序。
S350:以排好序的{ti}1≤i≤m'为基础对各个hash值进行分组,使各组内的hash值所对应的网络会话的数目之和尽可能的接近均值。
其中,具体操作分为三个环节:假设各个分组的标号为:0,1,…,q-1,每组所对应的session数之和记为:u0,u1,…,uq-1。
首先,将所有ti都分给0号组,使得u0=n;
其次,将0号组中的元素从大到小依次分给第1,…,q-1号组,保证u1,u2,…,uq-1尽可能的大,但不可大于均值n/q;
最后,如果在最后的q-1号组分配完之后u0仍大于均值,将u0中的剩余元素有选择地分给其余各组,具体分配过程如下:
5.1:将u0,u1,…,uq-1从大到小排序,由于u0大于均值,排序后u0仍然处于第一个位置,即最大元素组;
5.2:将u0内剩余的元素从小到大依次遍历取出,准备依次分配给排序后的uq-1,uq-2,…,u1(从小到大);在任意一次分配中,如果u0要将尚未分配的ti分配给uj,那么必须保证ti<u0-uj。相反如果ti≥u0-uj,则不予分配,整个分组算法完成。
上述5.1与5.2算法的数学原理为:
在最后一个环节的分配中,每次分配都能够使各分组的网络会话的数目相对于均值有所减小,即假设均值为v,那么uj≤v<u0且u0,uj,ti,v,需满足
(u0-ti-v)2+(uj+ti-v)2<(u0-v)2+(uj-v)2
上述不等式可得ti<u0-uj;也就是说,当ti≥u0-uj即u0≤uj+ti时,分配是不合理的;这是由于此时的{ti}1≤i≤tm与{uj}0≤i<q均为递减序列,当j'≤j,i'≤i时,必然有u0≤uj'+ti',因此,一旦一次分配无法进行,后续的分配也必然是不合适的。
S260:对分组结果进行方差计算,作最优化判定。假设q个分组所对应的网络会话的数目为{Qi}1≤i≤q,那么该分组的判定方差std为:
其中,需要说明的是,如果std比之前计算过的方差值都小,则用该分组方案替换记录的分组方案,同时记录相应的key值;如果std小于事先给定的容忍误差,则以该key值作为最优值。
第三阶段:根据第二阶段记录的最优key值确定redirection table。
具体地,获取到最优key值在第i个分组,1≤i≤q-1,取出其记录的各个hash值。以这些hash值为下标,设定t[hash]=i。最后,将redirection table中未被设定的位置设置为0,输出redirection table。
至此,完成在低会话高流量场景下的key与redirection table的设定。本发明的方法可以达到较优的CPU分配效果,进而充分发挥计算机的效能。由于s0对网络会话的优化,以及H矩阵的精心选取,该方法往往能以较快的速度收敛到最优解。
为了更直观的展现本发明的有效性,做如下实验:取如下形式的64条网络会话,
1.1.7.2+i/1024→1.1.8.5+j/80 (1≤i≤8,1≤j≤8)
即:第n条session1≤n≤64对应i=n/8,j=n%8,其源IP为1.1.7.2+i,目的IP为1.1.8.5+j,源端口固定为1024,目的端口固定为80。此外,定义每个接收端口绑定3个CPU(q=3),其标示id为0、1、2,容忍误差为0.25*q,那么根据本发明方法计算前n条网络会话的分配,表1示出了根据本发明实施的最优key的计算结果:
表1
如表1所示,key表示最优化的(k1,k2,…,k16),std表示最优分配方差,result表示各个id上分配到的session数。从表1中可以看出,采用本发明的方法很好地解决了这n条session在各个CPU上的分配问题。
另外,表2示出了设定的redirection table,如果计算这全部64条网络会话,最优key的计算结果为0x80,其f(s,k)的hash值与对应的id及该hash所关联的网络会话条数(index)如表2所示:
表2
因此,根据表1和表2,与最优key相对应的redirection table应该设为:
与上述方法相对应,本发明还提供一种基于RSS的网络会话分发系统,图4示出了根据本发明实施例的基于RSS的网络会话分发系统逻辑结构。
如图4所示,本发明提供的基于RSS的网络会话分发系统400用于在低会话高流量场景下,通过RSS将各条网络会话均匀分配到网卡的cpu接收队列序号id上,以实现cpu资源的均衡利用。
其中,基于RSS的网络会话分发系统400包括公式转换单元410、最优key值获取单元420和redirection table确定单元430。
其中,公式转换单元410用于将RSS转化为数学公式;
将RSS表示为:hash=f(s,k)和id=g(hash,t);
其中,s表示输入的网络数据,
s=(ip1,ip2,port1,port2)=(s1,s2,……,s96),ip1表示32位的源IP,ip2表示32位的目的IP,port1表示16位的源端口,port2表示16位的目的端口;k表示320位key,k=(k1,k2,……,k320);t表示长度为128的数组redirection table;id表示s在RSS作用下分配的网络端口的地址。
最优key值获取单元420用于在低会话高流量场景下,求解获得所述RSS中的最优key值,使得各条网络会话平均分配到各个id上;其中,通过转换规则和r组合算法确定key值,对所确定的每一个key值进行方差计算,获取最优key值和最优分组结果。
redirection table确定单元430用于根据获取的最优key值和最优分组结果,确定redirection table,使各条网络会话平均分配到各个id上。
其中,公式转换单元410在当key满足以16为周期时,
对于任意的s=(ip1,ip2,port1,port2)=(s1,s2,……,s96)取16比特的s0,使其满足s0=(s1,s2,……,s16)^(s17,s18,……,s32)^……^(s81,s82,……,s96),则f(s,k)=f(s0,k)。
公式转换单元410在对于k的任意分解k=k1^k2,均有
f(s,k)=f(s,k1)^f(s,k2) (10)
并且,记K为{ekj}1≤j≤320,表示320维向量空间的一组基底,当k中取1的比特位为(j1,j2,……,jd),则
其中,根据公式(11),任一s0在某一key下的hash值均可表示为其在key的各个基底下的异或运算;key以16为周期,将16维向量空间的16个基底做周期性扩展,形成16个320比特的新基底,记为:
{k1,k2,…,ki,…,k16},其中,ki=eki^eki+16^……^eki+16*19;
假设共有n条网络会话,相对应的s0有m个,记为{s01,s02,……,s0m}m≤n,则计算每个s0在这16个基底下所对应的hash值,组成一个m*16维的哈希矩阵,记为:H={hi,j}1≤i≤m,1≤j≤16,其中,hi,j=f(s0i,kj);
对于一个特定的i,如果H的第i列均为同一个值,则将该列从H中删除,因为当a≠b时,必然有a^c≠b^c;
根据公式(10),所有网络会话所对应的hash值异或上一个相同的值,结果不变,故哈希矩阵重新记为:H={hi,j}1≤i≤m,1≤j≤z,其中,重新设置的哈希矩阵的各个列的值为不同元素,有效列为Z。
最优key值获取单元420在通过转换规则和r组合生成算法确定key值,对所确定的每一个key值进行方差计算,获取最优key值的过程中,
通过转换规则和r组合生成算法确定key值的过程包括:
按照比特位1的数目从少到多转换;第一轮寻找16位周期中只有一个1的key,如k1,k2……,第二轮寻找16位周期中有两个1的key,如k1^k2,k1^k3,……,以此类推;
在每一轮中,按照特定的r组合生成算法确定key值;其中,
在第r轮中,1≤r≤z,对于r子集a1a2…ar,key定义为:k=ka1^ka2^…^kar;r子集从a1a2…ar=12…r开始,当a1a2…ar≠(n-r+1)(n-r+2)…n时,
确定最大的整数t,使得at+1≤n且at+1不是a1a2…ar中的一个;
用r子集a1…at-1(at+1)(at+2)…(at+r-t+1)替换a1a2…ar,进而生成新的key;
对所确定的每一个key值进行方差计算,获取最优key值的过程包括:
根据公式(10)和(11),获取当前确定的key所对应的m个hash值;
对获取的m个hash值排序形成序列;
遍历排序后的序列,确定每个hash值所对应的网络会话的数目,将这个数字记为{ti}1≤i≤m'≤m,其中,m’表示共有m’个互不相同的hash值;
将{ti}1≤i≤m'按从大到小的顺序排序;
以排好序的{ti}1≤i≤m'为基础对各个hash值进行分组,使各组内的hash值所对应的网络会话的数目之和尽接近均值;
对分组结果进行方差计算,作最优化判定;
其中,假设q个分组所对应的网络会话数目为{Qi}1≤i≤q,此分组的判定方差std为:
其中,如果std小于事先给定的容忍误差,则此key值作为最优值。
redirection table确定单元430在根据获取的最优key值和最优分组结果,确定redirection table的过程中,
若最优分组结果为第i个分组,取记录的各个hash值,则记为:t[hash]=i,其中,1≤i≤q-1,q为分组的数量。
通过上述实施方式可以看出,本发明提供的基于RSS的网络会话分发方法及系统,通过数学方法总结出RSS算法的一些固有性质,并根据总结出的固有性质得出结论:一条网络会话在任意key上的RSS哈希值均可表示为一组基底相互做异或运算的结果,基于上述结论,利用网络会话在RSS下的异或分解性质将96位的网络会话简化为一个16比特位的s0;同时利用key在RSS下的异或分解性质将RSS哈希值的计算简化为至多16个RSS基底值的异或运算;最后利用r组合算法、转换规则、特定分组算法以及方差计算获取最优的key与redirection table,能够将各条网络会话平均分配到各个id上,能够提高设备的性能,并且避免资源浪费。
如上参照附图以示例的方式描述了根据本发明提出的基于RSS的网络会话分发方法及系统。但是,本领域技术人员应当理解,对于上述本发明所提出的基于RSS的网络会话分发方法及系统,还可以在不脱离本发明内容的基础上做出各种改进。因此,本发明的保护范围应当由所附的权利要求书的内容确定。
Claims (2)
1.一种基于RSS的网络会话分发方法,包括:在低会话高流量场景下,通过接收端调节RSS将各条网络会话均匀分配到网卡的cpu接收队列序号id上,以实现cpu资源的均衡利用;
其中,通过RSS将各条网络会话平均分配到各个id上的过程包括:
将所述RSS表示为:hash=f(s,k)和id=g(hash,t);
其中,s表示输入的网络数据,s=(ip1,ip2,port1,port2)=(s1,s2,……,s96),ip1表示32位的源IP,ip2表示32位的目的IP,port1表示16位的源端口,port2表示16位的目的端口;k表示320位的key,k=(k1,k2,……,k320);t表示长度为128的数组重定向表redirectiontable;
在低会话高流量场景下,求解获得所述RSS中的最优key值,使得各条网络会话平均分配到各个id上;
首先通过转换规则和r组合算法确定key值,然后对所确定的每一个key值进行方差计算,获取最优key值和最优分组结果;
根据获取的最优key值和最优分组结果,确定redirection table,使各条网络会话平均分配到各个id上,完成网络端口资源的分配;
其中,当key满足以16为周期时,
对于任意的s=(ip1,ip2,port1,port2)=(s1,s2,……,s96),取16比特的s0,使其满足s0=(s1,s2,……,s16)^(s17,s18,……,s32)^……^(s81,s82,……,s96),则f(s,k)=f(s0,k) (6);
对于k的任意分解k=k1^k2,均有
f(s,k)=f(s,k1)^f(s,k2) (10)
并且,记K为{ekj}1≤j≤320,表示320维向量空间的一组基底,当k中取1的比特位为(j1,j2,……,jd)时,则,
根据公式(11),任一s0在某一key下的hash值均可表示为其在key的各个基底下的异或运算;key以16为周期,将16维向量空间的16个基底做周期性扩展,形成16个320比特的新基底,记为:
{k1,k2,…,ki,…,k16},其中,ki=eki^eki+16^……^eki+16*19;
假设共有n条网络会话,相对应的s0有m个,记为{s01,s02,……,s0m}m≤n,则计算每个s0在这16个基底下所对应的hash值,组成一个m*16维的哈希矩阵,记为:H={hi,j}1≤i≤m,1≤j≤16,其中,hi,j=f(s0i,kj);
对于一个特定的i,如果H的第i列均为同一个值,则将该列从H中删除,当a≠b时,则a^c≠b^c;
根据公式(10),所有网络会话所对应的hash值异或上一个相同的值,结果不变,故将哈希矩阵重新记为:H={hi,j}1≤i≤m,1≤j≤z,其中,重新设置的哈希矩阵的每一列上有不同元素,共有z列;
在通过转换规则和r组合生成算法确定key值,对所确定的每一个key值进行方差计算,获取最优key值的过程中,
通过转换规则和r组合生成算法确定key值的过程包括:
按照比特位1的数目从少到多转换;第一轮寻找16位周期中只有一个1的key,如k1,k2……,第二轮寻找16位周期中有两个1的key,如k1^k2,k1^k3,……,以此类推;
在每一轮中,按照特定的r组合生成算法确定key值;其中,
在第r轮中,1≤r≤z,对于r子集a1a2…ar,key定义为:k=ka1^ka2^…^kar;r子集从a1a2…ar=12…r开始,当a1a2…ar≠(n-r+1)(n-r+2)…n时,
确定最大的整数t,使得at+1≤n且at+1不是a1a2…ar中的一个;
用r子集a1…at-1(at+1)(at+2)…(at+r-t+1)替换a1a2…ar,进而生成新的key;
对所确定的每一个key值进行方差计算,获取最优key值的过程包括:
根据公式(10)和(11),获取当前确定的key所对应的m个hash值;
对获取的m个hash值排序;
遍历排序后的序列,确定每个hash值所对应的网络会话的数量,将所述数量记为{ti}1≤i≤m'≤m,其中,m’表示共有m’个互不相同的hash值;
将{ti}1≤i≤m'按从大到小的顺序排序;
以排好序的{ti}1≤i≤m'为基础对各个hash值进行分组,使各组内的hash值所对应的网络会话的数量之和接近均值;
对分组结果进行方差计算,作最优化判定;
其中,假设q个分组所对应的网络会话数目为{Qi}1≤i≤q,此分组的判定方差std为:
其中,如果std小于事先给定的容忍误差,则此key值作为最优值;
根据获取的最优key值确定redirection table,获取到最优key值在第i个分组,1≤i≤q-1,取出其记录的各个hash值,以这些hash值为下标,设定:t[hash]=i;将redirectiontable中未被设定的位置设置为0,输出redirection table。
2.一种基于RSS的网络会话分发系统,用于在低会话高流量场景下,通过接收端调节RSS将各条网络会话均匀分配到网卡的cpu接收队列序号id上,以实现cpu资源的均衡利用;
其中,所述系统包括:
公式转换单元,用于将所述RSS转化为数学公式;将所述RSS表示为:hash=f(s,k)和id=g(hash,t);
其中,s表示输入的网络数据,s=(ip1,ip2,port1,port2)=(s1,s2,……,s96),ip1表示32位的源IP,ip2表示32位的目的IP,port1表示16位的源端口,port2表示16位的目的端口;k表示320位的key,k=(k1,k2,……,k320);t表示长度为128的数组重定向表redirectiontable;
最优key值获取单元,用于在低会话高流量场景下,求解获得所述RSS中的最优key值,使得各条网络会话平均分配到各个id上;
其中,首先通过转换规则和r组合算法确定key值,然后对所确定的每一个key值进行方差计算,获取最优key值和最优分组结果;
redirection table确定单元,用于根据获取的最优key值和最优分组结果,确定redirection table,使各条网络会话平均分配到各个id上,完成网络端口资源的分配;
其中,当key满足以16为周期时,
对于任意的s=(ip1,ip2,port1,port2)=(s1,s2,……,s96),取16比特的s0,使其满足s0=(s1,s2,……,s16)^(s17,s18,……,s32)^……^(s81,s82,……,s96),则f(s,k)=f(s0,k) (6);
对于k的任意分解k=k1^k2,均有
f(s,k)=f(s,k1)^f(s,k2) (10)
并且,记K为{ekj}1≤j≤320,表示320维向量空间的一组基底,当k中取1的比特位为(j1,j2,……,jd)时,则,
根据公式(11),任一s0在某一key下的hash值均可表示为其在key的各个基底下的异或运算;key以16为周期,将16维向量空间的16个基底做周期性扩展,形成16个320比特的新基底,记为:
{k1,k2,…,ki,…,k16},其中,ki=eki^eki+16^……^eki+16*19;
假设共有n条网络会话,相对应的s0有m个,记为{s01,s02,……,s0m}m≤n,则计算每个s0在这16个基底下所对应的hash值,组成一个m*16维的哈希矩阵,记为:H={hi,j}1≤i≤m,1≤j≤16,其中,hi,j=f(s0i,kj);
对于一个特定的i,如果H的第i列均为同一个值,则将该列从H中删除,当a≠b时,则a^c≠b^c;
根据公式(10),所有网络会话所对应的hash值异或上一个相同的值,结果不变,故将哈希矩阵重新记为:H={hi,j}1≤i≤m,1≤j≤z,其中,重新设置的哈希矩阵的每一列上有不同元素,共有z列;
在通过转换规则和r组合生成算法确定key值,对所确定的每一个key值进行方差计算,获取最优key值的过程中,
通过转换规则和r组合生成算法确定key值的过程包括:
按照比特位1的数目从少到多转换;第一轮寻找16位周期中只有一个1的key,如k1,k2……,第二轮寻找16位周期中有两个1的key,如k1^k2,k1^k3,……,以此类推;
在每一轮中,按照特定的r组合生成算法确定key值;其中,
在第r轮中,1≤r≤z,对于r子集a1a2…ar,key定义为:k=ka1^ka2^…^kar;r子集从a1a2…ar=12…r开始,当a1a2…ar≠(n-r+1)(n-r+2)…n时,
确定最大的整数t,使得at+1≤n且at+1不是a1a2…ar中的一个;
用r子集a1…at-1(at+1)(at+2)…(at+r-t+1)替换a1a2…ar,进而生成新的key;
对所确定的每一个key值进行方差计算,获取最优key值的过程包括:
根据公式(10)和(11),获取当前确定的key所对应的m个hash值;
对获取的m个hash值排序;
遍历排序后的序列,确定每个hash值所对应的网络会话的数量,将所述数量记为{ti}1≤i≤m'≤m,其中,m’表示共有m’个互不相同的hash值;
将{ti}1≤i≤m'按从大到小的顺序排序;
以排好序的{ti}1≤i≤m'为基础对各个hash值进行分组,使各组内的hash值所对应的网络会话的数量之和接近均值;
对分组结果进行方差计算,作最优化判定;
其中,假设q个分组所对应的网络会话数目为{Qi}1≤i≤q,此分组的判定方差std为:
其中,如果std小于事先给定的容忍误差,则此key值作为最优值;
根据获取的最优key值确定redirection table,获取到最优key值在第i个分组,1≤i≤q-1,取出其记录的各个hash值,以这些hash值为下标,设定:t[hash]=i;将redirectiontable中未被设定的位置设置为0,输出redirection table。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410851928.0A CN104580017B (zh) | 2014-12-30 | 2014-12-30 | 基于rss的网络会话分发方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410851928.0A CN104580017B (zh) | 2014-12-30 | 2014-12-30 | 基于rss的网络会话分发方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104580017A CN104580017A (zh) | 2015-04-29 |
CN104580017B true CN104580017B (zh) | 2018-04-06 |
Family
ID=53095236
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410851928.0A Active CN104580017B (zh) | 2014-12-30 | 2014-12-30 | 基于rss的网络会话分发方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104580017B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105119960B (zh) * | 2015-07-13 | 2018-11-06 | 东软集团股份有限公司 | 一种网络数据分发方法及网络设备 |
CN105956166B (zh) * | 2016-05-19 | 2020-02-07 | 北京京东尚科信息技术有限公司 | 数据库读写方法和读写装置 |
CN106407055B (zh) * | 2016-09-13 | 2019-09-24 | 郑州云海信息技术有限公司 | 一种RSS Key值离散性评价方法及系统 |
US10419447B2 (en) | 2017-10-11 | 2019-09-17 | International Business Machines Corporation | Real-time adaptive receive side scaling key selection |
CN111949403B (zh) * | 2020-08-11 | 2024-01-26 | 北京天融信网络安全技术有限公司 | 一种数据包的分配方法、装置及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1926827A (zh) * | 2004-03-29 | 2007-03-07 | 英特尔公司 | 重定向表的配置 |
CN101976247A (zh) * | 2010-09-30 | 2011-02-16 | 北京新媒传信科技有限公司 | Rss数据采集方法及系统 |
CN103475586A (zh) * | 2013-08-22 | 2013-12-25 | 东软集团股份有限公司 | 网络数据报文的转发方法、装置及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7257572B2 (en) * | 2004-04-30 | 2007-08-14 | Intel Corporation | Function for directing packets |
-
2014
- 2014-12-30 CN CN201410851928.0A patent/CN104580017B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1926827A (zh) * | 2004-03-29 | 2007-03-07 | 英特尔公司 | 重定向表的配置 |
CN101976247A (zh) * | 2010-09-30 | 2011-02-16 | 北京新媒传信科技有限公司 | Rss数据采集方法及系统 |
CN103475586A (zh) * | 2013-08-22 | 2013-12-25 | 东软集团股份有限公司 | 网络数据报文的转发方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104580017A (zh) | 2015-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104580017B (zh) | 基于rss的网络会话分发方法及系统 | |
Li et al. | Coded terasort | |
Beck et al. | An $ O (1/k) $ gradient method for network resource allocation problems | |
CN104468412B (zh) | 基于rss的网络会话数据包分发方法及系统 | |
Yamazaki et al. | On techniques to improve robustness and scalability of a parallel hybrid linear solver | |
Pornin et al. | More efficient algorithms for the NTRU key generation using the field norm | |
Jiang et al. | Incremental routing strategy on scale-free networks | |
CN105446979A (zh) | 数据挖掘方法和节点 | |
Lingas | A fast output-sensitive algorithm for boolean matrix multiplication | |
Goh et al. | Nonlocal evolution of weighted scale-free networks | |
CN104809161B (zh) | 一种对稀疏矩阵进行压缩和查询的方法及系统 | |
CN108768656A (zh) | 一种应用于数据校验的哈希算法 | |
Mehlhorn et al. | Minimum cycle bases: Faster and simpler | |
CN107992283A (zh) | 一种基于降维实现有限域乘法的方法和装置 | |
Severinson et al. | Block-diagonal coding for distributed computing with straggling servers | |
Chen et al. | Verifiable computing for approximate computation | |
CN102546293B (zh) | 基于哈希比特串复用的高速网络流量网络地址测量方法 | |
CN107885486B (zh) | 一种基于查找树的复合有限域求逆装置 | |
Miyazaki et al. | Rounding logistic maps over integers and the properties of the generated sequences | |
Chalopin et al. | Limit behavior of the multi-agent rotor-router system | |
CN110445611A (zh) | 一种基于模算术哈希函数的保密增强方法及装置 | |
Yamazaki et al. | On techniques to improve robustness and scalability of the Schur complement method | |
Ryan | Counting extended irreducible Goppa codes | |
CN105119960B (zh) | 一种网络数据分发方法及网络设备 | |
Tan et al. | Semi-on-line scheduling with ordinal data on two uniform machines |
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 |