1、(10)申请公布号 CN 102281196 A(43)申请公布日 2011.12.14CN102281196A*CN102281196A*(21)申请号 201110229772.9(22)申请日 2011.08.11H04L 12/56(2006.01)G06F 17/30(2006.01)(71)申请人中兴通讯股份有限公司地址 518057 广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦法务部(72)发明人张海峰(74)专利代理机构深圳市世纪恒程知识产权代理事务所 44287代理人胡海国(54) 发明名称决策树生成方法及设备、基于决策树报文分类方法及设备(57) 摘要本发明公开一种
2、决策树生成方法及设备、基于决策树的报文分类方法及设备。该决策树生成方法包括:将原始规则集中的规则转化为决策树的范围数组;由根节点开始,采用多比特前缀与HiCuts算法结合的方式裁剪,直到每一节点的规则数小于预设值。该基于决策树的报文分类方法包括:提取报文中的源、目的IP地址,并将其转换为决策树查询数组;由根节点开始查找,根据裁剪的维及裁剪的次数进行依次查找,直到获得叶子节点;将报文查询数组与叶子节点中的规则进行比较,获得与该报文匹配的规则。本发明通过采用比特前缀与HiCuts结合生成决策树,减少了该决策树的深度,使得基于该决策树进行查找时既提高了查询效率,而且还节省了内存的占用空间。(51)I
3、nt.Cl.(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书 3 页 说明书 11 页 附图 6 页CN 102281204 A 1/3页21.一种决策树生成方法,其特征在于,包括以下步骤:将原始规则集中的规则转化为决策树的范围数组;由根节点开始,采用多比特前缀与HiCuts算法结合的方式裁剪,直到每一节点的规则数小于预设值。2.根据权利要求1所述的方法,其特征在于,所述由根节点开始,采用多比特前缀与HiCuts算法结合的方式裁剪,直到每一节点的规则数小于预设值的步骤具体为:将决策树以包含所有规则的节点作为根节点,并将其放入队列;判断队列是否为空,是则结束本流程;否则在队列首
4、节点包含的规则数大于或等于预设值时采用HiCuts算法,启发式的选择裁剪的维和裁剪的次数;在队列首节点包含的规则数小于预设值时返回执行判断队列是否为空的步骤;根据裁剪的维及裁剪的次数,采用多比特前缀方式进行裁剪,生成子节点;将包含规则的子节点放入队列,并返回执行判断队列是否为空的步骤。3.根据权利要求1所述的方法,其特征在于,所述采用HiCuts算法,启发式的选择裁剪的维和裁剪的次数的步骤具体为:去除冗余规则;计算每一维裁剪操作后的各项数据;根据每一维上裁剪后的数据,在包含的规则数大于或等于预设值的节点上选择其中一维进行裁剪。4.根据权利要求1所述的方法,其特征在于,所述根据裁剪的维及裁剪的次
5、数,采用多比特前缀方式进行裁剪,生成子节点的步骤包括:根据裁剪的次数,申请相应大小内存;根据裁剪的维和裁剪的次数确定每个子节点的范围;确定每个子节点包含的规则。5.一种决策树生成设备,其特征在于,包括:规则转换模块,用于将原始规则集中的规则抽象为决策树的范围数组;裁剪模块,用于以包含所有规则的节点作为根节点,采用多比特前缀与HiCuts算法结合的方式裁剪,直到每一节点的规则数小于预设值。6.根据权利要求5所述的设备,其特征在于,所述裁剪模块包括:根节点确定单元,用于将决策树以包含所有规则的节点作为根节点,并将其放入队列;队列判断单元,用于判断所述队列是否为空;节点判断单元,用于当队列不为空时,
6、判断队列首节点包含的规则数是否小于预设值;裁剪参数设置单元,用于在队列首节点包含的规则数大于或等于预设值时,采用HiCuts算法,启发式的选择裁剪的维和裁剪的次数;节点生成单元,用于根据裁剪的维及裁剪的次数,采用多比特前缀方式进行裁剪,生成子节点,并将所述子节点放入队列。7.根据权利要求6所述的设备,其特征在于,所述裁剪参数设置单元具体用于:去除冗余规则;权 利 要 求 书CN 102281196 ACN 102281204 A 2/3页3计算每一维裁剪操作后的各项数据;根据每一维上裁剪后的数据,在包含的规则数大于或等于预设值的节点上选择其中一维进行裁剪。8.根据权利要求6所述的设备,其特征在
7、于,所述节点生成单元具体用于:根据裁剪的次数,申请相应大小内存;根据裁剪的维和裁剪的次数确定每个子节点的范围;确定每个子节点包含的规则。9.一种基于决策树的报文分类方法,其特征在于,所述决策树由权利要求1所述的方法生成,所述报文分类方法包括以下步骤:提取报文中的源、目的IP地址,并将其转换为决策树查询数组;由根节点开始查找,根据裁剪的维及裁剪的次数进行依次查找,直到获得叶子节点;将报文的查询数组与叶子节点中的规则进行比较,获得与查询数组匹配的规则。10.根据权利要求9所述的报文分类方法,其特征在于,所述由根节点开始查找,根据裁剪的维及裁剪的次数进行依次查找,直到获得叶子节点的步骤包括:将根节点
8、设置为当前查找节点;判断所述查找节点是否为空,是则设置无法找到匹配规则的标识,并结束本流程;否则在查找节点包含的规则数小于预设值时,将报文的查询数组与叶子节点中的规则进行比较,获得与查询数组匹配的规则;在查找节点包含的规则数大于或等于预设值时,根据裁剪的维、裁剪的次数及查询数组进行查找,获得子节点,并将所述子节点设置为当前查找节点,再返回执行判断查找节点是否为空的步骤。11.根据权利要求9或10所述的报文分类方法,其特征在于,所述将报文的查询数组与叶子节点中的规则进行比较,获得与查询数组匹配的规则的步骤包括:将查询数组的每一维与叶子节点中的规则的每一维对应进行匹配,都匹配时,则返回匹配的规则序
9、号,并结束本流程;否则设置无法找到匹配规则的标识,并结束本流程。12.一种基于决策树的报文分类设备,其特征在于,包括:报文转换模块,用于提取报文中的源、目的IP地址,并将其转换为决策树查询数组;节点查找模块,用于由根节点开始查找,根据裁剪的维及裁剪的次数进行依次查找,直到获得叶子节点;规则匹配模块,用于将报文的查询数组与叶子节点中的规则进行比较,获得与查询数组匹配的规则。13.根据权利要求12所述的报文分类设备,其特征在于,所述节点查找模块包括:查找节点设置单元,用于将根节点设置为当前查找节点;节点规则判断单元,用于判断该查找节点是否为空,不为空时则判断所述查找节点包含的规则数是否小于预设值;
10、子节点查找单元,用于在查找节点包含的规则数大于或等于预设值时,根据裁剪的维、裁剪的次数及查询数组进行查找,获得子节点,再通过所述查找节点设置单元将所述子节点设置为当前查找节点;查找结果单元,用于在查找节点为空时,设置无法找到匹配规则的标识。14.根据权利要求13所述的报文分类设备,其特征在于,所述规则匹配模块具体用于:将查询数组的每一维与叶子节点中的规则的每一维对应进行匹配,都匹配时,返回匹配的权 利 要 求 书CN 102281196 ACN 102281204 A 3/3页4规则序号至所述查找结果单元;否则通过所述查找结果单元设置无法找到匹配规则的标识。权 利 要 求 书CN 102281
11、196 ACN 102281204 A 1/11页5决策树生成方法及设备、 基于决策树报文分类方法及设备技术领域0001 本发明涉及通讯领域,尤其涉及一种决策树生成方法及设备、基于决策树报文分类方法及设备。背景技术0002 随着网络应用的发展,如今的网络设备,例如:路由器、防火墙、3G网元等,通常需要支持访问控制、QOS(Quality of Service,服务质量)、策略路由等一系列功能。这些功能的一个共同点就是需要根据报文的信息进行分类,然后对不同类型的报文做相应的处理。因此,报文分类成为了这些设备的一个基本功能。0003 报文分类的实现通常可分为:硬件方式和软件方式。硬件方式需要由专门
12、的子卡或芯片来实现,这些硬件的价格通常都比较昂贵。为了节约成本,同时也为了适用一些无法使用硬件做报文分类的环境,针对IPv4报文分类,人们提出了一系列软件实现报文分类的算法。0004 典型的报文分类算法大致可分为几类:线性查找法、基于特里树的报文分类、几何学算法(例如,HiCuts等)、启发式算法(例如,RFC等)。0005 1.线性查找法是报文分类最简单的方法,对于一个包含N个条目的规则集,空间复杂度和时间复杂度都是O(N),所以这种方法不适用于包含条目数多的规则集。0006 2.基于特里树的报文分类算法是一维特里树的扩展。其中典型的算法是Hierarchical Tries,当规则包含d个
13、域(维),且每个域的长度最大值是w时,空间复杂度是O(dw),查询时间复杂度是O(wd)。将算法的数据结构改成多比特特里树(Multi-Bit Trie)时,会减少查询时间复杂度,相应的空间复杂度也会增加。图1显示了一组一维前缀数据所生成的多比特特里树的部分节点。由于IPv6的地址长度是IPv4地址长度的4倍,无论是将IPv6地址拆分成多个域,还是把IPv6地址作为一个域生成特里树,其查找时间都会急剧增大。所以,这种算法无法直接应用到IPv6报文分类。0007 3.HiCuts(Hierarchical Intelligent Cuttings)是一种典型的基于决策树的报文分类算法。其基本思想
14、是:以预设规则的每一字段看作一个维度,将分类器中所有规则按范围空间进行循环分组,直到每一组(桶)都只有少于或等于指定条(binth)的规则,从而形成一棵决策树。在这棵决策树中包含所有规则的节点为根节点,少于或等于binth条规则的节点看成叶节点,其他节点就是中间节点,每次分组的方法就是裁剪决策树策略。查找时,从根节点开始,在这棵决策树中,根据裁剪策略,找到叶节点,再通过线性匹配来找到匹配规则。0008 在规则空间均匀分布的情况下,HiCuts有很好的性能。但是如果一个d维规则集中的大部分规则只能通过某一维来划分,其他维的值相似或相同,HiCuts树的深度和结点会大大增加,预处理时间和占用的内存
15、空间都会成倍增加,同时也会大大影响算法的查询性能。而且IPv6地址长度是IPv4地址长度的4倍,如果直接将此算法应用于IPv6报文分类,把IPv6地址看成一维,在最差情况下,其性能也会下降4倍。说 明 书CN 102281196 ACN 102281204 A 2/11页60009 4.RFC(Recursive Flow Classification)算法是一种适用于多维报文分类快速查找算法。该算法的优点是:查询速度快,查询时间复杂度可用与维度k相关的少数几次内存访问来表示,与规则数N无关,而且不存在最坏情况下的查询性能下降。算法的缺点是:预处理过程十分复杂(不论在时间和空间上);算法所需的
16、内存空间难以用表达式来描述,其大小与规则集中的规则数N,规则的维度k,以及规则之间的离散程度密切相关。0010 IPv6报文分类采用这种算法时,需要将IPv6地址扩展成多个维(维数是IPv4地址的4倍),这将导致内存访问次数的增加,同时也会使得内存占用更加不可控。所以RFC算法对于IPv6报文分类无论在空间复杂度还是查询时间复杂度方面都不理想。0011 综上所述,相比IPv4报文分类,IPv6报文分类所面临的主要问题是地址长度的扩大。而上述基于IPv4的报文分类算法都无法直接应用到IPv6报文分类。发明内容0012 本发明的主要目的是提供一种决策树生成方法方法,旨在使得基于该决策树进行查找时的
17、效率提高,并减少查找时占用的内存空间。0013 本发明提供一种决策树生成方法,包括以下步骤:0014 将原始规则集中的规则转化为决策树的范围数组;0015 由根节点开始,采用多比特前缀与HiCuts算法结合的方式裁剪,直到每一节点的规则数小于预设值。0016 优选地,所述由根节点开始,采用多比特前缀与HiCuts算法结合的方式裁剪,直到每一节点的规则数小于预设值的步骤具体为:0017 将决策树以包含所有规则的节点作为根节点,并将其放入队列;0018 判断队列是否为空,是则结束本流程;否则在队列首节点包含的规则数大于或等于预设值时采用HiCuts算法,启发式的选择裁剪的维和裁剪的次数;在队列首节
18、点包含的规则数小于预设值时返回执行判断队列是否为空的步骤;0019 根据裁剪的维及裁剪的次数,采用多比特前缀方式进行裁剪,生成子节点;0020 将包含规则的子节点放入队列,并返回执行判断队列是否为空的步骤。0021 优选地,所述采用HiCuts算法,启发式的选择裁剪的维和裁剪的次数的步骤具体为:0022 去除冗余规则;0023 计算每一维裁剪操作后的各项数据;0024 根据每一维上裁剪后的数据,在包含的规则数大于或等于预设值的首节点上选择其中一维进行裁剪。0025 优选地,所述根据裁剪的维及裁剪的次数,采用多比特前缀方式进行裁剪,生成子节点的步骤包括:0026 根据裁剪的次数,申请相应大小内存
19、;0027 根据裁剪的维和裁剪的次数确定每个子节点的范围;0028 确定每个子节点包含的规则。0029 本发明还提供了一种决策树生成设备,包括:0030 规则转换模块,用于将原始规则集中的规则抽象为决策树的范围数组;说 明 书CN 102281196 ACN 102281204 A 3/11页70031 裁剪模块,用于以包含所有规则的节点作为根节点,采用多比特前缀与HiCuts算法结合的方式裁剪,直到每一节点的规则数小于预设值。0032 优选地,所述裁剪模块包括:0033 根节点确定单元,用于将决策树以包含所有规则的节点作为根节点,并将其放入队列;0034 队列判断单元,用于判断所述队列是否为
20、空;0035 节点判断单元,用于当队列不为空时,判断队列首节点包含的规则数是否小于预设值;0036 裁剪参数设置单元,用于在队列首节点包含的规则数大于或等于预设值时采用HiCuts算法,启发式的选择裁剪的维和裁剪的次数;0037 节点生成单元,用于根据裁剪的维及裁剪的次数,采用多比特前缀方式进行裁剪,生成子节点,并将所述子节点放入队列。0038 优选地,所述裁剪参数设置单元具体用于:0039 去除冗余规则;0040 计算每一维裁剪操作后的各项数据;0041 根据每一维上裁剪后的数据,在包含的规则数大于或等于预设值的节点上选择其中一维进行裁剪。0042 优选地,所述节点生成单元具体用于:0043
21、 根据裁剪的次数,申请相应大小内存;根据裁剪的维和裁剪的次数确定每个子节点的范围;确定每个子节点包含的规则。0044 本发明又提供了一种基于决策树的报文分类方法,该决策树由上述生成方法生成,所述报文分类方法包括以下步骤:0045 提取报文中的源、目的IP地址,并将其转换为决策树查询数组;0046 由根节点开始查找,根据裁剪的维及裁剪的次数进行依次查找,直到获得叶子节点;0047 将报文的查询数组与叶子节点中的规则进行比较,获得与查询数组匹配的规则。0048 优选地,所述由根节点开始查找,根据裁剪的维及裁剪的次数进行依次查找,直到获得叶子节点的步骤包括:0049 将根节点设置为当前查找节点;00
22、50 判断所述查找节点是否为空,是则设置无法找到匹配规则的标识,并结束本流程;否则在查找节点包含的规则数小于预设值时,将报文的查询数组与叶子节点中的规则进行比较,获得与查询数组匹配的规则;在查找节点包含的规则数大于或等于预设值时,根据裁剪的维、裁剪的次数及查询数组进行查找,获得子节点,并将所述子节点设置当前查找节点,再返回执行判断查找节点是否为空的步骤。0051 优选地,将报文的查询数组与叶子节点中的规则进行比较,获得与查询数组匹配的规则的步骤包括:0052 将查询数组的每一维与叶子节点中的规则的每一维对应进行匹配,都匹配时,则返回匹配的规则序号,并结束本流程;否则设置无法找到匹配规则的标识,
23、并结束本流程。0053 本发明又提供了一种基于决策树的报文分类设备,包括:说 明 书CN 102281196 ACN 102281204 A 4/11页80054 报文转换模块,用于提取报文中的源、目的IP地址,并将其转换为决策树查询数组;0055 节点查找模块,用于由根节点开始查找,根据裁剪的维及裁剪的次数进行依次查找,直到获得叶子节点;0056 规则匹配模块,用于将报文的查询数组与叶子节点中的规则进行比较,获得与查询数组匹配的规则。0057 优选地,所述节点查找模块包括:0058 查找节点设置单元,用于将根节点设置为当前查找节点;0059 节点规则判断单元,用于判断该查找节点是否为空,不为
24、空时则判断所述查找节点包含的规则数是否小于预设值;0060 子节点查找单元,用于在查找节点包含的规则数大于或等于预设值时,根据裁剪的维、裁剪的次数及查询数组进行查找,获得子节点,再通过所述查找节点设置单元将所述子节点设置为当前查找节点;0061 查找结果单元,用于在查找节点为空时,设置无法找到匹配规则的标识。0062 优选地,所述规则匹配模块具体用于:将查询数组的每一维与叶子节点中的规则的每一维对应进行匹配,都匹配时,返回匹配的规则序号至所述查找结果单元;否则通过所述查找结果单元设置无法找到匹配规则的标识。0063 本发明通过采用比特前缀与HiCuts结合生成决策树,减少了该决策树的深度,使得
25、基于该决策树进行查找时既提高了查询效率,而且还节省了内存的占用空间。附图说明0064 图1是现有技术中基于特里树的报文分类算法中生成的多比特特里树的部分节点的结构示意图;0065 图2是本发明决策树的生成方法一实施例的流程示意图;0066 图3是本发明采用多比特前缀与HiCuts结合的方式进行裁剪步骤的流程示意图;0067 图4是应用本发明决策树生成方法生成的决策树一实施例的结构示意图;0068 图5是本发明决策树生成设备一实施例的结构示意图;0069 图6是本发明决策树生成设备一实施例中裁剪模块的结构示意图;0070 图7是本发明基于决策树的报文分类方法一实施例的流程示意图;0071 图8是
26、本发明基于决策树的报文分类方法一实施例中由根节点开始查找,获得叶子节点过程的流程示意图;0072 图9是本发明基于决策树的报文分类设备一实施例的结构示意图;0073 图10是本发明基于决策树的报文分类设备一实施例中节点查找模块的结构示意图;0074 图11是线性查找和MBT-HiCuts进行IPv6报文分类处理比较结果示意图。0075 本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。具体实施方式说 明 书CN 102281196 ACN 102281204 A 5/11页90076 以下结合说明书附图及具体实施例进一步说明本发明的技术方案。应当理解,此处所描述的具体实施例仅
27、仅用以解释本发明,并不用于限定本发明。0077 图2是本发明决策树生成方法一实施例的流程示意图。需要说明的是,本发明决策树生成方法,本身不关注数据的具体含义,本实施例仅以IPv6报文为例,当然还可以扩展到其他类型的数据应用中。0078 参照图2,本发明决策树生成方法包括以下步骤:0079 步骤S101、将原始规则集中的规则转化为决策树的范围数组;0080 步骤S102、由根节点开始,采用多比特前缀与HiCuts算法结合的方式裁剪,直到每一节点的规则数小于预设值。0081 步骤S101具体为:提取原始规则集中规则的源、目的IPv6地址和掩码等数据,并将其转换成决策树范围数组表示的规则格式,存入到
28、决策树规则集对应的维上。决策树每一维的长度可以权衡报文匹配规则时的查找效率及裁剪决策树的深度来设置,本实施例中设置决策树每一维的长度为32位。0082 下面以一组IPv6的原始规则集为例对步骤S101具体描述。该IPv6的原始规则集中源、目的IPv6地址和掩码如表1所示。0083 表10084 规则 源IPV6地址 目的IPV6地址R1 0:0001:/32 2011:/16R2 0:0001:2001:/48 2012:/16R3 0:0001:4001:/48 2001:/8R4 0:0001:2001:/48 4001:/16R5 0:0001:/32 8001:/16R6 0:0001
29、:E001:/48 2000:/30085 由于IPv6地址长度是128位,决策树的维长度是32位,所以IPv6地址需要拆分成4个维度。按这种方法存储表1转换后的规则,决策树存储规则的维数等于8(dim1-dim8)。因此,把源IPv6地址对应到dim1-dim4;目的IPv6地址对应到dim5-dim8。转换后存入决策树中的规则集如表2所示。0086 表20087 说 明 书CN 102281196 ACN 102281204 A 6/11页100088 0089 上述步骤S102中,预设值指叶子节点中包含的规则数的最大值。由于预设值过大将降低决策树的深度,而增加叶子节点中线性查找的时间;预
30、设值过小将增加决策树的深度,而减少叶子节点中线性查找的时间,因此该预设值的设置需权衡决策树的深度及叶子节点中线性查找的时间。0090 参照图3,上述步骤S102包括以下步骤:0091 步骤S1021、将决策树以包含所有规则的节点作为根节点,并将其放入队列;0092 步骤S1022、判断队列是否为空,是则结束该流程;否则执行步骤S1023;0093 步骤S1023、判断该队列首节点包含的规则数是否小于预设值,是则执行步骤S1022;否则执行步骤S1024;0094 步骤S1024、采用HiCuts算法,启发式的选择裁剪的维和裁剪的次数;0095 步骤S1024进一步包括:0096 步骤A1、去除
31、冗余规则;0097 由于在每个节点上,当低优先级的规则在每一维上都被高优先级的规则包含时,低优先级的规则就是冗余规则。所有去除冗余规则,既可以减少内存的占用,又能缩小问题处理的规模。0098 步骤A2、计算每一维裁剪操作后的各项数据,包括:裁剪次数;以及相应的裁剪后各个子节点的规则数总和、裁剪后的空间度量值;0099 裁剪次数越大,决策树的深度越低,从而查询效率越高,但是内存的消耗也会增大。故此处裁剪次数的设置需要权衡查询效率和内存消耗。0100 由于本实施例的裁剪采用多比特前缀方式,因此裁剪次数为2n,n就是裁剪的前缀比特位数。如图1所示,在Root node上,裁剪最前面的3个比特(n3),那么裁剪次数为:238。0101 HiCuts算法的预处理程序使用一种启发式方法,动态的由当前裁剪的情况和一个全局配置的内存空间测量函数spmf来决定裁剪次数,spmf定义如下:0102 spmf(N)spfac*N0103 spfac是预先指定的内存膨胀因子;N表示当前节点上规则条目数。某个节点上裁剪后的内存消耗度量定义如下:说 明 书CN 102281196 A
copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1