一种实现IPv6报文分类的方法及设备的制作方法

文档序号:7696041阅读:105来源:国知局

专利名称::一种实现IPv6报文分类的方法及设备的制作方法
技术领域
:本发明涉及报文分类技术,特别是涉及一种实现IPv6报文分类的方法及设备。
背景技术
:IPv4报文分类中,;洛由器4是取五元组(目的IP地址,源IP地址,目的端口,源端口,协议)协议字段,根据所提取的五元组,从规则集中查找匹配的规则,以确定此数据包所属的流。如果一个数据包匹配多条规则,则路由器根据优先级最高原则对报文进行分类。在IPv4规则集中,规则格式如下源IPi也址目的IP地址源端口目的端口协议流ID优先级表1其中,源IP地址和目的IP地址以无类域间;洛由的形式表示,均为32比特;源端口和目的端口以范围的形式表示;协议字段的内容可以为某一具体协议,例如TCP、UDP等,也可以为表示任意协议的通配符"*"。目前,实现报文分类的方法包括线性搜索法、基于决策树的搜索法、基于分解的搜索法和基于元组空间的方法;其中,基于决策树的搜索法包括基于空间切割的决策树法和基于地址前缀的网格树法。线性搜索法,是实现报文分类最简单的方法,但是,当规则集中的规则数增多时,该算法的查找效率线性下降。基于决策树的搜索法,通过建立一棵决策树,将一个大规则集划分为小规则集,在这些小规则集中采用线性查找法或二分查找法等方法进行搜索,其查找效率取决于决策树的建立方式。基于空间切割的决策树法中,如图1所示,决策树的根节点对应整个多维空间,生成子树的过程就是空间切割过程。该算法的查找效率取决于决策树的高度和在规则桶中线性搜索的效率。该算法中,由于一条规则可同时存在于多个规则桶中,所以存在内存膨胀的问题。另外,IPv6中,128比特的地址使得空间表示的难度加大,进行空间切割的难度也相应增大,因此,对IPv6而言,基于空间切割的决策树并不具有很好的扩展性。基于地址前缀的网格树法,如图2所示,以源IP地址和目的IP地址建立一棵二维网格树以源IP地址建立第一维树,则,第一维树的叶子节点所指向的第二维树都对应同一个源IP地址前缀,第二维树的叶子节点就对应一个前缀对(源IP地址前缀,目的IP地址前缀),第二维树的叶子节点所维护的*见则桶中的每条MJ'j都与相应的前缀对相匹配。该方法的查找效率取决于地址前缀的长度。IPv6的地址长度是IPv4的4倍,因此,如果将此方法直接用于IPv6报文分类中,其查找效率将会下降4倍。基于分解的搜索法,如图3所示,将一个多维报文分类问题分解为多个一维搜索问题,每一维搜索结果的集合的交集即为能匹配的所有规则,从中选取优先级最高的规则作为最终结果。此类算法搜索效率高,但是,IPv6中,128比特的地址使得地址域上的搜索面临很大挑战。由此可见,IPv6报文分类需处理256比特的地址空间(源地址,目的地址),如果将基于64比特地址空间的IPv4才艮文分类方法直4妄应用到IPv6报文分类中,上述方法或者不再适用,或者查找效率急剧下降。
发明内容有鉴于此,本发明的第一个目的在于提供一种实现IPv6报文分类的方法,以提高查找速度,减少内存占用,扩展性好且更新筒单。本发明的第二个目的在于提供一种实现IPv6报文分类的设备,提高查找速度,减少内存占用,扩展性好且更新简单。为了达到上述第一个发明目的,本发明提出的一个实施例的技术方案为一种实现IPv6报文分类的方法,原始规则集中每个规则均表示为由源IP地址、目的IP地址和流标签组成的三元组,将每个规则源IP地址和目的IP地址由二元逻辑运算转换为复合IP地址,根据复合IP地址的地址前缀构建二叉树,地址前缀的一个比特对应二叉树的一个节点,地址前缀的每个比特分别存储在对应节点的路径上,与地址前缀匹配的节点联接一规则桶;将每个规则添加到与自身复合IP地址的地址前缀匹配的节点关联的规则桶中;在对当前数据包进行4艮文分类时该方法包括a、提取当前数据包的三元组,记录原始规则集中的默认规则;当前数据包源IP地址和目的IP地址由所述二元逻辑运算转换为复合IP地址;b、根据步骤a所述复合IP地址按比特依次与二叉树节点对应的比特匹配,如果在与所述复合IP地址匹配的所有节点关联的规则桶中查找到了与当前数据包三元组匹配的规则,则选择查找到的优先级最高的规则作为当前数据包报文分类规则;否则,将所述默认规则作为当前数据包的报文分类规则。为了达到上述笫二个发明目的,本发明提出的一个实施例的技术方案为一种实现IPv6报文分类的设备,包括构造单元、处理单元和分类单元;其中,所述构造单元,用于将原始规则集中每个规则均表示为由源IP地址、目的IP地址和流标签组成的三元组,每个失见则的源IP地址和目的IP地址由二元逻辑运算转换为复合IP地址,根据复合IP地址的地址前缀构建二叉树,地址前缀的一个比特对应二叉树的一个节点,地址前缀的每个比特分别存储在对应节点的路径上,与地址前缀匹配的节点联接一规则桶;将每个规则添加到与自身复合IP地址的地址前缀匹配的节点关联的规则桶中;所述处理单元,用于提取当前数据包的三元组,记录原始规则集中的默认规则;当前数据包源IP地址和目的IP地址由所述二元逻辑运算转换为复合IP地址;所述分类单元,用于将处理单元转换得到的复合IP地址按比特依次与二叉树节点对应的比特匹配,如果在与所述复合IP地址的地址前缀匹配的所有节点关联的规则桶中查找到了与当前数据包三元组匹配的规则,则选择查找到的优先级最高的规则作为当前数据包报文分类规则;否则,将所述默认规则作为当前数据包的报文分类规则。综上所述,本发明的一个实施例中,原始规则集中每个规则均表示为源IP地址、目的IP地址和流标签组成的三元组,路由器提取当前接收凄i:据包的三元组协议字段,并将三元组协议字段内的地址二元组转换为复合IP地址,即,将256比特的地址空间转换为128比特的地址空间,所以提高了查找速度;本发明采用三元组规则替代了IPv4中的五元组规则,且决策树的规则桶中不存在规则重复存储的问题,所以减少了内存占用;实际应用中,路由器的规则集会发生变化,决策树需要及时更新,本发明支持规则更新;本发明中,由于决策树将大规则集划分为小规则集,所以可以嵌套一些适合IPv6小规模报文分类的结构,所以,本发明具有良好的扩展性。图l是基于空间切割的决策树法的逻辑结构示意图。图2是基于地址前缀的决策树法的逻辑结构示意图。图3是基于分解的搜索法的原理图。图4为本发明实现IPv6报文分类的流程图。图5是本发明所述方法中构造的二元逻辑运算原理图。图6是本发明方法中确定报文分类规则的流程图。图7是本发明实施例中未经优化处理的数据结构示意图。图8是本发明设计的经过优化处理的数据结构的示例图。图9是在已构造的决策树中添加规则的流程图。图IO是在已构造的决策树中删除规则的流程图。图11是本发明实现IPv6报文分类的设备的组成结构示意图。图12是本发明实现IPv6报文分类的设备中构造单元的组成结构示意图。图13是本发明实现IPv6报文分类的设备中处理单元的组成结构示意图。图14是本发明实现IPv6报文分类的设备中分类单元的组成结构示意图。具体实施例方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步地详细描述。如图4所示,本发明所述的实现IPv6报文分类的方法,包括如下步骤步骤41、原始规则集中每个规则均表示为由源IP地址、目的IP地址和流标签组成的三元组,原始规则集中每个规则的源IP地址和目的IP地址由二元逻辑运算转换为复合IP地址,根据复合IP地址的地址前缀构建二叉树,地址前缀的一个比特对应二叉树的一个节点,地址前缀的每个比特分别存储在对应节点的路径上,与地址前缀匹配的节点联接一规则桶;将每个规则添加到与自身复合IP地址的地址前缀匹配的节点关联的规则桶中。步骤41中,4艮据复合IP地址的地址前缀构建的二叉树和与地址前缀匹配的节点联接的规则桶组成决策树。所述二元逻辑运算将256比特的源IP地址和目的IP地址转换为128比特的复合IP地址,所述源IP地址、目的IP地址、复合IP地址分别表示为源IP地址前缀/前缀长度、目的IP地址前缀/前缀长度、复合IP地址前缀/前缀长度。如图5所示,所述二元逻辑运算的输入为一条规则的源IP地址前缀及其前缀长度、目的IP地址前缀及其前缀长度,经转换后,输出为复合IP地址前缀及其前缀长度,实现了地址前缀转换和前缀长度转换。所述地址前缀转换,源IP地址前缀和目的IP地址前缀通过与(and)、或(or)或者异或(nor)转换方法,将一条规则的源IP地址的地址前缀和目的IP地址的地址前缀转换为复合IP地址的地址前缀。复合IP地址的前缀长度,为源IP地址前缀长度和目的IP地址前缀长度中的较小者,即复合IP的前缀长度=min(源IP地址前缀长度,目的IP地址前缀长度}。在原始规则集中,采用相同的二元逻辑转换方法,可将不同规则对应的源IP地址和目的IP地址转化为同一个复合IP地址;采用不同的二元逻辑运算转换方法对同一个规则集进行转换,会得到不同的结果。本发明所述的IPv6报文分类方法采用启发式规则选4^转换方法,所述启发式规则包括转换前后地址数量比最小原则和转换为同一复合IP地址的源IP地址、目的IP地址转换数量最大原则所述转换前后地址数量比,为转换前规则集中规则个数与转换后复合IP地址的个lt之比;转换为同一个复合IP地址的源IP地址、目的IP地址数量最大,即Max{xIx为转换为同一个复合IP地址的地址二元组的lt量)。本发明方法在对接收的当前数据包进行报文分类时包括步骤42、提取当前数据包的三元组,记录原始规则集中的默认规则;当前数据包源IP地址和目的IP地址由所述二元逻辑运算转换为复合IP地址。IPv6规则集中,采用三元组表示规则。三元组中,源IP地址和目的IP地址以无类域间路由形式表示,均为128比特;流标签以范围(0x00000,xfffff)的形式表示。步骤43、步骤42所述复合IP地址按比特依次与二叉树节点对应的比特匹配,如果在与所述复合IP地址匹配的所有节点关联的规则桶中查找到了与当前数据包源IP地址、目的IP地址和流标签匹配的*见则,则选择查找到的优先级最高的规则作为当前数据包报文分类规则;否则,将所述默认规则作为当前数据包的报文分类规则。决策树的查找速度取决于二叉树的高度,为了优化查找性能,本发明采取了如下优化措施,在步骤41和42之间,进一步包括x、将二叉树同一路径上不联接规则桶的两个以上串接单枝节点压缩为一个压缩节点,被压缩的单枝节点之间形成一条压缩路径,压缩节点存储压缩路径对应比特。决策树的查找性能还取决于规则桶中的规则查找性能,为了进一步优化查找性能,步骤x之后还包括y、在联接规则桶的节点上标注优先级标签;所述优先级标签的内容为联接规则桶的节点的子树所含规则的最高优先级。本发明方法中,通过步骤41构造了决策树,并通过步骤x和步骤y对决策树进行优化之后,可以通过步骤42和43在决策树中查找到的规则桶中的规则或所述默认规则作为当前数据包报文分类规则,所述默认规则的优先级为最低。如图6所示,步骤43包括如下步骤431、将所述默认规则作为记录规则;步骤42中由所述二元逻辑运算转换得到的复合IP地址的最高比特作为当前比特,二叉树根节点作为当前节点;如果当前比特的下一比特为0时,该下一比特对应当前节点的左孩子节点,否则,该下一比特对应当前节点的右孩子节点;记录最高比特到当前比特的位数为p,p为自然数;设置增量t,t为非负整数;432、检测当前节点是否为压缩节点,如果是,执行步骤433;如果不是,执行步骤434;433、二叉树中压缩节点的压缩路径长度为s,s为大于等于2的自然数;设置t=s;提取所述复合IP地址中第(p+l)比特至第(p+s)比特之间的S个比特,分别与当前节点对应的比特进行匹配,如果匹配,则执行步骤435;如果不匹配,执行步骤438;434、设置t=0,当前比特与当前节点对应的比特进行匹配,如果匹配,执行步骤435;如果不匹配,执行步骤438;435、检测当前节点是否有关联的规则桶,如果没有,执行步骤438;如果有,执行步骤436;436、查找规则桶中是否存在与当前数据包的三元组匹配的规则,如果存在,将查找到的优先级较高的规则作为记录规则;检测记录规则的优先级是否比当前节点优先级标签上标注的优先级高,如果是,则执行步骤438;否则,执行步骤437;437、检测当前节点是否为叶子节点,如果是,则执行步骤438;如果不是,则选择第(p+t+l)比特作为当前比特,当前节点的与第(p+t+l)比特对应的孩子节点作为当前节点,同时设置p,+t+l,返回步骤432;438、返回记录关见则。实际应用中,原始规则集中的规则可能发生变化,这些变化必须尽快反映到决策树中,以使路由器等设备对数据包做出正确的处理操作。原始规则集中规则的增加、删除和修改导致了的决策树规则桶中规则的增加、删除和修改。决策树规则桶中规则的增加、删除和修改过程将在实施例中进行描述,此处不再赘述。实施例路由器中的原始规则集,如表2所示,每条规则的源IP地址和目标IP地址经二元逻辑运算转换后,得到的复合IP地址组成的集合如表3所示<table>complextableseeoriginaldocumentpage18</column></row><table><table>complextableseeoriginaldocumentpage19</column></row><table>表2<table>complextableseeoriginaldocumentpage19</column></row><table>表3其中,第1、2、3号规则对应的源IP地址、目的IP地址转换为同一个复合IP地址,第4、5号规则对应的IP地址、目的IP地址转换为同一个复合IP地址;转换前后地址lt量比为1.6,同一复合IP地址对应的源IP地址、目的IP地址最大数量为3。这里,所述二元逻辑运算采用或(or)转换方法。根据表3中的每个复合IP地址的地址前缀构造决策树,如图7所示,每个规则桶均标明了所含规则的规则号;经优化处理的决策树如图8所示,实心节点为压缩节点,其它节点为非压缩节点,带有规则的节点均标明了优先级;压缩节点中存储有被压缩的单枝节点对应的比特,其它非压缩节点对应的比特都存储在节点路径上。路由器收到一个数据包后,提取当前数据包中的源IP地址、目的IP地址和流标签组成三元组,所述二元逻辑运算将数据包的源IP地址和目的IP地址转换为复合IP地址,并记录由数据包三元组组成的默认规则。本实施例中,路由器从当前数据包中提取的源IP地址为2001:6500::/23,目的IP地址为2001::/18,流标签为0x01010:0x01100,它们构成了三元组,由三元组组成的默认规则如表4所示。源IP地址和目的IP地址由所述二元逻辑运算通过或运算方法转换得到的复合IP地址为2001::/18。<table>complextableseeoriginaldocumentpage20</column></row><table>表4实际应用中,由三元组组成的规则还附加有流ID和优先级两个字段,如表5所示<table>complextableseeoriginaldocumentpage20</column></row><table>表5其中,优先级字段的内容为本规则的优先级。在决策树中查找与复合IP地址2001::/18相匹配的规则,查找过程包括在二叉树上的查找和规则桶中的查找。复合IP地址2001::/18按比特依次与二叉树节点进行匹配,按照步骤431-438,查找到与该复合IP地址的地址前缀匹配的节点,在该节点联接的规则桶中查找到1、2、3号三条规则,但这三条规则与当前数据包的源IP地址2001:6500::/23、目的IP地址2001::/18、流标签0x01010:0x01100均不匹配,继续按照步骤431~438进行节点匹配和规则查找,再次匹配到的节点所关联的规则桶中包含6号规则,该规则与当前数据包的源IP地址2001:6500::/23、目的IP地址2001::/18、流标签0x01010:0x01100也不匹配,而所述再次匹配到的节点已经为叶子节点,所以,结束查找过程,将当前彰:据包三元组组成的默认规则作为报文分类规则。实际应用中,如果在与该复合IP地址的地址前缀匹配的所有节点关联的规则桶中查找到了一个与当前数据包三元组匹配的规则,则以该规则作为寺艮文分类规则;如果查找到了多个与当前数据包三元组匹配的规则,则以优先级最高的规则作为报文分类规则。本发明实施例中,在规则桶中的查找可以使用线性查找法、二分查找法,但不局限于这两种方法。实际应用中,当需要在原始规则集中增加规则时,该方法如图9所示,包括91、4寺增加^L则的源IP地址和目的IP地址由所述二元逻辑运算转换为复合IP地址,复合IP地址的地址前缀为n位,n为自然数;所述复合IP地址前缀最高比特为当前比特位,二叉树根节点为当前节点;假设待增加规则如表4所示,那么,源IP地址2001:6500::/23和目的IP地址2001::/18由二元逻辑运算转换得到的复合IP地址为2001::/18,地址前缀为18位,地址前缀的最高比特为O。92、记录最高比特到当前比特的位数为p,l=<p<=128,且p为自然数;当p〈n时,检测当前节点是否为压缩节点,如果是,执行步骤93;如果不是,执行步骤95;当p-n时,执行步骤97;当p〉n时,执行步骤99;93、二叉树中压缩节点对应的压缩路径长度为s,s为大于等于2的自然数;提取所述复合IP地址中第(p+l)比特至第(p+s)比特之间的s个比特,分别与当前节点对应的比特匹配,如果匹配,则选择第(p+s+l)比特作为当前比特,当前节点的与第(p+s+l)比特对应的孩子节点作为当前节点,返回步骤92;如果不匹配,则执行步骤94;94、压缩路径上第一个不匹配的比特对应第(p+q)比特,q为小于等于S的自然数;分解压缩路径,在压缩路径上第一个不匹配的比特对应的节点与前一个节点之间,依次插入分别与所述复合IP地址的第(p+q)比特至第n比特匹配的所有节点,之后,执行步骤97;95、当前比特与当前节点对应的比特匹配,如果匹配,则选择当前比特的下一比特作为当前比特,当前节点的与该下一比特对应的孩子节点作为当前节点,返回步骤u2;如果不匹配,则执行步骤96;96、在前一个匹配的节点与当前节点之间,依次插入与所述复合IP地址第p~n比净争匹酉己的戶斤有节点;97、建立一个与第n比特匹配的节点关联的规则桶,将待增加规则添加新建的规则桶中;98、更新二叉树上关联规则桶的节点的优先级标签;99、退出增加MJ'J的流程。经过步骤9198后,待增加规则被添加到图7中包含有1、2、3号规则的规则桶中。对决策树进行优化处理后,如果需要在原始规则集中增加规则,本发明方法进一步包括在决策树规则桶中删除规则的步骤,如图10所示,所述在决策树规则桶中删除规则的步骤包括101、待删除规.则的源IP地址、目的IP地址由所述二元逻辑运算转换为复合IP地址;所述复合IP地址的最高比特为当前比特位,二叉树的根节点为当前节点;如果当前比特的下一比特为0时,该下一比特对应当前节点的左孩子节点,否则,该下一比特对应当前节点的右孩子节点;记录最高比特到当前比特的位数为p,p为自然数;设置增量t,t为非负整数;102、检测当前节点是否为压缩节点,如果是,执行步骤103;如果不是,执行步骤104;103、二叉树中压缩节点的压缩路径长度为s,s为大于等于2的自然数;-没置t=s;提取所述复合IP地址中第(p+l)比特至第(p+s)比特之间的s个比特,分别与当前节点对应的比特进行匹配,如果匹配,则4丸行步骤105;如果不匹配,则执行步骤110;104、i殳置t=0,当前比特与当前节点对应的比特进4亍匹配,如果匹配,执行步骤105;如果不匹配,则执行步骤110;105、检测当前节点是否有规则桶,如果有,则执行步骤106;如果没有,则选择第(p+t+l)比特作为当前比特,当前节点的与第(p+t+l)比特对应的孩子节点作为当前节点,同时设置p二p+t+l,返回步骤102;106、检测与当前节点关联的规则桶中是否存在待删除规则,如果存在,执行步骤107;如果不存在,则选择第(p+t+l)比特作为当前比特,当前节点的与第(p+t+l)比特对应的孩子节点作为当前节点,同时设置p=p+t+l,返回步骤102;107、从与当前节点关联的规则桶中删除待删除规则;检测规则桶中是否还有规则,如果有,则执行步骤109;否则,执行步骤108;108、删除规则桶,并检测当前节点是否为叶子节点,如果是,则删除与当前节点;如不是,且有两个孩子节点,则执行步骤109;如果不是,且是单孩子节点,则删除与当前节点,合并当前节点的父亲节点和孩子节点之间的3各径;109、更新二叉树上关联规则桶的节点的优先级标签;110、退出规则删除流程。对决策树进行优化处理后,如果需要在原始规则集中修改规则,本发明方法进一步包括在决策树规则桶中修改规则的步骤kl、待修改规则的源IP地址、目的IP地址由所述二元逻辑运算转换为复合IP地址;所述复合IP地址的最高比特作为当前比特位,二叉树的根节点作为当前节点;如果当前比特的下一比特为0时,该下一比特对应当前节点的左孩子节点,否则,该下一比特对应当前节点的右孩子节点;记录最高比特到当前比特的位数为p,p为自然数;设置增量t,t为非负整数;k2、检测当前节点是否为压缩节点,如果是,执行步骤k3;如果不是,执行步骤k4;k3、二叉树中压缩节点的压缩路径长度为s,s为大于等于2的自然数;设置t=s;提取所述复合IP地址中第(p+l)比特至第(p+s)比特之间的s个比特,分别与当前节点对应的比特进行匹配,如果匹配,则执行步骤k5;如果不匹配,则退出规则修改流程;k4、设置t=0,当前比特与当前节点对应的比特进行匹配,如果匹配,执行步骤k5;如果不匹配,则退出规则修改流程;k5、检测当前节点是否有关联的规则桶,如果没有,则选择第(p+t+l)比特作为当前比特,当前节点的与第(p+t+l)比特对应的孩子节点作为当前节点,同时设置p二p+t+l,返回步骤k2;如果有,则执行步骤k6;k6、检测与当前节点关联的规则桶中是否存在待修改规则,如果存在,执行步骤k7;如果不存在,则选择第(p+t+l)比特作为当前比特,当前节点的与第(p+t+l)比特对应的孩子节点作为当前节点,同时设置p=p+t+l,返回步骤k2;k7、修改与当前节点关联的规则桶中的待修改规则;k8、更新二叉树上关联规则桶的节点的优先级标签,退出规则修改流程。本发明涉及一种实现IPv6报文分类的设备,如图ll所示,它包括构造单元l、处理单元2和分类单元3;其中,构造单元1,用于将原始规则集中每个规则均表示为由源IP地址、目的IP地址和流标签组成的三元组,将原始规则集中每个规则的源IP地址和目的IP地址由二元逻辑运算转换为复合IP地址,根据复合IP地址的地址前缀构建二叉树,地址前缀的一个比特对应二叉树的一个节点,地址前缀的每个比特分别存储在对应节点的路径上,与地址前缀匹配的节点联接一规则桶;将每个规则添加到与自身复合IP地址的地址前缀匹配的节点关联的规则桶中。如图12所示,构造单元1包括表征模块11、转换模块12,构建模块13、设置模块14和添加模块15;其中,表征模块11用于将原始规则集中每个M^则均表示为源IP地址、目的IP地址和流标签组成的三元组;转换才莫块12用于将原始规则集中每个规则的源IP地址和目的IP地址由二元逻辑运算转换为复合IP地址;构建模块13用于根据转换模块12转换得到的复合IP地址的地址前缀构建二叉树,地址前缀的一个比特对应二叉树的一个节点,地址前缀的每个比特分别存储在对应节点的路径上;设置模块14用于在与地址前缀匹配的节点上设置一个关联的规则桶;添加模块15用于将原始规则集中的每个规则添加到与自身复合IP地址的地址前缀匹配的节点关联的规则桶中。实际应用中,为了便于对决策树进行优化,构造单元还包括压缩模块和标注模块;其中,压缩模块用于将二叉树同一路径上不联接规则桶的两个或两个以上串接单枝节点压缩为一个压缩节点;标注单元用于在联接规则桶的节点上标注自身子树所含规则的最高优先级的优先级标签。实际应用中,当原始规则集中增加规则时,为了对决策树规则桶中的规则进行相应的增加,构造单元还包括增加模块,用于将待增加规则的复合IP地址按比特与二叉树节点对应的比特进行匹配,如果找到与待增加-见则的复合IP地址的地址前缀匹配的节点,则将待增加规则添加到与待增加规则的复合IP地址的地址前缀匹配的节点关联的规则桶中;否则,在二叉树中添加节点,使得二叉树中存在与待增加规则的复合IP地址的地址前缀匹配的节点,并设置一个与待增加失见则的复合IP地址的地址前缀匹配的节点关联的规则桶,将待增加规则添加到新建规则桶中。在原始规则集中删除规则时,为了对决策树规则桶中的规则进行相应的删除,构造单元还包括删除模块,用于将待删除规则的复合IP地址按比特与二叉树节点对应的比特匹配,如果找到与待删除规则的复合IP地址的地址前缀匹配的节点,则将与待删除规则的复合IP地址的地址前缀匹配的节点关联的规则桶中的待删除规则删除;否则,退出规则删除流程。在原始规则集中修改规则时,为了对决策树规则桶中的规则进行相应的修改,构造单元还包括修改模块,用于将待修改规则的复合IP地址按比特与二叉树节点对应的比特匹配,如果找到与待修改规则的复合IP地址的地址前缀匹配的节点,则修改与待修改规则的复合IP地址的地址前缀匹配的节点关联的规则桶中的待修改规则;否则,退出规则修改流程。针对增加模块、删除模块和修改模块,构造单元还包括更新模块,用于更新二叉树上关联规则桶的节点的优先级标签。处理单元2,用于提取当前数据包的三元组,记录原始规则集中的默认规则;当前数据包源IP地址和目的IP地址由所述二元逻辑运算转换为复合IP地址。如图13所示,所述处理单元2包括提取模块21、转换模块22和存储模块23;其中,提取模块21用于提取当前数据包的三元组;转换模块22用于将提取模块21提取的源IP地址和目的IP地址通过所述二元逻辑运算转换为复合IP地址;存储模块23用于记录原始规则集中的默认规则。分类单元3,用于将处理单元2转换得到的复合IP地址按比特依次与二叉初于节点对应的比特匹配,如果在与所述复合IP;也址的地址前缀匹配的所有节点关联的规则桶中查找到了与当前数据包三元组匹配的规则,则选择查找到的优先级最高的规则作为当前数据包报文分类规则;否则,将所述默认规则作为当前数据包的报文分类规则。如图14所示,所述分类单元3包括匹配模块31、查找模块32和决策模块33;其中,匹配模块31用于将处理单元2的转换模块22转换得到的复合IP地址按比特依次与二叉树节点对应的比特匹配,查找与所述处理单元2的转换模块22转换得到的复合IP地址的地址前缀匹配的所有节点;查找模块32用于在处理单元2的转换模块22转换得到的复合IP地址的地址前缀匹配的所有节点关联的规则桶中,查找与当前数据包三元组匹配的规则;决策模块33,用于在查找模块32查找到与当前数据包三元组匹配的规则时,在查找到的所有规则中选择优先级最高的规则作为当前数据包报文分类规则;否则,将所述默认规则作为当前数据包的报文分类规则。综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。权利要求1、一种实现IPv6报文分类的方法,其特征在于,原始规则集中每个规则均表示为由源IP地址、目的IP地址和流标签组成的三元组,将每个规则源IP地址和目的IP地址由二元逻辑运算转换为复合IP地址,根据复合IP地址的地址前缀构建二叉树,地址前缀的一个比特对应二叉树的一个节点,地址前缀的每个比特分别存储在对应节点的路径上,与地址前缀匹配的节点联接一规则桶;将每个规则添加到与自身复合IP地址的地址前缀匹配的节点关联的规则桶中;在对当前数据包进行报文分类时该方法包括a、提取当前数据包的三元组,记录原始规则集中的默认规则;当前数据包源IP地址和目的IP地址由所述二元逻辑运算转换为复合IP地址;b、步骤a所述复合IP地址按比特依次与二叉树节点对应的比特进行匹配,如果在与所述复合IP地址匹配的所有节点关联的规则桶中查找到了与当前数据包三元组匹配的规则,则选择查找到的优先级最高的规则作为当前数据包报文分类规则;否则,将所述默认规则作为当前数据包的报文分类规则。2、根据权利要求1所述的方法,其特征在于,在所述将每个规则添加到与自身复合IP地址的地址前缀匹配的节点关联的规则桶中之后,步骤a之前,所迷方法进一步包括x、将二叉树同一路径上不联接规则桶的两个或两个以上串接单枝节点压缩为一个压缩节点,被压缩的单枝节点之间形成一条压缩路径,压缩节点存储压缩鴻4圣对应比特。3、根据权利要求2所述的方法,其特征在于,步骤x之后进一步包括y、在联接规则桶的节点上标注优先级标签,所述优先级标签的内容为联接规则桶的节点的子树所含规则的最高优先级。4、根据权利要求3所述的方法,其特征在于,步骤b包括bl、将所述默认规则作为记录规则;步骤a中由所述二元逻辑运算转换得到的复合IP地址的最高比特作为当前比特,二叉树根节点作为当前节点;如果当前比特的下一比特为0时,该下一比特对应当前节点的左孩子节点,否则,该下一比特对应当前节点的右孩子节点;记录最高比特到当前比特的位数为p,p为自然数;设置增量t,t为非负整数;b2、检测当前节点是否为压缩节点,如果是,执行步骤b3;如果不是,执行步骤b4;b3、二叉树中压缩节点的压缩路径长度为s,s为大于等于2的自然数;设置t=s;提取所述复合IP地址中第p+l比特至第p+s比特之间的s个比特,分别与当前节点存储的对应比特进行匹配,如果匹配,则执行步骤b5;如果不匹配,执行步骤b8;b4、设置ti,当前比特与当前节点对应的比特进行匹配,如果匹配,执行步骤b5;如果不匹配,执行步骤b8;b5、检测当前节点是否有关联的规则桶,如果没有,执行步骤b8;如果有,执行步骤b6;b6、查找规则桶中是否存在与当前数据包的三元组匹配的规则,如果存在,将查找到的优先级较高的规则作为记录规则;检测记录规则的优先级是否比当前节点优先级标签上标注的优先级高,如果是,则执行步骤b8;否则,执行步骤b7;b7、检测当前节点是否为叶子节点,如果是,则执行步骤b8;如果不是,则选择第p+t+l比特作为当前比特,当前节点的与第p+t+l比特对应的孩子节点作为当前节点,同时设置p二p+t+l,返回步骤b2;b8、返回记录MJ'J。5、根据权利要求3所述的方法,其特征在于,步骤y之后,当需要在原始规则集中增加规则时,该方法进一步包括ul、待增加规则的源IP地址和目的IP地址由所述二元逻辑运算转换为复合IP地址,复合IP地址的地址前缀为n位,n为自然数;所述复合IP地址最高比特为当前比特位,二叉树根节点为当前节点;u2、记录最高比特到当前比特的位数为p,p为自然lt;当p〈n时,检测当前节点是否为压缩节点,如果是,执行步骤u3;如果不是,执行步骤u5;当p-n时,则将待增加规则添加到与复合IP地址第n比特匹配的节点关联的规则桶中,更新二叉树上关联规则桶的节点的优先级标签,退出增加规则的流程;当p>n时,则退出增加规则的流程;u3、二叉树中压缩节点对应的压缩路径长度为s,s为大于等于2的自然数;提取所述复合IP地址中第p+1比特至第p+s比特之间的s个比特,分别与当前节点对应的比特进行匹配,如果匹配,则选冲奪第p+s+l比特作为当前比特,当前节点的与第p+s+l比特对应的孩子节点作为当前节点,返回步骤u2;如果不匹配,则执行步骤u4;u4、压缩路径上第一个不匹配的比特对应所述复合IP地址的第p+q比特,q为小于等于s的自然数;分解压缩路径,在压缩路径上第一个不匹配的比特对应的节点与其前一个节点之间,依次插入与所述复合IP地址的第p+q比特至第n比特匹配的所有节点,之后,执行步骤u7;u5、当前比特与当前节点对应的比特进行匹配,如果匹配,则选择当前比特的下一比特作为当前t.匕特,当前节点的与该下一比特对应的孩子节点作为当前节点,返回步骤u2;如果不匹配,则执行步骤u6;u6、在前一个匹配的节点与当前节点之间,依次插入与所述复合IP地址第p~n比特匹配的所有节点;u7、建立一个与复合IP地址第n比特匹配的节点关联的规则桶,将待增加规则添加新建的规则桶中,更新二叉树上关联规则桶的节点的优先级标签之后,退出增加规则的流程。6、根据权利要求3所述的方法,其特征在于,步骤y之后,当需要在原始规则集中删除规则时,所述方法进一步包括vl、待删除规则的源IP地址、目的IP地址由所述二元逻辑运算转换为复合IP地址;所述复合IP地址的最高比特为当前比特位,二叉树的根节点为当前节点;如果当前比特的下一比特为0时,该下一比特对应当前节点的左孩子节点,否则,该下一比特对应当前节点的右孩子节点;记录最高比特到当前比特的位数为p,p为自然数;设置增量t,t为非负整数;v2、检测当前节点是否为压缩节点,如果是,执行步骤v3;如果不是,执行步骤v4;v3、二叉树中压缩节点的压缩路径长度为s,s为大于等于2的自然数;设置t=s;提取所述复合IP地址中第p+1比特至第p+s比特之间的s个比特,分别与当前节点存储的对应比特进行匹配,如果匹配,则执行步骤V5;如果不匹配,则退出规则删除流程;v4、i殳置t=0,当前比特与当前节点对应的比特进^f亍匹配,如果匹配,执行步骤v5;如果不匹配,则退出规则删除流程;v5、检测与当前节点是否有规则桶,如果有,则执行步骤v6;如果没有,则选择第p+t+l比特作为当前比特,当前节点的与第p+t+l比特对应的孩子节点作为当前节点,同时设置p二p+t+l,返回步骤v2;v6、检测与当前节点关联的规则桶中是否存在待删除规则,如果存在,执行步骤v7;如果不存在,则选择第p+t+l比特作为当前比特,当前节点的与第p+t+l比特对应的孩子节点作为当前节点,同时设置p二p+t+l,返回步骤v2;v7、从与当前节点关联的规则桶中删除待删除规则,并检测规则桶中是否还有规则,如果有,则执行步骤v9;否则,执行步骤v8;v8、删除规则桶,并检测当前节点是否为叶子节点,如果是,则删除当前节点;如果不是,且有两个孩子节点,则执行步骤v9;如果不是,且是单孩子节点,则删除当前节点,合并当前节点的父亲节点和孩子节点之间的路径;v9、更新二叉树上关联规则桶的节点的优先级标签,退出规则删除流程。7、根据权利要求3所述的方法,其特征在于,步骤y之后,当需要在原始规则集中修改规则时,所述方法进一步包括kl、待修改规则的源IP地址、目的IP地址由所述二元逻辑运算转换为复合IP地址;所述复合IP地址的最高比特作为当前比特位,二叉树的根节点作为当前节点;如果当前比特的下一比特为0时,该下一比特对应当前节点的左孩子节点,否则,该下一比特对应当前节点的右孩子节点;记录最高比特到当前比特的位数为p,p为自然数;设置增量t,t为非负整数;k2、检测当前节点是否为压缩节点,如果是,执行步骤k3;如果不是,执行步骤k4;k3、二叉树中压缩节点的压缩路径长度为s,s为大于等于2的自然数;设置t=s;提取所述复合IP地址中第p+l比特至第p+s比特之间的s个比特,分別与当前节点对应的比特进4亍匹配,如果匹配,则扭j亍步鸟聚k5;如果不匹配,则退出规则修改流程;k4、i殳置t=0,当前比特与当前节点对应的比特进4亍匹配,如果匹配,执行步骤k5;如果不匹配,则退出规则修改流程;k5、检测当前节点是否有关联的规则桶,如果没有,则选择第p+t+l比特作为当前比特,当前节点的与第p+t+l比特对应的孩子节点作为当前节点,同时设置p^p+t+l,返回步骤k2;如果有,则执行步骤k6;k6、检测与当前节点关联的规则桶中是否存在待修改规则,如果存在,执行步骤k7;如果不存在,则选择第p+t+l比特作为当前比特,当前节点的与第p+t+l比特对应的孩子节点作为当前节点,同时设置p-p+t+l,返回步骤k2;k7、修改与当前节点关联的规则桶中的待修改规则;k8、更新二叉树上关联规则桶的节点的优先级标签,退出规则修改流程。8、根据权利要求1至7所述的方法,其特征在于所述二元逻辑运算采用或、与或者异或方法。9、一种实现IPv6报文分类的设备,其特征在于,所述设备包括构造单元、处理单元和分类单元;其中,所述构造单元,用于将原始规则集中每个规则均表示为由源IP地址、目的IP地址和流标签组成的三元组,每个失见则的源IP地址和目的IP地址由二元逻辑运算转换为复合IP地址,根据复合IP地址的地址前缀构建二叉树,地址前缀的一个比特对应二叉树的一个节点,地址前缀的每个比特分别存储在对应节点的路径上,与地址前缀匹配的节点联接一规则桶;将每个规则添加到与自身复合IP地址的地址前缀匹配的节点关联的规则桶中;所述处理单元,用于提取当前数据包的三元组,记录原始规则集中的默认失见则;当前凄t据包源IP地址和目的IP地址由所述二元逻辑运算转换为复合IP地址;所述分类单元,用于将处理单元转换得到的复合IP地址按比特依次与二叉杉于节点匹配,如果在与所述复合IP地址的地址前缀匹配的所有节点关联的规则桶中查找到了与当前数据包三元组匹配的规则,则选择查找到的优先级最高的规则作为当前数据包报文分类规则;否则,将所述默认规则作为当前数据包的报文分类规则。10、根据权利要求9所述的设备,其特征在于,所述构造单元包括表征模块、转换模块、构建模块、设置模块和添加模块;其中,所述表征模块,用于将原始规则集中每个规则均表示为由源IP地址、目的IP地址和流标签组成的三元组纟各式;所述转换模块,用于将原始规则集中每个规则的源IP地址和目的IP地址由二元逻辑运算转换为复合IP地址;所述构建模块,用于根据转换模块转换得到的复合IP地址的地址前缀构建二叉树,地址前缀的一个比特对应二叉树的一个节点,地址前缀的每个比特分别存储在对应节点的路径上;所述设置模块,用于在与地址前缀匹配的节点上设置一个关联的规则桶;所述添加模块,用于将原始规则集中的每个规则添加到与自身复合ip地址的地址前缀匹配的节点关联的规则桶中。11、根据权利要求10所述的设备,其特征在于,所述构造单元还包括压缩模块和标注模块;其中,所述压缩模块,用于将所述构建模块构建的二叉树同一路径上不联接规则桶的两个或两个以上串接单枝节点压缩为一个压缩节点;所述标注模块,用于在联接规则桶的节点上标注自身子树所含规则的最高优先级的优先级标签。12、根据权利要求11所述的设备,其特征在于,所述处理单元包括提取模块、转换模块和存储模块;其中,所述提取模块,用于提取当前数据包的三元组;所述转换模块,用于将提取模块提取的源ip地址和目的ip地址通过所述二元逻辑运算转换为复合ip地址;所述存储模块,用于记录原始规则集中当前数据包的默认规则。13、根据权利要求12所述的设备,其特征在于,所述分类单元包括匹配模块、查找模块和决策模块;其中,所述匹配模块,所述处理单元的转换模块转换得到的复合ip地址按比特依次与二叉树节点对应的比特匹配,查找与所述处理单元的转换模块转换得到的复合ip地址的地址前缀匹配的所有节点;所述查找模块,用于在所述处理单元的转换模块转换得到的复合ip地址的地址前缀匹配的所有节点关联的规则桶中,查找与当前数据包三元组匹配的mj'j;所述决策模块,如果查找模块查找到与当前数据包三元组匹配的规则,则在查找到的所有规则中选择优先级最高的规则作为当前数据包报文分类规则;否则,将所述默认规则作为当前数据包报文分类规则。14、根据权利要求11所述的设备,其特征在于,在原始规则集中增加规则时,所述构造单元的转换模块将待增加规则的源IP地址和目的IP地址转换为复合IP地址,所述构造单元还包括增加模块所述增加模块,用于将待增加规则的复合IP地址的地址前缀按比特与二叉树节点对应的比特匹配,如果找到与待增加规则的复合IP地址的地址前缀匹配的节点,则将待增加规则添加到与待增加规则的复合IP地址的地址前缀匹配的节点关联的规则桶中;否则,在二叉树中添加节点,使得二叉树中存在与待增加规则的复合IP地址的地址前缀匹配的节点,并设置一个与待增加规则的复合IP地址的地址前缀匹配的节点关联的规则桶,将待增加规则添加到新建规则桶中。15、根据权利要求11所述的设备,其特征在于,原始规则集中发生规则删除时,所述构造单元的转换模块将待删除规则的源IP地址和目的IP地址转换为复合IP地址,所述构造单元还包括删除模块所述删除模块,用于将待删除规则的复合IP地址的地址前缀按比特与二叉树节点对应的比特匹配,如果找到与待删除规则的复合IP地址的地址前缀匹配的节点,则将与待删除规则的复合IP地址的地址前缀匹配的节点关联的规则桶中的待删除规则删除。16、根据权利要求11所述的设备,其特征在于,原始规则集中的规则发生修改时,所述构造单元的转换模块将待修改规则的源IP地址和目的IP地址转换为复合IP地址,所述构造单元还包括修改模块所述修改模块,用于将待修改规则的复合IP地址的地址前缀按比特与二叉树节点对应的比特匹配,如果找到与待修改规则的复合IP地址的地址前缀匹配的节点,则修改与待修改规则的复合IP地址的地址前缀匹配的节点关联的规则桶中的待修改规则。17、根据权利要求14、15或16所述的设备,其特征在于,所述构造单元还包括更新^f莫块;所述更新模块,用于更新二叉树上关联规则桶的节点的优先级标签。全文摘要本发明涉及一种实现IPv6报文分类的方法及设备,原始规则集中规则均由源IP地址、目的IP地址和流标签组成的三元组表示,根据每个规则复合IP地址的地址前缀构造决策树;所述方法包括如下步骤提取当前数据包的三元组,并记录原始规则集中的默认规则;当前数据包源IP地址和目的IP地址由二元逻辑运算转换为复合IP地址;根据当前数据包复合IP地址按比特依次与对应节点相应比特匹配的结果,确定当前数据包报文分类规则为优先级最高的匹配规则或默认规则。所述设备包括构造单元、处理单元和分类单元。本发明查找速度快、占用内存少、扩展性好且更新简单,可广泛应用于网络互联通信领域。文档编号H04L29/06GK101345707SQ20081011787公开日2009年1月14日申请日期2008年8月6日优先权日2008年8月6日发明者琼孙,张圣亮,凡李,赵国锋,严马,黄小红申请人:北京邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1