基于多核处理器的多域网包分类方法

文档序号:7698482阅读:143来源:国知局
专利名称:基于多核处理器的多域网包分类方法
技术领域
本发明涉及网络过滤和监控技术领域,具体涉及基于多核处理器的多域网包分类方法。
背景技术
网包分类是防火墙和安全网关系统性能的关键组成部分和核心
技术所在。网包分类通过检查和处理OSI ( Open SystemInterconnection )网络协议的第2层~第4层网包头来对网包进行过滤。最常见的应用是五元组的过滤即源/目的网络层地址(各32位),源/目的传输层端口 (各16位)和传输层协议标志(8位)。
目前千兆级以上的高端防火墙和安全网关设备大多釆用ASIC/FPGA等专用硬件方案来解决网包分类的性能瓶颈。但基于专用硬件芯片的设备开发周期长,体积功耗大,更新难度髙,限制了高性能网包分类设备的广泛使用。为此, 一系列基于通用处理器(CPU)的网包分类方法得到了广泛的研究和发展。美国斯坦福大学,加州大学圣地亚哥分校,华盛顿圣路易斯分校,以及思科,IBM等公司都在这方面进行了许多研究和实验,提出了一系列解决网包分类问题的方案。其中基于通用处理器的方法主要包括两类利用决策树结构进行分类的方法,如HiCutsP. Gupta and N. McKeown, "Packetclassification using hierarchical intelligent cuttings," Proc. HotInterconnects, 1999,和利用多级表结构进行分类的方法,如RFCRGupta and N. McKeown, "Packet classification on multiple fields," Proc.ACM SIGCOMM 99, 1999。这两类方法从不同角度利用分类规则集合的结构特性,通过多种启发式算法来消除搜索空间的冗余,提高网包分类速度。如图1所示现有决策树结构进行网包分类的流程图,该方法包括
以下步骤管理单元执行预处理步骤,即根据分类规则集合的结构
特性构建分类数据结构(或称决策树)的过程,并将构建的分类数据
结构输出到分类单元;分类单元接收输入的网包,获取网包中的五元组信息,依据类数据结构进行分类,定位该网包所匹配的节点得到分类结果;由转发单元根据网包的分类结果对进行相关处理,实现网包的存储、转发或丢弃、记录等。
但是现有技术中的分类数据结构比较冗余,体系结构不能有效利用,原因是现有方法的设计是从规则结构出发,而没有考虑到内存结构和处理器架构。

