首页> 中国专利> 决策树生成方法及设备、基于决策树报文分类方法及设备

决策树生成方法及设备、基于决策树报文分类方法及设备

摘要

本发明公开一种决策树生成方法及设备、基于决策树的报文分类方法及设备。该决策树生成方法包括:将原始规则集中的规则转化为决策树的范围数组;由根节点开始,采用多比特前缀与HiCuts算法结合的方式裁剪,直到每一节点的规则数小于预设值。该基于决策树的报文分类方法包括:提取报文中的源、目的IP地址,并将其转换为决策树查询数组;由根节点开始查找,根据裁剪的维及裁剪的次数进行依次查找,直到获得叶子节点;将报文查询数组与叶子节点中的规则进行比较,获得与该报文匹配的规则。本发明通过采用比特前缀与HiCuts结合生成决策树,减少了该决策树的深度,使得基于该决策树进行查找时既提高了查询效率,而且还节省了内存的占用空间。

著录项

  • 公开/公告号CN102281196A

    专利类型发明专利

  • 公开/公告日2011-12-14

    原文格式PDF

  • 申请/专利权人 中兴通讯股份有限公司;

    申请/专利号CN201110229772.9

  • 发明设计人 张海峰;

    申请日2011-08-11

  • 分类号H04L12/56(20060101);G06F17/30(20060101);

  • 代理机构44287 深圳市世纪恒程知识产权代理事务所;

  • 代理人胡海国

  • 地址 518057 广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦法务部

  • 入库时间 2023-12-18 04:04:27

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-10-10

    授权

    授权

  • 2014-07-02

    实质审查的生效 IPC(主分类):H04L12/56 申请日:20110811

    实质审查的生效

  • 2011-12-14

    公开

    公开

说明书

技术领域

本发明涉及通讯领域,尤其涉及一种决策树生成方法及设备、基于决策 树报文分类方法及设备。

背景技术

随着网络应用的发展,如今的网络设备,例如:路由器、防火墙、3G 网元等,通常需要支持访问控制、QOS(Quality of Service,服务质量)、策 略路由等一系列功能。这些功能的一个共同点就是需要根据报文的信息进行 分类,然后对不同类型的报文做相应的处理。因此,报文分类成为了这些设 备的一个基本功能。

报文分类的实现通常可分为:硬件方式和软件方式。硬件方式需要由专 门的子卡或芯片来实现,这些硬件的价格通常都比较昂贵。为了节约成本, 同时也为了适用一些无法使用硬件做报文分类的环境,针对IPv4报文分类, 人们提出了一系列软件实现报文分类的算法。

典型的报文分类算法大致可分为几类:线性查找法、基于特里树的报文 分类、几何学算法(例如,HiCuts等)、启发式算法(例如,RFC等)。

1.线性查找法是报文分类最简单的方法,对于一个包含N个条目的规则 集,空间复杂度和时间复杂度都是O(N),所以这种方法不适用于包含条目 数多的规则集。

2.基于特里树的报文分类算法是一维特里树的扩展。其中典型的算法是 Hierarchical Tries,当规则包含d个域(维),且每个域的长度最大值是w时, 空间复杂度是O(dw),查询时间复杂度是O(wd)。将算法的数据结构改成 多比特特里树(Multi-Bit Trie)时,会减少查询时间复杂度,相应的空间复 杂度也会增加。图1显示了一组一维前缀数据所生成的多比特特里树的部分节 点。由于IPv6的地址长度是IPv4地址长度的4倍,无论是将IPv6地址拆分成多 个域,还是把IPv6地址作为一个域生成特里树,其查找时间都会急剧增大。 所以,这种算法无法直接应用到IPv6报文分类。

3.HiCuts(Hierarchical Intelligent Cuttings)是一种典型的基于决策树的 报文分类算法。其基本思想是:以预设规则的每一字段看作一个维度,将分 类器中所有规则按范围空间进行循环分组,直到每一组(桶)都只有少于或 等于指定条(binth)的规则,从而形成一棵决策树。在这棵决策树中包含所 有规则的节点为根节点,少于或等于binth条规则的节点看成叶节点,其他节 点就是中间节点,每次分组的方法就是裁剪决策树策略。查找时,从根节点 开始,在这棵决策树中,根据裁剪策略,找到叶节点,再通过线性匹配来找 到匹配规则。

