基于rss的网络会话分发方法及系统的制作方法

文档序号:8265614阅读:449来源:国知局
基于rss的网络会话分发方法及系统的制作方法【
技术领域
】[0001]本发明涉及网络会话分发
技术领域
,更为具体地,涉及一种基于RSS的网络会话分发方法及系统。【
背景技术
】[0002]为了提升计算机的性能,现代计算机一般采用多核架构处理数据。对于基于多核架构的网络设备而言,当它接收到一个网络数据包时,相关的网卡需要通过一种机制决定将这个数据包交给哪个CPU处理,RSS(receivesidescaling,接收端调节)是一种网络数据包分发机制,已被广泛应用,尤其是应用在一些高性能的网络硬件设备中,如Intel推出的基于8259910Gb以太网控制器的万兆网卡就支持使用开发者给定的参数,通过RSS来进行CPU的任务分配。[0003]为了详细说明RSS进行数据包分发的过程,图1示出了现有的RSS的处理流程,如图1所示,RSS的处理流程包括如下几个简要步骤:[0004]首先,确定入参;包括一个40字节(320比特)的key的入参和一个长度为128的数组redirectiontable(重定向表)的入参。一般情况下,这两个入参可以由开发者指定,以满足特定场景下的计算需求。Key用于计算hash值,redirectiontable则用于将hash值映射到各个CPU(即各个发送队列的id)上。[0005]然后,根据key和input(输入的网络数据信息)通过给定的hash算法(compute_hash)计算出一个32位的hash值。input的选取一般有两种形式,一种是取源IP与目的IP二元组连接成的数据段,另一种是取源IP、目的IP、源端口、目的端口四元组连接成的数据段。在计算TCP或UDP等常用数据包时,一般都采用后一种(即四元组的数据段)作为input,四元组的input共包含12个字节,它作为一串8*12位的数字参与计算。关于hash算法,其对应的32位hash值由如下步骤产生:[0006]Sl:先将hash结果result置为0;[0007]S2:如果input最左端的一位为1,则将result更新为result自身与key最左端32位的异或值;否则,result不变。[0008]S3:将input与key均左移一位。[0009]S4:如果input为0,则将result作为输出结果;否则,重复S2、S3和S4。[0010]接着,取出上述hash值(result)的7位最低有效位(LSB,即二进制数的最右侧7位)作为redirectiontable的下标。[0011]最后,按照取出的下标读取相应redirectiontable上的id值。[0012]-般情况下,随机选取key和redirectiontable中的对应关系满足取模运算,艮P:当用η表示id的总个数时,有id=(result&0x7f)%n,当网络会话(session)数目足够多时,上述的RSS算法基本上能够保证将各个网络会话均匀的分配到各个id上。这样,在高流量场景下,各个CPU都能尽可能大的发挥其各自性能。但是,在一些特定场景下,如:向一些特定VIP用户提供专属服务的大流量服务器部署环境或吞吐量测试环境,之前高会话数的条件往往无法得到满足。这时,如果key和redirectiontable选取的不好,RSS就有可能把有限的网络会话只分配到有限的CPU资源上,使得相应的设备无法发挥其应有的高性能,造成资源浪费。【
发明内容】[0013]鉴于上述问题,本发明的目的是提供一种RSS的网络会话分发方法及系统,以解决网络会话不能均匀分配到各个id上问题,从而提高设备的性能。[0014]根据本发明的一个方面,提供一种基于RSS的网络会话分发方法,包括:在低会话高流量场景下,通过RSS将各条网络会话均匀分配到网卡的cpu接收队列序号id上,以实现cpu资源的均衡利用;[0015]其中,通过RSS将各条网络会话平均分配到各个id上的过程包括:[0016]将RSS表不为:hash=f(s,k)和id=g(hash,t);[0017]其中,s表示输入的网络数据,[0018]s=(ipl,ip2,portl,port2)=(S1,S2,......,s96),ipl表示32位的源IP,ip2表示32位的目的IP,portl表示16位的源端口,port2表示16位的目的端口;k表示320位的key,k=Qi1,k2,......,k32(l);t表示长度为128的数组redirectiontable;id表示s在RSS作用下分配的网络端口的地址;[0019]在低会话高流量场景下,求解获得RSS中的最优key值,使得各条网络会话平均分配到各个id上;[0020]其中,首先通过转换规则和r组合算法确定key值,然后对所确定的每一个key值进行方差计算,获取最优key值和最优分组结果;[0021]根据获取的最优key值和最优分组结果,确定redirectiontable,使各条网络会话平均分配到各个id上,完成网络端口资源的分配。[0022]根据本发明的另一方面,提供一种基于RSS的网络会话分发系统,用于在低会话高流量场景下,通过RSS将各条网络会话均匀分配到网卡的cpu接收队列序号id上,以实现cpu资源的均衡利用;[0023]其中,系统包括:公式转换单元,用于将RSS转化为数学公式;[0024]将RSS表不为:hash=f(s,k)和id=g(hash,t);[0025]其中,s表示输入的网络数据,[0026]s=(ipl,ip2,portl,port2)=(S1,S2,......,s96),ipl表示32位的源IP,ip2表示32位的目的IP,portl表示16位的源端口,port2表示16位的目的端口;k表示320位的key,k=Qi1,k2,......,k32(l);t表示长度为128的数组redirectiontable;id表示s在RSS作用下分配的网络端口的地址;[0027]最优key值获取单元,用于在低会话高流量场景下,求解获得RSS中的最优key值,使得各条网络会话平均分配到各个id上;[0028]其中,首先通过转换规则和r组合算法确定key值,然后对所确定的每一个key值进行方差计算,获取最优key值和最优分组结果;[0029]redirectiontable确定单元,用于根据获取的最优key值和最优分组结果,确定redirectiontable,使各条网络会话平均分配到各个id上,完成网络端口资源的分配。[0030]从上面的技术方案可知,本发明提供的基于RSS的网络会话分发方法及系统,在低会话高流量下,通过数学分析的方式总结出了RSS算法的一些固有性质,并利用转换规则、r组合算法、特定分组算法以及方差计算获取最优的key与redirectiontable,能够将各条网络会话平均分配到各个id上,提高设备的性能,并且避免资源浪费。[0031]为了实现上述以及相关目的,本发明的一个或多个方面包括后面将详细说明并在权利要求中特别指出的特征。下面的说明以及附图详细说明了本发明的某些示例性方面。然而,这些方面指示的仅仅是可使用本发明的原理的各种方式中的一些方式。此外,本发明旨在包括所有这些方面以及它们的等同物。【附图说明】[0032]通过参考以下结合附图的说明及权利要求书的内容,并且随着对本发明的更全面理解,本发明的其它目的及结果将更加明白及易于理解。在附图中:[0033]图1为现有的RSS的处理流程示意图;[0034]图2为根据本发明实施例的基于RSS的网络会话分发流程示意图;[0035]图3为根据本发明实施例的最优key的确定流程示意图;[0036]图4为根据本发明实施例的基于RSS的网络会话分发系统结构框图。[0037]在所有附图中相同的标号指示相似或相应的特征或功能。【具体实施方式】[0038]在下面的描述中,出于说明的目的,为了提供对一个或多个实施例的全面理解,阐述了许多具体细节。然而,很明显,也可以在没有这些具体细节的情况下实现这些实施例。[0039]针对现有技术提出的在低会话高流量场景下,网络会话不能均匀分配到各个id上问题,为解决此问题,本发明提出一种基于RSS的网络会话分发方法及系统,通过数学方法总结出RSS算法的一些固有性质,并根据总结出的固有性质得出一个结论:一条网络会话在任意key上的RSS哈希值均可表示为一组基底相互做异或运算的结果。基于上述结论,利用网络会话在RSS下的异或分解性质将96位的网络会话简化为一个16比特位的s0;利用key在RSS下的异或分解性质将RSS哈希值的计算简化为至多16个RSS基底值的异或运算;并利用转换规则、r组合算法、特定分组算法以及方差计算获取最优的key与redirectiontable,能够将各条网络会话平均分配到各个id上,从而提高设备的性能,并且避免资源浪费。[0040]以下将结合附图对本发明的具体实施例进行详细描述。[0041]为了说明本发明提供的基于RSS的网络会话分发方法,图2示出了根据本发明实施例的基于RSS的网络会话分发流程。[0042]如图2所示,本发明提供的基于RSS的网络会话分发方法,包括:在低会话高流量场景下,通过RSS将各条网络会话均匀分配到网卡的cpu接收队列序号id上,以实现cpu资源的均衡利用。[0043]其中,通过RSS将各条网络会话平均分配到各个id上的过程包括:[0044]S210:将RSS表不为:hash=f(s,k)和id=g(hash,t)〇[0045]具体地,RSS所提供的是一种从输入的网络数据信息input到id的映射,id与CPU相对应。根据【
背景技术
】中现有的RSS的处理流程可以得出,RSS的流程共需四步,为了表述方便,将前三步表示为:hash=f(s,k),第四步表示为:id=g(hash,t)。[0046]其中,s表示input,即:在取四元组的情况下,表示输入的网络数据信息,s=(ipl,ip2,portl,port2)=(S1,S2,......,s96);ipl表示32位的源IP;ip2表示32位的目的IP;portl表示16位的源端口;port2表示16位的目的端口;k表示320位的key,共320位,可进一步记为:k=Qi1,k2,......,k32(l);hash表示前三步的计算结果,获得计算结果共7位;t表示长度为128的数组redirectiontable;id表示s在RSS作用下分配的网络端口的地址,也就是s在RSS作用下最后的分配结果。[0047]S220:在低会话高流量场景下,求解获得RSS中的最优key值,使得各条网络会话平均分配到各个id上;[0048]其中,首先通过转换规则和r组合算法确定key值,然后对所确定的每一个key值进行方差计算,获取最优key值和最优分组结果;[0049]S230:根据获取的最优key值和最优分组结果,确定redirectiontable,使各条网络会话平均分配到各个id上,完成网络端口资源的分配。[0050]具体地,一般情况下,在实际的应用场景中,为了提升CPU使用效能,将一条会话两个方向上的数据包在RSS作用下均能hash到一个id上,记:[0051]f((ipl,ip2,portl,当前第1页1 2 
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1