发明内容
本发明的目的是提供基于多核处理器的多域网包分类方法,可以
在多种平台上实现,可以保证良好的性能和对不同网络应用的适应
性,大幅降低高端策略路由及防火墙产品的生产成本。为实现上述目的,本发明釆用如下技术方案。一种基于多核处理器的多域网包分类方法,包括以下步骤s101,获取设定的规则全集RO,每条规则包括优先级、作为过滤
规则的域的取值范围和分类结果;
s102,将多域网包包头中作为过滤规则的域的所有可能取值空间
作为初始搜索空间SO,域对应初始搜索空间的维度;
s103,生成与所述RO、 SO对应的根节点VO,并生成一组处理元,
将所述RO、 SO和VO分别赋值给该组处理元中的R,、 S'和V';s104,将该组处理元送入队列Q,队列Q为先进先出队列;s105,从队列Q中取出一组处理元,得到取出处理元的R'、 S,、
V,,分别记为R、 S、 V;
s106,判断R中所有规则是否都包含S,若是,执行步骤sl16,若
否,执行步骤sl07;
10s107,选择端点值最多的域对应的维度作为S的划分维度F;
s108,将R中所有规则在划分维度F上的不同端点值进行升序排 序,设总共M个端点值;
s109,选择在划分维度F上排序后的第/7Vr(M/2)个端点值为划分 点P,其中,wr表示取整运算;
sllO,将S在划分维度F上以划分点P进行空间划分,得到子空间 S1和子空间S2;
slll,将R中所有与子空间Sl有重叠的规则记为Rl,将R中所有 与子空间S2有重叠的规则记为R2;
s112,生成与R1、 S1对应的子节点V1,及与R2、 S2对应的子节 点V2,并使得V1和V2的存储地址空间连续;
s113,将V设置为内部节点,并将V赋值为如下数据结构
V.field=F, V.point=P, V.offset=Vl的起始地址;
s114,生成一组处理元,将所述R1、 S1和V1分别赋值给该组处 理元中的R,、 S,和V,,将该组处理元送入队列Q;
s115,生成一组处理元,将所述R2、 S2和V2分别赋值给该组处 理元中的R,、 S,和V,,将该组处理元送入队列Q,返回执行步骤sl05;
s116,获取R中优先级最高的规则r,将V设置为叶节点,并将V 赋值为如下数据结构
V.field=r.action, V.point-r.pri, V.offset=0;
其中,r.action为规则r中的分类结果,r.pri为规则r中的优先级;
s117,判断当前队列Q是否为空,若是,执行步骤sl18,若否, 返回执行步骤sl05;
s118,返回根节点VO,将其作为决策树数据结构索引的起点;
s119,接收网包,并根据网包中作为过滤规则的域的值从根节点 VO开始,根据决策树的数据结构定位网包所匹配的叶节点,根据叶 节点中V.fidd的值对网包进行分类。优选地,步骤S119中分类包括以下子步骤
sll9a,将当前节点初始化为根节点V0;
sll9b,判断当前节点中的V.offset是否为0,若是,则执行步骤 sll9f,否则执行步骤sll9c;
sll9c,获取网包中与当前节点中的V.fidd对应域的值,若该值 小于等于当前节点中的v.point,则执行步骤sll9d,否则执行步骤 sll9e;
sll9d,将当前节点所划分对应得到的子节点VI更新为当前节 点,返回执行步骤sll9b;
sll9e,将当前节点所划分对应得到的子节点V2更新为当前节 点,返回执行步骤sll9b;
sll9f,根据当前节点中的V.field中的值确定分类结果,根据当 前节点中的V.point的值确定分类的优先级,执行步骤sll9g;
sll9g,根据所述分类结果进行网包的存储、转发或丢弃。
优选地,在步骤sll9d中根据更新前当前节点中的V.offset定位 到子节点Vl, VI的存储地址为&(V)+V.offset, &00表示取更新前 当前节点的地址;
在步骤sll9e中根据更新前当前节点中的V.offset定位到子节点 V2, V2的存储地址为&(V)+V.offset+sizeof (V), &00表示取更新 前当前节点的.地址,sizeof (V)表示一个节点所占的地址范围。
本发明还提供了另一种基于多核处理器的多域网包分类方法,包 括以下步骤
s201,获取设定的规则全集RO,每条规则包括优先级、作为过滤 规则的域的取值范围和分类结果;
s202,将多域网包包头中作为过滤规则的域的所有可能取值空间 作为初始搜索空间S 0,域对应初始搜索空间的维度;
s203,生成与所述RO、 SO对应的根节点VO,并生成一组处理元,将所述R0、 SO和VO分别赋值给该组处理元中的R'、 S,和V,;
s204,将该组处理元送入队列Q,队列Q为先进先出队列;
s205,从队列Q中取出一组处理元,得到取出处理元的R'、 S'、 V,,分别记为R、 S、 V;
s206,判断R中所有规则是否都包含S,若是,执行步骤s216,若 否,执行步骤s207;
s207,选择端点值最多的域对应的维度作为S的划分维度F;
s208,将R中所有规则在划分维度F上的不同端点值进行升序排 序,设总共M个端点值;
s209,从M个端点值中选择P为划分点,使得以P为划分点在划分 维度F上对S进行空间划分时,落入划分后其中 一个子空间的规则数最 接近R中所有规则数的一半;
s210,将S在划分维度F上以划分点P进行空间划分,得到子空间 S1和子空间S2;
s211,将R中所有与子空间S1有重叠的规则记为R1,将R中所有 与子空间S2有重叠的规则记为R2;
s212,生成与R1、 S1对应的子节点V1,及与R2、 S2对应的子节 点V2,并使得V1和V2的存储地址空间连续;
s213,将V设置为内部节点,并将V赋值为如下数据结构
V.field=F, V.point=P, V.offset=Vl的起始地址;
s214,生成一组处理元,将所述R1、 S1和V1分别赋值给该组处 理元中的R,、 S,和V,,将该组处理元送入队列Q;
s215,生成一组处理元,将所述R2、 S2和V2分别赋值给该组处 理元中的R,、 S,和V,,将该组处理元送入队列Q,返回执行步骤s205;
s216,获取R中优先级最高的规则r,将V设置为叶节点,并将V 赋值为如下数据结构
V.field=r.action, V.point=r,pri , V.offset=0;其中,r.action为规则r中的分类结果,r.pri为规则r中的优先级; s217,判断当前队列Q是否为空,若是,执行步骤s218,若否,
返回执行步骤s205;
s218,返回根节点VO,将其作为决策树数据结构索引的起点; s219,接收网包,并根据网包中作为过滤规则的域的值从根节点
VO开始,根据决策树的数据结构定位网包所匹配的叶节点,根据叶
节点中V.field的值对网包进行分类。
优选地,步骤s219中分类包括以下子步骤 s219a,将当前节点初始化为根节点VO;
s219b,判断当前节点中的V.offset是否为0,若是,则执行步骤 s219f,否则执行步骤s219c;
s219c,获取网包中与当前节点中的V.field对应域的值,若该值 小于等于当前节点中的V.point,则执行步骤s219d,否则执行步骤 s219e;
s219d,将当前节点所划分对应得到的子节点VI更新为当前节 点,返回执行步骤s219b;
s219e,将当前节点所划分对应得到的子节点V2更新为当前节 点,返回执行步骤s219b;
s219f,根据当前节点中的V.field中的值确定分类结果,根据当 前节点中的V.point的值确定分类的优先级,执行步骤s219g;
s219g,根据所述分类结果进行网包的存储、转发或丢弃。
优选地,在步骤s219d中根据更新前当前节点中的V.offset定位 到子节点V1, VI的存储地址为&(V)+V.offset, &00表示取更新前 当前节点的地址;
在步骤s219e中根据更新前当前节点中的V.offset定位到子节点 V2, V2的存储地址为&(V)+V.offset+sizeof (V), &00表示取更新 前当前节点的地址,sizeof (V)表示一个节点所占的地址范围。本发明还提供了再一种基于多核处理器的多域网包分类方法,包 括以下步骤 '
s301,获取设定的规则全集RO,每条规则包括优先级、作为过滤 规则的域的取值范围和分类结果;
s302,将多域网包包头中作为过滤规则的域的所有可能取值空间 作为初始搜索空间SO,域对应初始搜索空间的维度;
s303,生成与所述R0、 S0对应的根节点V0,并生成一组处理元, 将所述R0、 S0和V0分别赋值给该组处理元中的R,、 S,和V,;
s304,将该组处理元送入队列Q,队列Q为先进先出队列;
s305,从队列Q中取出一组处理元,得到取出处理元的R'、 S,、 V,,分别记为R、 S、 V;
s306,判断R中所有规则是否都包含S,若是,执行步骤s316,若 否,执行步骤s307;
s307, R中每个域上的相邻两个端点值构成一个区间,对于每一 个域统计R中规则落入该域上每个区间的规则的个数,将所得个数相 加后除以该域上的区间总数得到每个域的区间平均规则数;
s308,选择区间平均规则数最小的域对应的维度作为S的划分维
度F;
s309,选择F对应域上的一个端点值作为划分点P,使得R中落入 F对应域上第一个端点值到P间每相邻两端点值区间内的规则数之和, 是大于落入F对应域上所有每相邻两端点值区间内的规则数之和一半 的最小值;
s310,将S在划分维度F上以划分点P进行空间划分,得到子空间 S1和子空间S2;
s311,将R中所有与子空间Sl有重叠的规则记为Rl,将R中所有 与子空间S2有重叠的规则记为R2;
s312,生成与R1、 S1对应的子节点V1,及与R2、 S2对应的子节
15点V2,并使得V1和V2的存储地址空间连续;
s313,将V设置为内部节点,并将V赋值为如下数据结构
V.field=F, V.point=P, V.offset=Vl的起始地址;
s314,生成一组处理元,将所述R1、 S1和V1分别赋值给该组处 理元中的R,、 S,和V,,将该组处理元送入队列Q;
s315,生成一组处理元,将所述R2、 S2和V2分别赋值给该组处 理元中的R'、 S'和V',将该组处理元送入队列Q,返回执行步骤s305;
s316,获取R中优先级最高的规则r,将V设置为叶节点,并将V 赋值为如下数据结构
V.field=r.action, V.point=r.pri, V.offset二0;
其中,r.action为规则r中的分类结果,r.pri为规则r中的优先级;
s317,判断当前队列Q是否为空,若是,执行步骤s318,若否, 返回执行步骤s305;
s318,返回根节点VO,将其作为决策树数据结构索引的起点;
s319,接收网包,并根据网包中作为过滤规则的域的值从根节点 V0开始,根据决策树的数据结构定位网包所匹配的叶节点,根据叶 节点中V.fidd的值对网包进行分类。
优选地,步骤s319中分类包括以下子步骤
s319a,将当前节点初始化为根节点V0;
s319b,判断当前节点中的V.offset是否为0,若是,则执行步骤 s319f,否则执行步骤s319c;
s319c,获取网包中与当前节点中的V.field对应域的值,若该值 小于等于当前节点中的V.point,则执行步骤s319d,否则执行步骤 s319e;
s319d,将当前节点所划分对应得到的子节点VI更新为当前节 点,返回执行步骤s319b;
s319e,将当前节点所划分对应得到的子节点V2更新为当前节
16点,返回执行步骤s319b;
s319f,根据当前节点中的V.field中的值确定分类结果,根据当 前节点中的V.point的值确定分类的优先级,执行步骤s319g;
s319g,根据所述分类结果进行网包的存储、转发或丢弃。
优选地,在步骤s319d中根据更新前当前节点中的V.offset定位 到子节点Vl, VI的存储地址为&(V)+V.offset, &(¥)表示取更新前 当前节点的地址;
在步骤s319e中根据更新前当前节点中的V.offset定位到子节点 V2, V2的存储地址为&(V)+V.offset+sizeof (V), (&(V)表示取更新 前当前节点的地址,sizeof (V)表示一个节点所占的地址范围。
利用本发明提供的基于多核处理器的多域网包分类方法,具有以 下有益效果
1) 可以在多种平台上实现,包括基于微处理器CPU的通用平台 以及基于网络处理器NPU的专用平台,发展了高性能网包分类设备的 广泛使用;
2) 所釆用的划分维度和划分点的方法,可以保证良好的性能和 对不同网络应用的适应性;
3) 大幅降低高端策略路由及防火墙产品的生产成本,从而推动 和加速下一代互联网的实施和运行。


