一种网包分类的方法及装置与流程

文档序号:14253021阅读:259来源:国知局
一种网包分类的方法及装置与流程

本发明涉及计算机领域,尤其涉及一种网包分类的方法及装置。



背景技术:

随着互联网络的飞速发展,网包分类方法在网络传输、网络安全以及网络监测方面发挥着越来越重要的作用。在路由器中,网包分类被用来实现异常包的丢弃和网包传输速率的控制;网包分类在防火墙中实现包的过滤;在服务质量(qualityofservice,qos)中实现把包映射到不同的服务;在虚拟局域网(virtualprivatenetwork,vpns)中,每个vpns都需要一个网包分类器。网包分类速度的快慢直接决定了网络处理和传输数据的效率,从而影响网络的整体性能。

网包分类,就是根据网络上传输的数据包的包头,按照一定的规则进行分类。网包通过其包头信息与分类器(也称为规则集)通过一定的算法进行匹配并执行相应的操作。以网包五元组为例,规则集中的每一条规则都包含了源网络协议(internetprotocol,ip)地址、目的ip地址、源端口号、目的端口号以及协议类型五元组,以及匹配之后对网包执行的动作。随着互联网功能需求不断的增加,需要网包匹配的字段数量或元组数量越来越多,匹配的规模和范围也越来越大,这就要求网包匹配的速度只有更快才能满足网络性能的需求。所以设计一种可以加速目前网包分类方法的技术显得尤为重要。



技术实现要素:

本发明提供一种网包分类的方法及装置,网包匹配的速度快。

第一方面,提供了一种网包分类的方法,规则集中的规则包含目的ip地址,所述方法包括:根据所述规则集中每项规则包含的目的ip地址,将所述规则集划分为多个子规则集;当将网包与所述规则集中的规则进行匹配时,先根据所述网包的目的ip地址将所述网包与所述多个子规则集中的第一子规则集匹配,然后再将所述网包与所述第一子规则集中的第一规则相匹配。

第二方面,提供了一种网包分类的装置,规则集中的规则包含目的ip地址,所述装置包括:划分模块,用于根据所述规则集中每项规则包含的目的ip地址,将所述规则集划分为多个子规则集;匹配模块,用于当将网包与所述规则集中的规则进行匹配时,先根据所述网包的目的ip地址将所述网包与所述划分模块划分的多个子规则集中的第一子规则集匹配,然后再将所述网包与所述第一子规则集中的第一规则相匹配。

第三方面,提供了一种计算机存储介质,用于储存为上述方法所用的计算机软件指令,其包含用于执行上述第一方面所设计的程序。

第四方面,提供了一种计算机程序产品,其包含指令,当所述程序被计算机所执行时,该指令使得计算机执行上述第一方面方法设计中所执行的功能。

本发明实施例中,根据所述规则集中每项规则包含的目的ip地址,将所述规则集划分为多个子规则集;当将网包与所述规则集中的规则进行匹配时,先根据所述网包的目的ip地址将所述网包与所述多个子规则集中的第一子规则集匹配,然后再将所述网包与所述第一子规则集中的第一规则相匹配。由上可见,在网包的目的ip地址已经确定的情况下,网包更容易在子规则集中匹配到合适的规则,从而提高网包分类的速度。

附图说明

图1为本发明实施例提供的一种网包分类的方法流程图;

图2为本发明实施例提供的一种多叉树示意图;

图3为本发明实施例提供的一种网包与规则集匹配的流程图;

图4为本发明实施例提供的一种网包分类的装置结构图。

具体实施方式

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为便于对本发明实施例的理解,下面将结合附图以具体实施例做进一步的解释说明,实施例并不构成对本发明实施例的限定。

图1为本发明实施例提供的一种网包分类的方法流程图,该方法用于将网包与规则集中的规则相匹配,从而实现网包分类,规则集中的规则包含目的ip地址,该方法的执行主体可以为任何具有网包分类需求的终端,例如,路由器,该方法包括:

步骤101,根据所述规则集中每项规则包含的目的ip地址,将所述规则集划分为多个子规则集。

在一个示例中,根据所述规则集中每项规则包含的目的ip地址的十进制前n位构建一个根节点为*,深度为n+1的多叉树;所述多叉树对应所述规则集,所述多叉树的每个叶子节点对应所述多个子规则集中的一个子规则集,其中,1≤n≤12。

步骤102,当将网包与所述规则集中的规则进行匹配时,先根据所述网包的目的ip地址将所述网包与所述多个子规则集中的第一子规则集匹配,然后再将所述网包与所述第一子规则集中的第一规则相匹配。

在一个示例中,当将网包与所述规则集中的规则进行匹配时,先根据所述网包的目的ip地址的十进制前n位将所述网包与所述多叉树中的第一叶子节点匹配,然后再将所述网包与所述第一叶子节点对应的第一子规则集中的第一规则相匹配。

在另一个示例中,根据所述网包的目的ip地址的十进制前n位将所述网包与所述多叉树中的第一叶子节点匹配;若匹配到所述第一叶子节点,则将所述网包与所述第一叶子节点对应的第一子规则集中的第一规则相匹配;若未匹配到所述第一叶子节点,则将所述网包的目的ip地址的十进制前n位转换成二进制地址,将所述二进制地址缩减一位再转换为十进制作为所述网包的目的ip地址的十进制前n位将所述网包与所述多叉树中的第一叶子节点匹配。

在另一个示例中,所述规则集中的规则还包含优先级,所述多叉树中每个叶子节点的优先级为该叶子节点对应的子规则集中的规则的最高优先级;先根据所述网包的目的ip地址的十进制前n位将所述网包与所述多叉树中的第一叶子节点匹配,然后再将所述网包与所述第一叶子节点对应的第一子规则集中的第一规则相匹配之后,将所述网包的目的ip地址的十进制前n位转换成二进制地址,将所述二进制地址缩减m位再转换为十进制作为所述网包的目的ip地址的十进制前n位,根据所述网包的目的ip地址的十进制前n位将所述网包与所述多叉树中的第二叶子节点匹配,若所述第一规则包含的优先级低于所述第二叶子节点的优先级,则将所述网包与所述第二叶子节点对应的第二子规则集中的第二规则相匹配,其中,1≤n≤12,1≤m。

本发明实施例中,根据所述规则集中每项规则包含的目的ip地址,将所述规则集划分为多个子规则集;当将网包与所述规则集中的规则进行匹配时,先根据所述网包的目的ip地址将所述网包与所述多个子规则集中的第一子规则集匹配,然后再将所述网包与所述第一子规则集中的第一规则相匹配。由上可见,在网包的目的ip地址已经确定的情况下,网包更容易在子规则集中匹配到合适的规则,从而提高网包分类的速度。

如图2所示是本发明实施例构建的多叉树示意图。多叉树的根节点为*,表示转发表中的默认地址,即0.0.0.0/0。按照目的ip地址的前n位(这里以n取6为例)将大的规则集划分为多个小的子规则集。具体实现步骤可以包括:

步骤1)对于规则r,其目的地址前n位中的第n位(n在最高位为1,最低位为n,初始时n=1),查找多叉树中是否存在该节点,它的父节点是第n-1位。(n=1时,该节点的父节点为根节点)。

若多叉树中存在该节点,执行步骤2)。

若多叉树中不存在该节点,则插入这个节点,执行步骤2)。

步骤2)判断当前节点是否为叶子节点,n等于n时,节点为叶子节点。

若n=n,执行步骤3)。

若n<n,n=n+1,执行步骤1)。

步骤3)在该叶子节点对应的子规则集内插入这条规则。

若规则中含有优先级,比较当前规则的优先级与叶子节点的优先级(叶子节点初始的优先级为-1)。当规则的优先级大于叶子节点的优先级时,更改叶子节点的优先级为规则的优先级,叶子节点的优先级表示该叶子节点下的子规则集中的规则存在的最大优先级。

取规则集中的下一条规则,执行步骤1),当规则集内不存在未插入多叉树中的规则时,执行步骤4)。

步骤4)根据分类策略为多叉树中的每一个叶子节点选择合适的分类算法。结束构建。

上述步骤1)中,以规则目的ip地址为112.054.001.100/24,n=6为例。选取112054构建多叉树,对于左边最高位1,n=1。对于右边最低位4,n=6。图1中突出显示的节点标示了112054在多叉树中构建的过程。

上述步骤4)中,分类策略的制定要根据实际情况而定。例如,以90%流量为分类流量,10%流量为更新流量,不考虑内存占用情况,可选分类算法为tss和partitionsort。其中tss,partitionsort皆为网包分类算法,tss的更新速度较快,partitionsort的分类速度较快。分类策略为:多叉树中90%的叶子节点选择使用partitionsort算法用于子规则集,其余10%的叶子节点选择使用tss算法,以此来平衡分类更新的综合性能。可以理解的是,这里仅为便于理解进行的举例,实际应用中,需按照实际情况,结合分类算法的特点,组合多种算法制定分类策略,以达到性能要求。

多叉树是根据规则集中每一条规则包含的目的ip地址的前n位来构建,目的ip地址前n位相同的规则会存储在同一个叶子节点中。如此便将规则集划分为多个子规则集,每个子规则集存储在同一个叶子节点中,对每个叶子节点依据分类策略选择合适的分类算法。其中树的深度,节点的个数,子规则集中使用的分类算法,分类策略,都可根据实际需求调节。从而实现一种灵活可控的网包分类算法。

如图3所示是本发明实施例提供的一种网包与规则集匹配的流程图。同样根据网包十进制目的ip地址前n位(记为add),在已构建的多叉树中查找对应的叶子节点,与叶子节点中的子规则集匹配。具体的实现步骤可以包括:

步骤1)将add,按照已构建的多叉树结构分类到某个叶子节点,若对应的叶子节点存在,则执行步骤3),否则执行步骤2)。

步骤2)将add转换成二进制形式,缩减一位前缀后,转换成新的add,执行步骤1)。

步骤3)在该叶子节点中,根据该叶子节点处的分类算法,将网包与该叶子节点下的子规则集进行匹配。

若规则中存在优先级,则执行步骤5)。

若规则中不存在优先级,则执行步骤4)。

步骤4)将网包按照最长前缀匹配的方式利用该叶子节点处的分类算法,与子规则集匹配。

若匹配成功,即在此子规则集中存在与该网包匹配的规则。则结束匹配,网包执行该规则对应的动作。

若匹配失败,即在此子规则集中不存在与该网包匹配的规则。则执行步骤2)。

步骤5)将网包按照有优先级的前缀匹配方式利用该叶子节点处的分类算法,与子规则集匹配。(即匹配该网包的规则,应是子规则集中所有可匹配该网包的规则中优先级最高的规则)

若匹配成功,即此子规则集中存在与该网包匹配的规则,且优先级是所有可匹配的规则中最高的。记录此规则,执行步骤6)。

若匹配失败,即在此子规则集中不存在与该网包匹配的规则。则执行步骤2)。

步骤6)将add按照步骤2)的方式缩减1位得到新的add,并查找多叉树中是否存在新的add对应的叶子节点。

若存在,比较当前网包匹配的规则的优先级p1与该叶子节点的优先级p2。

p1<p2,即叶子节点的优先级更高,则执行步骤5)。查找该叶子节点下的子规则集中是否存在可匹配的更高优先级的规则。

p1>p2,即网包匹配的规则的优先级更高,重复执行步骤6)。直至目的ip地址前n位已缩减到最后一位,停止查找,按照此时网包匹配的规则执行相应的动作。

若不存在,重复执行步骤6)。

上述步骤2)中,缩减的过程以n=6,网包前n位目的ip地址是112054为例,对前n位目的ip地址,每3位换算成8位二进制并从左向右拼接。112的二进制为01110000,054的二进制为00110110,拼接后112054即转换为0111000000110110,二进制缩减x位,即将后x位置0。那么,0111000000110110缩减1位仍为0111000000110110,0111000000110110缩减2位则为0111000000110100。这样做的目的是选择多叉树中与网包目的地址前n位最长匹配的叶子节点。

