CN104468412B - 基于rss的网络会话数据包分发方法及系统 - Google Patents
基于rss的网络会话数据包分发方法及系统 Download PDFInfo
- Publication number
- CN104468412B CN104468412B CN201410741100.XA CN201410741100A CN104468412B CN 104468412 B CN104468412 B CN 104468412B CN 201410741100 A CN201410741100 A CN 201410741100A CN 104468412 B CN104468412 B CN 104468412B
- Authority
- CN
- China
- Prior art keywords
- msub
- mrow
- mtd
- mtr
- port1
- 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
- 238000002716 delivery method Methods 0.000 title abstract 2
- 239000011159 matrix material Substances 0.000 claims abstract description 61
- 238000000034 method Methods 0.000 claims abstract description 40
- 238000004364 calculation method Methods 0.000 claims description 22
- 238000000605 extraction Methods 0.000 claims description 16
- 230000008569 process Effects 0.000 claims description 16
- 230000009471 action Effects 0.000 claims description 14
- NAWXUBYGYWOOIX-SFHVURJKSA-N (2s)-2-[[4-[2-(2,4-diaminoquinazolin-6-yl)ethyl]benzoyl]amino]-4-methylidenepentanedioic acid Chemical compound C1=CC2=NC(N)=NC(N)=C2C=C1CCC1=CC=C(C(=O)N[C@@H](CC(=C)C(O)=O)C(O)=O)C=C1 NAWXUBYGYWOOIX-SFHVURJKSA-N 0.000 claims description 5
- 238000006243 chemical reaction Methods 0.000 claims description 4
- 238000012545 processing Methods 0.000 abstract description 19
- 238000004422 calculation algorithm Methods 0.000 abstract description 14
- 238000004891 communication Methods 0.000 abstract description 9
- 238000000354 decomposition reaction Methods 0.000 abstract description 7
- 238000012546 transfer Methods 0.000 abstract description 6
- 238000012067 mathematical method Methods 0.000 abstract description 4
- 230000000694 effects Effects 0.000 abstract description 2
- 238000005516 engineering process Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000013519 translation Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 241000208340 Araliaceae Species 0.000 description 1
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 description 1
- 235000003140 Panax quinquefolius Nutrition 0.000 description 1
- 235000008434 ginseng Nutrition 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明提供一种基于RSS的网络会话数据包分发方法及系统,其中的方法包括:在NAPT场景下,通过RSS将网络会话的数据包分配到同一个id上,以完成网络端口资源的分配。利用本发明,能够解决在NAPT场景下网络会话的通信可能引发大量CPU转移处理开销的问题,通过数学方法总结出RSS算法的一些固有性质,并根据总结出的固有性质,获得任意网络会话在特定key上的RSS哈希值,其哈希值均可表示其分解之后各部分相互做异或运算的结果,基于这个结论,将端口port的求解转换成解一个特殊矩阵方程,求解port值,使得网络会话两个方向上的数据包在RSS作用下均能分配到同一个CPU处理,从而极大的提高系统的处理效能。
Description
技术领域
本发明涉及网络数据传输技术领域,更为具体地,涉及一种基于RSS的网络会话数据包分发方法及系统。
背景技术
NAPT(Network Address Port Translation,网络端口地址转换)为将多个内部地址映射为一个合法公网地址,并以不同的协议端口号与不同的内部地址相对应的地址转换技术。也就是说,NAPT是一种较流行的NAT(Network Address Translation,网络地址转换)的变体,通过转换TCP或UDP协议端口号以及地址来提供并发性,NAPT除了包括一对源IP和目的IP地址以外,还包括一对源和目的协议端口号,以及NAT设备使用的一个协议端口号。
由于公网IP地址成为稀缺资源,该技术被越来越多地应用于各种网络设备中。在实际应用时,NAPT将内部连接映射到外部网络中的一个单独的IP地址上,同时在该地址上加上一个由NAT设备选定的端口号。当所有通信都采用TCP(Transmission ControlProtocol,传输控制协议)或UDP(User Data Protocol,用户数据报协议)时,该技术能够允许多台内部主机访问同一台外部计算机,且相互之间不会发生冲突。
RSS(receive side scaling,接收端调节)是一种网络数据包分发机制。为了提升计算机的性能,现代计算机一般采用多核架构处理数据,当基于多核架构的网络设备接收到一个网络数据包时,相关的网卡需要通过RSS机制决定将这个数据包交由哪个CPU处理。现在RSS技术应用广泛,尤其是在一些高性能的网络硬件设备中,如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值。
上述为RSS详细的处理流程,在实际的应用场景中,为了提升计算机系统的使用效能,网络会话(session)信息的记录往往是与特定的CPU绑定的,因此,用户常常希望一条网络会话两个方向上的数据包在RSS作用下均能hash到一个id上,即这两个方向上的数据包由同一个CPU处理。而事实上,现代高端网络通信设备往往采用numa(非统一内存访问)架构,通过提供分离存储器给各个处理器来实现性能的提升。在numa系统中,各个numa系统下的CPU、内存、网卡等硬件设施都是独立的,而不同numa系统下的CPU通信则需要由专门的通道来完成。
因此,对于一个数据包在同一numa系统下的数据处理能力要远远大于跨numa系统(不同numa系统下的CPU需要相互配合处理)的情形。现在开发出一种技术,能够保证数据包在同一numa系统甚至同一CPU下进行处理,即:在一般场景(非NAT)下,当key满足以16为周期时,该需求即可得到保证。但是,在某些常见的特殊场景(如NAPT)中,由于数据包在经过相应的网络设备后IP与端口等信息发生了变化,用户仍然无法实现上述期望。因此,这就意味着,一旦RSS中的key和redirection table设定的不合理,这些特殊场景下的某些网络会话在每次通信时都需要伴随大量的CPU转移处理甚至是跨numa系统操作,从而极大的降低系统的处理效能。
发明内容
鉴于上述问题,本发明的目的是提供一种基于RSS的网络会话数据包分发方法及系统,通过RSS将网络会话两个方向上的数据包分配到同一个CPU处理,以解决在NAPT场景下网络会话的通信可能引发大量CPU转移处理开销的问题,从而极大的提高系统的处理效能。
根据本发明的一个方面,提供一种基于RSS的网络会话数据包分发方法,
在NAPT场景下,通过RSS将网络会话的数据包分配到同一个id上,以完成网络端口资源的分配;其中,
通过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表示key,k=(k1,k2,……,k320);t表示长度为128的数组redirection table;id表示s在RSS作用下分配的网络端口的地址;
在NAPT场景下,给定ip1、ip2、port2及CPU所对应的id,求解port1,使得
f(s,k)=f((ip1,ip2,port1,port2),k)=q*y+id (5)
其中,q为总的id数,y为一个任意系数,k以16为周期,0≤q*y+id<128;
将S1和S2分别记为s1=(ip1,ip2,0,port2),s2=(0,0,port1,0),且记port1=P=(p1,p2,…,p16),其中,pi取为0或1;将{p1,p2,…,p16}分为两组,任取1≤i≤16中的一个i,使其中一组为P0={p(i-1)%16+1,p(i+0)%16+1,…,p(i+5)%16+1},另一组为P1={p(i+6)%16+1,p(i+7)%16+1,…,p(i+14)%16+1},那么,对于任意取定的一组P1,P0由以下公式计算获取:
P0=(f(s1,k)^(q*y+id)+D-P1M1)M0 (12)
其中,D为由非负偶数组成的7维行向量,M0为7*7维反对角矩阵,M1为9*7维反向三对角阵;
根据公式(12)、选定的key、ip1、ip2、port2、id获取一组NAPT场景下指定id所对应的解port1,使得在NAPT作用下网络会话两个方向的数据包被分配到相同的id上。
此外,优选的方案是,对于任意取定的一个key,将16比特位端口port1集合中的元素均匀的分配到q个id上,以完成NAPT场景下网络端口资源的完备性分配;
其中,将16比特位端口port1集合中的元素均匀的分配到q个id上的过程包括:
在公式(12)中,M0与M1以及i值共同确定以16位为周期的k的选取,其中,i有16种取法,M1有8种取法,故K的选取为16×8=128种;并且,由于key在运行过程中不发生改变,故一旦设定M1的值,f(s1,k)与M1即为定值;对于任意给定的P1和两个不同的系数y1、y2,记为:
C1=f(s1,k)^(q*y1+id),
C2=f(s1,k)^(q*y2+id),
假设C1=C2,则C1和C2两端同时异或f(s1,k)获得q*y1+id=q*y2+id,则得出y1=y2,与设定不同的系数y1、y2相互矛盾;因此,C1-C2≠0,故C1-C2的元素中必然含有1,并且,
假设则C1-C2+D1-D2=0,但是由于D为由非负偶数组成的7维行向量,则D1-D2中的元素均为偶数,与C1-C2相加的结果为奇数,因此,与必为不同的值;
因此,对于任意取定的一个P1,获得P0的数量为27/q个,P1共有为29种取法,故{P0P1}的解集的数量至少29×27/q=216/q个;故将16比特位端口port1集合中的元素均匀的分配到q个id上,以完成NAPT场景下网络端口资源的分配。
此外,优选的方案是,根据RSS,将输入的网络数据s分解s=s1^s2,获得
f(s,k)=f(s1,k)^f(s2,k) (4)
由于S1和S2分别记为s1=(ip1,ip2,0,port2),s2=(0,0,port1,0),获得
s=(ip1,ip2,port1,port2)=(ip1,ip2,0,port2)^(0,0,port1,0),
根据公式(4)和(5),确定q*y+id=f(s,k)=f(s1,k)^f(s2,k),并获取f((0,0,port1,0),k)=f(s2,k)=f(s1,k)^(q*y+id) (6)
将f((0,0,port1,0),k)记为C=(c1,c2,…,c7),根据公式(6),则获取
C=(c1,c2,…,c7)=f(s1,k)^(q*y+id) (7)
由于port1=P=(p1,p2,…,p16),其中,pi取为0或1;
如果pi等于1,则根据所述RSS获取f((0,0,port1,0),k),f((0,0,port1,0),k)为(k89+i,k90+i,…,k95+i)的行相互做异或运算的结果;
取K1=(k90,k91,…,k96),K2=(k91,k92,…,k97),…,K16=(k105,k106,…,k111),并且以Ki为行向量取矩阵K,表示为:
其中,C为K的行相互做异或运算的结果,并且K的行的选择取决于P的元素中为1的元素,故假设与K相关的标号为(i1,i2,……,in),则
根据公式(8),获取
根据异或运算的规则,对于任意的1≤i≤7,均有0≤ci≤1,0≤c′i≤n,且c′i与ci的差值为偶数,故当0≤c′i≤1时,则C'=C,因此,
如果P满足公式(9)PK=C'=C+D,其中,D为由非负偶数组成的7维行向量,则P满足公式(6),并得出在NAPT场景下指定id所对应的解;
故,通过求解矩阵方程PK=C'=C+D,获取P;在求解矩阵方程PK=C'=C+D的过程中,将{p1,p2,…,p16}分为两组,任取1≤i≤16中的一个i,其中一组为P0={p(i-1)%16+1,p(i+0)%16+1,…,p(i+5)%16+1},另一组为
P1={p(i+6)%16+1,p(i+7)%16+1,…,p(i+14)%16+1},并记K(i-1)%16+1=(m1,m2,…,m7),k以16为周期,%表示C语言中的取模运算,则
其中,M0为7×7方阵,M1为9×7矩阵;
同时,根据k以16为周期,故{mj}1≤j≤16决定唯一的key;如果令M0为7*7维反对角矩阵,逆对角线上的元素为1;M1为9*7维反向三对角阵,每条逆对角线上的元素均为0或均为1;并且根据公式(10),获得
根据公式(11),对于任意给定的P1={p(i+6)%16+1,p(i+7)%16+1,…,p(i+14)%16+1},M1和y,选取D,使得f(s1,k)^(q*y+id)+D-P1M1成为一个元素非0即1的7维向量,故获得[p(i+5)%16+1,p(i+4)%16+1,…,p(i-1)%16+1],因此,可以确定唯一地的P0;根据M0的逆矩阵仍为M0,则
P0=(f(s1,k)^(q*y+id)+D-P1M1)M0 (12)
根据本发明的另一个方面,提供一种基于RSS的网络会话数据包分发系统,在NAPT场景下,通过RSS将网络会话的数据包分配到同一个id上,以完成网络端口资源的分配;其中,
系统包括:公式转换单元,用于将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表示key,k=(k1,k2,……,k320);t表示长度为128的数组redirection table;id表示s在RSS作用下分配的网络端口的地址;
port1获取单元,用于在NAPT场景下,给定ip1、ip2、port2及CPU所对应的id,求解port1,使得
f(s,k)=f((ip1,ip2,port1,port2),k)=q*y+id (5)
其中,q为总的id数,y为一个任意系数,k以16为周期,0≤q*y+id<128;
将S1和S2分别记为s1=(ip1,ip2,0,port2),s2=(0,0,port1,0),且记
port1=P=(p1,p2,…,p16),其中,pi取为0或1;将{p1,p2,…,p16}分为两组,任取1≤i≤16中的一个i,使其中一组为P0={p(i-1)%16+1,p(i+0)%16+1,…,p(i+5)%16+1},另一组为P1={p(i+6)%16+1,p(i+7)%16+1,…,p(i+14)%16+1},那么,对于任意取定的一组P1,P0由以下公式计算获取:
P0=(f(s1,k)^(q*y+id)+D-P1M1)M0 (12)
其中,D为由非负偶数组成的7维行向量,M0为7*7维反对角矩阵,M1为9*7维反向三对角阵;
根据公式(12)、选定的key、ip1、ip2、port2、id获取一组NAPT场景下指定id所对应的解port1,使得在NAPT作用下一条网络会话两个方向的数据包被分配到相同的id上。
从上面的技术方案可知,本发明的基于RSS的网络会话数据包分发方法及系统,能够解决在NAPT场景下网络会话的通信可能引发的大量CPU转移处理开销的问题,通过数学方法总结出RSS算法的一些固有性质,并根据总结出的固有性质,获得任意网络会话在特定key上的RSS哈希值,其哈希值均可表示其分解之后各部分相互做异或运算的结果,基于这个结论,将端口port的求解转换成解一个特殊矩阵方程,求解port值,使得网络会话两个方向上的数据包在RSS作用下均能分配到同一个CPU处理,从而极大的提高系统的处理效能。
为了实现上述以及相关目的,本发明的一个或多个方面包括后面将详细说明并在权利要求中特别指出的特征。下面的说明以及附图详细说明了本发明的某些示例性方面。然而,这些方面指示的仅仅是可使用本发明的原理的各种方式中的一些方式。此外,本发明旨在包括所有这些方面以及它们的等同物。
附图说明
通过参考以下结合附图的说明及权利要求书的内容,并且随着对本发明的更全面理解,本发明的其它目的及结果将更加明白及易于理解。在附图中:
图1为现有的RSS的处理流程示意图;
图2为根据本发明实施例的基于RSS的网络会话数据包分发方法流程示意图;
图3为根据本发明实施例的NAPT反向端口计算流程示意图;
图4为根据本发明实施例的基于RSS的网络会话数据包分发系统逻辑结构框图。
在所有附图中相同的标号指示相似或相应的特征或功能。
具体实施方式
在下面的描述中,出于说明的目的,为了提供对一个或多个实施例的全面理解,阐述了许多具体细节。然而,很明显,也可以在没有这些具体细节的情况下实现这些实施例。
针对前述提出的在NAPT场景下,网络会话的通信引发大量CPU转移处理开销的问题,为解决此问题,本发明提出了基于RSS的网络会话数据包分发方法及系统,通过数学方法总结出RSS算法的一些固有性质,并根据总结出的固有性质,获得任意网络会话在特定key上的RSS哈希值,其哈希值均可表示其分解之后各部分相互做异或运算的结果,基于这个结论,将端口port的求解转换成解一个特殊矩阵方程,求解port值,使得网络会话两个方向上的数据包在RSS作用下均能分配到同一个CPU处理,也就是说,在NAPT情景下,网络会话通过一套精密的算法分配与特定IP相对应的端口,进而保证一条网络会话两个方向的数据包在RSS的作用下都能够分配到同一id上。
以下将结合附图对本发明的具体实施例进行详细描述。
为了说明本发明提供的基于RSS的网络会话数据包分发方法,图2示出了根据本发明实施例的基于RSS的网络会话数据包分发方法流程。
如图2所示,本发明提供的基于RSS的网络会话数据包分发方法,在NAPT场景下,通过RSS将网络会话的数据包分配到同一个id上,以完成网络端口资源的分配。
其中,通过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表示key,共320位,可进一步记为:k=(k1,k2,……,k320);hash表示前三步的计算结果,获得计算结果共7位;t表示长度为128的数组redirection table;id表示s在RSS作用下分配的网络端口的地址,也就是s在RSS作用下最后的分配结果。
S220:在NAPT场景下,给定ip1、ip2、port2及CPU所对应的id,求解port1,使得
f(s,k)=f((ip1,ip2,port1,port2),k)=q*y+id (5)
其中,q为总的id数,y为一个任意系数,k以16为周期,0≤q*y+id<128;
将S1和S2分别记为s1=(ip1,ip2,0,port2),s2=(0,0,port1,0),且记
port1=P=(p1,p2,…,p16),其中,pi取为0或1;将{p1,p2,…,p16}分为两组,任取1≤i≤16中的一个i,使其中一组为P0={p(i-1)%16+1,p(i+0)%16+1,…,p(i+5)%16+1},另一组为P1={p(i+6)%16+1,p(i+7)%16+1,…,p(i+14)%16+1},那么,对于任意取定的一组P1,P0由以下公式计算获取:
P0=(f(s1,k)^(q*y+id)+D-P1M1)M0 (12)
其中,D为由非负偶数组成的7维行向量,M0为7*7维反对角矩阵,M1为9*7维反向三对角阵;
根据公式(12)、可以通过选定的key、ip1、ip2、port2、id获取一组NAPT场景下指定id所对应的解port1,使得在NAPT作用下网络会话两个方向的数据包被分配到相同的id上。在步骤S220中,根据RSS,将输入的网络数据s分解为s=s1^s2,获得f(s,k)=f(s1,k)^f(s2,k)(4)
具体地,一般情况下,函数g设为取模函数。假设共有q个CPU用于接收网卡收到的数据,每个CPU都在接收端口上设置一个接收队列。那么函数g满足:id=g(hash,t)=t[hash]=hash%q。
需要说明的是,本发明的redirection table同样采用上述的设定。
下面将详细分析函数f的性质,假设s的96个比特中有n位为1,分别为(i1,i2,……,in),其中,1≤i1<i2<……<in≤96;根据RSS,则:
针对公式(1),如果s可以分解为两个数的异或之和,即:s=s1^s2,设s1所对应的1比特位为:s2所对应的1比特位为:那么当s1与s2没有共同1比特位(即s1&s2=0)时,s所对应的(i1,i2,……,in),就是与的并集,因此,根据公式(1),获得以下公式(2):
并且,进一步考虑一般化情况,s1与s2可以表示为:
s1=(s1&(~s2))^(s1&s2),s2=(s2&(~s1))^(s2&s1);
其中,(s1&(~s2))&(s1&s2)=0且(s2&(~s1))&(s2&s1)=0;
根据公式(2),得到
又由于:
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
根据公式(2)和公式(3),得到
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)。 (4)
在NAPT场景下,给定ip1、ip2、port2及CPU所对应的id,求解port1,使得f(s,k)=f((ip1,ip2,port1,port2),k)=q*y+id (5)
具体地,为了能够保证一条网络会话两个方向上的数据包在RSS作用下均分配到同一个id上,即:f((ip1,ip2,port1,port2),k)=f((ip2,ip1,port2,port1),k),k应该满足以16为周期,处于实际应用的需要,本发明的网络会话数据包分发方法也需要在此前提下进行。
从数学的角度看,在多核NAPT场景下,key的选取应该使得一条网络会话在NAPT后port的计算满足如下条件,即:给定ip1,ip2,port2及CPU所对应的id,求解port1,使得
f(s,k)=f((ip1,ip2,port1,port2),k)=q*y+id (5)
其中,q为总的id数,y是一个任意系数,满足0≤q*y+id<128。
将S1和S2分别记为:s1=(ip1,ip2,0,port2),s2=(0,0,port1,0),由于
s=(ip1,ip2,port1,port2)=(ip1,ip2,0,port2)^(0,0,port1,0),
根据公式(4)和(5),则q*y+id=f(s,k)=f(s1,k)^f(s2,k),并获取f((0,0,port1,0),k)=f(s2,k)=f(s1,k)^(q*y+id) (6)
将f((0,0,port1,0),k)记为C=(c1,c2,…,c7),根据公式(6),则获取
C=(c1,c2,…,c7)=f(s1,k)^(q*y+id) (7)
由公式(7)的右端可以看出,在k选定的情况下,C是一个只与y有关的7比特数。
另外,记port1=P=(p1,p2,…,p16),其中,pi取为0或1;如果pi等于1,则根据RSS获取f((0,0,port1,0),k)异或(k89+i,k90+i,…,k95+i)的结果;取K1=(k90,k91,…,k96),K2=(k91,k92,…,k97),…,K16=(k105,k106,…,k111),并且以Ki为行向量取矩阵K,表示为:
现在,考虑C是如何计算的。事实上,C为K的行相互做异或运算的结果,并且K的行的选择取决于P的元素中为1的元素,故假设与K设相关的标号为(i1,i2,……,in),则
因此,如果把7比特的数字同时看作1×7维矩阵参与矩阵运算,根据公式(8),获取以下公式(9):
根据异或运算的规则,也就是说,相同为0,不同为1,不难看出,对于任意的1≤i≤7,均有0≤ci≤1,0≤c′i≤n,且c′i与ci的差值为偶数,故当0≤c′i≤1时,则C'=C,这说明:如果P满足公式(9)PK=C'=C+D,其中,D为由非负偶数组成的7维行向量,则此时的P必然满足公式(6),并得出在NAPT场景下指定id所对应的解。
下面详述如何通过求解矩阵方程PK=C+D得到P。在求解矩阵方程
PK=C+D的过程中,将{p1,p2,…,p16}分为两组,任取1≤i≤16中的一个i,其中一组为P0={p(i-1)%16+1,p(i+0)%16+1,…,p(i+5)%16+1},另一组为
P1={p(i+6)%16+1,p(i+7)%16+1,…,p(i+14)%16+1},并记为K(i-1)%16+1=(m1,m2,…,m7),k以16为周期,得到的公式如下:
其中,M0为7×7方阵,M1为9×7矩阵;实际上,{mj}1≤j≤16决定唯一的key;如果令m7为1,m14,m15,m16为0或1,而其余mj均为0,那么M0为反对角矩阵,M1为反向三对角阵,也就是说,令M0为7*7维反对角矩阵,逆对角线上的元素为1;M1为9*7维反向三对角阵,每条逆对角线上的元素均为0或均为1;并且根据公式(10),获得
根据公式(11),对于任意给定的P1={p(i+6)%16+1,p(i+7)%16+1,…,p(i+14)%16+1},M1(m14,m15,m16可以任意选取)和y,选取D,使得f(s1,k)^(q*y+id)+D-P1M1成为一个元素非0即1的7维向量,故获得[p(i+5)%16+1,p(i+4)%16+1,…,p(i-1)%16+1],即确定唯一的P0;而此时,由于M0的逆矩阵仍为M0,必有
P0=(f(s1,k)^(q*y+id)+D-P1M1)M0 (12)
因此,根据公式(12)、可以通过选定的key、ip1、ip2、port2、id获取到一组在NAPT场景下指定id所对应的解port1,故将网络会话的数据包分配到同一的id上,以完成网络端口资源的分配。
上述为对选定的key,能够获取一组在NAPT场景下指定id所对应的解port1,对于任意取定的一个key,将16比特位端口port1集合中的元素均匀的分配到q个id上,以完成NAPT场景下网络端口资源的完备性分配。
具体地,将16比特位端口port1集合中的元素均匀的分配到q个id上的过程包括:在公式(12)中,M0与M1以及i值共同确定以16位为周期的k的选取,其中,i有16种取法,M1有8种取法,故K的选取为16×8=128种。
下面将详细说明本发明方法的完备性,即在s1固定时,是否能够将16位网络端口的全集均匀地映射到各个id上。由于key在运行过程中不发生改变,故一旦设定M1的值,f(s1,k)与M1即为定值;对于任意给定的P1和两个不同的系数y1、y2,记为:
C1=f(s1,k)^(q*y1+id),
C2=f(s1,k)^(q*y2+id),
假设C1=C2,则C1和C2两端同时异或f(s1,k)获得q*y1+id=q*y2+id,则得出y1=y2,与设定不同的系数y1、y2相互矛盾;因此,必然得出C1-C2≠0,故C1-C2的元素中必然含有1,并且,
假设则C1-C2+D1-D2=0,但这是不可能的,由于D为由非负偶数组成的7维行向量,则D1-D2中的元素均为偶数,与C1-C2相加的结果为奇数,因此,与必为不同的值。
这就意味着,对于任意取定的一个P1,根据本发明的方法,获得P0的数量为27/q个,P1共有为29种取法,故{P0P1}的解集的数量至少29×27/q=216/q个;故将16比特位端口port1集合中的元素均匀的分配到q个id上,以完成NAPT场景下网络端口资源的分配。
也就是说,对于任意取定的一个P1,P0的个数为(27/q)-((27%q)/id)+1,可以获得27/q个P0。由于9比特的P1共有29种取法,因此,{P0P1}的解集的数量至少为29×27/q=216/q个。也就是说,该算法把16比特位端口集合中的元素均匀的分配到q个CPU队列上,具备完备性。
在本发明的一个具体实施方式中,上述方法中的一个特定M1来举例说明RSS的具体运作流程。
将P循环左移j-1个比特位,即取P0={p(j-1)%16+1,p(j+0)%16+1,…,p(j+5)%16+1},P1={p(j+6)%16+1,p(j+7)%16+1,…,p(j+14)%16+1},且m14,m15,m16均取为0,此时M1=0,并且,(m1,m2,…,m7)=K(j-1)%16+1=(k90+j-1,k91+j-1,…,k96+j-1)=(k(8+j)%16+1,k(9+j)%16+1,…,k(14+j)%16+1),即:k(14+j)%16+1=1,k(14+j)%16-15+i=0,1≤i≤15。
记b=1<<((17-j)%16),则计算得到k=key=b^(b<<16)^…^(b<<16*19)。根据公式(12),对于任意的P1,均有P0=(f(s1,k)^(q*y+id))M0,取qhash=q*y+id,则P0等于f(s1,k)^qhash的逆序值。为了记录计算出的每个P0其下属P1的分配情况,图3示出了根据本发明实施例的NAPT反向端口计算流程。
如图3所示,NAPT反向端口计算包括:S301:Choose_port(ip1,ip2,port2,id);
S302:初始化计算:qhash=id,s1=(ip1,ip2,0,port2),chash=f(s1,k);
S303:qhash<128;若Y,则执行步骤S304,若N,则执行步骤S3031;
S3031:端口选取失败,return-1;
S304:rss_hash=qhash^chash,rss_hash=bit_convert(rss_hash)>>1,index=rss_node[rss_hash].index;其中,bit_convert的作用是将一个8比特的数值按比特做逆序。
S305:index<PORT_MAX_BODY;若Y,则执行步骤S306,若N,则执行步骤S3051;
S3051:qhash+=q;然后执行步骤S303;
S306:choose_port=(rss_hash<<9)+index;rss_node[rss_hash].port[index]=1;
S307:rss_node[rss_hash].port[++index]==0;若Y,则执行步骤S308,若N,则继续执行步骤S307;
S308:rss_node[rss_hash].index=index,将choose_port循环右移j-1位;
S309:申请成功return choose_port。
在上述如图3所示的步骤中的数据结构为:
其中,index表示当前可分配的最小9比特P1值,port表示当前P0下属的所有P1的分配情况,即对分配出去的P1,有port[P1]=1,其余port项为0,因此,一旦计算出[P0P1],只需将其循环右移j-1个比特位即可计算出P。
上述算法每次计算消耗的计算量与RSS算法做一次哈希运算的运算量基本一致,因此,可以说,此算法它完美地解决了NAPT场景下的端口资源分配问题。
在本发明中,为了更直观的展现算法的有效性,表1示出了NAPT逆向端口算法的一些计算结果。
假设一个计算机系统包含有两个numa,每个numa下包含两个万兆卡端口。由于业务需要,每个CPU都与这四个网卡绑定了一个数据包接收队列,如果系统收到的一条session(网路会话)((192.168.11.100/234→1.1.8.2/80)由某一特定CPU处理;那么,在NAPT的作用下,假设源IP变更为1.1.7.2,源端口则需要由系统动态计算。如果选取10个不同的源端口,且CPU与发送端口所绑定的接受队列号为id,将最后的计算结果右移8个比特位(即j-1=8,(k1,k2,…,k16)=(0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0)),则id与其相对的计算结果表1所示:
表1:NAPT逆向端口算法结果
表1中的计算结果可以保证,在NAPT环境下,系统对于同一网络会话处理的一致性。在特定时刻,这种一致性将极大的影响系统性能。举例来说,intel dpdk是intel公司发布的一款数据包转发处理套件。作为开源系统,它提供了一个基于其万兆卡的用于数据包转发的例子程序l2fwd,经该方法的实际测试,l2fwd在不同numa系统下的处理转发能力比在同一numa系统下处理的性能下降至少三分之一甚至更多。因此,本发明的方法对于系统性能的提升具有重要意义。
与上述方法相对应,本发明还提供一种基于RSS的网络会话数据包分发系统,图4示出了根据本发明实施例的基于RSS的网络会话数据包分发系统逻辑结构。
如图4所示,本发明提供的基于RSS的网络会话数据包分发系统400,用于在NAPT场景下,通过RSS将网络会话的数据包分配到同一个id上,以完成网络端口资源的分配。
其中,基于RSS的网络会话数据包分发系统400包括公式转换单元410和port1获取单元。
公式转换单元,用于将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表示key,k=(k1,k2,……,k320);t表示长度为128的数组redirection table;id表示s在RSS作用下分配的网络端口的地址。
port1获取单元,用于在NAPT场景下,给定ip1、ip2、port2及CPU所对应的id,求解port1,使得
f(s,k)=f((ip1,ip2,port1,port2),k)=q*y+id (5)
其中,q为总的id数,y为一个任意系数,k以16为周期,0≤q*y+id<128;
将S1和S2分别记为s1=(ip1,ip2,0,port2),s2=(0,0,port1,0),且记port1=P=(p1,p2,…,p16),其中,pi取为0或1;将{p1,p2,…,p16}分为两组,任取1≤i≤16中的一个i,使其中一组为P0={p(i-1)%16+1,p(i+0)%16+1,…,p(i+5)%16+1},另一组为P1={p(i+6)%16+1,p(i+7)%16+1,…,p(i+14)%16+1},那么,对于任意取定的一组P1,P0由以下公式计算获取:
P0=(f(s1,k)^(q*y+id)+D-P1M1)M0 (12)
其中,D为由非负偶数组成的7维行向量,M0为7*7维反对角矩阵,M1为9*7维反向三对角阵;
根据公式(12)、选定的key、ip1、ip2、port2、id获取一组NAPT场景下指定id所对应的解port1,使得在NAPT作用下一条网络会话两个方向的数据包被分配到相同的id上。
port1获取单元420通过选定的key、ip1、ip2、port2、id与公式(12)获取到port1,而对于任意取定的一个key,将16比特位端口port1集合中的元素均匀的分配到q个id上,以完成NAPT场景下网络端口资源的完备性分配。
其中,将16比特位端口port1集合中的元素均匀的分配到q个id上的过程包括:在公式(12)中,M0与M1以及i值共同确定以16位为周期的k的选取,其中,i有16种取法,M1有8种取法,故K的选取为16×8=128种;并且,由于key在运行过程中不发生改变,故一旦设定M1的值,f(s1,k)与M1即为定值;对于任意给定的P1和两个不同的系数y1、y2,记为:
C1=f(s1,k)^(q*y1+id),
C2=f(s1,k)^(q*y2+id),
假设C1=C2,则C1和C2两端同时异或f(s1,k)获得q*y1+id=q*y2+id,则得出y1=y2,与设定不同的系数y1、y2相互矛盾;因此,C1-C2≠0,故C1-C2的元素中必然含有1,并且,
假设则C1-C2+D1-D2=0,但是由于D为由非负偶数组成的7维行向量,则D1-D2中的元素均为偶数,与C1-C2相加的结果为奇数,因此,与必为不同的值;
故,对于任意取定的一个P1,获得P0的数量为27/q个,P1共有为29种取法,故{P0P1}的解集的数量至少29×27/q=216/q个;故将16比特位端口port1集合中的元素均匀的分配到q个id上,以完成NAPT场景下网络端口资源的分配。
其中,port1获取单元420根据RSS,将输入的网络数据s分解s=s1^s2,获得
f(s,k)=f(s1,k)^f(s2,k) (4)
由于S1和S2分别记为s1=(ip1,ip2,0,port2),s2=(0,0,port1,0),获得
s=(ip1,ip2,port1,port2)=(ip1,ip2,0,port2)^(0,0,port1,0),
根据公式(4)和(5),确定q*y+id=f(s,k)=f(s1,k)^f(s2,k),并获取f((0,0,port1,0),k)=f(s2,k)=f(s1,k)^(q*y+id) (6)
将f((0,0,port1,0),k)记为C=(c1,c2,…,c7),根据公式(6),则获取
C=(c1,c2,…,c7)=f(s1,k)^(q*y+id) (7)
由于port1=P=(p1,p2,…,p16),其中,pi取为0或1;
如果pi等于1,则根据所述RSS获取f((0,0,port1,0),k),f((0,0,port1,0),k)为(k89+i,k90+i,…,k95+i)的行相互做异或运算的结果;
取K1=(k90,k91,…,k96),K2=(k91,k92,…,k97),…,K16=(k105,k106,…,k111),并且以Ki为行向量取矩阵K,表示为:
其中,C为K的行相互做异或运算的结果,并且K的行的选择取决于P的元素中为1的元素,故假设与K相关的标号为(i1,i2,……,in),则
根据公式(8),获取
根据异或运算的规则,对于任意的1≤i≤7,均有0≤ci≤1,0≤c′i≤n,且ci与
ci的差值为偶数,故当0≤c′i≤1时,则C'=C,因此,
如果P满足公式(9)PK=C'=C+D,其中,D为由非负偶数组成的7维行向量,则P满足公式(6),并得出在NAPT场景下指定id所对应的解;
故,通过求解矩阵方程PK=C'=C+D,获取P;在求解矩阵方程
PK=C'=C+D的过程中,将{p1,p2,…,p16}分为两组,任取1≤i≤16中的一个i,其中一组为P0={p(i-1)%16+1,p(i+0)%16+1,…,p(i+5)%16+1},另一组为
P1={p(i+6)%16+1,p(i+7)%16+1,…,p(i+14)%16+1},并记K(i-1)%16+1=(m1,m2,…,m7),k以16为周期,%表示C语言中的取模运算,则
其中,M0为7×7方阵,M1为9×7矩阵;
同时,根据k以16为周期,故{mj}1≤j≤16决定唯一的key;如果令m7为1,m14、m15、m16为0或1,而其余mj均为0,那么M0为反对角矩阵,M1为反向三对角阵,,也就是说,如果令M0为7*7维反对角矩阵,逆对角线上的元素为1;M1为9*7维反向三对角阵,每条逆对角线上的元素均为0或均为1;并且根据公式(10),获得
根据公式(11),对于任意给定的P1={p(i+6)%16+1,p(i+7)%16+1,…,p(i+14)%16+1},M1和y,选取D,使得f(s1,k)^(q*y+id)+D-P1M1成为一个元素非0即1的7维向量,故获得[p(i+5)%16+1,p(i+4)%16+1,…,p(i-1)%16+1],因此,可以确定唯一地的P0;根据M0的逆矩阵仍为M0,则
P0=(f(s1,k)^(q*y+id)+D-P1M1)M0 (12)
在本发明中,需要说明是,port1获取单元在根据RSS,将输入的网络数
据s分解s=s1^s2,获得f(s,k)=f(s1,k)^f(s2,k)的过程中,
假设s的96个比特中有n位为1,则分别为(i1,i2,……,in),其中1≤i1<i2<……<in≤96,根据所述RSS算法,获取
如果s分解为两个数的异或之和,s=s1^s2,设s1所对应的1比特位为s2所对应的1比特位为那么当s1与s2没有共同1比特位时,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
根据公式(2),则
又由于
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
根据公式(2)和(3),获取
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)。 (4)
通过上述实施方式可以看出,本发明提供的基于RSS的网络会话数据包分发方法及系统,在NAPT场景下,能够避免网络会话的通信可能引发的大量CPU转移处理开销情况的发生,通过数学方法总结出RSS的一些固有性质,并根据总结出的固有性质,获得任意网络会话在特定key上的RSS哈希值,其哈希值均可表示其分解之后各部分相互做异或运算的结果,基于这个结论,将端口port的求解转换成解一个特殊矩阵方程,求解port值,使得网络会话两个方向上的数据包在RSS作用下均能分配到同一个CPU处理,从而极大的提高系统的处理效能。
如上参照附图以示例的方式描述了根据本发明提出的基于RSS的网络会话数据包分发方法及系统。但是,本领域技术人员应当理解,对于上述本发明所提出的基于RSS的网络会话数据包分发方法及系统,还可以在不脱离本发明内容的基础上做出各种改进。因此,本发明的保护范围应当由所附的权利要求书的内容确定。
Claims (6)
1.一种基于RSS的网络会话数据包分发方法,在NAPT场景下,通过接收端调节RSS将网络会话的数据包分配到同一个id上,以完成网络端口资源的分配;其中,
通过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表示key,k=(k1,k2,……,k320);t表示长度为128的数组redirection table;id表示s在RSS作用下分配的网络端口的地址;
在NAPT场景下,给定ip1、ip2、port2及CPU所对应的id,求解port1,使得
f(s,k)=f((ip1,ip2,port1,port2),k)=q*y+id (5)
其中,q为总的id数,y为一个任意系数,k以16为周期,0≤q*y+id<128;
将s1和s2分别记为s1=(ip1,ip2,0,port2),s2=(0,0,port1,0),且记port1=P=(p1,p2,…,p16),其中,pi取为0或1;将{p1,p2,…,p16}分为两组,任取1≤i≤16中的一个i,使其中一组为P0={p(i-1)%16+1,p(i+0)%16+1,…,p(i+5)%16+1},另一组为P1={p(i+6)%16+1,p(i+7)%16+1,…,p(i+14)%16+1},那么,对于任意取定的一组P1,P0由以下公式计算获取:
P0=(f(s1,k)^(q*y+id)+D-P1M1)M0 (12)
其中,D为由非负偶数组成的7维行向量,M0为7*7维反对角矩阵,M1为9*7维反向三对角阵;
根据公式(12)、选定的key、ip1、ip2、port2、id获取一组NAPT场景下指定id所对应的解port1,使得在NAPT作用下网络会话两个方向的数据包被分配到相同的id上。
2.如权利要求1所述的基于RSS的网络会话数据包分发方法,其中,
对于任意取定的一个key,将16比特位端口port1集合中的元素均匀的分配到q个id上,以完成NAPT场景下网络端口资源的完备性分配;
其中,将16比特位端口port1集合中的元素均匀的分配到q个id上的过程包括:
在公式(12)中,M0与M1以及i值共同确定以16位为周期的k的选取,其中,i有16种取法,M1有8种取法,故K的选取为16×8=128种;并且,由于key在运行过程中不发生改变,故一旦设定M1的值,f(s1,k)与M1即为定值;对于任意给定的P1和两个不同的系数y1、y2,记为:
C1=f(s1,k)^(q*y1+id),
C2=f(s1,k)^(q*y2+id),
假设C1=C2,则C1和C2两端同时异或f(s1,k)获得q*y1+id=q*y2+id,则得出y1=y2,与设定不同的系数y1、y2相互矛盾;因此,C1-C2≠0,故C1-C2的元素中必然含有1,并且,
<mrow>
<mtable>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>P</mi>
<mn>0</mn>
<mn>1</mn>
</msubsup>
<mo>-</mo>
<msubsup>
<mi>P</mi>
<mn>0</mn>
<mn>2</mn>
</msubsup>
<mo>=</mo>
<mrow>
<mo>(</mo>
<msup>
<mi>C</mi>
<mn>1</mn>
</msup>
<mo>+</mo>
<msup>
<mi>D</mi>
<mn>1</mn>
</msup>
<mo>-</mo>
<msub>
<mi>P</mi>
<mn>1</mn>
</msub>
<msub>
<mi>M</mi>
<mn>1</mn>
</msub>
<mo>)</mo>
</mrow>
<msub>
<mi>M</mi>
<mn>0</mn>
</msub>
<mo>-</mo>
<mrow>
<mo>(</mo>
<msup>
<mi>C</mi>
<mn>2</mn>
</msup>
<mo>+</mo>
<msup>
<mi>D</mi>
<mn>2</mn>
</msup>
<mo>-</mo>
<msub>
<mi>P</mi>
<mn>1</mn>
</msub>
<msub>
<mi>M</mi>
<mn>1</mn>
</msub>
<mo>)</mo>
</mrow>
<msub>
<mi>M</mi>
<mn>0</mn>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mo>=</mo>
<mrow>
<mo>(</mo>
<mrow>
<msup>
<mi>C</mi>
<mn>1</mn>
</msup>
<mo>-</mo>
<msup>
<mi>C</mi>
<mn>2</mn>
</msup>
<mo>+</mo>
<msup>
<mi>D</mi>
<mn>1</mn>
</msup>
<mo>-</mo>
<msup>
<mi>D</mi>
<mn>2</mn>
</msup>
</mrow>
<mo>)</mo>
</mrow>
<msub>
<mi>M</mi>
<mn>0</mn>
</msub>
</mrow>
</mtd>
</mtr>
</mtable>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>13</mn>
<mo>)</mo>
</mrow>
</mrow>
假设则C1-C2+D1-D2=0,但是由于D为由非负偶数组成的7维行向量,则D1-D2中的元素均为偶数,与C1-C2相加的结果为奇数,因此,与必为不同的值;
故对于任意取定的一个P1,获得P0的数量为27/q个,P1共有为29种取法,故{P0P1}的解集的数量至少29×27/q=216/q个;故将16比特位端口port1集合中的元素均匀的分配到q个id上,以完成NAPT场景下网络端口资源的分配。
3.如权利要求1所述的基于RSS的网络会话数据包分发方法,其中,根据所述RSS,将输入的网络数据s分解s=s1^s2,获得
f(s,k)=f(s1,k)^f(s2,k) (4);
由于s1和s2分别记为s1=(ip1,ip2,0,port2),s2=(0,0,port1,0),获得
s=(ip1,ip2,port1,port2)=(ip1,ip2,0,port2)^(0,0,port1,0),
根据公式(4)和(5),确定q*y+id=f(s,k)=f(s1,k)^f(s2,k),并获取f((0,0,port1,0),k)=f(s2,k)=f(s1,k)^(q*y+id) (6)
将f((0,0,port1,0),k)记为C=(c1,c2,…,c7),根据公式(6),则获取
C=(c1,c2,…,c7)=f(s1,k)^(q*y+id) (7)
由于port1=P=(p1,p2,…,p16),其中,pi取为0或1;
如果pi等于1,则根据所述RSS获取f((0,0,port1,0),k),f((0,0,port1,0),k)为(k89+i,k90+i,…,k95+i)的行相互做异或运算的结果;
取K1=(k90,k91,…,k96),K2=(k91,k92,…,k97),…,K16=(k105,k106,…,k111),并且以Ki为行向量取矩阵K,表示为:
<mrow>
<mi>K</mi>
<mo>=</mo>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<msub>
<mi>K</mi>
<mn>1</mn>
</msub>
</mtd>
</mtr>
<mtr>
<mtd>
<msub>
<mi>K</mi>
<mn>2</mn>
</msub>
</mtd>
</mtr>
<mtr>
<mtd>
<mo>.</mo>
</mtd>
</mtr>
<mtr>
<mtd>
<mo>.</mo>
</mtd>
</mtr>
<mtr>
<mtd>
<mo>.</mo>
</mtd>
</mtr>
<mtr>
<mtd>
<mo>.</mo>
</mtd>
</mtr>
<mtr>
<mtd>
<mo>.</mo>
</mtd>
</mtr>
<mtr>
<mtd>
<mo>.</mo>
</mtd>
</mtr>
<mtr>
<mtd>
<msub>
<mi>K</mi>
<mn>16</mn>
</msub>
</mtd>
</mtr>
</mtable>
</mfenced>
</mrow>
其中,C为K的行相互做异或运算的结果,并且K的行的选择取决于P的元素中为1的元素,故假设与K相关的标号为(i1,i2,……,in),则
<mrow>
<mi>C</mi>
<mo>=</mo>
<mrow>
<mo>(</mo>
<msub>
<mi>c</mi>
<mn>1</mn>
</msub>
<mo>,</mo>
<msub>
<mi>c</mi>
<mn>2</mn>
</msub>
<mo>,</mo>
<mo>...</mo>
<mo>,</mo>
<msub>
<mi>c</mi>
<mn>7</mn>
</msub>
<mo>)</mo>
</mrow>
<mo>=</mo>
<msub>
<mi>K</mi>
<msub>
<mi>i</mi>
<mn>1</mn>
</msub>
</msub>
<mo>^</mo>
<msub>
<mi>K</mi>
<msub>
<mi>i</mi>
<mn>2</mn>
</msub>
</msub>
<mo>^</mo>
<mn>...</mn>
<mo>^</mo>
<msub>
<mi>K</mi>
<msub>
<mi>i</mi>
<mi>n</mi>
</msub>
</msub>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>8</mn>
<mo>)</mo>
</mrow>
</mrow>
根据公式(8),获取
<mrow>
<msup>
<mi>C</mi>
<mo>&prime;</mo>
</msup>
<mo>=</mo>
<mrow>
<mo>(</mo>
<msubsup>
<mi>c</mi>
<mn>1</mn>
<mo>&prime;</mo>
</msubsup>
<mo>,</mo>
<msubsup>
<mi>c</mi>
<mn>2</mn>
<mo>&prime;</mo>
</msubsup>
<mo>,</mo>
<mo>...</mo>
<mo>,</mo>
<msubsup>
<mi>c</mi>
<mn>7</mn>
<mo>&prime;</mo>
</msubsup>
<mo>)</mo>
</mrow>
<mo>=</mo>
<mi>P</mi>
<mi>K</mi>
<mo>=</mo>
<msub>
<mi>K</mi>
<msub>
<mi>i</mi>
<mn>1</mn>
</msub>
</msub>
<mo>+</mo>
<msub>
<mi>K</mi>
<msub>
<mi>i</mi>
<mn>2</mn>
</msub>
</msub>
<mo>+</mo>
<mo>...</mo>
<mo>+</mo>
<msub>
<mi>K</mi>
<msub>
<mi>i</mi>
<mi>n</mi>
</msub>
</msub>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>9</mn>
<mo>)</mo>
</mrow>
</mrow>
根据异或运算的规则,对于任意的1≤i≤7,均有0≤ci≤1,0≤c′i≤n,且c′i与ci的差值为偶数,故当0≤c′i≤1时,则C'=C,因此,
如果P满足公式(9)PK=C'=C+D,其中,D为由非负偶数组成的7维行向量,则P满足公式(6),并得出在NAPT场景下指定id所对应的解;
故,通过求解矩阵方程PK=C'=C+D,获取P;在求解矩阵方程PK=C'=C+D的过程中,将{p1,p2,…,p16}分为两组,任取1≤i≤16中的一个i,其中一组为P0={p(i-1)%16+1,p(i+0)%16+1,…,p(i+5)%16+1},另一组为
P1={p(i+6)%16+1,p(i+7)%16+1,…,p(i+14)%16+1},并记K(i-1)%16+1=(m1,m2,…,m7),k以16为周期,%表示C语言中的取模运算,则
<mrow>
<mtable>
<mtr>
<mtd>
<mrow>
<mi>C</mi>
<mo>+</mo>
<mi>D</mi>
<mo>=</mo>
<mi>P</mi>
<mi>K</mi>
<mo>=</mo>
<munderover>
<mi>&Sigma;</mi>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mn>16</mn>
</munderover>
<msub>
<mi>p</mi>
<mi>j</mi>
</msub>
<msub>
<mi>K</mi>
<mi>j</mi>
</msub>
<mo>=</mo>
<munderover>
<mi>&Sigma;</mi>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>0</mn>
</mrow>
<mn>15</mn>
</munderover>
<msub>
<mi>p</mi>
<mrow>
<mrow>
<mo>(</mo>
<mrow>
<mi>i</mi>
<mo>-</mo>
<mn>1</mn>
<mo>+</mo>
<mi>j</mi>
</mrow>
<mo>)</mo>
</mrow>
<mi>%</mi>
<mn>16</mn>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msub>
<msub>
<mi>K</mi>
<mrow>
<mrow>
<mo>(</mo>
<mrow>
<mi>i</mi>
<mo>-</mo>
<mn>1</mn>
<mo>+</mo>
<mi>j</mi>
</mrow>
<mo>)</mo>
</mrow>
<mi>%</mi>
<mn>16</mn>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mo>=</mo>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<msub>
<mi>P</mi>
<mn>0</mn>
</msub>
</mtd>
<mtd>
<msub>
<mi>P</mi>
<mn>1</mn>
</msub>
</mtd>
</mtr>
</mtable>
</mfenced>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<msub>
<mi>M</mi>
<mn>0</mn>
</msub>
</mtd>
</mtr>
<mtr>
<mtd>
<msub>
<mi>M</mi>
<mn>1</mn>
</msub>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>=</mo>
<msub>
<mi>P</mi>
<mn>0</mn>
</msub>
<msub>
<mi>M</mi>
<mn>0</mn>
</msub>
<mo>+</mo>
<msub>
<mi>P</mi>
<mn>1</mn>
</msub>
<msub>
<mi>M</mi>
<mn>1</mn>
</msub>
</mrow>
</mtd>
</mtr>
</mtable>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>10</mn>
<mo>)</mo>
</mrow>
</mrow>
其中,M0为7×7方阵,M1为9×7矩阵;
同时,根据k以16为周期,故{mj}1≤j≤16决定唯一的key;如果令M0为7*7维反对角矩阵,逆对角线上的元素为1;M1为9*7维反向三对角阵,每条逆对角线上的元素均为0或均为1;
并且根据公式(10),获得
<mrow>
<mtable>
<mtr>
<mtd>
<mrow>
<mi>C</mi>
<mo>+</mo>
<mi>D</mi>
<mo>-</mo>
<msub>
<mi>P</mi>
<mn>1</mn>
</msub>
<mi>M</mi>
<mo>=</mo>
<mi>f</mi>
<mrow>
<mo>(</mo>
<mi>s</mi>
<mn>1</mn>
<mo>,</mo>
<mi>k</mi>
<mo>)</mo>
</mrow>
<mo>^</mo>
<mrow>
<mo>(</mo>
<mi>q</mi>
<mo>*</mo>
<mi>y</mi>
<mo>+</mo>
<mi>i</mi>
<mi>d</mi>
<mo>)</mo>
</mrow>
<mo>+</mo>
<mi>D</mi>
<mo>-</mo>
<msub>
<mi>P</mi>
<mn>1</mn>
</msub>
<msub>
<mi>M</mi>
<mn>1</mn>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mo>=</mo>
<msub>
<mi>P</mi>
<mn>0</mn>
</msub>
<msub>
<mi>M</mi>
<mn>0</mn>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mo>=</mo>
<mo>&lsqb;</mo>
<msub>
<mi>p</mi>
<mrow>
<mrow>
<mo>(</mo>
<mrow>
<mi>i</mi>
<mo>+</mo>
<mn>5</mn>
</mrow>
<mo>)</mo>
</mrow>
<mi>%</mi>
<mn>16</mn>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>,</mo>
<msub>
<mi>p</mi>
<mrow>
<mo>(</mo>
<mi>i</mi>
<mo>+</mo>
<mn>4</mn>
<mo>)</mo>
<mi>%</mi>
<mn>16</mn>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>,</mo>
<mo>...</mo>
<mo>,</mo>
<msub>
<mi>p</mi>
<mrow>
<mo>(</mo>
<mi>i</mi>
<mo>-</mo>
<mn>1</mn>
<mo>)</mo>
<mi>%</mi>
<mn>16</mn>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>&rsqb;</mo>
</mrow>
</mtd>
</mtr>
</mtable>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>11</mn>
<mo>)</mo>
</mrow>
</mrow>
根据公式(11),对于任意给定的P1={p(i+6)%16+1,p(i+7)%16+1,…,p(i+14)%16+1},M1和y,选取D,使得f(s1,k)^(q*y+id)+D-P1M1成为一个元素非0即1的7维向量,故获得[p(i+5)%16+1,p(i+4)%16+1,…,p(i-1)%16+1],因此,可以确定唯一地的P0;根据M0的逆矩阵仍为M0,则
P0=(f(s1,k)^(q*y+id)+D-P1M1)M0 (12)。
4.一种基于RSS的网络会话数据包分发系统,在NAPT场景下,通过接收端调节RSS将网络会话的数据包分配到同一个id上,以完成网络端口资源的分配;其中,
所述系统包括:公式转换单元,用于将所述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表示key,k=(k1,k2,……,k320);t表示长度为128的数组redirection table;id表示s在RSS作用下分配的网络端口的地址;
port1获取单元,用于在NAPT场景下,给定ip1、ip2、port2及CPU所对应的id,求解port1,使得
f(s,k)=f((ip1,ip2,port1,port2),k)=q*y+id (5)
其中,q为总的id数,y为一个任意系数,k以16为周期,0≤q*y+id<128;
将s1和s2分别记为s1=(ip1,ip2,0,port2),s2=(0,0,port1,0),且记
port1=P=(p1,p2,…,p16),其中,pi取为0或1;将{p1,p2,…,p16}分为两组,任取1≤i≤16中的一个i,使其中一组为P0={p(i-1)%16+1,p(i+0)%16+1,…,p(i+5)%16+1},另一组为P1={p(i+6)%16+1,p(i+7)%16+1,…,p(i+14)%16+1},那么,对于任意取定的一组P1,P0由以下公式计算获取:
P0=(f(s1,k)^(q*y+id)+D-P1M1)M0 (12)
其中,D为由非负偶数组成的7维行向量,M0为7*7维反对角矩阵,M1为9*7维反向三对角阵;
根据公式(12)、选定的key、ip1、ip2、port2、id获取一组NAPT场景下指定id所对应的解port1,使得在NAPT作用下一条网络会话两个方向的数据包被分配到相同的id上。
5.如权利要求4所述的基于RSS的网络会话数据包分发系统,其中,
所述port1获取单元通过选定的key、ip1、ip2、port2、id与公式(12)获取到port1,
而对于任意取定的一个key,将16比特位端口port1集合中的元素均匀的分配到q个id上,以完成NAPT场景下网络端口资源的完备性分配;
其中,将16比特位端口port1集合中的元素均匀的分配到q个id上的过程包括:
在公式(12)中,M0与M1以及i值共同确定以16位为周期的k的选取,其中,i有16种取法,M1有8种取法,故K的选取为16×8=128种;并且,由于key在运行过程中不发生改变,故一旦设定M1的值,f(s1,k)与M1即为定值;对于任意给定的P1和两个不同的系数y1、y2,记为:
C1=f(s1,k)^(q*y1+id),
C2=f(s1,k)^(q*y2+id),
假设C1=C2,则C1和C2两端同时异或f(s1,k)获得q*y1+id=q*y2+id,则得出y1=y2,与设定不同的系数y1、y2相互矛盾;因此,C1-C2≠0,故C1-C2的元素中必然含有1,并且,
<mrow>
<mtable>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>P</mi>
<mn>0</mn>
<mn>1</mn>
</msubsup>
<mo>-</mo>
<msubsup>
<mi>P</mi>
<mn>0</mn>
<mn>2</mn>
</msubsup>
<mo>=</mo>
<mrow>
<mo>(</mo>
<msup>
<mi>C</mi>
<mn>1</mn>
</msup>
<mo>+</mo>
<msup>
<mi>D</mi>
<mn>1</mn>
</msup>
<mo>-</mo>
<msub>
<mi>P</mi>
<mn>1</mn>
</msub>
<msub>
<mi>M</mi>
<mn>1</mn>
</msub>
<mo>)</mo>
</mrow>
<msub>
<mi>M</mi>
<mn>0</mn>
</msub>
<mo>-</mo>
<mrow>
<mo>(</mo>
<msup>
<mi>C</mi>
<mn>2</mn>
</msup>
<mo>+</mo>
<msup>
<mi>D</mi>
<mn>2</mn>
</msup>
<mo>-</mo>
<msub>
<mi>P</mi>
<mn>1</mn>
</msub>
<msub>
<mi>M</mi>
<mn>1</mn>
</msub>
<mo>)</mo>
</mrow>
<msub>
<mi>M</mi>
<mn>0</mn>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mo>=</mo>
<mrow>
<mo>(</mo>
<mrow>
<msup>
<mi>C</mi>
<mn>1</mn>
</msup>
<mo>-</mo>
<msup>
<mi>C</mi>
<mn>2</mn>
</msup>
<mo>+</mo>
<msup>
<mi>D</mi>
<mn>1</mn>
</msup>
<mo>-</mo>
<msup>
<mi>D</mi>
<mn>2</mn>
</msup>
</mrow>
<mo>)</mo>
</mrow>
<msub>
<mi>M</mi>
<mn>0</mn>
</msub>
</mrow>
</mtd>
</mtr>
</mtable>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>13</mn>
<mo>)</mo>
</mrow>
</mrow>
假设则C1-C2+D1-D2=0,但是由于D为由非负偶数组成的7维行向量,则D1-D2中的元素均为偶数,与C1-C2相加的结果为奇数,因此,与必为不同的值;
因此,对于任意取定的一个P1,获得P0的数量为27/q个,P1共有为29种取法,故{P0 P1}的解集的数量至少29×27/q=216/q个;故将16比特位端口port1集合中的元素均匀的分配到q个id上,以完成NAPT场景下网络端口资源的分配。
6.如权利要求4所述的基于RSS的网络会话数据包分发系统,其中,
所述port1获取单元根据所述RSS,将输入的网络数据s分解s=s1^s2,获得
f(s,k)=f(s1,k)^f(s2,k) (4)
由于s1和s2分别记为s1=(ip1,ip2,0,port2),s2=(0,0,port1,0),获得
s=(ip1,ip2,port1,port2)=(ip1,ip2,0,port2)^(0,0,port1,0),
根据公式(4)和(5),确定q*y+id=f(s,k)=f(s1,k)^f(s2,k),并获取f((0,0,port1,0),k)=f(s2,k)=f(s1,k)^(q*y+id) (6)
将f((0,0,port1,0),k)记为C=(c1,c2,…,c7),根据公式(6),则获取
C=(c1,c2,…,c7)=f(s1,k)^(q*y+id) (7)
由于port1=P=(p1,p2,…,p16),其中,pi取为0或1;
如果pi等于1,则根据所述RSS获取f((0,0,port1,0),k),f((0,0,port1,0),k)为(k89+i,k90+i,…,k95+i)的行相互做异或运算的结果;
取K1=(k90,k91,…,k96),K2=(k91,k92,…,k97),…,K16=(k105,k106,…,k111),并且以Ki为行向量取矩阵K,表示为:
<mrow>
<mi>K</mi>
<mo>=</mo>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<msub>
<mi>K</mi>
<mn>1</mn>
</msub>
</mtd>
</mtr>
<mtr>
<mtd>
<msub>
<mi>K</mi>
<mn>2</mn>
</msub>
</mtd>
</mtr>
<mtr>
<mtd>
<mo>.</mo>
</mtd>
</mtr>
<mtr>
<mtd>
<mo>.</mo>
</mtd>
</mtr>
<mtr>
<mtd>
<mo>.</mo>
</mtd>
</mtr>
<mtr>
<mtd>
<mo>.</mo>
</mtd>
</mtr>
<mtr>
<mtd>
<mo>.</mo>
</mtd>
</mtr>
<mtr>
<mtd>
<mo>.</mo>
</mtd>
</mtr>
<mtr>
<mtd>
<msub>
<mi>K</mi>
<mn>16</mn>
</msub>
</mtd>
</mtr>
</mtable>
</mfenced>
</mrow>
其中,C为K的行相互做异或运算的结果,并且K的行的选择取决于P的元素中为1的元素,故假设与K相关的标号为(i1,i2,……,in),则
<mrow>
<mi>C</mi>
<mo>=</mo>
<mrow>
<mo>(</mo>
<msub>
<mi>c</mi>
<mn>1</mn>
</msub>
<mo>,</mo>
<msub>
<mi>c</mi>
<mn>2</mn>
</msub>
<mo>,</mo>
<mo>...</mo>
<mo>,</mo>
<msub>
<mi>c</mi>
<mn>7</mn>
</msub>
<mo>)</mo>
</mrow>
<mo>=</mo>
<msub>
<mi>K</mi>
<msub>
<mi>i</mi>
<mn>1</mn>
</msub>
</msub>
<mo>^</mo>
<msub>
<mi>K</mi>
<msub>
<mi>i</mi>
<mn>2</mn>
</msub>
</msub>
<mo>^</mo>
<mn>...</mn>
<mo>^</mo>
<msub>
<mi>K</mi>
<msub>
<mi>i</mi>
<mi>n</mi>
</msub>
</msub>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>8</mn>
<mo>)</mo>
</mrow>
</mrow>
根据公式(8),获取
<mrow>
<msup>
<mi>C</mi>
<mo>&prime;</mo>
</msup>
<mo>=</mo>
<mrow>
<mo>(</mo>
<msubsup>
<mi>c</mi>
<mn>1</mn>
<mo>&prime;</mo>
</msubsup>
<mo>,</mo>
<msubsup>
<mi>c</mi>
<mn>2</mn>
<mo>&prime;</mo>
</msubsup>
<mo>,</mo>
<mo>...</mo>
<mo>,</mo>
<msubsup>
<mi>c</mi>
<mn>7</mn>
<mo>&prime;</mo>
</msubsup>
<mo>)</mo>
</mrow>
<mo>=</mo>
<mi>P</mi>
<mi>K</mi>
<mo>=</mo>
<msub>
<mi>K</mi>
<msub>
<mi>i</mi>
<mn>1</mn>
</msub>
</msub>
<mo>+</mo>
<msub>
<mi>K</mi>
<msub>
<mi>i</mi>
<mn>2</mn>
</msub>
</msub>
<mo>+</mo>
<mo>...</mo>
<mo>+</mo>
<msub>
<mi>K</mi>
<msub>
<mi>i</mi>
<mi>n</mi>
</msub>
</msub>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>9</mn>
<mo>)</mo>
</mrow>
</mrow>
根据异或运算的规则,对于任意的1≤i≤7,均有0≤ci≤1,0≤c′i≤n,且c′i与ci的差值为偶数,故当0≤c′i≤1时,则C'=C,因此,
如果P满足公式(9)PK=C'=C+D,其中,D为由非负偶数组成的7维行向量,则P满足公式(6),并得出在NAPT场景下指定id所对应的解;
故,通过求解矩阵方程PK=C'=C+D,获取P;在求解矩阵方程PK=C'=C+D的过程中,将{p1,p2,…,p16}分为两组,任取1≤i≤16中的一个i,其中一组为P0={p(i-1)%16+1,p(i+0)%16+1,…,p(i+5)%16+1},另一组为
P1={p(i+6)%16+1,p(i+7)%16+1,…,p(i+14)%16+1},并记K(i-1)%16+1=(m1,m2,…,m7),k以16为周期,%表示C语言中的取模运算,则
<mrow>
<mtable>
<mtr>
<mtd>
<mrow>
<mi>C</mi>
<mo>+</mo>
<mi>D</mi>
<mo>=</mo>
<mi>P</mi>
<mi>K</mi>
<mo>=</mo>
<munderover>
<mi>&Sigma;</mi>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mn>16</mn>
</munderover>
<msub>
<mi>p</mi>
<mi>j</mi>
</msub>
<msub>
<mi>K</mi>
<mi>j</mi>
</msub>
<mo>=</mo>
<munderover>
<mi>&Sigma;</mi>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>0</mn>
</mrow>
<mn>15</mn>
</munderover>
<msub>
<mi>p</mi>
<mrow>
<mrow>
<mo>(</mo>
<mrow>
<mi>i</mi>
<mo>-</mo>
<mn>1</mn>
<mo>+</mo>
<mi>j</mi>
</mrow>
<mo>)</mo>
</mrow>
<mi>%</mi>
<mn>16</mn>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msub>
<msub>
<mi>K</mi>
<mrow>
<mrow>
<mo>(</mo>
<mrow>
<mi>i</mi>
<mo>-</mo>
<mn>1</mn>
<mo>+</mo>
<mi>j</mi>
</mrow>
<mo>)</mo>
</mrow>
<mi>%</mi>
<mn>16</mn>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mo>=</mo>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<msub>
<mi>P</mi>
<mn>0</mn>
</msub>
</mtd>
<mtd>
<msub>
<mi>P</mi>
<mn>1</mn>
</msub>
</mtd>
</mtr>
</mtable>
</mfenced>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<msub>
<mi>M</mi>
<mn>0</mn>
</msub>
</mtd>
</mtr>
<mtr>
<mtd>
<msub>
<mi>M</mi>
<mn>1</mn>
</msub>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>=</mo>
<msub>
<mi>P</mi>
<mn>0</mn>
</msub>
<msub>
<mi>M</mi>
<mn>0</mn>
</msub>
<mo>+</mo>
<msub>
<mi>P</mi>
<mn>1</mn>
</msub>
<msub>
<mi>M</mi>
<mn>1</mn>
</msub>
</mrow>
</mtd>
</mtr>
</mtable>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>10</mn>
<mo>)</mo>
</mrow>
</mrow>
其中,M0为7×7方阵,M1为9×7矩阵;
同时,根据k以16为周期,故{mj}1≤j≤16决定唯一的key;如果令M0为7*7维反对角矩阵,逆对角线上的元素为1;M1为9*7维反向三对角阵,每条逆对角线上的元素均为0或均为1;
并且根据公式(10),获得
<mrow>
<mtable>
<mtr>
<mtd>
<mrow>
<mi>C</mi>
<mo>+</mo>
<mi>D</mi>
<mo>-</mo>
<msub>
<mi>P</mi>
<mn>1</mn>
</msub>
<mi>M</mi>
<mo>=</mo>
<mi>f</mi>
<mrow>
<mo>(</mo>
<mi>s</mi>
<mn>1</mn>
<mo>,</mo>
<mi>k</mi>
<mo>)</mo>
</mrow>
<mo>^</mo>
<mrow>
<mo>(</mo>
<mi>q</mi>
<mo>*</mo>
<mi>y</mi>
<mo>+</mo>
<mi>i</mi>
<mi>d</mi>
<mo>)</mo>
</mrow>
<mo>+</mo>
<mi>D</mi>
<mo>-</mo>
<msub>
<mi>P</mi>
<mn>1</mn>
</msub>
<msub>
<mi>M</mi>
<mn>1</mn>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mo>=</mo>
<msub>
<mi>P</mi>
<mn>0</mn>
</msub>
<msub>
<mi>M</mi>
<mn>0</mn>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mo>=</mo>
<mo>&lsqb;</mo>
<msub>
<mi>p</mi>
<mrow>
<mrow>
<mo>(</mo>
<mrow>
<mi>i</mi>
<mo>+</mo>
<mn>5</mn>
</mrow>
<mo>)</mo>
</mrow>
<mi>%</mi>
<mn>16</mn>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>,</mo>
<msub>
<mi>p</mi>
<mrow>
<mo>(</mo>
<mi>i</mi>
<mo>+</mo>
<mn>4</mn>
<mo>)</mo>
<mi>%</mi>
<mn>16</mn>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>,</mo>
<mo>...</mo>
<mo>,</mo>
<msub>
<mi>p</mi>
<mrow>
<mo>(</mo>
<mi>i</mi>
<mo>-</mo>
<mn>1</mn>
<mo>)</mo>
<mi>%</mi>
<mn>16</mn>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>&rsqb;</mo>
</mrow>
</mtd>
</mtr>
</mtable>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>11</mn>
<mo>)</mo>
</mrow>
</mrow>
根据公式(11),对于任意给定的P1={p(i+6)%16+1,p(i+7)%16+1,…,p(i+14)%16+1},M1和y,选取D,使得f(s1,k)^(q*y+id)+D-P1M1成为一个元素非0即1的7维向量,故获得[p(i+5)%16+1,p(i+4)%16+1,…,p(i-1)%16+1],因此,可以确定唯一地的P0;根据M0的逆矩阵仍为M0,则
P0=(f(s1,k)^(q*y+id)+D-P1M1)M0 (12)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410741100.XA CN104468412B (zh) | 2014-12-04 | 2014-12-04 | 基于rss的网络会话数据包分发方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410741100.XA CN104468412B (zh) | 2014-12-04 | 2014-12-04 | 基于rss的网络会话数据包分发方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104468412A CN104468412A (zh) | 2015-03-25 |
CN104468412B true CN104468412B (zh) | 2017-10-31 |
Family
ID=52913807
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410741100.XA Active CN104468412B (zh) | 2014-12-04 | 2014-12-04 | 基于rss的网络会话数据包分发方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104468412B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105119960B (zh) * | 2015-07-13 | 2018-11-06 | 东软集团股份有限公司 | 一种网络数据分发方法及网络设备 |
CN106407055B (zh) * | 2016-09-13 | 2019-09-24 | 郑州云海信息技术有限公司 | 一种RSS Key值离散性评价方法及系统 |
CN106375237B (zh) * | 2016-09-28 | 2019-11-01 | 郑州云海信息技术有限公司 | 一种基于Intel 82599万兆网卡的Hash函数Key值筛选方法 |
CN106789666B (zh) * | 2016-11-22 | 2020-05-08 | 东软集团股份有限公司 | 一种确定转换后端口的方法和装置 |
CN107196870B (zh) * | 2017-07-20 | 2021-07-20 | 哈尔滨工业大学 | 一种基于dpdk的流量动态负载均衡方法 |
CN107749828A (zh) * | 2017-10-09 | 2018-03-02 | 厦门市美亚柏科信息股份有限公司 | Ip数据包分发采集方法、装置、终端设备及存储介质 |
CN111031065B (zh) * | 2019-12-25 | 2022-02-11 | 东软集团股份有限公司 | 一种文件传输方法、系统、客户端及防火墙 |
CN113014689B (zh) * | 2021-03-01 | 2023-03-31 | 杭州迪普科技股份有限公司 | 一种网络地址转换的方法和装置 |
CN116248590B (zh) * | 2022-12-16 | 2024-05-10 | 中国联合网络通信集团有限公司 | 数据转发方法、装置、设备及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103475586A (zh) * | 2013-08-22 | 2013-12-25 | 东软集团股份有限公司 | 网络数据报文的转发方法、装置及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050228851A1 (en) * | 2004-03-29 | 2005-10-13 | Intel Corporation | Configuration of redirection tables |
-
2014
- 2014-12-04 CN CN201410741100.XA patent/CN104468412B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103475586A (zh) * | 2013-08-22 | 2013-12-25 | 东软集团股份有限公司 | 网络数据报文的转发方法、装置及系统 |
Non-Patent Citations (2)
Title |
---|
Openflow in the small:a flexible and efficient network acceleration framework for multi-core systems;Raffaele Bolla等;《IEEE Transactions on Network and Service Management》;20140930;全文 * |
高性能数据包捕获系统的研究与实现;刘宝辰;《中国优秀硕士学位论文全文数据库》;20140415;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN104468412A (zh) | 2015-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104468412B (zh) | 基于rss的网络会话数据包分发方法及系统 | |
Salmon et al. | Parallel random numbers: as easy as 1, 2, 3 | |
Patarasuk et al. | Bandwidth optimal all-reduce algorithms for clusters of workstations | |
US8527739B2 (en) | Iterative process partner pairing scheme for global reduce operation | |
Mei et al. | CUDA-based AES parallelization with fine-tuned GPU memory utilization | |
Jung et al. | Accelerating fully homomorphic encryption through architecture-centric analysis and optimization | |
CN104536937B (zh) | 基于cpu‑gpu异构集群的大数据一体机实现方法 | |
Henecka et al. | Faster secure two-party computation with less memory | |
Dai et al. | NTRU modular lattice signature scheme on CUDA GPUs | |
CN104580017B (zh) | 基于rss的网络会话分发方法及系统 | |
US20200311264A1 (en) | Systems and Methods for Compiler Guided Secure Resource Sharing | |
Lee et al. | Accelerated network coding with dynamic stream decomposition on graphics processing unit | |
Haghi et al. | Reconfigurable switches for high performance and flexible MPI collectives | |
Vasiliadis et al. | Design and implementation of a stateful network packet processing framework for GPUs | |
CN112328401B (zh) | 一种基于OpenCL和FPGA的3DES加速方法 | |
Liu et al. | Enabling PIM-based AES encryption for online video streaming | |
AbuRass et al. | Performance Evaluation of AES algorithm on Supercomputer IMAN1 | |
Park et al. | Pipsea: A practical ipsec gateway on embedded apus | |
Kim et al. | Benefits of using parallelized non-progressive network coding | |
Bai et al. | Analysis and acceleration of NTRU lattice-based cryptographic system | |
Pu et al. | EAGL: An elliptic curve arithmetic GPU-based library for bilinear pairing | |
Tran et al. | High throughput parallelization of AES-CTR algorithm | |
Choi et al. | Massive parallelization for random linear network coding | |
Doumi et al. | Performance evaluation of parallel international data encryption algorithm on iman1 super computer | |
Bilardi et al. | Network-oblivious algorithms |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |