CN103516550B - 一种面向大规模包分类规则集的规则冲突检测方法及系统 - Google Patents
一种面向大规模包分类规则集的规则冲突检测方法及系统 Download PDFInfo
- Publication number
- CN103516550B CN103516550B CN201310455753.7A CN201310455753A CN103516550B CN 103516550 B CN103516550 B CN 103516550B CN 201310455753 A CN201310455753 A CN 201310455753A CN 103516550 B CN103516550 B CN 103516550B
- Authority
- CN
- China
- Prior art keywords
- rule
- dip
- prefix
- sip
- conflict
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 33
- 238000012217 deletion Methods 0.000 claims abstract description 23
- 230000037430 deletion Effects 0.000 claims abstract description 23
- 238000005192 partition Methods 0.000 claims abstract description 10
- 238000012545 processing Methods 0.000 claims description 21
- 238000012360 testing method Methods 0.000 claims description 5
- 238000000034 method Methods 0.000 abstract description 17
- 238000005516 engineering process Methods 0.000 abstract description 6
- 230000007812 deficiency Effects 0.000 abstract 1
- 239000013598 vector Substances 0.000 description 15
- 230000008569 process Effects 0.000 description 10
- 230000006872 improvement Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种面向大规模包分类规则集的规则冲突检测方法及系统,所述方法包括:步骤1,接收并解析规则;步骤2,将解析后的规则划分为全前缀规则、非全前缀规则和无前缀规则;步骤3,采用源IP-目的IP双层哈希表HSIP-DIP或目的IP哈希表H*-DIP组织全前缀规则集,并对应在HSIP-DIP或H*-DIP中进行规则的增加、删除或查询;步骤4,采用源IP-目的IP双维Tire树TSIP-TDIP组织非全前缀规则集,并在TSIP-TDIP中进行规则的增加、删除或查询;步骤5,采用链表L*-*组织无前缀规则集,并在L*-*中进行规则的增加、删除或查询;步骤6,遍历HSIP-DIP、H*-DIP、TSIP-TDIP和L*-*中的每一个规则作为被检规则,检测与被检规则冲突的所有规则。本发明解决了现在技术中规则冲突算法存在的不足。
Description
技术领域
本发明涉及网络包分类领域,特别是涉及一种面向大规模包分类规则集的规则冲突检测方法及系统。
背景技术
随着互联网架构的演进以及互联网应用的发展,基于单一IP地址域的传统路由技术已经不能满足网络业务和网络安全的需求。包分类技术,因其能够依据网络数据包包头中的多个字段(通常是源ip地址,目的ip地址,源端口,目的端口,协议号)对网络流量进行细粒度的分类,已在路由器、防火墙、安全网关等各类网络安全设备中得到了广泛的应用。
包分类技术是以包分类引擎中配置规则集为基础而实现的。随着分类需求的不断增加,规则从单维发展为多维,规则集中的规则数目越来越多,并且规则间的关系越来越复杂,这将不可避免的导致规则冲突的情况出现。当进行包分类时,如果一个数据包同时与两条(或多条)规则匹配,而这些规则所规定的处理动作不一样,则说明这两条(或多条)规则冲突。由于规则冲突,网络安全设备将以出乎意料、违背网络管理员初衷的方式处理网络流量,引起管理混乱。所以,对包分类规则集进行规则冲突检测是非常有意义的。
规则冲突检测是指,查找出规则集中所有的冲突规则对,或者在规则集中查找出与某条规则相冲突的所有规则。对于规则冲突检测算法,国内外已有相关研究。目前已有的规则冲突检测算法有:顺序检测算法、ASBV(AggregatedSBitVectors)算法和DBBV(DoubleBinaryBitVectors)算法。
一、顺序检测算法
将被检测规则与规则集中的每条规则进行比较,以判断其是否冲突。显然,顺序检测算法检测具有O(n2)的时间复杂度,当规则数目较大时,速度较慢。
二、ASBV算法
ASBV算法采用分治思想和位向量技术,先找出每一维的冲突规则集,再求交集,获得最终的冲突规则集。ASBV算法为规则的每一维建立一颗Trie树,Trie树的每个节点,关联两个长度等于规则个数的位向量。这两个位向量的每一位,都对应了一条规则。对于第一个位向量,若某条规则的相应维的前缀,与节点对应的前缀相等,则位向量中该规则对应的bit置1。对于第二个位向量,其值等于左右子节点的第二个位向量的并集。叶子节点的两个位向量相等。当进行冲突检测时,ASBV算法先并行地找出每维上,与被测规则相冲突的规则集合,然后再对这些集合求交集。在每一维的处理过程中,根据被测规则相应的分量前缀,在Trie中进行搜索。每访问一个节点,ASBV算法对节点的第一个位向量求并集。当搜索到规则的分量前缀时,对节点的第二个位向量求并集。ASBV算法有两个缺点:(1)ASBV算法只支持前缀表示的规则;(2)位向量运算过多。(3)空间复杂度太大。
三、DBBV算法
DBBV算法同样采用分治思想和位向量技术,但通过将每一维的分量转化为用范围表示,并使用平衡二叉树数据结构,减少了位向量的运算。但当进行增量更新时,DBBV算法不但要修改二叉树,而且还要修改大量的位向量,所以不适合规则更新频率较快的应用。
从ASBV算法和DBBV算法的思想可以看出,其主要是关注于如何提升冲突检测速度,而对实时增量更新的支持不好。当增加或删除某一规则时,因位向量的长度、与规则的对应关系和值都需要改变,所以需要重构位向量。而对于DBBV算法,增加或删除规则时,对平衡二叉树也需要调整,所以增量更新规则的效率较低。而对于一些应用,如UTM系统,因其支持各安全模块的协调联动,其规则是在不断增加和删除的;并且随着网络规模的不断增大,分类粒度越来越细化,规则数目从千级上升为百万级,这些算法的空间复杂度无法满足要求。
发明内容
本发明所要解决的技术问题是提供一种面向大规模包分类规则集的规则冲突检测方法及系统,用于解决现在技术中规则冲突算法存在的不足。
本发明解决上述技术问题的技术方案如下:一种面向大规模包分类规则集的规则冲突检测方法,包括:
步骤1,创建远程规则接收服务,接收并解析规则;
步骤2,将解析后的规则按源IP和目的IP的前缀情况,划分为全前缀规则、非全前缀规则和无前缀规则;
步骤3,采用源IP-目的IP双层哈希表HSIP-DIP或目的IP哈希表H*-DIP组织全前缀规则集,并对应在HSIP-DIP或H*-DIP中进行规则的增加、删除或查询;
步骤4,采用源IP-目的IP双维Tire树TSIP-TDIP组织非全前缀规则集,并在TSIP-TDIP中进行规则的增加、删除或查询;
步骤5,采用链表L*-*组织无前缀规则集,并在L*-*中进行规则的增加、删除或查询;
步骤6,遍历全前缀规则集、非全前缀规则集和无前缀规则集中的每一个规则作为被检规则,检测与被检规则冲突的所有规则。
在上述技术方案的基础上,本发明还可以做如下改进。
进一步,所述步骤2具体包括:当解析后的规则的源IP和目的IP的前缀长度均为32时,或者当源IP和目的IP中的一个的前缀长度为0,另一个前缀长度为32时,将该规则划分为全前缀规则;当解析后的规则的源IP或目的IP的前缀长度在1-31之间时,将该规则划分为非全前缀规则;当解析后的规则的源IP和目的IP的前缀长度均为0时,将该规则划分为无前缀规则。
进一步,所述步骤3具体包括:若全前缀规则的源IP和目的IP的前缀长度均为32,或源IP前缀长度为32,目的IP的前缀长度为0,采用源IP-目的IP双层哈希表HSIP-DIP组织全前缀规则集,并在HSIP-DIP中进行规则的增加、删除或查询;若全前缀规则的源IP的前缀长度为0,且目的IP的前缀长度为32,采用目的IP双层哈希表H*-DIP组织全前缀规则集,并在H*-DIP中进行规则的增加、删除或查询。
进一步,所述HSIP-DIP分为位于上层的一个源IP哈希表HSIP和位于源IP哈希表HSIP下的多个目的IP哈希表HDIP,且所述在HSIP-DIP中进行规则的增加具体包括:
步骤3A1,通过待增加规则的源IP在HSIP中查找是否存在与该源IP对应的节点,若不存在则在HSIP中添加相应节点,创建该节点下的目的IP哈希表HDIP,再执行步骤3A2,若存在则直接得到该节点下的目的IP哈希表HDIP,并执行步骤3A2;
步骤3A2,通过待增加规则的目的IP在HDIP中查找是否存在与该目的IP对应的节点,若不存在则在HDIP中添加相应节点,并创建该节点下的规则集合SSIP-DIP,再执行步骤3A3,若存在则直接获得该节点下的规则集合SSIP-DIP,并执行步骤3A3;
步骤3A3,在SSIP-DIP中查找是否有待增加规则存在,若不存在,则将待增加规则加入到SSIP-DIP中,否则结束整个流程。
进一步,所述在H*-DIP中进行规则的增加具体包括:
步骤3B1,通过待增加规则的目的IP在H*-DIP中查找是否存在与该目的IP对应的节点,若不存在则在H*-DIP添加相应节点,并创建该节点下的规则集S*-DIP,再执行步骤3B2,否则直接获得该节点下的规则集S*-DIP,并执行步骤3B2;
步骤3B2,在S*-DIP中查找是否有待增加规则存在,若不存在,则将待增加规则加入到S*-DIP中,否则结束整个流程。
进一步,所述TSIP-TDIP分为源IP树TSIP和目的IP树TDIP,所述在TSIP-TDIP中进行规则的增加具体包括:
步骤4A1,通过待增加规则的源IP在TSIP中查找是否存在与该源IP对应的节点,若不存在则在TSIP中添加相应节点,并创建该节点下的规则集SSIP,再执行步骤4A2,否则直接获得该节点下的规则集SSIP,并执行步骤4A2;
步骤4A2,在SSIP中查找是否有待增加规则存在,若不存在,则将待增加规则加入到SSIP中,否则结束整个流程。
进一步,所述TSIP-TDIP分为源IP树TSIP和目的IP树TDIP,所述在TSIP-TDIP中进行规则的增加具体包括:
步骤4B1,通过待增加规则的目的IP在TDIP中查找是否存在与该目的IP对应的节点,若不存在则在TDIP中添加相应节点,并创建该节点下的规则集SDIP,再执行步骤4B2,否则直接获得该节点下的规则集SDIP,并执行步骤4B2;
步骤4B2,在SDIP中查找是否有待增加规则存在,若不存在,则将待增加规则加入到SDIP中,否则结束整个流程。
进一步,所述步骤5中在L*-*中进行规则的增加具体包括:在L*-*中遍历所有规则,查找是否存在待增加规则,若存在,则规则增加失败;若不存在,则待增加规则加入到L*-*中。
进一步,所述步骤6中遍历全前缀规则集的每一个规则作为被检规则时,包括遍历HSIP-DIP中的规则作为被检规则和遍历H*-DIP中的规则作为被检规则。
进一步,当遍历HSIP-DIP中的规则作为被检规则时,步骤6具体包括:
步骤6A1,遍历被检规则所处节点的规则集SSIP-DIP中的所有规则,找出冲突规则;
步骤6A2,用被检规则的目的IP,在H*-DIP哈希表中查找到与该目的IP相对应的节点,若存在,则遍历该节点的规则集,找出冲突规则,否则执行步骤6A3;
步骤6A3,找出被检规则在非全前缀规则集和无前缀规则集中的冲突规则。
进一步,所述步骤6A3中找出被检规则在非全前缀规则集中的冲突规则具体包括:
步骤A,用被检规则的源IP在TSIP树上做最长前缀匹配,找到与源IP相对应的节点,再对该节点和其所有父节点上的规则集做并集;
步骤B,用被检规则的目的IP在TDIP树上做最长前缀匹配,找到与目的IP相对应的节点,对该节点及其所有父节点上的规则集做并集;
步骤C,取步骤A和步骤B获得的两个并集的交集,遍历该交集中的规则,找出冲突规则。
进一步,当遍历H*-DIP中的规则作为被检规则时,步骤6具体包括:
步骤6B1,遍历被检规则所处节点的规则集S*-DIP中的所有规则,找出冲突规则;
步骤6B2,找出被检规则在非全前缀规则集和无前缀规则集中的冲突规则。
进一步,所述步骤6B2中找出被检规则在非全前缀规则集中的冲突规则具体包括:用被检测规则的目的IP在TDIP树上做最长前缀匹配,找到与目的IP相对应的节点,对该节点及其所有父节点上的规则集做并集,遍历该并集中的规则,找出冲突规则。
进一步,当遍历TSIP-TDIP中的规则作为被检规则时,步骤6具体包括:
步骤6C1,对被检规则R在TSIP树上所在的节点及所有父节点和子树上的规则集做并集;
步骤6C2,通过被检规则的目的IP在TDIP树上做最长前缀匹配,找到与目的IP相对应的节点,对该节点及其所有父节点和子树上的规则集做并集;
步骤6C3,对步骤6C1和步骤6C2的两个并集做交集;
步骤6C4,遍历步骤6C3获得的交集中的规则,找出冲突规则;
步骤6C5,遍历L*-*中的所有规则,找出所有冲突规则。
进一步,当遍历L*-*的规则作为被检规则时,步骤6具体包括:采用顺序检测算法遍历无前缀规则集中的所有规则,找出所有冲突规则。
本发明的技术方案还包括一种面向大规模包分类规则集的规则冲突检测系统,包括:
规则接收服务接口,用于创建远程规则接收服务,接收并解析规则;
规则预处理模块,其连接所述规则接收服务接口,用于将解析后的规则按源IP和目的IP的前缀情况,划分为全前缀规则、非全前缀规则和无前缀规则;
全前缀规则集处理模块,其连接所述规则预处理模块,用于采用源IP-目的IP双层哈希表HSIP-DIP或目的IP哈希表H*-DIP组织全前缀规则集,并对应在HSIP-DIP或H*-DIP中进行规则的增加、删除或查询;
非全前缀规则集处理模块,其连接所述规则预处理模块,用于采用源IP-目的IP双维Tire树TSIP-TDIP组织非全前缀规则集,并在TSIP-TDIP中进行规则的增加、删除或查询;
无前缀规则集处理模块,其连接所述规则预处理模块,用于采用链表L*-*组织无前缀规则集,并在L*-*中进行规则的增加、删除或查询;
冲突检测模块,其与所述全前缀规则集处理模块、非全前缀规则集处理模块和无前缀规则集处理模块均相连,用于遍历HSIP-DIP、H*-DIP、TSIP-TDIP和L*-*中的每一个规则作为被检规则,检测与被检规则冲突的所有规则。
本发明的有益效果是:本发明公开了一种面向大规模包分类规则集的规则冲突检测方法及系统,其积极效果体现在以下方面:1)冲突检测速度较快。对于全前缀规则,不用复杂的数据结构而是采用哈希表,将复杂的冲突检测转化成一到两次精确匹配,降低时间复杂度;对于非全前缀规则,采用trie树结构组织规则,将相互冲突的规则组织在同一路径和子树中,减少遍历的次数,降低时间复杂度;2)可支持百万级的规则集。通过将规则按照前缀情况进行划分,减少了占规则集比例较大的全前缀规则对trie树的空间增加;3)支持实时增量更新,所述三种数据结构都具有线性时间复杂度的增量更新;4)能在规则冲突检测的过程中添加规则。
附图说明
图1为本发明所述规则冲突检测方法的流程示意图;
图2为本发明实施例中向HSIP-DIP中添加规则的流程示意图;
图3为本发明实施例中向H*-DIP中添加规则的流程示意图;
图4为本发明实施例中向TSIP-DIP中添加规则的流程示意图;
图5为本发明实施例中遍历HSIP-DIP中的规则作为被检规则的处理流程图;
图6为本发明实施例中遍历H*-DIP中的规则作为被检规则的处理流程图;
图7为本发明实施例中遍历遍历TSIP中的规则作为被检规则的处理流程图;
图8为本发明所述规则冲突检测系统的结构示意图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
根据规则源IP分量和目的IP分量的前缀情况将规则划分为三种:全前缀规则,非全前缀规则和无前缀规则。当解析后的规则的源IP和目的IP的前缀长度均为32时,或者当源IP和目的IP中的一个的前缀长度为0,另一个前缀长度为32时,将该规则划分为全前缀规则;当解析后的规则的源IP或目的IP的前缀长度在1-31之间时,将该规则划分为非全前缀规则;当解析后的规则的源IP和目的IP的前缀长度均为0时,将该规则划分为无前缀规则。本实施例中用源IP-目的IP双层哈希表HSIP-DIP存储和哈希表H*-DIP存储全前缀规则,若全前缀规则的源IP和目的IP的前缀长度均为32,或源IP前缀长度为32,目的IP的前缀长度为0,采用源IP-目的IP双层哈希表HSIP-DIP;若全前缀规则的源IP的前缀长度为0,且目的IP的前缀长度为32,采用目的IP双层哈希表H*-DIP;用双维Trie树TSIP-DIP存储非全前缀规则;用链表L*-*存储无前缀规则。
以上四个表的数据结构如下描述:
(1)HSIP-DIP是一个源IP-目的IP双层哈希表,分为位于上层的一个源IP哈希表HSIP和位于源IP哈希表HSIP下的多个目的IP哈希表HDIP。源IP哈希表HSIP以源IP为key,每个节点维护一个以目的IP为key的目的IP哈希表HDIP。HSIP中的每个节点Ndip,维护一个规则集合SSIP-DIP,其中的规则R为<sip,dip,SPORT,DPORT,PROTO>形式。根据现有技术的研究,规则集中具有相同sip和dip的规则的数目不大于20个,所以集合SSIP-DIP用链表存储。
(2)H*-DIP是一个以目的IP为key的哈希表,H*-DIP中的每个节点Ndip维护一个规则集合S*-dip。S*-dip用链表存储,其中的规则R为<*,dip,SPORT,DPORT,PROTO>形式,*为通配符,表示源IP可以是任意值,下文中涉及的通配符均类似于此。
(3)TSIP-TDIP是两个Trie树,TSIP是用规则的源IP地址建立的Trie树,TDIP是用规则的目的地址建立的Trie树。对于TSIP树上的节点Nsip,维护一个源IP分量等于sip的规则集合;对于TDIP树上的节点Ndip,维护一个目的IP分量等于dip的规则集合。
(4)L*-*是一个链表表,其中的规则R为<*,*,SPORT,DPORT,PROTO>形式。
如图1所示,本实施例涉及一种面向大规模包分类规则集的规则冲突检测方法,包括:
步骤1,创建远程规则接收服务,接收并解析规则;
步骤2,将解析后的规则按源IP和目的IP的前缀情况,划分为全前缀规则、非全前缀规则和无前缀规则;
步骤3,采用源IP-目的IP双层哈希表HSIP-DIP或目的IP哈希表H*-DIP组织全前缀规则集,并对应在HSIP-DIP或H*-DIP中进行规则的增加、删除或查询;
步骤4,采用源IP-目的IP双维Tire树TSIP-TDIP组织非全前缀规则集,并在TSIP-TDIP中进行规则的增加、删除或查询;
步骤5,采用链表L*-*组织无前缀规则集,并在L*-*中进行规则的增加、删除或查询;
步骤6,遍历全前缀规则集、非全前缀规则集和无前缀规则集中的每一个规则作为被检规则,检测与被检规则冲突的所有规则。
可知,主要包括有增加规则和检测冲突规则两部分。
一、增加规则
下面以一个待增加规则R=<sip,dip,sport,dport,proto,op>为例说明如何进行规则的增加。
(一)如图2所示,在HSIP-DIP中进行规则的增加具体包括:
步骤3A1,通过待增加规则的源IP在HSIP中查找是否存在与该源IP对应的节点Nsip,若Nsip不存在则在HSIP中添加相应节点Nsip,并创建节点Nsip下的目的IP哈希表HDIP,再执行步骤3A2,若存在则直接获得Nsip下的目的IP哈希表HDIP,并执行步骤3A2;
步骤3A2,通过待增加规则的目的IP在HDIP中查找是否存在与该目的IP对应的节点Ndip,若Ndip不存在则在HDIP中添加相应节点Ndip,并创建目的IP对应的节点Ndip下的规则集合SSIP-DIP,再执行步骤3A3,若存在则直接获得Ndip下的规则集合SSIP-DIP,并执行步骤3A3;
步骤3A3,在SSIP-DIP中通过比较剩余四元组<sport,dport,proto,op>的值来遍历查找规则R是否存在,若不存在,则将待增加规则R加入到SSIP-DIP中,否则结束整个流程。
(二)如图3所示,在H*-DIP中进行规则的增加具体包括:
步骤3B1,通过待增加规则的目的IP在H*-DIP中查找是否存在与该目的IP对应的节点Ndip,若Ndip不存在则在H*-DIP添加相应节点Ndip,并创建节点Ndip下的规则集S*-DIP,再执行步骤3B2,否则直接获得节点Ndip下的规则集S*-DIP,并执行步骤3B2;
步骤3B2,在S*-DIP中通过比较剩余四元组<sport,dport,proto,op>的值来遍历查找规则R是否存在,若不存在,则将待增加规则R加入到S*-DIP中,否则结束整个流程。
(三)如图4所示,在TSIP-TDIP中进行规则的增加有两种并行执行的方式,第一种方式如步骤4A1至步骤4A2所示,包括:
步骤4A1,通过待增加规则的源IP在TSIP中查找是否存在与该源IP对应的节点Nsip,若Nsip不存在则在TSIP中添加相应节点Nsip,并创建该节点Nsip下的规则集SSIP,再执行步骤4A2,否则直接获得该节点Nsip下的规则集SSIP,并执行步骤4A2;
步骤4A2,在SSIP中查找是否有待增加规则存在,若不存在,则将待增加规则加入到SSIP中,否则结束整个流程。
第二种方式如步骤4B1至步骤4B2所示,具体包括:
步骤4B1,通过待增加规则的目的IP在TDIP中查找是否存在与该目的IP对应的节点Ndip,若Ndip不存在则在TDIP中添加相应节点Ndip,并创建该节点Ndip下的规则集SDIP,再执行步骤4B2,否则直接获得该节点Ndip下的规则集SDIP,并执行步骤4B2;
步骤4B2,在SDIP中查找是否有待增加规则存在,若不存在,则将待增加规则加入到SDIP中,否则结束整个流程。
(四)在L*-*中进行规则的增加具体包括:在L*-*中遍历所有规则,查找是否存在待增加规则,若存在,则规则增加失败;若不存在,则待增加规则加入到L*-*中。
二、冲突规则检测
进行冲突检测的基本原理是:对于每一个被检规则R,都维护一个冲突规则集SC(R),每找到一个冲突规则Rc,将Rc加入到SC(R)中,并且将R加入到SC(Rc)中。
(一)如图5所示,遍历HSIP-DIP中的规则作为被检规则R=<sip,dip,sport,dport,proto,op>。
1)遍历所处节点的规则集SSIP-DIP中的所有规则,找出冲突规则,加入到Sc(R)中。
2)用被检规则的dip,在H*-DIP表中查找到相应节点Ndip,若Ndip不存在,则遍历该节点的规则集,找出冲突规则,加入到Sc(R)中。
3)找出被检规则在非全前缀规则集中的冲突规则:用sip在TSIP树上做最长前缀匹配,找到相应的节点Nsip’,再对Nsip’和其所有父节点上的规则集做并集,得到Sc(Rsip);用dip在TDIP树上做最长前缀匹配,找到相应的节点Ndip’,对Ndip’、所有父节点上的规则集做并集,得到Sc(Rdip);再对Sc(Rsip)和Sc(Rdip)做交集,得到Sc(Rsip-dip),遍历Sc(Rsip-dip)中的规则,找出冲突规则,加入到Sc(R)中。
4)遍历L*-*中的所有规则,找出所有冲突规则,加入到Sc(R)中。
(二)如图6所示,遍历H*-DIP中的规则作为被检规则R=<*,dip,sport,dport,proto,op>。
1)遍历所处节点的规则集S*-DIP中的所有规则,找出冲突规则,加入到Sc(R)中。
2)找出被检规则在非全前缀规则集中的冲突规则:用dip在TDIP树上做最长前缀匹配,找到相应的节点Ndip’,对Ndip’、所有父节点上的规则集做并集,得到Sc(Rdip),遍历Sc(Rdip)中的规则,找出冲突规则,加入到Sc(R)中。
3)遍历L*-*中的所有规则,找出所有冲突规则,加入到Sc(R)中。
(三)如图7所示,遍历TSIP树中的规则作为被检规则R=<sip,dip,sport,dport,proto,op>。
1)R在TSIP树上所在的节点为Nsip,对Nsip、其所有父节点和子树上的规则集做并集,得到Sc(Rsip)。若sip为*,则Sc(Rsip)为全集。
2)用dip在TDIP树上做最长前缀匹配,找到相应的节点Ndip。对Ndip、其所有父节点和子树上的规则集做并集,得到Sc(Rdip)。若dip为*,则Sc(Rdip)为全集。
3)对Sc(Rsip)和Sc(Rdip)做交集,得到Sc(Rsip-dip)。
4)遍历Sc(Rsip-dip)中的规则,找出冲突规则,加入到Sc(R)中。
5)遍历L*-*中的所有规则,找出所有冲突规则,加入到Sc(R)中。
(四)遍历L*-*中的规则作为被检规则R=(*,*,sport,dport,proto,op),采用顺序检测算法遍历无前缀规则集中的所有规则,找出所有冲突规则,加入到Sc(R)中。
(五)对于Sc(R)不为空的规则R,将Sc(R)写入报表文件中。
如图8所示,本实施例还提供了一种面向大规模包分类规则集的规则冲突检测系统,包括:
规则接收服务接口,用于创建远程规则接收服务,接收并解析规则;
规则预处理模块,其连接所述规则接收服务接口,用于将解析后的规则按源IP和目的IP的前缀情况,划分为全前缀规则、非全前缀规则和无前缀规则;
全前缀规则集处理模块,其连接所述规则预处理模块,用于采用源IP-目的IP双层哈希表HSIP-DIP或目的IP哈希表H*-DIP组织全前缀规则集,并对应在HSIP-DIP或H*-DIP中进行规则的增加、删除或查询;
非全前缀规则集处理模块,其连接所述规则预处理模块,用于采用源IP-目的IP双维Tire树TSIP-TDIP组织非全前缀规则集,并在TSIP-TDIP中进行规则的增加、删除或查询;
无前缀规则集处理模块,其连接所述规则预处理模块,用于采用链表L*-*组织无前缀规则集,并在L*-*中进行规则的增加、删除或查询;
冲突检测模块,其与所述全前缀规则集处理模块、非全前缀规则集处理模块和无前缀规则集处理模块均相连,用于遍历HSIP-DIP、H*-DIP、TSIP-TDIP和L*-*中的每一个规则作为被检规则,检测与被检规则冲突的所有规则。
各模块的功能实现方法及细节与上述的规则冲突检测方法相同。以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种面向大规模包分类规则集的规则冲突检测方法,其特征在于,包括:
步骤1,创建远程规则接收服务,接收并解析规则;
步骤2,将解析后的规则按源IP和目的IP的前缀情况,划分为全前缀规则、非全前缀规则和无前缀规则;
步骤3,采用源IP-目的IP双层哈希表HSIP-DIP或目的IP哈希表H*-DIP组织全前缀规则集,并对应在HSIP-DIP或H*-DIP中进行规则的增加、删除或查询;
步骤4,采用源IP-目的IP双维Tire树TSIP-TDIP组织非全前缀规则集,并在TSIP-TDIP中进行规则的增加、删除或查询;
步骤5,采用链表L*-*组织无前缀规则集,并在L*-*中进行规则的增加、删除或查询;
步骤6,遍历HSIP-DIP、H*-DIP、TSIP-TDIP和L*-*中的每一个规则作为被检规则,检测与被检规则冲突的所有规则。
2.根据权利要求1所述的规则冲突检测方法,其特征在于,所述步骤2具体包括:当解析后的规则的源IP和目的IP的前缀长度均为32时,或者当源IP和目的IP中的一个的前缀长度为0,另一个前缀长度为32时,将该规则划分为全前缀规则;当解析后的规则的源IP或目的IP的前缀长度在1-31之间时,将该规则划分为非全前缀规则;当解析后的规则的源IP和目的IP的前缀长度均为0时,将该规则划分为无前缀规则。
3.根据权利要求2所述的规则冲突检测方法,其特征在于,所述步骤3具体包括:若全前缀规则的源IP和目的IP的前缀长度均为32,或源IP前缀长度为32,目的IP的前缀长度为0,采用源IP-目的IP双层哈希表HSIP-DIP组织全前缀规则集,并在HSIP-DIP中进行规则的增加、删除或查询;若全前缀规则的源IP的前缀长度为0,且目的IP的前缀长度为32,采用目的IP哈希表H*-DIP组织全前缀规则集,并在H*-DIP中进行规则的增加、删除或查询。
4.根据权利要求1所述的规则冲突检测方法,其特征在于,当遍历HSIP-DIP中的规则作为被检规则时,步骤6具体包括:
步骤6A1,遍历被检规则所处节点的规则集SSIP-DIP中的所有规则,找出冲突规则;
步骤6A2,用被检规则的目的IP,在H*-DIP哈希表中查找到与该目的IP相对应的节点,若存在,则遍历该节点的规则集,找出冲突规则,否则执行步骤6A3;
步骤6A3,找出被检规则在非全前缀规则集和无前缀规则集中的冲突规则。
5.根据权利要求4所述的规则冲突检测方法,其特征在于,所述步骤6A3中找出被检规则在非全前缀规则集中的冲突规则具体包括:
步骤A,用被检规则的源IP在TSIP树上做最长前缀匹配,找到与源IP相对应的节点,再对该节点和其所有父节点上的规则集做并集;
步骤B,用被检规则的目的IP在TDIP树上做最长前缀匹配,找到与目的IP相对应的节点,对该节点及其所有父节点上的规则集做并集;
步骤C,取步骤A和步骤B获得的两个并集的交集,遍历该交集中的规则,找出冲突规则。
6.根据权利要求1所述的规则冲突检测方法,其特征在于,当遍历H*-DIP中的规则作为被检规则时,步骤6具体包括:
步骤6B1,遍历被检规则所处节点的规则集S*-DIP中的所有规则,找出冲突规则;
步骤6B2,找出被检规则在非全前缀规则集和无前缀规则集中的冲突规则。
7.根据根据权利要求6所述的规则冲突检测方法,其特征在于,所述步骤6B2中找出被检规则在非全前缀规则集中的冲突规则具体包括:用被检测规则的目的IP在TDIP树上做最长前缀匹配,找到与目的IP相对应的节点,对该节点及其所有父节点上的规则集做并集,遍历该并集中的规则,找出冲突规则。
8.根据权利要求1所述的规则冲突检测方法,其特征在于,当遍历TSIP-TDIP中的规则作为被检规则时,步骤6具体包括:
步骤6C1,对被检规则R在TSIP树上所在的节点及所有父节点和子树上的规则集做并集;
步骤6C2,通过被检规则的目的IP在TDIP树上做最长前缀匹配,找到与目的IP相对应的节点,对该节点及其所有父节点和子树上的规则集做并集;
步骤6C3,对步骤6C1和步骤6C2的两个并集做交集;
步骤6C4,遍历步骤6C3获得的交集中的规则,找出冲突规则;
步骤6C5,遍历L*-*中的所有规则,找出所有冲突规则。
9.根据权利要求1所述的规则冲突检测方法,其特征在于,当遍历L*-*的规则作为被检规则时,步骤6具体包括:采用顺序检测算法遍历无前缀规则集中的所有规则,找出所有冲突规则。
10.一种面向大规模包分类规则集的规则冲突检测系统,其特征在于,包括:
规则接收服务接口,用于创建远程规则接收服务,接收并解析规则;
规则预处理模块,其连接所述规则接收服务接口,用于将解析后的规则按源IP和目的IP的前缀情况,划分为全前缀规则、非全前缀规则和无前缀规则;
全前缀规则集处理模块,其连接所述规则预处理模块,用于采用源IP-目的IP双层哈希表HSIP-DIP或目的IP哈希表H*-DIP组织全前缀规则集,并对应在HSIP-DIP或H*-DIP中进行规则的增加、删除或查询;
非全前缀规则集处理模块,其连接所述规则预处理模块,用于采用源IP-目的IP双维Tire树TSIP-TDIP组织非全前缀规则集,并在TSIP-TDIP中进行规则的增加、删除或查询;
无前缀规则集处理模块,其连接所述规则预处理模块,用于采用链表L*-*组织无前缀规则集,并在L*-*中进行规则的增加、删除或查询;
冲突检测模块,其与所述全前缀规则集处理模块、非全前缀规则集处理模块和无前缀规则集处理模块均相连,用于遍历HSIP-DIP、H*-DIP、TSIP-TDIP和L*-*中的每一个规则作为被检规则,检测与被检规则冲突的所有规则。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310455753.7A CN103516550B (zh) | 2013-09-29 | 2013-09-29 | 一种面向大规模包分类规则集的规则冲突检测方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310455753.7A CN103516550B (zh) | 2013-09-29 | 2013-09-29 | 一种面向大规模包分类规则集的规则冲突检测方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103516550A CN103516550A (zh) | 2014-01-15 |
CN103516550B true CN103516550B (zh) | 2016-05-11 |
Family
ID=49898627
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310455753.7A Expired - Fee Related CN103516550B (zh) | 2013-09-29 | 2013-09-29 | 一种面向大规模包分类规则集的规则冲突检测方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103516550B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104104615B (zh) * | 2014-07-21 | 2017-07-07 | 华为技术有限公司 | 策略冲突解决方法以及装置 |
CN107196871B (zh) * | 2017-04-14 | 2020-04-28 | 同济大学 | 一种基于别名规约树的流规则冲突检测方法及系统 |
CN107888494B (zh) * | 2017-11-29 | 2020-06-26 | 湖南大学 | 一种基于社区发现的包分类方法及系统 |
CN110505187B (zh) * | 2018-05-18 | 2022-06-21 | 深信服科技股份有限公司 | 混合云中安全规则管理方法、系统、服务器及存储介质 |
CN111641729B (zh) * | 2019-05-23 | 2021-03-30 | 北京航空航天大学 | 一种基于前缀树的域间路径标识前缀冲突检测与分解方法 |
CN110474929B (zh) * | 2019-09-27 | 2021-06-22 | 新华三信息安全技术有限公司 | 一种冗余规则检测方法及装置 |
CN111131015B (zh) * | 2019-12-27 | 2021-09-03 | 芯启源(南京)半导体科技有限公司 | 一种基于PC-Trie动态更新路由的方法 |
CN111181974A (zh) * | 2019-12-31 | 2020-05-19 | 国家计算机网络与信息安全管理中心 | 一种基于网络处理器实现流量预处理的装置和方法 |
CN113127861A (zh) * | 2019-12-31 | 2021-07-16 | 深信服科技股份有限公司 | 一种规则命中检测方法、装置、电子设备及可读存储介质 |
CN111291058B (zh) * | 2020-03-17 | 2023-06-16 | 芯启源(南京)半导体科技有限公司 | 一种基于分层pc-trie结构的LPM规则存储方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2415340A (en) * | 2004-06-15 | 2005-12-21 | Sun Microsystems Inc | Resolving conflicts between rule sets for which priority is expressed by ordered precedence and longest prefix |
CN101232444A (zh) * | 2008-01-22 | 2008-07-30 | 杭州华三通信技术有限公司 | 哈希冲突解决方法、装置及具有该装置的交换设备 |
CN102945249A (zh) * | 2012-10-10 | 2013-02-27 | 北京邮电大学 | 一种策略规则匹配查询树生成方法、匹配方法及装置 |
-
2013
- 2013-09-29 CN CN201310455753.7A patent/CN103516550B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2415340A (en) * | 2004-06-15 | 2005-12-21 | Sun Microsystems Inc | Resolving conflicts between rule sets for which priority is expressed by ordered precedence and longest prefix |
CN101232444A (zh) * | 2008-01-22 | 2008-07-30 | 杭州华三通信技术有限公司 | 哈希冲突解决方法、装置及具有该装置的交换设备 |
CN102945249A (zh) * | 2012-10-10 | 2013-02-27 | 北京邮电大学 | 一种策略规则匹配查询树生成方法、匹配方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103516550A (zh) | 2014-01-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103516550B (zh) | 一种面向大规模包分类规则集的规则冲突检测方法及系统 | |
US9774707B2 (en) | Efficient packet classification for dynamic containers | |
CN109376532A (zh) | 基于elk日志采集分析的电力网络安全监测方法及系统 | |
US11805191B2 (en) | Efficient packet classification for dynamic containers | |
CN102882973B (zh) | 基于p2p技术的分布式负载均衡系统和方法 | |
CN104184664B (zh) | 路由转发表项生成方法及装置 | |
WO2016050158A1 (en) | Learning a mac address in vxlan | |
CN104270384A (zh) | 防火墙策略冗余检测方法及装置 | |
JP5685653B2 (ja) | Natサブトポロジ管理サーバ | |
WO2016023438A1 (zh) | 网络拓扑发现方法和设备 | |
CN103795644A (zh) | 策略表表项配置方法、装置及系统 | |
US20160294638A1 (en) | Route display method and route display apparatus | |
US11038889B2 (en) | System and method for migrating existing access control list policies to intent based policies and vice versa | |
CN106453091B (zh) | 路由器转发平面的等价路由管理方法和装置 | |
CN109766337A (zh) | 树形结构数据的存储方法、电子设备、存储介质及系统 | |
CN107995015B (zh) | 获取twamp端到端检测路径的方法和装置 | |
CN104219113B (zh) | 显示和分析多播分布拓扑图的方法 | |
WO2016045513A1 (zh) | 基于内容的WInternet管道通信协议路由算法 | |
Jingjing et al. | The deployment of routing protocols in distributed control plane of SDN | |
CN105630838B (zh) | 一种数据替换方法及系统 | |
CN109688126A (zh) | 一种数据处理方法、网络设备及计算机可读存储介质 | |
Liu et al. | Optimal cloud storage problem in the distributed cloud data centers by the discrete PSO algorithm | |
WO2015187200A1 (en) | Efficient packet classification for dynamic containers | |
CN103220223B (zh) | 网络数据流分类方法和系统 | |
CN109256774A (zh) | 一种基于电压等级的电网子图划分方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160511 |