在规则空间均匀分布的情况下,HiCuts有很好的性能。但是如果一个d 维规则集中的大部分规则只能通过某一维来划分,其他维的值相似或相同, HiCuts树的深度和结点会大大增加,预处理时间和占用的内存空间都会成倍 增加,同时也会大大影响算法的查询性能。而且IPv6地址长度是IPv4地址长 度的4倍,如果直接将此算法应用于IPv6报文分类,把IPv6地址看成一维,在 最差情况下,其性能也会下降4倍。

4.RFC(Recursive Flow Classification)算法是一种适用于多维报文分类 快速查找算法。该算法的优点是:查询速度快,查询时间复杂度可用与维度k 相关的少数几次内存访问来表示,与规则数N无关,而且不存在最坏情况下 的查询性能下降。算法的缺点是:预处理过程十分复杂(不论在时间和空间 上);算法所需的内存空间难以用表达式来描述,其大小与规则集中的规则数 N,规则的维度k,以及规则之间的离散程度密切相关。

IPv6报文分类采用这种算法时,需要将IPv6地址扩展成多个维(维数是 IPv4地址的4倍),这将导致内存访问次数的增加,同时也会使得内存占用更 加不可控。所以RFC算法对于IPv6报文分类无论在空间复杂度还是查询时间 复杂度方面都不理想。

综上所述,相比IPv4报文分类,IPv6报文分类所面临的主要问题是地址 长度的扩大。而上述基于IPv4的报文分类算法都无法直接应用到IPv6报文分 类。

发明内容

本发明的主要目的是提供一种决策树生成方法方法,旨在使得基于该决 策树进行查找时的效率提高,并减少查找时占用的内存空间。

本发明提供一种决策树生成方法,包括以下步骤:

将原始规则集中的规则转化为决策树的范围数组;

由根节点开始,采用多比特前缀与HiCuts算法结合的方式裁剪,直到每 一节点的规则数小于预设值。

优选地,所述由根节点开始,采用多比特前缀与HiCuts算法结合的方式 裁剪,直到每一节点的规则数小于预设值的步骤具体为:

将决策树以包含所有规则的节点作为根节点,并将其放入队列;

判断队列是否为空,是则结束本流程;否则在队列首节点包含的规则数 大于或等于预设值时采用HiCuts算法,启发式的选择裁剪的维和裁剪的次数; 在队列首节点包含的规则数小于预设值时返回执行判断队列是否为空的步 骤;

根据裁剪的维及裁剪的次数,采用多比特前缀方式进行裁剪,生成子节 点;

将包含规则的子节点放入队列,并返回执行判断队列是否为空的步骤。

优选地,所述采用HiCuts算法,启发式的选择裁剪的维和裁剪的次数的 步骤具体为:

去除冗余规则;

计算每一维裁剪操作后的各项数据;

根据每一维上裁剪后的数据,在包含的规则数大于或等于预设值的首节 点上选择其中一维进行裁剪。

优选地,所述根据裁剪的维及裁剪的次数,采用多比特前缀方式进行裁 剪,生成子节点的步骤包括:

根据裁剪的次数,申请相应大小内存;

根据裁剪的维和裁剪的次数确定每个子节点的范围;

确定每个子节点包含的规则。

本发明还提供了一种决策树生成设备,包括:

规则转换模块,用于将原始规则集中的规则抽象为决策树的范围数组;

裁剪模块,用于以包含所有规则的节点作为根节点,采用多比特前缀与 HiCuts算法结合的方式裁剪,直到每一节点的规则数小于预设值。

优选地,所述裁剪模块包括:

根节点确定单元,用于将决策树以包含所有规则的节点作为根节点,并 将其放入队列;

队列判断单元,用于判断所述队列是否为空;

节点判断单元,用于当队列不为空时,判断队列首节点包含的规则数是 否小于预设值;

裁剪参数设置单元,用于在队列首节点包含的规则数大于或等于预设值 时采用HiCuts算法,启发式的选择裁剪的维和裁剪的次数;