图l现有决策树结构进行网包分类的流程图; 图2为本发明基于多核处理器的多域网包分类方法流程图; 图3为本发明实施例中基于决策树结构进行网包分类的流程图; 图4为本发明提供的另一种基于多核处理器的多域网包分类方法
、、右站H] 〃IL 'l工UiJ ,
图5为本发明提供的再一种基于多核处理器的多域网包分类方法 流程图。
具体实施例方式
本发明提出的基于多核处理器的多域网包分类方法,结合附图和 实施例说明如下。
本发明提出的方法适用于任何维度的多域网包分类问题,为方便
说明,将网包中最常用的五元组(即源/目的网络层地址(各32位), 源/目的传输层端口 (各16位)和传输层协议标志(8位))作为过滤 规则的域,本发明的网包分类方法所遵循的基准为通过不断划分搜 索空间,减少每个子空间中的规则个'数,直到每个子空间有唯一的匹 配规则,搜索空间划分时涉及到具体选择哪个维度划分及具体在所选 择的维度上的哪一点划分的问题,本发明的方法中选择维度的方法 为选择一个特定的维度,使得在该维度上选择某划分点进行空间划 分后,落入到两个子空间的两个规则子集的规则数之和尽可能少(即 尽可能避免同一规则落入两个子空间中);本发明中在所选择的维度 上确定划分点的方法为选择所选择维度上的划分点,使得依据该点 划分后落入到该两个子空间包含的规则个数尽可能相等。
本发明与现有技术相比的创新点在于分类所用的决策树的数据 结构的构建方法,决策树构建过程所涉及搜索空间划分的方法,具体 为划分点和划分维度的选择方法,本发明中划分点及划分维度的划分 只跟子空间和落入到子空间的规则子集相关,并且根据不同的情况选 择采用三种划分点选择方法和与之相关联的两种维度选择方法。 实施例l
如图2为本实施例基于多核处理器的多域网包分类方法流程图, 该方法包括步骤
s101,获取设定的规则全集,每条规则包括优先级、作为过滤规 则的域的取值范围和分类结果;
对于五元组分类,每个规则表示如下
RULE{
uintl6—t pri; 〃规则优先级,O为最高,
18uint32—t sIP[2]; 〃源IP地址范围
uint32—t dlP[2]; 〃目标IP地址范围
uintl6_t sPT[2];〃源端口地址范围
uintl6—t dPT[2];〃目标端口地址范围
uint8—t prot;〃传输层协议,如TCP或UDP等
uint8_t action; 〃网包分类结果,如通过,丢弃,记录。
};
定义规则全集为RO,用rO,rl,...表示其中的规则,且ri表示优先 级为i的规则(pri=i)。
s102,将多域网包包头中作为过滤规则的域的所有可能取值空间 作为初始搜索空间S0,域对应初始搜索空间的维度;
对于五元组分类,初始搜索空间为S0={




};
s103,生成与所述R0、 SO对应的根节点VO,并生成一组处理元,
将R0、 SO和VO分别赋值给该组处理元中的R'、 S,和V,;
本发明引入节点的概念的目的,是通过定义节点的数据结构,并 对其不断分类,构成决策树的数据结构。
s104,将所生成的该组处理元送入队列Q,队列Q为先进先出队 列,既入队操作将入队对象放在队列尾端,出对操作为从队列头部取 出对象。
s105,从队列Q中取出一组处理元,即取出位于头部的处理元, 得到取出处理元的R'、 S,、 V,,为区分是取出的处理元,这里将取出 处理元的R,、 S,、 V,分别记为R、 S、 V;
s106,判断R中所有规则是否都包含S,若是,说明该节点V不需 要再进行划分,执行步骤sl16,若否,说明该节点需要进一步划分, 执行步骤sl07;
这里及本发明全文所提及的规则包含空间中的"包含"具体解释如下
单一维度范围的包含关系两个范围[al,a2],[bl,b2],若al<=bl 且a2〉-b2,则[al,a2]包含[bl,b2];
多域维度范围的包含关系多维对象A中各个维度上的范围都包 含多维对象B中相对维度上的范围,本实施例中的规则和搜索空间都 属于多维对象。
s107,选择端点值最多的域对应的维度作为S的划分维度F
本实施例中首先定义R中所有规则在每一个相同域f (对5元组来 说,0<=f<5)上的端点值(每一个范围的起始点和终结点的值)构成 的集合为M,, 1<M,<2(N+1), N为R中所有规则的个数,将每个域上 的M'个端点值按照从小到大的顺序排列并存储在数组Pt[i]中,其中 0<i<M,+l,因此,该步骤是选择存储最多端点值的数组的域对应的 维度作为S的划分维度。
s108,将R中所有规则在划分维度F上的不同端点值进行升序排 序,设总共M个端点值;
s109,选择在划分维度F上排序后的第/AT(M/2)个端点值为划分 点P,其中,wr表示取整运算,即选择划分维度F对应域上存储在 Pt[ wr(M/2)]中的端点值作为划分点;
s110,将S在划分维度F上以划分点P进行空间划分,得到子空间 S1和子空间S2;
空间划分定义为在指定的 一个维度上对当前搜索空间的 一个划 分。例如对初始搜索空间,如果在第1个域上以划分点P进行二分,则 得到两个搜索子空间81,={
,


,


,
,
}。
slll,将R中所有与子空间Sl有重叠的规则记为Rl,将R中所有 与子空间S2有重叠的规则记为R2;
本实施例及全文所说的规则与空间有重叠的定义如下单一维度范围的重叠关系两个范围[al,a2],[bl,b2],若al<=b2 Ia2>=bl,则[al,a2]与[bl,b2]重叠;
多域维度范围的重叠关系多维对象A中任何一个维度上的范围 与多维对象B中相对维度上的范围重叠,本实施例中的规则和空间都 属于多维对象,因此规则与空间有重叠即指满足上述多域维度范围的 重叠关系。
s112,生成与R1、 S1对应的子节点V1,及与R2、 S2对应的子节 点V2, V1和V2的地址空间连续,由于V1和V2的地址空间连续,拥有 V1的地址即可找到V2;
s113,将V设置为内部节点,并将V赋值为如下数据结构
V.field=F, V.point=P, V.offset二Vl的起始地址
这里的地址是指内存地址值。
这样,取出处理元中的节点V数据结构已构建好,且进行了二分 生成两个新的子节点V1和V2;
s114,生成一组处理元,将所述R1、 S1和V1分别赋值给该组处 理元中的R,、 S'和V,,将该组处理元送入先进先出队列Q;
s115,生成一组处理元,将所述R2、 S2和V2分别赋值给该组处 理元中的R,、 S,和V,,将该组处理元送入先进先出队列Q,返回执行 步骤sl05;
s116,获取R中优先级最高的规则r,将V设置为叶节点,并将V 赋值为如下数据结构
V.field=r.action, V.point=r.pri, V.offset=0;
其中,r.action为规则r中的分类结果,r.pri为规则r中的优先级。
这样,完成取出处理元中V的数据结构。
s117,判断当前队列Q是否为空,若是,执行步骤sl18,若否, 返回执行步骤sl05;
只有队列Q为空,才表面所有搜索空间都已划分完毕,决策树构建过程才结東。
Sl18,返回根节点V0,将其作为决策树数据结构索引的起点; 根节点为决策树数据结构索引的起始点节点,通过根节点就能完
成决策树的遍历,因此,返回根节点就相当于返回了整个决策树的分
类数据结构。
s119,接收网包,并根据网包中作为过滤规则的域的值从根节点 vo开始,根据决策树的数据结构定位网包所匹配的叶节点,根据叶 节点中V.field的值对网包进行分类。
上述步骤sl01 ~步骤sll7为决策树分类数据结构的构建过程,经 上述步骤,可以对初始搜索空间不断划分,若将初始搜索空间对应作 为根节点V0,按上述过程可不断划分出子节点,得到决策树。本实 施例中的决策树为二叉树结构,每个节点对应一个搜索子空间(其中 根节点对应初始搜索空间),每个内部节点拥有两个子节点,且两个 子节点对应的搜索空间为以内部节点的划分点划分出来的两个子空 间。节点采用的数据结构如下
节点数据结构
TREENODE{
Uint8—t field:8; 〃内部节点进行空间划分的域
〃叶节点所匹配规则的分类结果(action) uint32—t offset :24; 〃内部节点下级节点地址偏移量。
〃叶节点0 uint32_t point; 〃内部节点划分点
//叶节点规则优先级
};
上述构建过程,每次取出一个处理元,对处理元中的节点v的数
据结构完成V.field、 V.point=r.pri、 V.offset的赋值,当对列Q为空时, 即构建好了决策树中所有节点的V.field、 V.point=r.pri、 V.offset值。下面给出基于上述决策树的数据结构构建过程,在步骤sll9中对接收网 包进行分类的具体过程。
对于五元组网包,可以获得作为如下五元组信息
32位源IP地址sIP;
32位目标IP地址dIP;
16位源端口 sPT;
16位目标端口 dPT;
8位传输层协议prot。
本实施例中在步骤s119的具体子步骤包括-.
sll9a,将当前节点初始化为根节点V0;
sll9b,判断当前节点中的V.offset是否为0,若是,说明当前节 点是叶节点,执行步骤sll9f,若否,说明当前节点为内部节点,执 行步骤sll9c;
sll9c,提取网包中五元组与当前节点中的V. field (即划分维度 F )对应域的值,若该值小于等于当前节点中的V. point(即划分点P ), 则执行步骤sll9d,否则,执行步骤sll9e;
sll9d,将当前节点所划分对应得到的子节点VI更新为当前节 点,返回执行步骤sl99b,其中VI的存储地址为&(V)+V.offset。 其中&(V)表示取更新前当前子节点的地址,V.offset为更新前当前子 节点中的下级节点地址偏移量V.offset;
sll9e,将当前节点所划分对应得到的子节点V2更新为当前节 点,返回执行步骤sl99b ,其中V2的存储地址为 &(V)+V.offset+sizeof(V), (&(V)表示取更新前当前子节点的地址, V.offset为更新前当前子节点中的下级节点地址偏移量V.offset, sizeof(V)表示一个节点所占的地址长度;
sll9f,根据当前节点中的V.fidd中的值确定分类结果,根据当 前节点中的V.point的值确定分类的优先级,执行步骤s 119g;
23Sll9g,根据所述分类结果进行网包的存储、转发或丢弃。
实施例2
本实施例中网包分类方法的各步骤中除了与实施例1中在步骤sl09中选择S在划分维度F上的划分点P所釆用的方法不同,其余各步
7Tff2 1A- Lwt d
银^7日l口J 。
本实施例中选择S在划分维度F上的划分点P方法为从M个端点值中选择P为划分点,使得以P为划分点在划分维度F上对S进行空间划分时,落入划分后其中 一个子空间的规则数最接近R中所有规则数的一半。即选择R中F对应域上的某个端点值Pt[m]为划分点,使以该划分点Pt[m]在划分维度F上划分时,尽量使得R中落入[Pt[l], Pt[m]]限定的子空间中的规则数为R所有规则数的 一半INT(间/2), IRI代表R中的所有规则数,INT表示取整运算。
本实施例及全文所说的规则落入空间是指规则与空间有重叠,关于规则与空间有重叠的定义同上
单一维度范围的重叠关系两个范围[al,a2],[bl,b2],若al<=b2且a2〉bl,则[al,a2]与[bl,b2]重叠;
多域维度范围的重叠关系多维对象A中任何 一个维度上的范围与多维对象B中相对维度上的范围重叠,本实施例中的规则和空间都属于多维对象,因此规则落入空间即指满足上述多域维度范围的重叠关系。
实施例3
本实施例中网包分类方法的各步骤中除了与实施例1 、实施例2中在步骤sl07 sl09中,选择S的划分维度F及选择S在划分维度F上的划分点P所釆用的方法不同,其余各步骤均相同。
如前所述,取出处理元的R中所有规则在每一个相同域f (对5元组来说,0<=f<5)上的不同端点值(每一个范围的起始点和终结点的值)构成的集合为M', 2<=M'<=2(N-1), N为R中的规则个数,将
24每个域上的M,个端点值按照从小到大的顺序排列并存储在数组Pt[i]中,其中(K—〈M,。每一个域都会得到一个上述数组Pt[i],对于每一个域所对应的数组Pt[i],两个相邻的端点值构成一个区间,M'个端点
值构成M,-1个区间,这M,-l个区间用数组Sg[j]标识,其中0〈,〈M,-1。R中规则落入每个区间中的规则数记为Sr[k],其中0〈二k〈M,-l;这里所说的规则落入每个区间具体是指,规则落入将S对应域上取值限定到相邻端点值区间后构成的子空间。
本实施例中对内部节点在选择划分维度的方法为对于每一个域,统计R中规则落入该域上每个区间的规则的个数,将所得个数相加后除以该域上的区间总数M, -1得到每个域的区间平均规则数T,表示如下
选择划分维度F,使得这个域上的T为最小,即选择区间平均规则
数最小的域对应的维度作为S的划分维度F。
本实施例中选择在划分维度F上的划分点P的方法具体为即选择F对应域上的一个端点值Pt[m]为划分点,使得m为满足下
式的最小值
即选取端点P为满足R中落入F对应域上第一个端点值到P间每相邻两端点值区间内的规则数之和大于落入F对应域上所有每相邻两端点值区间内的规则数之和 一 半的约束条件的值最小的端点。
目前千兆级以上的高端策略路由器设备均釆用ASIC/FPGA等专用芯片解决方案。由于基于专用芯片的设备开发周期长,体积功耗大,更新难度高,所以此类产品的效费比很低,限制了高性能网包分类设备的广泛使用。而本专利提出的多域网包分类方法既可以在多种平台上实现,包括基于微处理器CPU的通用平台以及基于网络处理器NPU的专用平台,有可以保证良好的性能和对不同网络应用的适应性,因此整套软硬件系统可以作为多域网包分类方法的核心模块提供给厂商以提高基于通用处理器平台的网包分类设备的性能,大幅降低高端策略路由及防火墙产品的生产成本,从而推动和加速下一代互联网的实施和运行。
以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
权利要求
1、基于多核处理器的多域网包分类方法,包括以下步骤s101,获取设定的规则全集R0,每条规则包括优先级、作为过滤规则的域的取值范围和分类结果;s102,将多域网包包头中作为过滤规则的域的所有可能取值空间作为初始搜索空间S0,域对应初始搜索空间的维度;s103,生成与所述R0、S0对应的根节点V0,并生成一组处理元,将所述R0、S0和V0分别赋值给该组处理元中的R’、S’和V’;s104,将该组处理元送入队列Q,队列Q为先进先出队列;s105,从队列Q中取出一组处理元,得到取出处理元的R’、S’、V’,分别记为R、S、V;s106,判断R中所有规则是否都包含S,若是,执行步骤s116,若否,执行步骤s107;s107,选择端点值最多的域对应的维度作为S的划分维度F;s108,将R中所有规则在划分维度F上的不同端点值进行升序排序,设总共M个端点值;s109,选择在划分维度F上排序后的第INT(M/2)个端点值为划分点P,其中,INT表示取整运算;s110,将S在划分维度F上以划分点P进行空间划分,得到子空间S1和子空间S2;s111,将R中所有与子空间S1有重叠的规则记为R1,将R中所有与子空间S2有重叠的规则记为R2;s112,生成与R1、S1对应的子节点V1,及与R2、S2对应的子节点V2,并使得V1和V2的存储地址空间连续;s113,将V设置为内部节点,并将V赋值为如下数据结构
2、如权利要求l所述的方法,其特征在于,步骤sll9中分类包 括以下子步骤sll9a,将当前节点初始化为根节点V0;sll9b,判断当前节点中的V.offset是否为0,若是,则执行步骤 sll9f,否则执行步骤sll9c;sll9c,获取网包中与当前节点中的V.field对应域的值,若该值 小于等于当前节点中的V.point,则执行步骤sll9d,否则执行步骤 sll9e;sll9d,将当前节点所划分对应得到的子节点VI更新为当前节 点,返回执行步骤sll9b;sll9e,将当前节点所划分对应得到的子节点V2更新为当前节 点,返回执行步骤sll9b;sll9f,根据当前节点中的V.field中的值确定分类结果,根据当 前节点中的V.point的值确定分类的优先级,执行步骤s 119g;Sll9g,根据所述分类结果进行网包的存储、转发或丢弃。
3、 如权利要求2所述的方法,其特征在于,在步骤sll9d中根据更新前当前节点中的V.offset定位到子节点 VI, Vl的存储地址为&(V)+V.offset, i&(V)表示取更新前当前节点 的地址;在步骤sll9e中根据更新前当前节点中的V.offset定位到子节点 V2, V2的存储地址为&(V)+V.offset+sizeof (V), &(>0表示取更新 前当前节点的地址,sizeof (V)表示一个节点所占的地址范围。
4、 基于多核处理器的多域网包分类方法,包括以下步骤 s201,获取设定的规则全集RO,每条规则包括优先级、作为过滤规则的域的取值范围和分类结果;s202,将多域网包包头中作为过滤规则的域的所有可能取值空间 作为初始搜索空间SO,域对应初始搜索空间的维度;s203,生成与所述RO、 SO对应的根节点VO,并生成一组处理元, 将所述RO、 SO和VO分别赋值给该组处理元中的R'、 S,和V,;s204,将该组处理元送入队列Q,队列Q为先进先出队列;s205,从队列Q中取出一组处理元,得到取出处理元的R,、 S,、 V,,分别记为R、 S、 V;s206,判断R中所有规则是否都包含S,若是,执行步骤s216,若 否,执行步骤s207;s207,选择端点值最多的域对应的维度作为S的划分维度F;s208,将R中所有规则在划分维度F上的不同端点值进行升序排 序,设总共M个端点值;s209,从M个端点值中选择P为划分点,使得以P为划分点在划分 维度F上对S进行空间划分时,落入划分后其中 一个子空间的规则数最 接近R中所有规则数的一半;s210,将S在划分维度F上以划分点P进行空间划分,得到子空间S1和子空间S2;s211,将R中所有与子空间Sl有重叠的规则记为Rl,将R中所有 与子空间S2有重叠的规则记为R2;s212,生成与R1、 Sl对应的子节点Vl,及与R2、 S2对应的子节 点V2,并使得V1和V2的存储地址空间连续;s213,将V设置为内部节点,并将V赋值为如下数据结构V.field=F, V.point=P, V.offset=Vl的起始地址;s214,生成一组处理元,将所述R1、 S1和V1分别赋值给该组处 理元中的R,、 S,和V,,将该组处理元送入队列Q;s215,生成一组处理元,将所述R2、 S2和V2分别赋值给该组处 理元中的R,、 S,和V,,将该组处理元送入队列Q,返回执行步骤s205;s216,获取R中优先级最高的规则r,将V设置为叶节点,并将V 赋值为如下数据结构V.field=r.action, V.point=r.pri, V,offset=0;其中,r.action为规则r中的分类结果,r.pri为规则r中的优先级;s217,判断当前队列Q是否为空,若是,执行步骤s218,若否, 返回执行步骤s205;s218,返回根节点VO,将其作为决策树数据结构索引的起点;s219,接收网包,并根据网包中作为过滤规则的域的值从根节点 V0开始,根据决策树的数据结构定位网包所匹配的叶节点,根据叶 节点中V.fidd的值对网包进行分类。
5、根据权利要求4所述的方法,其特征在于,步骤s219中分类 包括以下子步骤-.s219a,将当前节点初始化为根节点V0;s219b,判断当前节点中的V.offset是否为0,若是,则执行步骤 s219f,否则执行步骤s219c;s219c,获取网包中与当前节点中的V.field对应域的值,若该值小于等于当前节点中的V.point,则执行步骤s219d,否则执行步骤 s219e;s219d,将当前节点所划分对应得到的子节点VI更新为当前节 点,返回执行步骤s219b;s219e,将当前节点所划分对应得到的子节点V2更新为当前节 点,返回执行步骤s219b;s219f,根据当前节点中的V.fidd中的值确定分类结果,根据当 前节点中的V.point的值确定分类的优先级,执行步骤s219g;s219g,根据所述分类结果进行网包的存储、转发或丢弃。
6、 根据权利要求5所述的方法,其特征在于,在步骤s219d中根据更新前当前节点中的V.offset定位到子节点 VI, Vl的存储地址为&(V)+V.offset, (fe(V)表示取更新前当前节点 的地址;在步骤s219e中根据更新前当前节点中的V.offset定位到子节点 V2, V2的存储地址为&(V)+V.offset+sizeof (V), &00表示取更新 前当前节点的地址,sizeof (V)表示一个节点所占的地址范围。
7、 基于多核处理器的多域网包分类方法,包括以下步骤 s301,获取设定的规则全集RO,每条规则包括优先级、作为过滤规则的域的取值范围和分类结果;s302,将多域网包包头中作为过滤规则的域的所有可能取值空间 作为初始搜索空间SO,域对应初始搜索空间的维度;s303,生成与所述RO、 SO对应的根节点VO,并生成一组处理元, 将所述RO、 SO和VO分别赋值给该组处理元中的R,、 S'和V';s304,将该组处理元送入队列Q,队列Q为先进先出队列;s305,从队列Q中取出一组处理元,得到取出处理元的R,、 S,、 V,,分别记为R、 S、 V;s306,判断R中所有规则是否都包含S,若是,执行步骤s316,若否,执行步骤s307;s307, R中每个域上的相邻两个端点值构成一个区间,对于每一 个域统计R中规则落入该域上每个区间的规则的个数,将所得个数相 加后除以该域上的区间总数得到每个域的区间平均规则数;s308,选择区间平均规则数最小的域对应的维度作为S的划分维度F;s309,选择F对应域上的一个端点值作为划分点P,使得R中落入 F对应域上第一个端点值到P间每相邻两端点值区间内的规则数之和, 是大于落入F对应域上所有每相邻两端点值区间内的规则数之和 一半 的最小值;s310,将S在划分维度F上以划分点P进行空间划分,得到子空间 S1和子空间S2;s311,将R中所有与子空间Sl有重叠的规则记为Rl,将R中所有 与子空间S2有重叠的规则记为R2;s312,生成与R1、 Sl对应的子节点Vl,及与R2、 S2对应的子节 点V2,并使得V1和V2的存储地址空间连续;s313,将V设置为内部节点,并将V赋值为如下数据结构V.field=F, V.point=P, V.offset=Vl的起始地址;s314,生成一组处理元,将所述R1、 S1和V1分别赋值给该组处 理元中的R,、 S,和V,,将该组处理元送入队列Q;s315,生成一组处理元,将所述R2、 S2和V2分别赋值给该组处 理元中的R,、 S,和V,,将该组处理元送入队列Q,返回执行步骤s305;s316,获取R中优先级最高的规则r,将V设置为叶节点,并将V 赋值为如下数据结构V.field=r.action, V.point=r.pri, V.offset=0;其中,r.action为规则r中的分类结果,r.pri为规则r中的优先级;s317,判断当前队列Q是否为空,若是,执行步骤s318,若否,返回执行步骤s305;s318,返回根节点VO,将其作为决策树数据结构索引的起点; s319,接收网包,并根据网包中作为过滤规则的域的值从根节点VO开始,根据决策树的数据结构定位网包所匹配的叶节点,根据叶节点中V.field的值对网包进行分类。
8、 根据权利要求7所述的方法,其特征在于,步骤s319中分类 包括以下子步骤s319a,将当前节点初始化为根节点VO;s319b,判断当前节点中的V.offset是否为0,若是,则执行步骤 s319f,否则执行步骤s319c;s319c,获取网包中与当前节点中的V.field对应域的值,若该值 小于等于当前节点中的V.point,则执行步骤s319d,否则执行步骤 s319e;s319d,将当前节点所划分对应得到的子节点VI更新为当前节 点,返回执行步骤s319b;s319e,将当前节点所划分对应得到的子节点V2更新为当前节 点,返回执行步骤s319b;s319f,根据当前节点中的V.fidd中的值确定分类结果,根据当 前节点中的V.point的值确定分类的优先级,执行步骤s319g;s319g,根据所述分类结果进行网包的存储、转发或丢弃。
9、 根据权利要求8所述的方法,其特征在于, 在步骤s319d中根据更新前当前节点中的V.offset定位到子节点VI, Vl的存储地址为&(V)+V.offset, &(¥)表示取更新前当前节点 的地址;在步骤s319e中根据更新前当前节点中的V.offset定位到子节点 V2, V2的存储地址为&(V)+V.offset+sizeof (V), &(¥)表示取更新 前当前节点的地址,sizeof (V)表示一个节点所占的地址范围。
全文摘要
本发明涉及涉及基于多核处理器的多域网包分类方法,该方法首先构建分类数据结构选择一个特定的维度,使得在该维度上选择某划分点进行空间划分后,落入到两个子空间的两个规则子集的规则数之和尽可能少;在所选择的维度上确定划分点的方法为选择所选择维度上的划分点,使得依据该点划分后落入到两个子空间的规则个数尽可能相等;具体提出了三种划分点选择方法和与之相关联的两种划分维度选择方法;构建好分类数据结构后接收网包信息,根据网包信息查找分类数据结构得到匹配结果。本发明可以在多种多核处理器平台上实现,可以保证良好的性能和对不同网络应用的适应性,大幅降低高端策略路由及防火墙产品的生产成本。
文档编号H04L29/06GK101478551SQ20091007706
公开日2009年7月8日 申请日期2009年1月19日 优先权日2009年1月19日
发明者亓亚烜, 军 李 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1