网包以这种方式匹配,在多叉树中分类到一个叶子节点中,该叶子节点对应的子规则集内规则的目的ip地址前n位与网包的目的ip地址前n位相同。这样预先进行了一次前缀匹配,使网包在子规则集内更容易匹配到合适的规则。即便网包在此子规则集内匹配不成功,也只需要进行前n位地址回溯,匹配那些与其回溯的地址相同的叶子节点下子规则集内是否有合适的规则,缩小了网包匹配的规则数量,从而缩短分类时间。

图4为本发明实施例提供的一种网包分类的装置结构图,该装置用于执行本发明实施例提供的网包分类的方法,规则集中的规则包含目的ip地址,该装置包括:

划分模块401,用于根据所述规则集中每项规则包含的目的ip地址,将所述规则集划分为多个子规则集;

匹配模块402,用于当将网包与所述规则集中的规则进行匹配时,先根据所述网包的目的ip地址将所述网包与所述划分模块401划分的多个子规则集中的第一子规则集匹配,然后再将所述网包与所述第一子规则集中的第一规则相匹配。

在一个示例中,所述划分模块401,具体用于根据所述规则集中每项规则包含的目的ip地址的十进制前n位构建一个根节点为*,深度为n+1的多叉树;所述多叉树对应所述规则集,所述多叉树的每个叶子节点对应所述多个子规则集中的一个子规则集。

在一个示例中,所述匹配模块402,具体用于当将网包与所述规则集中的规则进行匹配时,先根据所述网包的目的ip地址的十进制前n位将所述网包与所述划分模块401构建的多叉树中的第一叶子节点匹配,然后再将所述网包与所述第一叶子节点对应的第一子规则集中的第一规则相匹配。

在一个示例中,所述匹配模块402,具体用于根据所述网包的目的ip地址的十进制前n位将所述网包与所述多叉树中的第一叶子节点匹配;若匹配到所述第一叶子节点,则将所述网包与所述第一叶子节点对应的第一子规则集中的第一规则相匹配;若未匹配到所述第一叶子节点,则将所述网包的目的ip地址的十进制前n位转换成二进制地址,将所述二进制地址缩减一位再转换为十进制作为所述网包的目的ip地址的十进制前n位将所述网包与所述多叉树中的第一叶子节点匹配。

在另一个示例中,所述规则集中的规则还包含优先级,所述多叉树中每个叶子节点的优先级为该叶子节点对应的子规则集中的规则的最高优先级;所述匹配模块402在执行所述先根据所述网包的目的ip地址的十进制前n位将所述网包与所述多叉树中的第一叶子节点匹配,然后再将所述网包与所述第一叶子节点对应的第一子规则集中的第一规则相匹配之后,所述匹配模块402,还用于将所述网包的目的ip地址的十进制前n位转换成二进制地址,将所述二进制地址缩减m位再转换为十进制作为所述网包的目的ip地址的十进制前n位,根据所述网包的目的ip地址的十进制前n位将所述网包与所述多叉树中的第二叶子节点匹配,若所述第一规则包含的优先级低于所述第二叶子节点的优先级,则将所述网包与所述第二叶子节点对应的第二子规则集中的第二规则相匹配,其中,1≤n≤12,1≤m。

本发明实施例优点在于:一方面,本发明实施例的网包分类方法按照规则的目的ip地址构建多叉树,将规则集划分为多个子规则集,根据网包目的ip地址的前n位在多叉树中寻找合适的子规则集,调用现有的网包分类方法将网包在子规则集中匹配到相应的规则。在目的ip地址的前n位已经确定的情况下,网包更容易在子规则集中匹配到合适的规则,从而提高网包分类的速度。另一方面,匹配网包时,子规则集通过调用现有的算法来实现网包的匹配,可以根据应用的需求(对内存空间的需求、分类更新速度的需求),灵活组合现有的算法,形成分类策略,满足性能需求。

专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1