节点生成单元,用于根据裁剪的维及裁剪的次数,采用多比特前缀方式 进行裁剪,生成子节点,并将所述子节点放入队列。

优选地,所述裁剪参数设置单元具体用于:

去除冗余规则;

计算每一维裁剪操作后的各项数据;

根据每一维上裁剪后的数据,在包含的规则数大于或等于预设值的节点 上选择其中一维进行裁剪。

优选地,所述节点生成单元具体用于:

根据裁剪的次数,申请相应大小内存;根据裁剪的维和裁剪的次数确定 每个子节点的范围;确定每个子节点包含的规则。

本发明又提供了一种基于决策树的报文分类方法,该决策树由上述生成 方法生成,所述报文分类方法包括以下步骤:

提取报文中的源、目的IP地址,并将其转换为决策树查询数组;

由根节点开始查找,根据裁剪的维及裁剪的次数进行依次查找,直到获 得叶子节点;

将报文的查询数组与叶子节点中的规则进行比较,获得与查询数组匹配 的规则。

优选地,所述由根节点开始查找,根据裁剪的维及裁剪的次数进行依次 查找,直到获得叶子节点的步骤包括:

将根节点设置为当前查找节点;

判断所述查找节点是否为空,是则设置无法找到匹配规则的标识,并结 束本流程;否则在查找节点包含的规则数小于预设值时,将报文的查询数组 与叶子节点中的规则进行比较,获得与查询数组匹配的规则;在查找节点包 含的规则数大于或等于预设值时,根据裁剪的维、裁剪的次数及查询数组进 行查找,获得子节点,并将所述子节点设置当前查找节点,再返回执行判断 查找节点是否为空的步骤。

优选地,将报文的查询数组与叶子节点中的规则进行比较,获得与查询 数组匹配的规则的步骤包括:

将查询数组的每一维与叶子节点中的规则的每一维对应进行匹配,都匹 配时,则返回匹配的规则序号,并结束本流程;否则设置无法找到匹配规则 的标识,并结束本流程。

本发明又提供了一种基于决策树的报文分类设备,包括:

报文转换模块,用于提取报文中的源、目的IP地址,并将其转换为决策 树查询数组;

节点查找模块,用于由根节点开始查找,根据裁剪的维及裁剪的次数进 行依次查找,直到获得叶子节点;

规则匹配模块,用于将报文的查询数组与叶子节点中的规则进行比较, 获得与查询数组匹配的规则。

优选地,所述节点查找模块包括:

查找节点设置单元,用于将根节点设置为当前查找节点;

节点规则判断单元,用于判断该查找节点是否为空,不为空时则判断所 述查找节点包含的规则数是否小于预设值;

子节点查找单元,用于在查找节点包含的规则数大于或等于预设值时, 根据裁剪的维、裁剪的次数及查询数组进行查找,获得子节点,再通过所述 查找节点设置单元将所述子节点设置为当前查找节点;

查找结果单元,用于在查找节点为空时,设置无法找到匹配规则的标识。

优选地,所述规则匹配模块具体用于:将查询数组的每一维与叶子节点 中的规则的每一维对应进行匹配,都匹配时,返回匹配的规则序号至所述查 找结果单元;否则通过所述查找结果单元设置无法找到匹配规则的标识。

本发明通过采用比特前缀与HiCuts结合生成决策树,减少了该决策树的 深度,使得基于该决策树进行查找时既提高了查询效率,而且还节省了内存 的占用空间。

附图说明

图1是现有技术中基于特里树的报文分类算法中生成的多比特特里树的 部分节点的结构示意图;

图2是本发明决策树的生成方法一实施例的流程示意图;

图3是本发明采用多比特前缀与HiCuts结合的方式进行裁剪步骤的流程 示意图;

图4是应用本发明决策树生成方法生成的决策树一实施例的结构示意 图;

图5是本发明决策树生成设备一实施例的结构示意图;

图6是本发明决策树生成设备一实施例中裁剪模块的结构示意图;

图7是本发明基于决策树的报文分类方法一实施例的流程示意图;

图8是本发明基于决策树的报文分类方法一实施例中由根节点开始查 找,获得叶子节点过程的流程示意图;

图9是本发明基于决策树的报文分类设备一实施例的结构示意图;

图10是本发明基于决策树的报文分类设备一实施例中节点查找模块的 结构示意图;

图11是线性查找和MBT-HiCuts进行IPv6报文分类处理比较结果示意 图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步 说明。

具体实施方式

以下结合说明书附图及具体实施例进一步说明本发明的技术方案。应当 理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

图2是本发明决策树生成方法一实施例的流程示意图。需要说明的是, 本发明决策树生成方法,本身不关注数据的具体含义,本实施例仅以IPv6 报文为例,当然还可以扩展到其他类型的数据应用中。

参照图2,本发明决策树生成方法包括以下步骤:

步骤S101、将原始规则集中的规则转化为决策树的范围数组;

步骤S102、由根节点开始,采用多比特前缀与HiCuts算法结合的方式 裁剪,直到每一节点的规则数小于预设值。

步骤S101具体为:提取原始规则集中规则的源、目的IPv6地址和掩码 等数据,并将其转换成决策树范围数组表示的规则格式,存入到决策树规则 集对应的维上。决策树每一维的长度可以权衡报文匹配规则时的查找效率及 裁剪决策树的深度来设置,本实施例中设置决策树每一维的长度为32位。

下面以一组IPv6的原始规则集为例对步骤S101具体描述。该IPv6的原 始规则集中源、目的IPv6地址和掩码如表1所示。

表1

  规则   源IPV6地址   目的IPV6地址   R1   0:0001::/32   2011::/16   R2   0:0001:2001::/48   2012::/16   R3   0:0001:4001::/48   2001::/8   R4   0:0001:2001::/48   4001::/16   R5   0:0001::/32   8001::/16   R6   0:0001:E001::/48   2000::/3

由于IPv6地址长度是128位,决策树的维长度是32位,所以IPv6地址 需要拆分成4个维度。按这种方法存储表1转换后的规则,决策树存储规则 的维数等于8(dim1-dim8)。因此,把源IPv6地址对应到dim1-dim4;目的 IPv6地址对应到dim5-dim8。转换后存入决策树中的规则集如表2所示。

表2

上述步骤S102中,预设值指叶子节点中包含的规则数的最大值。由于 预设值过大将降低决策树的深度,而增加叶子节点中线性查找的时间;预设 值过小将增加决策树的深度,而减少叶子节点中线性查找的时间,因此该预 设值的设置需权衡决策树的深度及叶子节点中线性查找的时间。

参照图3,上述步骤S102包括以下步骤:

步骤S1021、将决策树以包含所有规则的节点作为根节点,并将其放入 队列;

步骤S1022、判断队列是否为空,是则结束该流程;否则执行步骤S1023;

步骤S1023、判断该队列首节点包含的规则数是否小于预设值,是则执 行步骤S1022;否则执行步骤S1024;

步骤S1024、采用HiCuts算法,启发式的选择裁剪的维和裁剪的次数;

步骤S1024进一步包括:

步骤A1、去除冗余规则;

由于在每个节点上,当低优先级的规则在每一维上都被高优先级的规则 包含时,低优先级的规则就是冗余规则。所有去除冗余规则,既可以减少内 存的占用,又能缩小问题处理的规模。

步骤A2、计算每一维裁剪操作后的各项数据,包括:裁剪次数;以及相 应的裁剪后各个子节点的规则数总和、裁剪后的空间度量值;

裁剪次数越大,决策树的深度越低,从而查询效率越高,但是内存的消 耗也会增大。故此处裁剪次数的设置需要权衡查询效率和内存消耗。

由于本实施例的裁剪采用多比特前缀方式,因此裁剪次数为2n,n就是 裁剪的前缀比特位数。如图1所示,在Root node上,裁剪最前面的3个比 特(n=3),那么裁剪次数为:23=8。

HiCuts算法的预处理程序使用一种启发式方法,动态的由当前裁剪的情 况和一个全局配置的内存空间测量函数spmf来决定裁剪次数,spmf定义如 下:

spmf(N)=spfac*N

spfac是预先指定的内存膨胀因子;N表示当前节点上规则条目数。 某个节点上裁剪后的内存消耗度量定义如下:

sm(C(v))=ΣiNumRules(childi)+np(C(v))

在满足下面的不等式的前提下,选择最大的裁剪次数。

sm(C)<spmf(N)

由于原有HiCuts算法根据裁剪次数,采用二分法方式查找,这种方法裁 剪次数越多,比较次数也就越多。而本发明采用多比特前缀方式裁剪,有效 地利用IP地址前缀的特征,通过这种方式进行查询时,可以根据前缀值,一 次性定位到子树的位置,提高查询效率。

步骤A3、根据每一维上裁剪后的数据,在当前节点上选择其中一维进行 裁剪。

对于同样的一组规则,采用不同的方法做裁剪,生成的决策树差别很大。 所以选择裁剪维的方法至关重要。HiCuts算法给了4种选择的方法:

方法一:最小化子节点的规则最大条目总数。

方法二:选择子节点分布中熵最大的那个分布作为裁剪的维。

方法三:选择内存消耗度量最小的维。

方法四:选择规则的不同的范围个数最大的维。

这四种方法对不同的规则集裁剪的效果也不一样,具体选择哪种方法可 以根据具体情况动态决定。

步骤S1025、根据裁剪的维及裁剪的次数,采用多比特前缀方式进行裁 剪,生成子节点;

执行步骤S1025的同时,可在当前节点上记录裁剪的维和裁剪的次数, 供后期的查找操作使用。

步骤S1025进一步包括:

步骤B1:根据裁剪的次数,申请相应大小内存;

内存以指针数组方式表示,每个数组元素都是一个指针,指针根据序号 的值,指向相应的子节点。例如:图1中的Root node裁剪8次,申请的内 存就是一个含有8个指针的数组。数组的序号也就是裁剪比特数组成的值 (000~111)。

步骤B2、根据裁剪的维和裁剪的次数确定每个子节点的范围;

由于是按照多比特前缀方式做等分裁剪,所以每个子节点的范围值也就 是父节点的范围按照裁剪的维和裁剪比特位做等分处理。例如:图1中Root node裁剪后前缀为100的子节点Node 1在dim1维上的范围就是100*(*表 示后面的数据可以是任意值)。

步骤B3、确定每个子节点包含的规则。

在确定子节点规则时,将父节点中,符合当前子节点在裁剪维上范围的 规则记录到本节点上。例如:图1中Root node裁剪后前缀为100的子节点 Node 1包含规则(R1,R2,R6,R9)。

步骤S1026、将包含规则的子节点放入队列,并执行步骤S1022。

下面将针对表2所示的规则集,对决策树的生成过程具体描述。首先, 预先设定决策树参数如下:

(1)桶大小:binth=3;

(2)内存膨胀因子:spfac=2;

(3)裁剪时选择维的方法:方法四-选择规则的不同的范围个数最大的 维。

根据上述决策树的生成方法,可以生成如图4所示的决策树。图4中的 圆角矩形表示中间节点(包括根节点),方角矩形表示叶子节点。该决策树的 生成过程如下:

步骤C1、将决策树包含所有规则的节点作为根节点,即包含规则R1~R6 的节点;

步骤C2、对根节点进行裁剪时,选择dim5,裁剪8次(裁剪前3比特);

步骤C3、根据裁剪的次数(裁剪前3比特),则三个比特对应的取值为 000、001、010、011、100、101、110及111。当该三个比特对应的取值为 001时,R1~R6中在对应比特位包含(或等于)001的规则有{R1,R2,R3,R6}, 所以生成子节点1,而且该子节点1包含这些规则。同理,取值为010、100 时分别生成子节点2和3。取其他值时,都没有规则满足条件,所以不生成 子节点。

步骤C4、节点2和节点3的规则数都小于binth,所以这两个节点是叶 子节点,无需继续裁剪;而节点1包含的规则数目大于binth,所以这个节点 是中间节点,需要继续做裁剪操作。

步骤C5、取出节点1,对节点1进行裁剪时,选择dim2裁剪,裁剪4 次(裁剪前2比特),则两个比特对应的取值为00、01、10及11。当该两个 比特对应的取值为00时,R1、R2、R3及R6四个规则在对应比特位包含(等 于)00的规则有{R2,R3},所以生成子节点4。同理,取值为01、10、11时 分别生成节点5~节点7三个子节点。由于节点4~节点7的规则数都小于 binth,所以这四个节点是叶子节点,无需再做裁剪操作。

