一种多域流规则匹配的实现方法

文档序号:7821608阅读:237来源:国知局
一种多域流规则匹配的实现方法
【专利摘要】本发明公开了一种多域流规则匹配的实现方法,涉及高速流分类【技术领域】。本发明首先根据IP报文数据流的五元组定义对每个元组都建立一个规则表,然后建立一个哈希快速流表,将匹配规则的所有信息添加到规则表中;再进行IP报文数据流匹配,如果找到,则执行相应的动作,否则查找规则表,进行掩码匹配查询。本发明通过改进查询速度快的前缀扩展Trie树,牺牲部分内存空间,采用数据压缩和哈希表相结合的方式,在保证查询速度的前提下,又不会因为大容量的规则库而发生内存爆炸。
【专利说明】一种多域流规则匹配的实现方法

【技术领域】
[0001]本发明涉及高速流分类技术、多域掩码匹配技术和多核处理器技术,特别是涉及一种支持多域流规则匹配的实现方法。

【背景技术】
[0002]随着网络带宽的增加以及更多多元化的网络业务分类,基于流的数据包匹配有着更加广泛的用途,许多网络关键技术,例如虚拟专用网(VPN)、基于安全存取列表控制的防火墙、QoS、网络入侵检测监控、网络地址转换、拥塞控制、资源预留、负载平衡、收集统计数据等都是以数据包分类匹配为基础的。万兆网络已经成为了核心网络,为使网络性能得到全面提高,对作为网络基础算法的数据包分类匹配算法的要求越来越高。而传统的包分类匹配算法已无法满足日益增长的网络流量业务需求,发展万兆网络数据流分类算法的良好解决方案越来越受到人们的重视。所以高效率、低冲突率和较小的时间/空间复杂度的数据流分类匹配算法成为应用于万兆网络管理、流量测量技术的一项非常关键的技术。
[0003]数据流分类匹配的问题可以视为在多位空间中一个点的定位问题:在k维空间中有N个d维的“长方体”(规则),问题是对于一个给定的点(数据流)如何找出该点位于哪个长方体中。现阶段研究的各种算法具有比较明显的优缺点,算法一旦扩展到大规模甚至超大规模的规则库,并且多域任意掩码匹配,很多分类算法因为方法复杂,规则限制较多,计算繁复,所以导致空间复杂度或者时间复杂度极高,甚至会发生内存爆炸,因此需求一种既要低的时间复杂度又要控制算法的存储占用问题,避免两方面的冲突,采用合理的算法,结合硬件设备优势,从而找到时间复杂度和空间复杂度的一个最佳结合点。


【发明内容】

