【技术实现步骤摘要】
一种将熵二叉树合并为多叉树的方法
[0001]本专利技术属于通信
,具体涉及一种将熵二叉树合并为多叉树的方法。
技术介绍
[0002]数据包分类算法是网络中常用的一种算法。其目的是按照报文携带的头部信息,一般是源IP、目的IP、源端口、目的端口和协议号5个维度,把报文分成不同的种类,从而可以对其进行不同的处理。常见的应用有:访问控制列表,防火墙,基于流的计费统计。在核心网络设备和边缘网络设备中均有不同的应用。
[0003]进行数据包分类首先需要定义一套规则集,按照数据包的头部信息在规则集中进行查找。图1为规则示例,各个字段依次表示:源ip地址值/源ip掩码、目的ip地址值/目的ip掩码、源端口号范围、目的端口号范围和协议号值/协议号掩码值。每条规则都表示了一个范围,掩码小的规则表示的范围大。
[0004]在众多数据包分类算法中,hypercuts决策树是常用的一种。
[0005]hypercuts决策树存在两个明显的问题:
[0006]1)叶子节点中包含小于等于指定阈值条的规则。当进行数 ...
【技术保护点】
【技术特征摘要】
1.一种将熵二叉树合并为多叉树的方法,其特征在于,该方法包括如下步骤:S701、将熵二叉树中的节点称为小节点snode;将多叉树的节点称为大节点big_node,假设一个big_node最多包含n个snode;S702、开始处理时,将熵二叉树的根节点作为待合并子树的根节点;S703、创建一个大节点,将子树根节点加入到大节点的小节点链表snode_list中;S704、遍历snode_list;S705、snode_list是否已经遍历完成;如果遍历完成,说明当前big_node中的snode不足n个,执行第S714步;否则执行第S706步;S706、获取snode_list中的一个小节点snode;S707、将snode的孩子节点cnode加入到snode_list;S708、判断snode_list中是否已包含n个snode;S709、如果不是,则继续执行第S705、S706、S707和S708步;否则执行第S710步;S710、再次遍历snode_list;S711、获取一个snode,判断其孩子节点cnode是否位于snode_list中;S712、如果是,则继续第S711步;否则执行第S713步;S713、将cnode作为子树的根节点,再次执行第S703步至第S712步;S714、将big_node标记为多叉树的叶子节点。2.如权利要求1所述的将熵二叉树合并为多叉树的方法,其特征在于,n=7。3.如权利要求1所述的将熵二叉树合并为多叉树的方法,其特征在于,所述熵二叉树的创建方法为:使用策略的某个比特,将父节点的策略均匀的划分至左右两个子节点;其中,根节点拥有策略集合中的全部策略;使用信息熵确定最佳的划分比特;信息熵越大,说明父节点的策略在指定比特越分散,越能够将策略均匀的划分至左右两个子节点;当某个节点的最大信息熵为零时,说明当前节点的策略在未使用的比特熵已经没有区分度,此时将该节点标记为叶子节点,从而获得熵二叉树。4.如权利要求1所述的将熵二叉树合并为多叉树的方法,其特征在于,所述熵二叉树的创建方法为:S21、创建根节点,将策略集合中的所有策略分配给根节点;S22、将根节点作为当前待处理节点;S23、计算当前节点的最大信息熵;S24、如果最大信息熵为0,则将当前节点标记为叶子节点;否则进行步骤S25;S25、创建左右子节点,将最大信息熵所对应的比特作为划分比特;将父节点的策略划分至左右两个子节点;S26、以深度优先递归处理左右子节点,将子节点作为新的当前待处理节点;S27、重复步骤S23至S26,直至熵二叉树的所有路径的末端是叶子节点。5.如权利要求3或4所述的将熵二叉树合并为多叉树的方法,其特征在于,所述策略为ipv4五元组策略、ipv6五元组策略、ipv6三元组策略或其他自定义策略。6.如权利要求3或4所述的将熵二叉树合并为多叉树的方法,其特征在于,将父节点的
策略划分至左右两个子节点包括:如果策略在划分比特的值为0,则将该策略划分至左子节点;如果策略在划分比特的值为1,则将该策略划分至右子节点;如果策略在划分比特的值是通配的,则将策略同时划分至左、右两个子节点。...
【专利技术属性】
技术研发人员:孙云刚,刘福春,于洪涛,
申请(专利权)人:北京左江科技股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。