图5是本发明决策树生成设备一实施例的结构示意图。

参照图5,本发明决策树生成设备包括:

规则转换模块10,用于将原始规则集中的规则抽象为决策树的范围;

裁剪模块20,用于以包含所有规则的节点作为根节点,采用多比特前缀 与HiCuts算法结合的方式裁剪,直到每一节点的规则数小于预设值。

规则转换模块10具体用于:提取原始规则集中规则的源、目的IPv6地 址和掩码等数据,并将其转换成决策树范围数组表示的规则格式,存入到决 策树规则集对应的维上。决策树每一维的长度可以权衡报文匹配规则时的查 找效率及裁剪决策树的深度来设置。

参照图6,裁剪模块20进一步包括:

根节点确定单元21,用于将决策树以包含所有规则的节点作为根节点, 并将其放入队列;

队列判断单元22、用于判断所述队列是否为空;

当队列判断单元22判断该操作队列为空时,则表示裁剪结束。

节点判断单元23,用于当队列不为空时,取出队列的首节点,判断该首 节点包含的规则数是否小于预设值;

裁剪参数设置单元24,用于当首节点包含的规则数大于或等于预设值 时,采用HiCuts算法,启发式的选择裁剪的维和裁剪的次数;

裁剪参数设置单元24具体用于:去除冗余规则;计算每一维裁剪操作后 的各项数据,包括:裁剪次数,以及相应的裁剪后各个子节点的规则数总和、 裁剪后的空间度量值;根据每一维上裁剪后的数据,在当前首节点上选择其 中某一维进行裁剪。

节点生成单元25,用于根据裁剪的维及裁剪的次数,采用多比特前缀方 式进行裁剪,生成子节点,并将该子节点放入队列。

节点生成单元25具体用于:根据裁剪次数,申请相应大小内存;根据裁 剪的维和裁剪的次数确定每个子节点的范围;确定每个子节点包含的规则。

本发明通过采用比特前缀与HiCuts结合生成决策树,减少了该决策树的 深度,使得基于该决策树进行查找时既提高了查询效率,而且还节省了内存 的占用空间。

图7是本发明基于决策树的报文分类方法一实施例的流程示意图。

参照图7,本发明基于上述生成方法生成的决策树而提出的报文分类方 法,该方法包括以下步骤:

步骤S201、提取报文中的源、目的IP地址,并将其转换为决策树查询 数组;

转换报文地址时,查询数据对应的数组序号需要和决策树中的维一一对 应起来。以表3中的报文为例。

表3

  报文   SRC IP   DST IP   P1   0:1::1   2011:123::1   P2   0:1:2001::1   E001::1

例如:报文P1源IP地址是0:1::1,对应到决策树的前四维,那么转换 后需要对应到数组的前四个元素,每个元素32位,对应的值是{0x1,0x0,0x0, 0x1}。同理,目的IP地址是2011:123::1,对应到数组的后四个元素,对应的 值是{0x20110123,0x0,0x0,0x1},那么最终生成的查询数组的值就是{0x1, 0x0,0x0,0x1,0x20110123,0x0,0x0,0x1}。

步骤S202、由根节点开始查找,根据裁剪的维及裁剪的次数进行依次查 找,直到获得叶子节点;

步骤S203、将报文的查询数组与叶子节点中的规则进行比较,获得与该 报文的查询数组匹配的规则。

参照图8,步骤S202进一步包括:

步骤S2021、将根节点设置为当前查找节点;

确定决策树的根节点,即包含所有规则的节点,并将该根节点设置为当 前查找节点,以便由决策树的根节点开始查找。

步骤S2022、判断该查找节点是否为空,是则执行步骤S2025;否则执 行步骤S2023;

判断该查找节点中是否包含规则,是则判断该查找节点不为空,否则为 空。

步骤S2023、判断该查找节点包含的规则是否小于预设值,是则执行步 骤S2031;否则执行步骤S2024;

该预设值与上述决策树生成方法中的预设值为同一个值。