[0004]本发明的目的在于提供一种支持多域流规则匹配的实现方法,通过改进查询速度快的前缀扩展Trie树,牺牲部分内存空间,采用数据压缩和哈希表相结合的方式,在保证查询速度的前提下,又不会因为大容量的规则库而发生内存爆炸。
[0005]本发明提供的一种多域流规则匹配的实现方法,该方法的步骤如下:
[0006]第一步,根据IP报文数据流的五元组定义(源/目的IP,源/目的端口,网络协议号),对每个元组都建立一个规则表,共五个规则表。
[0007]第二步,建立一个哈希快速流表,用于保存最近一段时间里匹配规则的IP报文数据流的五元组信息及该匹配规则的动作信息,用于IP报文数据流的精确快速匹配。
[0008]第三步,添加或更新一条匹配规则时,根据匹配规则中五元组信息在一种可均衡多表间查找性能的表选择策略下选择五张规则表中的其中一张规则表,将匹配规则的所有信息添加到该规则表中。
[0009]第四步,在进行IP报文数据流匹配时,先根据IP报文数据流的五元组在哈希快速流表中进行精确查找,如果找到,则执行相应的动作,否则查找规则表,进行掩码匹配查询。
[0010]第五步,规则表掩码匹配查询时,依次对五个规则表进行掩码匹配查询,根据一定的优先级策略分别找到最佳匹配规则,然后根据相同的策略再在这些最佳匹配规则中找出最终的匹配规则。
[0011]第六步,在规则表中查询到最终的匹配规则后,将IP报文数据流的五元组信息及该最终的匹配规则的动作信息添加到哈希快速流表中。
[0012]第七步,哈希快速流表支持老化机制。
[0013]第八步,删除一条规则时,采用和添加时一样的查找性能均衡策略找到对应的规则表进行删除。
[0014]第一步中所述的建立的五个规则表,规则表的组织结构与查询算法是一致的,也为实现多核芯片多表并行查找提供算法基础。该规则表结构的具体设计原则包括:
[0015](1.1)添加的每条规则只存在于五个规则表中的其中一个。
[0016](1.2)规则表分为两部分,第一部分为基于前缀扩展的深度为I并进行数据压缩的Trie树,因为树的深度为I,树可以简化为数组,数组大小根据前缀扩展策略及元组来确定;第二部分是辅助哈希表。
[0017](1.3)前缀扩展的策略:对于源/目的IP,将前缀长度为1-24的前缀统一扩展为24,前缀长度为25-32不进行前缀扩展;对于源/目的端口,如果是范围匹配,先将范围转换为前缀,将前缀长度都扩展为16。对于网络协议号,如果是范围匹配,先将范围转换为前缀,将前缀长度都扩展为8。
[0018](1.4)由于扩展后存在大量数据冗余,需要进行数据压缩。对于源/目的IP,方法是将扩展后的前缀分割为两部分:前20比特和后4比特,简称20+4,对后4比特代表的前缀(共16个)进行数据压缩后以前20比特的值作为数组的下标添加到数组中。对于源/目的端口类似,分割为12+4,对于网络协议号分割为4+4。
[0019](1.5)Trie树中规则对应的表项包括:规则的五元组掩码信息;系统为该规则分配的唯一 MAGIC值;数据压缩用的信息。
[0020](1.6)辅助哈希表保存对应规则表中规则的动作信息,哈希表的查询键值是该规则对五元组进行掩码后的值与该规则MAGIC值组合后进行CRC32计算后取余。辅助哈希表和基于前缀扩展并进行数据压缩的Trie树的联系是规则的五元组掩码信息和MAGIC值。
[0021]第二步中所述的建立的哈希快速流表,是为了提高查询速度的一种策略。哈希快速流表的设计依据是流具有时间局部性:在流的第一个数据包到达后较短时间内到达的数据包属于同一流的可能性很大。哈希快速流表的表项保存最近到达的流的五元组信息及匹配到的规则的动作信息。
[0022]第三步中所述的采用一种可均衡多表间查找性能的表选择策略下选择五张规则表中的其中一张规则表来进行添加,是为了解决在传统单一表的掩码匹配算法应用于多表情况时,对多个匹配结果进行整合时算法的时间复杂度较高的一种方法。策略实施的具体原则包括:
[0023]A.仅在规则要求匹配的元组中选择对应的规则表。如规则只要求匹配目的IP和目的端口(掩码长度非O),其他元组信息任意(掩码长度为O),则策略只会在目的IP和目的端口对应的规则表中选择其中一个表来进行添加。
[0024]B.在要求匹配的元组中选择哪个规则表支持以下两种策略:a,随机指定;b,预先设定各元组掩码的权重,根据掩码长度和权重计算后得出最高权值的规则表,将规则添加到该表中。
[0025]第三步中所述的添加规则的所有信息到规则表中的具体实施过程:
[0026](3.1)根据选定的元组(源/目的IP或源/目的端口或网络协议号)必要时进行前缀扩展。
[0027](3.2)计算数组下标;计算前缀扩展后的后4比特代表的前缀(共16个)中哪些包含在规则中,将对应的位在数组元素的字段-前缀位图中置I。对于源/目的IP掩码长度大于24时,前缀位图可能出现相同的情况,导致无法区分规则,这里前缀位图的字段存放IP掩码后的后16比特数据。
[0028](3.3)保存所有元组的前缀信息到掩码字段中,分配一个随机MAGIC值给该规则并保存到MAGIC字段中。
[0029](3.4)将元组掩码后与MAGIC值组合,计算哈希键值,将规则对应的动作信息及解决哈希冲突的比较信息添加到辅助哈希表的哈希桶中。
[0030]第五步中依次对五个规则表进行掩码匹配查询,并引入优先级策略,是考虑存在没有使用优先级策略的情况下一条流可能匹配多条规则的场景。具体设计原则如下:
[0031](5.1)由于5个规则表中的规则没有重复,流进行匹配规则时需要确保不遗漏匹配所有可能的规则,因此需要依次查询5个规则表,如果是多核处理器的环境,算法还可以方便的改为多核并行查找,提高查询实时响应速度。
[0032](5.2)引入优先级策略,解决找出最佳规则的问题。优先级策略分为默认优先级和用户配置优先级。默认优先级的策略如下:规则中要求匹配的元组数越多优先级越高,在元组数相同的情况下比较元组的掩码长度,比较顺序为目的IP、源IP,目的端口、源端口、网络协议号。用户配置优先级可以提升指定规则的优先级。举例如下:
[0033]Rl:DIP:10.0.0.1/32 ;SIP:20.0.0.*/24 ;其他元组任意,动作:转发
[0034]R2:DIP:10.0.0.1/32 ;SIP:20.0.0.1/32 ;其他元组任意,动作:丢弃
[0035]R3:DIP:10.0.0.*/24 ;SIP:20.0.0.1/32 ;其他元组任意,动作:转发
[0036]R4:DIP:10.0.0.1/32 ;其他元组任意,动作:转发
[0037]R5:SIP:20.0.0.1/32 ;其他元组任意,动作:转发
[0038]默认情况下规则优先级:R2>R1>R3>R4>R5 ;
[0039]如果用户提高R5的优先级,则优先级顺序变为R2>R1>R3>R5>R4 ;
[0040]第七步中所述的哈希快速流表支持老化机制,设计原则如下:
[0041](7.1) 一条流在经过一段时间后停止了,哈希快速流表中对应的项已经没有用,如果不删除,不仅占用空间还会增加哈希冲突概率,因此需要将其老化掉。
[0042](7.2)老化机制采用的策略:利用多核处理器提供的硬件定时器模块可以定时向多核发送自定义超时数据的特性,并且支持大量的标示信息添加和通知。利用该特性,在添加哈希快速流表时,将标示该表项的信息(哈希值和冲突比较值)添加到定时器中,并启动定时,在定时时间到时,定时器会将该标示信息告诉多核处理器,多核处理器根据该信息找到表项进行删除。

