一种高效网络报文分类方法与流程

文档序号:11620660阅读:131来源:国知局
一种高效网络报文分类方法与流程
本发明涉及一种高效网络报文分类方法,属于计算机网络
技术领域

背景技术
:计算机网络正处于蓬勃发展的时期,网络速度不断提高,用户数量急剧增长,同时,internet服务也开始由原先的尽力服务(best-effortservice)向qos(qualityofservice)发展,网络设备(路由器、交换机等)的功能必须由原先单纯的转发分组提升到具有内容知晓(content-awareness)的能力,而分组分类则是其中重要的一环。许多网络关键技术,如虚拟专用网(vpns)、网络地址转换(nat)、防火墙、网络入侵检测(ids)、qos、拥塞控制、组播等都涉及到分组分类。因此,分组分类速度的快慢、功能的强弱将直接影响到许多网络技术的性能,并且对下一代网络及其服务质量有关键性的影响。并且,分组分类是现今网络研究的重要议题之一。纵观分类算法的发展趋势,基于算法在时间和空间复杂度上的限制,启发式策略一般具有较快的速度,同时在应用上也具有较好的前景。经典的启发式算法都是对规则头部进行范围切割,在切割中,采取即定的启发式策略,尽量达到规则分布的均衡性,从而能在时间和空间复杂度上更好的折衷平衡。启发式算法的共同点是采取某种策略,以把规则均匀的分布到子集中去,本方案即是根据启发式策略来实现。技术实现要素:本发明针对现有的技术问题,提供一种高效网络报文分类方法,目的是使得网络报文更加直观简单易实现,预处理开销小,并具有更佳的效果,拟解决现有技术存在的问题。为实现上述目的,本发明提供如下技术方案:一种高效网络报文分类方法,其特征在于,该方法采用基于信息熵的决策树算法来实现,具体方法是,在选取规则子集时,确定阀方法是,在多叉层次树中,根据具体规则库,按照熵值特性,从中抽取若干位具有区分性质的位,即选取最大熵值增益的位,将其规则均衡的划分到子集中去,从而确定其所属的规则子集。进一步,作为优选,基于信息熵的决策树建立的方法具体为:(i)将全体规则集作为根节点;(ii)对五元组的每一位,计算其信息熵增益;(iii)选择熵值增益最大的前n个特征位组合作为决策分支属性;(iv)把与决策属性处取值相同的规则归于同一子集,作为下一层节点,建立子节点;(v)若叶子节点中规则数目不大于叶子节点阈值,则划分停止,如果叶子节点中规则数目大于叶子节点阈值,则返回步骤(ii),直至叶子节点中规则数目不大于叶子节点阈值。进一步,作为优选,在所述步骤(ii)中,在104位中任选n位,有中选择方法,对每一种选择,分别计算信息熵增益值,再在其中选择增益最大的一种作为决策属性,其中,n为给定决策位的数目。进一步,作为优选,最大熵值增益要求是:规则头部中每一位的取值集合为{0,1,*},将规则均匀的分布到各个ui中去,可以这样选择:选择min{0值个数,1值个数}作为信息熵增益的近似度量,其中,0值个数是规则库中某特定位为0的规则个数,1值个数是规则库中某特定位为1的规则个数。进一步,作为优选,该方法采用降维的方法,其对每维单独建立entro-trie,处理的结果以位向量的形式存放,并以abv方式聚累增加速度,对每维的结果取与操作得到最终结果。与现有技术相比,本发明的有益效果是:本发明基于决策树的分类方法结构简单,易形成规则,效率高,不需额外知识,适用于数据量较大、数据格式多样的情况,尤其对于实时报文分类这种对速度要求较高的系统,采用决策树方法是合理的选择。本发明提出的基于信息熵的决策树算法也是基于启发式策略(为方便表述,以下都称为entro-trie算法),是多叉层次树基础上的一种改进,在层次树中,本发明顺序的根据头部位信息来确定其所属的规则子集,这样易形成规则子集划分不均匀的现象,根据对具体规则库的观察,发现若从中抽取几位最具区分意义的位,基于这些位的熵值特性,把它叫做具有较大熵值增益的位,则能够将规则均衡的划分到子集中去,从而减少最坏情况的复杂度。相比较多叉层次树而言,本发明改进的优点是:(1)只需选用若干具有较大区分性质的位进行划分,就能将规则均匀分割到各个子集中去,节省了空间。(2)因为规则在各子集中分布比较均匀,查找时访问内存次数相对固定,加快了平均访问时间,并使访问时间具有有鲁棒性。(3)规则可能是带任意位的前缀,基于本发明在求最大熵值增益位时所采取的策略,能够较大改善规则在各个子集中的重复度,这有两重意义,一方面减少了算法空间需求,另一方面也减少了叶结点中线性搜索的时间。与其他启发式方法如hicut和hypercut相比,本发明的方法直观简单易实现,预处理开销小,并具有相近的效果。算法支持增量更新,以及结构重组,即在多次增量更新后,算法的效率会受到影响,可在某个空闲时间进行一次结构重组,提高效率。本方法中所解决的主要是中小型规则库的匹配问题,对于规则规模在10k以下的中小规则库,算法的空间要求不大,并具有较快的分类速度。若规则库的规模进一步增大,可以与abv算法结合来解决可扩展问题,即采用降维的方法,其思想是对每维单独建立entro-trie,处理的结果以位向量的形式存放(并以abv方式聚累增加速度),对每维的结果取与操作得到最终结果,这种方法扩展性较好,随着规则数的增加对查找时间影响不大,适用于大规模的规则。附图说明图1是本发明的某bgp表中的前缀分布情况;图2是本发明的递归分析示意图;图3可变长trie递归关系图;图4决策树建立流程图;图5报文搜索匹配流程图;图6叶结点阀值对树结点数的影响;图7决策位长度对树结点数的影响。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。请参阅图1-7,本发明的原理如下:本发明决策树方法通过选择最大熵增益的属性作为分类属性,从而使总体中的同层子类具有相近程度的不确定性,即分布上的均衡性,从而达到树的深度较小,平均速度较快的特点。本发明算法的思想与决策树思想是契合的,只是本发明在选择分类属性时根据实际规则库的特点和实现的简易性,选取了较为灵活的方案。现今的大多数应用中,一般根据报文的五元组信息来进行分类,总共有104位,基于空间的要求,只能选取几位来作为决策属性,如何使选出的几位具有最大熵值增益特性,是应用本算法的关键问题。若严格按决策树的方法来衡量,计算量太大,在应用中不具有可行性,下节本发明将具体说明本算法所选取的近似解决方案。应用决策树方法所要达到的要求是:²所占用的空间少²对应每个叶子节点的深度最小这两个要求是矛盾的。当叶子节点的最大深度为1时,决策树将退化为表的形式,这种情况是要建立一个有104位地址的表,则表的空间大小是2104个单位,虽然在这种情形下具有最快的速度(只需要一次访存就可以找到匹配的规则),但所耗空间太大,不具可行性。若每次以一位作为决策属性,则树的深度为104位(即每次匹配需要104次访问内存),虽然此时算法需要的空间较小(大约是规则数目的两倍),但由于时间因素,不具可行性。所以在分类算法中,树的深度和访存次数是两个矛盾的要求,对这两个要求的协调实质上是要求在时空复杂度之间取得折衷平衡,在整体性能方面得到优化。所以用决策树方法进行分类的关键问题是时空复杂度的平衡问题。在算法中体现为需选择的决策位个数与分类速度问题。因为大多应用对空间大小有一个限制,这种限制在算法中表现为决策位个数的限制。因为决策树的空间大小可以用选取的决策位个数多少来近似衡量。所以问题演化成:在给定决策位的数目(设为n)情况下(即在给定的空间要求下),使节点的深度最小。直接解决这个问题的方法是,在104位中任选n位,有中选择方法,对每一种选择,分别计算信息熵增益值,再在其中选择增益最大的一种作为决策属性,一些文献中已经中证明了这是一个np难问题,所需要的计算量太大,不具实用性。因为最大熵值增益属性的本质是这样一种属性,整体中若根据这个属性来分类,能将规则均匀的分配到各个子集中去,从而在时空复杂度上能得到优化,所以本方法结合信息熵原理和报文分类算法的具体要求,选择一种近似方案。因为规则头部中每一位的取值集合为{0,1,*},若以一位作为属性来划分,则可分为2类(对*位需要转化成确定位0和1),以一位来做决策属性,显然应该选择这样的位,所有规则在此位的数值分布均衡,(最好的情况是0,1个数相等分别为n/2),这种情况很容易计算。基于各位的随机性,相互之间影响较小,可近似看作是独立的,故可以分别对每一位计算其信息熵增益,然后选择n个具有较大熵增益位组合近似看做具有最大熵增益属性,并以此作为决策属性。分类算法要求规则中*位数目尽量少(因为*位会使规则在各个子集中重复,带来空间的增加和相应搜索时间上的复杂性),而最大熵值增益要求是:将规则均匀的分布到各个ui中去。故可以近似这样选择:选择min{0值个数(规则库中某特定位为0的规则个数),1值个数(规则库中某特定位为1的规则个数)}作为信息熵增益的近似度量,这个数值大小直接反映了每位0,1分布的均衡性,同时对*位个数做了隐性限制,因为*位数目多,必然会影响到,0,1位的数目。值得一提的是,本发明这种策略不会造成重复选择某些区分位的情况,因为每次划分子集后,子集中的各个规则在上次所选择的区分位上的数值都相同,所以上层所选择的区分位已变成本次的最差选择,从而不会被选中而产生重复的现象。实质上对于任何一个包含任意位的规则,可以分解成多个确定位的规则,但若以此位来划分规则,会形成规则空间的增加,同时也增加了搜索时间,所以在选择区分位的时候,应尽量减少规则中包含的任意位的数目。可以通过灵活设计熵值增益函数来实现,即通过选择min{0值个数,1值个数}-f(*位的数目)},进一步减轻任意位对分类的影响。本发明中重要参数选择依据:在设计多叉entro-trie树的时候,有一个重要的参数设置问题,即对于分类字段该分成几段,如何分基于对实际的报文分类器观察,本发明发现前缀的长度分布可能很不均匀。图1是本发明随机选取的一个bgp表中各种长度的前缀分布的情况。该表中共有80194条规则,可以看出绝大多数规则都属于少数的几种前缀长度,其中前缀长度为24的规则数更是超过了一半。如何利用前缀长度的分布情况来合理选择决策树每层的位长以减少存储空间的开销下面本发明从理论上分析一下这个问题。固定长entro-trie:先对entro-trie的每一层内宽度相同(不同层之间可以不同)的简单情况考虑,看看多叉trie树的高度和存储空间的关系如何。也就是在entro-trie树的层数不超过k的情况下,最少需要多少存储空间。如果本发明把1-bittrie中的第i层和第i+j层选作multi-bittrie相邻的两个切割点(也就是说这一层是j-bittrie),那么,根据前面的结果,本发明可知这一层的扩展带来的空间开销是nodes(i+1)*2j,其中nodes(i+1)表示在原1-bittrie中第i+1层的节点个数。这是因为第i+1层的每个节点展开到第i+j层都扩展了2j倍;而第i+2层到第j层的扩展都被第i+1层的扩展节点包含了。有了这个基本结果,本发明就可以利用递归的方法对上述问题作分析。如图2所示,左半边标的是entro-trie树的层数,竖线上标的是原1-bittrie树的层数,本发明用s(x,y)来表示把x层1-bittrie展开生成y层的multi-bittrie所带来的最小存储空间的开销。从图中可以看出,由一个j层的1-bittrie生成一个r层的multi-bittrie可以分两步完成,先由前m层的1-bittrie生成一个r-1层的multi-bittrie,然后再把剩下的j-m层生成第r层。生成r层的multi-bittrie的代价是这两步代价之和。于是乎,本发明可以得到下面的关系:此外,显而易见的有s(j,1)=2j+1(2)通过式1的递归关系和式2的初始条件,以及前缀的分布情况(这体现在nodes(m+1)上)本发明就可以求解得到s(j,r)。对于报文分类问题,本发明需要求解的是s(w-1,k),即,把原有的w-1层的1-bittrie树转换成k层的multi-bittrie树所需要的最小存储空间开销。这个优化过程的时间复杂度是o(k*w2)。前面两个公式也提供了一些启发式的目标,在确定了entro-trie树的层数之后,如何划分层次才能使空间复杂度尽可能的低?不难发现,式1展开之后将会包含许多类似nodes(m+1)×2j-m的项,其中nodes(m+1)与分类表中前缀的分布关系密切,可以看作前缀长度(m+1)到j的某种运算,而(j-m)则是这一层的位宽。由此本发明可以得到启发式的控制目标:因该选取密度小的前缀长度展开,而密度大的前缀长度可以作为保留的长度;展开的层越宽存储空间就花费越大。可变长entro-trie:若把每层决策位数设定为可变,则能增加算法在时空选择上的灵活性,并能提高算法的效率,以下分析的是由此引入的空间复杂度变化问题。任意一个节点下的子树都可以有不同的高度(位宽)的情况比较复杂。这时候各条路径的长度也可能不同。本发明定义height(n)为节点n到它的任意一个子孙节点的最长路径的长度。height(n)=0表示这个结点是叶结点。另外,扩展nodes(s)函数为nodes(s,n),用来表示原1-bittrie第s层上n的子孙节点的个数。如图3所示,本发明用cost(n,r)表示从节点n开始,把它和它的子孙节点扩展成至多r层的变长多叉trie树所需要的开销。根据上图的分析,这个问题同样可以用递归的方法解决。把一棵trie树扩展成高度不超过k的变长多叉trie树可以先从根节点生成多叉trie树的第一层,再以这一层的子节点生成高度不超过k-1的变长多叉trie树。本发明用r表示原1-bittrie树的根节点,于是可以有下面的递归关系式:以及初始条件:cost(n,1)=21+height(n)(4)求解这个优化问题的时间复杂度是o(n*w2*k),其中n是规则表中前缀的个数。复杂度与规则数有关,可以用来选择最优的参数。本方案实现流程及伪代码:本方案设计包括两个部分:建树算法和搜索算法。建树算法用于根据给定的规则集构造一棵决策树,是在预处理阶段完成。搜索算法则用于根据给定的输入数据包的信息,在决策树中找到匹配的规则,从而把数据包分配到不同的流当中去。建树算法实现流程如图4所示:建树算法的输入是一个规则集,输出是一棵决策树。u对五元组的每一位,计算其信息熵增益;u选择熵值增益较大的前n个特征位组合作为ak分支属性;u把在ak处取值相同的规则归于同一子集作为下一层节点,ak有几个值就得到几个分支;u若叶子节点中规则数目都在上限之内,则划分停止。即当规则集规模庞大时,为了将每个叶结点索引的线性表控制在一定规模,以减少线性搜索的时间,在算法的划分停止条件加上一个阈值控制。即在划分停止前,还要判断子集中规则数是否大于设定的阈值n,如果不大于n,则划分停止,如果大于n,则继续划分下去。搜索算法的流程图如图5所示:搜索模块处理过程是,在接收端得到传输进来的报文后,应用这个模块对报文头部分析处理进而归类,然后送到各个输出队列中去。它的功能是根据给定的数据包的信息,在决策树中逐层搜索直到最终找到相匹配的规则,是一个递归搜索过程。本发明方法结果分析假如本发明的规则表是1的6个规则,规则头部有6位,现在要选取一些位来划分规则子集,为限制空间,选取3位来划分子集,若根据本发明的策略来选择,首先计算每位的熵值增益如表2,选择熵值增益较大的位来做划分,则一次可将规则划分成如表3子集,若选择熵值增益较少的1,5,6位来划分,则划分情况如表4,由两图的比较可知表3规则分布均匀且规则重复度低,清楚的显示出本发明以此做为划分依据的意义。表1规则表规则名称规则头部信息r10110**r20101**r30010**r40011**r50001**r61111**表2各位的熵值增益:min(0值个数,1值个数)位数熵值增益112333425060表3根据较大的熵值增益位来划分2,3,4位值匹配规则000001r5010r3011r4100101r2110r1111表4根据熵值增益较小的位来划分1,5,6位值匹配规则000r1,r2,r3,r4,r5001r1,r2,r3,r4,r5010r1,r2,r3,r4,r5011r1,r2,r3,r4,r5100r6101r6110r6111r6对具体报文进行匹配和建树是一个相似的过程,即对到来的每个报文,抽离出头部信息,把它与相应的决策位比较,以判断出此报文所匹配的子树,若不是叶结点,则不断递归这个过程,最终得到与之相匹配的规则,接上面的例子,假如收到的报文头信息是001000,则抽取2,3,4位的信息是010,由本发明表3的划分方法,可一次性的判断出匹配的规则是r3.而根据表4来划分,则有可能匹配的规则还有r1,r2,r3,r4,r5,还需要进一步区分。由以上例子可以看出,这种算法节约了分类时间。在算法中,有两个主要的参数对算法的效果有显著的影响,分别为叶结点中规则数目阀值和每层的属性位个数,图6和7分别观察的这种影响的趋势,阀值越大,空间需求越小,同时算法速度变慢,决策属性位越长,空间需求越大,同时算法速度变快,实际应用中可以针对不同的需求进行尝试,然后选出一种时空可接受的参数设定值。尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1