步骤S2024、根据裁剪的维、裁剪的次数及查询数组进行查找,获得子 节点,再执行步骤S2022;

该裁剪的维、裁剪的次数均与生成决策树时的参数一致,例如,以图4 的决策树为例,根节点处裁剪的维为dim5,裁剪的次数为8(裁剪前3比特)

步骤S2025、设置无法找到匹配规则的标识,并结束该流程。

步骤S203进一步包括:

步骤S2031、将查询数组的每一维与叶子节点中的规则的每一维对应进 行匹配,当两者的每一维都匹配时,则执行步骤S2032;否则执行步骤S2025;

步骤S2032、返回匹配的规则序号,并结束该流程。

基于图4所示的决策树,报文P1转换为查询数组后,从根节点开始查 找。由于根节点既不为空,也不是叶子节点,因此根据当前节点上裁剪的维、 裁剪的次数以及查询数组进行查找。由决策树生成的参数选择,根节点选择 dim5裁剪前3比特,查询数组第5维的值是0x20110123,其前3比特是001, 所以获得子节点1。由于该子节点1既不为空,也不是叶子节点,所以按照 同样的方法由子节点1开始查找,由决策树生成的参数选择,节点1选择dim2 裁剪前2比特,查询数组第2维的值是0x0,其前2比特是00,所以获得子 节点4。由于该子节点4不为空,但是为叶子节点,因此可以结束查找流程。 获得叶子节点后,将报文P1转换后的查询数组的每一维与子节点4中包含 的规则的每一维对应进行匹配,即查询数组的每一维的值是否在子节点4中 包含的规则的每一维对应的范围值内,是则匹配;否则不匹配。由于子节点 4包含规则R1及R2。通过查询数组{0x1,0x0,0x0,0x1,0x20110123,0x0,0x0, 0x1}在节点4节点包含的规则R1及R2的每一维上依次匹配,可以看到查询 数组的值可以匹配到规则R1在每一维上的范围。所以报文P1可以最终找到 与之匹配的规则R1。

同理,根据上述方法对报文P2转换后的查询数组在决策树上进行查找 匹配,则无法找到与报文P2匹配的规则。

图9是本发明基于决策树的报文分类设备一实施例的结构示意图。

参照图9,本发明基于决策树的报文分类设备包括:

报文转换模块201,用于提取报文中的源、目的IP地址,并将其转换为 决策树查询数组;

节点查找模块202,用于由根节点开始查找,根据裁剪的维及裁剪的次 数进行依次查找,直到获得叶子节点;

规则匹配模块203,用于将报文的查询数组与叶子节点中的规则进行比 较,获得与该报文查询数组匹配的规则。

参照图10,节点查找模块202进一步包括:

查找节点设置单元2021,用于将根节点设置为当前查找节点;

节点规则判断单元2022,用于判断该查找节点是否为空,不为空时则判 断该查找节点所包含的规则数是否小于预设值;

子节点查找单元2023,用于当判断查找节点包含的规则数大于或等于预 设值时,根据裁剪的维、裁剪的次数及查询数组进行查找,获得子节点,再 通过查找节点设置单元2021将该子节点设置为当前查找节点;

查找结果单元2024,用于在查找节点为空时,设置无法找到匹配规则的 标识。

规则匹配模块203具体用于:将查询数组的每一维与叶子节点中的规则 的每一维对应进行匹配,当两者的每一维都匹配时,返回匹配的规则序号至 查找结果单元2024;否则通过查找结果单元2024设置无法找到匹配规则的 标识。

以下为IPv6报文收发过程中,分别以线性查找和MBT-HiCuts(多比特 前缀与HiCuts结合)分别实现报文的分类处理进行比较。两者处理方式的比 较结果如图11所示:图中横轴表示配置的规则数;纵轴表示性能下降百分比。 从图中可以看出:规则数较少时两种方法的性能基本一致。随着规则数的增 加,相比线性查找,MBT-HiCuts算法查询效率的优势也越来越明显。

以上所述仅为本发明的优选实施例,并非因此限制其专利范围,凡是利 用本发明说明书及附图内容所作的等效结构或等效流程变换,直接或间接运 用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号