【专利附图】

【附图说明】
[0043]图1是本发明实施步骤流程图。
[0044]图2是本发明设计使用的规则表表项结构。

【具体实施方式】
[0045]现结合附图和实施例对本发明的技术方案作进一步说明。
[0046]如图1与图2所示,本发明提供的一种多域流规则匹配的实现方法包括如下步骤:
[0047]第一步,根据IP报文数据流的五元组定义(源/目的IP,源/目的端口,网络协议号),对每个元组都建立一个规则表,共五个规则表。
[0048]所述的五个规则表的组织结构与查询算法是一致的,也为实现多核芯片多表并行查找提供算法基础。每一个规则表结构的具体设计原则包括:
[0049](1.1)添加的每条规则只存在于五个规则表中的其中一个。
[0050](1.2)规则表分为两部分,第一部分为基于前缀扩展的深度为I并进行数据压缩的Trie树,因为Trie树的深度为1,Trie树可以简化为数组,数组大小根据前缀扩展策略及元组来确定;第二部分是辅助哈希表。
[0051](1.3)前缀扩展的策略:对于源/目的IP,将前缀长度为1-24的前缀统一扩展为24,前缀长度为25-32不进行前缀扩展;对于源/目的端口,如果是范围匹配,先将范围转换为前缀,将前缀长度都扩展为16。对于网络协议号,如果是范围匹配,先将范围转换为前缀,将前缀长度都扩展为8。
[0052](1.4)由于扩展后存在大量数据冗余,需要进行数据压缩。对于源/目的IP,方法是将扩展后的前缀分割为两部分:前20比特和后4比特,简称20+4,对后4比特代表的前缀(共16个)进行数据压缩后以前20比特的值作为数组的下标添加到数组中。对于源/目的端口类似,分割为12+4,对于网络协议号分割为4+4。
[0053](1.5)Trie树中规则对应的表项包括:规则的五元组掩码信息;系统为该规则分配的唯一 MAGIC值;数据压缩用的信息。
[0054](1.6)辅助哈希表保存对应规则表中匹配规则的动作信息,哈希表的查询键值是该规则对五元组进行掩码后的值与该规则MAGIC值组合后进行CRC32计算后取余。辅助哈希表和基于前缀扩展并进行数据压缩的Trie树的联系是规则的五元组掩码信息和MAGIC值。
[0055]第二步,建立一个哈希快速流表,用于保存最近一段时间里匹配规则的流的五元组信息及该匹配规则的动作信息,用于IP报文数据流的精确快速匹配。
[0056]建立的哈希快速流表,是为了提高查询速度的一种策略。哈希快速流表的设计依据是流具有时间局部性:在流的第一个数据包到达后较短时间内到达的数据包属于同一流的可能性很大。哈希快速流表的表项保存最近到达的流的五元组信息及匹配到的规则的动作信息。
[0057]第三步,添加或更新一条匹配规则时,根据匹配规则中五元组信息在一种可均衡多表间查找性能的表选择策略下选择五张规则表中的其中一张规则表,将匹配规则的所有信息添加到该规则表中。
[0058]所述的采用一种可均衡多表间查找性能的表选择策略下选择五张规则表中的其中一张规则表来进行添加,是为了解决在传统单一表的掩码匹配算法应用于多表情况时,对多个匹配结果进行整合时算法的时间复杂度较高的一种方法。策略实施的具体原则包括:
[0059]A.仅在规则要求匹配的元组中选择对应的规则表。如规则只要求匹配目的IP和目的端口(掩码长度非O),其他元组信息任意(掩码长度为O),则策略只会在目的IP和目的端口对应的规则表中选择其中一个表来进行添加。
[0060]B.在要求匹配的元组中选择哪个规则表支持以下两种策略:a,随机指定;b,预先设定各元组掩码的权重,根据掩码长度和权重计算后得出最高权值的规则表,将规则添加到该表中。
[0061]所述的添加规则的所有信息到规则表中的具体实施过程如下:
[0062](3.1)根据选定的元组(源/目的IP或源/目的端口或网络协议号)必要时进行前缀扩展。
[0063](3.2)计算数组下标;计算前缀扩展后的后4比特代表的前缀(共16个)中哪些包含在规则中,将对应的位在图2标示数组元素的字段-前缀位图PBmp中置I。对于源/目的IP掩码长度大于24时,前缀位图可能出现相同的情况,导致无法区分规则,这里前缀位图的字段存放IP掩码后的后16比特数据。
[0064](3.3)保存所有元组的前缀信息到图2标示的五元组各自前缀偏移字段和前缀位图字段中,分配一个随机MAGIC值给该规则并保存到图2标示的MAGIC字段中。
[0065](3.4)将元组掩码后与MAGIC值组合,计算哈希键值,将规则对应的动作信息及解决哈希冲突的比较信息添加到辅助哈希表的哈希桶中。
[0066]第四步,在进行IP报文数据流匹配时,先根据IP报文数据流的五元组在哈希快速流表中进行精确查找,如果找到,则执行的相应的动作,否则查找规则表,进行掩码匹配查询。
[0067]第五步,规则表掩码匹配查询时,依次对五个规则表进行掩码匹配查询,根据一定的优先级策略分别找到最佳匹配规则,然后根据相同的策略再在这些最佳匹配规则中找出最终匹配规则。
[0068]所述的依次对五个规则表进行掩码匹配查询,并引入优先级策略,是考虑存在没有使用优先级策略的情况下一条流可能匹配多条规则的场景。具体设计原则如下:
[0069](5.1)由于5个规则表中的规则没有重复,流进行匹配规则时需要确保不遗漏匹配所有可能的规则,因此需要依次查询5个规则表,如果是多核处理器的环境,算法还可以方便的改为多核并行查找,提高查询实时响应速度。
[0070](5.2)引入优先级策略,解决找出最佳规则的问题。优先级策略分为默认优先级和用户配置优先级。默认优先级的策略如下:规则中要求匹配的元组数越多优先级越高,在元组数相同的情况下比较元组的掩码长度,比较顺序为目的IP、源IP,目的端口、源端口、网络协议号。用户配置优先级可以提升指定规则的优先级。举例如下:
[0071]Rl:DIP:10.0.0.1/32 ;SIP:20.0.0.*/24 ;其他元组任意,动作:转发
[0072]R2:DIP:10.0.0.1/32 ;SIP:20.0.0.1/32 ;其他元组任意,动作:丢弃
[0073]R3:DIP:10.0.0.*/24 ;SIP:20.0.0.1/32 ;其他元组任意,动作:转发
[0074]R4:DIP:10.0.0.1/32 ;其他元组任意,动作:转发
[0075]R5:SIP:20.0.0.1/32 ;其他元组任意,动作:转发
[0076]默认情况下规则优先级:R2>R1>R3>R4>R5 ;
[0077]如果用户提高R5的优先级,则优先级顺序变为R2>R1>R3>R5>R4。
[0078]第六步,在规则表中查询到最终匹配规则后,将IP报文数据流的五元组信息及该最终匹配规则的动作信息添加到哈希快速流表中。
[0079]第七步,哈希快速流表支持老化机制。
[0080]设计原则如下:
[0081](7.1) 一条流在经过一段时间后停止了,哈希快速流表中对应的项已经没有用,如果不删除,不仅占用空间还会增加哈希冲突概率,因此需要将其老化掉。
[0082](7.2)老化机制采用的策略:利用多核处理器提供的硬件定时器模块可以定时向多核发送自定义超时数据的特性,并且支持大量的标示信息添加和通知。利用该特性,在添加哈希快速流表时,将标示该表项的信息(哈希值和冲突比较值)添加到定时器中,并启动定时,在定时时间到时,定时器会将该标示信息告诉多核处理器,多核处理器根据该信息找到表项进行删除。
[0083]第八步,删除一条规则时,采用和添加时一样的查找性能均衡策略找到对应的规则表进行删除。
【权利要求】
1.一种多域流规则匹配的实现方法,其特征在于:该方法的步骤如下, 第一步,根据IP报文数据流的五元组定义,对每个元组都建立一个规则表,共五个规则表; 第二步,建立一个哈希快速流表,用于保存最近一段时间里匹配规则的IP报文数据流的五元组信息及该匹配规则的动作信息,用于IP报文数据流的精确快速匹配; 第三步,添加或更新一条匹配规则时,根据匹配规则中五元组信息在一种可均衡多表间查找性能的表选择策略下选择五张规则表中的其中一张规则表,将匹配规则的所有信息添加到该规则表中; 第四步,在进行IP报文数据流匹配时,先根据IP报文数据流的五元组在哈希快速流表中进行精确查找,如果找到,则执行相应的动作,否则查找规则表,进行掩码匹配查询;第五步,规则表掩码匹配查询时,依次对五个规则表进行掩码匹配查询,根据一定的优先级策略分别找到最佳匹配规则,然后根据相同的策略再在这些最佳匹配规则中找出最终匹配规则; 第六步,在规则表中查询到最终匹配规则后,将IP报文数据流的五元组信息及该最终匹配规则的动作信息添加到哈希快速流表中; 第七步,哈希快速流表支持老化机制; 第八步,删除一条规则时,采用和添加时一样的查找性能均衡策略找到对应的规则表进行删除。
2.根据权利要求1所述的一种多域流规则匹配的实现方法,其特征在于:第一步中所述的建立的五个规则表,该规则表结构的具体设计原则包括: (1.1)添加的每条规则只存在于五个规则表中的其中一个; (1.2)规则表分为两部分,第一部分为基于前缀扩展的深度为I并进行数据压缩的Trie树;第二部分是辅助哈希表; (1.3)前缀扩展的策略:对于源/目的IP,将前缀长度为1-24的前缀统一扩展为24,前缀长度为25-32不进行前缀扩展;对于源/目的端口,如果是范围匹配,先将范围转换为前缀,将前缀长度都扩展为16 ;对于网络协议号,如果是范围匹配,先将范围转换为前缀,将前缀长度都扩展为8 ; (1.4)由于扩展后存在大量数据冗余,需要进行数据压缩;对于源/目的IP,方法是将扩展后的前缀分割为两部分:前20比特和后4比特,简称20+4,对后4比特代表的前缀进行数据压缩后以前20比特的值作为数组的下标添加到数组中;对于源/目的端口,分割为12+4,对于网络协议号分割为4+4 ; (1.5)Trie树中规则对应的表项包括:规则的五元组掩码信息;系统为该规则分配的唯一 MAGIC值;数据压缩用的信息; (1.6)辅助哈希表保存对应规则表中规则的动作信息,哈希表的查询键值是该规则对五元组进行掩码后的值与该规则MAGIC值组合后进行CRC32计算后取余;辅助哈希表和基于前缀扩展并进行数据压缩的Trie树的联系是规则的五元组掩码信息和MAGIC值。
3.根据权利要求1所述的一种多域流规则匹配的实现方法,其特征在于:第三步中所述的采用一种可均衡多表间查找性能的表选择策略下选择五张规则表中的其中一张规则表来进行添加,策略实施的具体原则包括: A.仅在规则要求匹配的元组中选择对应的规则表,如规则只要求匹配目的IP和目的端口,其他元组信息任意,则策略只会在目的IP和目的端口对应的规则表中选择其中一个表来进行添加; B.在要求匹配的元组中选择哪个规则表支持以下两种策略:a,随机指定;b,预先设定各元组掩码的权重,根据掩码长度和权重计算后得出最高权值的规则表,将规则添加到该表中。
4.根据权利要求1所述的一种多域流规则匹配的实现方法,其特征在于:第三步中所述的添加规则的所有信息到规则表中的具体实施过程: (3.1)根据选定的元组必要时进行前缀扩展; (3.2)计算数组下标;计算前缀扩展后的后4比特代表的前缀中哪些包含在规则中,将对应的位在数组元素的字段-前缀位图中置I ;对于源/目的IP掩码长度大于24时,前缀位图的字段存放IP掩码后的后16比特数据; (3.3)保存所有元组的前缀信息到五元组各自前缀偏移字段和前缀位图字段中,分配一个随机MAGIC值给该规则并保存到MAGIC字段中; (3.4)将元组掩码后与MAGIC值组合,计算哈希键值,将规则对应的动作信息及解决哈希冲突的比较信息添加到辅助哈希表的哈希桶中。
5.根据权利要求1所述的一种多域流规则匹配的实现方法,其特征在于:第五步中依次对五个规则表进行掩码匹配查询,并引入优先级策略,具体设计原则如下: (5.1)由于5个规则表中的规则没有重复,IP报文数据流进行匹配规则时需要确保不遗漏匹配所有可能的规则,因此需要依次查询5个规则表,如果是多核处理器的环境,算法改为多核并行查找,提高查询实时响应速度; (5.2)引入优先级策略,解决找出最佳规则的问题;优先级策略分为默认优先级和用户配置优先级。
6.根据权利要求1所述的一种多域流规则匹配的实现方法,其特征在于:第七步中所述的哈希快速流表支持老化机制,设计原则如下: (7.1) 一条IP报文数据流在经过一段时间后停止了,哈希快速流表中对应的项已经没有用,如果不删除,不仅占用空间还会增加哈希冲突概率,因此需要将其老化掉; (7.2)老化机制采用的策略:利用多核处理器提供的硬件定时器模块定时向多核发送自定义超时数据的特性,并且支持大量的标示信息添加和通知;利用该特性,在添加哈希快速流表时,将标示该表项的信息添加到定时器中,并启动定时,在定时时间到时,定时器会将该标示信息告诉多核处理器,多核处理器根据该信息找到表项进行删除。
【文档编号】H04L12/801GK104468381SQ201410717284
【公开日】2015年3月25日 申请日期:2014年12月1日 优先权日:2014年12月1日
【发明者】云晓春, 陈训逊, 吴震, 谢铭, 史钦锋, 王东安, 常为领 申请人:国家计算机网络与信息安全管理中心, 北京赛思信安技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1