一种快速数据包过滤方法

文档序号:7550691阅读:299来源:国知局
专利名称:一种快速数据包过滤方法
技术领域
本发明涉及一种适应大规则集合、多字段的快速IP包过滤方法,尤其涉及通讯领域的计算机通讯和高速因特网应用。
背景技术
当前因特网提供的是一种“尽力而为”传送服务,将来的因特网将为用户提供各种增值业务。这些业务包括区分服务、精确的QoS服务、QoS路由、策略路由、VPN、分布式防火墙、IP安全网关、基于流量的计费、NAT、四层交换等。所有这些增值业务实现的关键技术之一是快速包分类/过滤——基于IP包头中一个或多个字段确定包属于哪一个流并采取不同策略处理。通常过滤器中包括多条过滤规则,可用于包过滤的包头字段包括源/目的IP地址、协议类型、源/目的端口号等第三、四层信息,甚至还可以利用应用层信息。随着传输链路带宽突飞猛进,网络瓶颈集中到骨干网处理节点——线速路由器上,由此在高速路由器上不仅要实现线速路由查找还要实现线速包过滤。相对线速路由转发只需查看IP包头中目的IP地址一个字段而言,基于多个域的快速包过滤算法目前在理论和实践上仍然是一个难题,现有的实现方法和装置主要存在以下缺点1、纯软件实现的算法性能难以满足核心路由器高速线卡上线速包转发需求,而采用专用硬件如TCAM或ASIC实现的方案成本高,实现复杂;2、可扩展性差,无论是增加过滤器中过滤规则条数还是增加规则中使用的字段都导致内存消耗急剧增大或查找时间增加;3、过滤规则匹配时间不恒定,在最差情况下可能性能非常低,对网络的稳定及QoS影响较大。
在1999年9月Sigcomm会刊第147页至第160页题为“基于多个字段的包分类”(Pankaj Gupta and Nick McKeown,Packet Classification on Multiple Fields,Proc.Sigcomm,Computer Communication Review,vol.29,no.4,pp 147-60,September1999)的文章给出的递归流分类RFC(Recursive Flow Classification)方法是目前时间效率上最好的一种软件包分类算法。RFC方法把多字段分类问题看作为分组头控制字段取值空间(S)到类标识(Class ID)空间(T)的映射问题(T=logN,N为规则数,且T通常远小于S),由于S空间一般很大,直接一次映射需要的内存太大,采用分阶段递归实现,最终得到包分类结果即类的标识。该方法以过滤规则预处理的时间和空间复杂度来获得包过滤转发的线速处理。然而该文介绍的算法只给出了递归处理的基本概念,并没有介绍在线速路由器等实用中的具体实现过程。

发明内容
本发明的目的是为了克服现有包分类技术中允许过滤规则条数少,规则使用的域个数受限及分类处理时间不恒定等缺点,在基于RFC算法的思想的快速包过滤方法。从而在性能、灵活性和成本上满足商用线速路由器的需求。
本发明所述的快速数据包过滤方法,包括以下处理过程步骤一,对所有过滤规则进行预处理,并生成各阶段索引表;1)根据数据包分类使用的字段和字段的宽度,确定递归分类的元字段Chunk、阶数及路线;2)对过滤器中的所有过滤规则进行冗余检查,剔除冗余规则项,并加入缺省处理规则;可以采用冒泡排序算法对规则做两两检查,剔除冗余规则项;3)第一阶段索引表的生成,对原始过滤规则中携带的信息,通过等于、前缀、范围三种表示方式转换为数轴上区间表示,将所有规则依次在各元字段上做投影,分别标注起始点,得到不相重叠的区间个数,将区间进行顺序编号,落在区间上的点标注区间号,没有规则显示标注的点分配一个缺省区间号,各元字段的每一个合理取值均被赋予一个表示其所属类别的区间号即等价类标识eqID,其中每一个等价类标识eqID还对应一个比特位图CBM,表明规则集合中哪些规则与该等价类标识eqID关联,生成了第一阶段的索引表;所述比特位图长度为过滤器中规则条数,位图中的比特与过滤器规则一一对应,为1表明该规则满足,否则为0;4)中间阶段索引表的生成,利用上一级等价类标识eqID及对应比特位图信息,将不同的比特位图CBM通过移位和按位或运算得到新的比特位图CBM,如果新生成的比特位图是第一次出现,分配一个等价类标识eqID,如果得到的比特位图CBM之前出现过,填入原先比特位图对应的等价类标识eqID,通过这样的循环遍历生成中间阶段的索引表;5)最后一阶段检索表的生成,处理的方式与步骤4)中唯一不同的是检索标中输出信息存放的不是等价类标识eqID信息,而是按优先级顺序首条命中规则号及对应处理方式信息;6)将各检索表的内存起始偏移地址及表内元素有效比特位数信息写入存储器单元,完成预处理;步骤二,根据步骤一确定的递归查表路线,将数据包的使用的字段通过各阶段的检索表的查询和聚合操作得到最终的数据包处理方式信息,完成数据包分类操作。
7)从接收到的IP报头中取出分类规则所需的字段信息;8)用报头中各字段信息为索引对应读取第一阶段各检索表,依次对读回结果做左移及或运算,由此得到聚合后的结果作为下一阶段检索表的索引,依此类推,查询最后一阶段检索表后,获得数据包命中的规则号及该规则对应的处理方式信息,完成分类处理。
从存储器中一次读出第一阶段检索表信息;若有效比特位数为0,可跳过该表;采用本发明所述方法,可以满足高速路由器上线速包过滤处理要求。当过滤规则条数增加时,该方案明显优于线形查找方式,在一定范围内过滤匹配的时间开销与过滤器中的规则条数增大无关,规则条数越大,优点越明显;同时包转发时过滤匹配时间恒定、延时小,不影响网络的稳定及可靠性。还可以应用于防火墙、网络接入服务器、四层交换机等需要快速包过滤的应用。


图1是数据报头字段及本发明实施例中使用的元字段构成示意图。
图2是聚合操作示意图。
图3是本发明过滤方法数据流程图。;具体实施方式
本发明所述的快速包过滤方法在原理上主要由过滤规则的预处理过程及分类匹配过程两部分组成。基本思想是化多维匹配为单维并行匹配,每一维匹配的结果规则集合取交集后得到递减的一个规则集空间。为便于介绍技术方案,先定义几个算法相关概念元字段Chunk,第一阶段的Chunk直接来自过滤规则中指明的字段,为节省内存,一般Chunk的宽度不超过16位,即通常将源/目的IP地址拆分为高、低16位两个Chunk,除此之外的Chunk由上一级Chunk合并而成。其它与IP包相关的信息也可作为Chunk引入,如路由器物理端口号,宽带接入服务器中的用户类别,MPLS标记,VLAN标签等;等价类标识eqID,通常过滤规则中对一个字段的指定采用掩码、前缀、特定值等方式,影射到数轴上均可表示为区间或点,按从小到大顺序将不相重叠的区间进行编码得到的值称等价类标识。其物理意义是对应包头字段取值空间中一个模式子空间;类比特位图CBM,位图长度为过滤器中规则条数,位图中的比特与过滤器规则一一对应,为1表明该规则满足,否则为0。将多个CBM值进行按位与操作,可以计算多个规则集的交集;聚合操作,将上一级两个以上chunk表查找得到的值进行合并得到本次查找所用索引,该索引携带了前面查表得到的全部信息,以上一级为3个ChunkA、B、C为例,计算公式如下index=(a*sizeB+b)*sizeC+c,a,b,c为上一级Chunk查表得到的结果,sizeB为Chunk B中不同编码个数,sizeC为Chunk C中不同编码个数,在硬件不便于做乘法运算时,聚合操作可以用移位和按位或运算完成。计算公式如下index=((a<<bitsB)^b)<<bitsC)^c,a,b,c为上一级Chunk查表得到的结果,bitsB为Chunk B中编码有效比特个数,bitsC为Chunk C中有效比特个数;本发明中规则预处理和实际过滤匹配实现可以分担到不同处理器上,先对所有过滤规则进行去冗余逐维重新编码处理,得到一组携带原来规则信息的表格;分类引擎在实现过滤查找时就不需要象线形匹配那样逐条原始规则读取然后进行匹配操作那样,只需按设计的流程反复读取查找表项信息最终得到所需结果。由于只需简单的读内存及移位、或运算,且访问内存最大次数是确定值,从而实现了快速包过滤处理。
以下再通过具体的数据包过滤实施例并结合附图详细说明本发明过滤方法的实现过程根据本发明实现原理具体实施例分为规则预处理及分类引擎两部分。过滤规则预处理由通用CPU完成,这部分对实时性要求不高,通常过滤规则的改变频率不高,一般用高级语言编程实现;根据系统性能需求,分类引擎既可以用硬件实现也可以用软件实现,一种兼顾性能及灵活性的方式是采用高性能网络处理器实现。下面详细介绍各部分的实施步骤第一部分过滤规则预处理及索引表生成。具体步骤如下1、首先根据应用需求确定算法中使用的字段个数及字段宽度,这是影响算法内存消耗最重要的因素;其次,确定递归阶数及路线,这样确定了实现分类匹配运算所需最大访问内存次数即查找时间。图3的数据流图以源/目的IP地址、源/目的协议端口号、协议类型、物理端口号的三阶递归实现为例;2、对过滤器中的所有过滤规则进行冗余检查,采用类似“冒泡排序算法”做规则两两检查,剔除冗余规则项,并加入缺省处理规则;3、将规则中的源/目的IP地址拆分为高16位和低16位两个独立字段,加上协议类型,源/目的协议端口号、物理端口号,每条规则包含了8个字段的描述,除协议类型及物理端口号取值空间为0到255外,其余字段合理取值空间为0到65535;4、算法第一阶段处理及查找表的生成。这一阶段的输入主要来自原始过滤规则中携带的信息,等于、前缀、范围三种表示方式均可转换为数轴上区间表示。将所有规则依次在该字段上做投影,分别标注起始点,得到不相重叠的区间个数,将区间从小到大顺序进行编号,落在区间上的点标注区间号,没有规则显式标注的点分配一个缺省ID号,这样该字段每一个合理取值均被赋予了一个表示它所属类别的ID号,同时每一个ID号还对应了一个比特位图表明规则集合中哪些规则与该ID关联。如此逐维循环处理得到第一阶段所有查找表;5、算法中间阶段递归处理及查找表的生成。中间阶段查找表的生成利用了上一级ID号及对应比特位图信息。循环遍历参与组合的上一级chunk,将不同的比特位图按位与运算得到新的比特位图,如果新生成的比特位图是第一次出现,分配一个ID号,建立新ID号与比特位图的关联(加入哈希表便于预处理),填写对应的查找表,如果得到的比特位图出现过,对应查找表填原先比特位图对应的ID,通过这样的循环遍历可生成中间阶段的查找表;6、最后一个阶段特殊处理及查找表的处理。最后一阶特殊处理是查找表中存放的不是分类ID信息,而是按优先级顺序首条命中规则号及对应处理方式信息,便于分类引擎直接得到所需信息;7、将各查找表的内存起始偏移地址及表内元素有效比特位数信息写入存储器单元,由此预处理结束;
第二部分分类引擎实现方案。匹配过程实现相对简单,只需按照设计的递归查表路线反复查表并做聚合操作可得到最终结果。具体步骤如下1、从接收到的IP报头中取出源IP地址、目的IP地址、协议类型、源协议端口号、目的协议端口号等信息;2、从存储器中一次读出第一级8张表的基本信息,如表内元素有效比特位数及表的起始偏移地址,若有效比特位数为0,可跳过该表;3、用源IP地址高16位做索引读表0,源IP地址低16位做索引读表1,协议类型做索引读表4,源协议端口号做索引读表6,依次对读回结果做左移及或运算,左移位数等于下一张表元素的有效比特位数,由此得到聚合后的结果作为查表8的索引;4、同样,用目的IP地址的高16位做索引读表2,目的IP地址低16位做索引读表3,目的协议端口号做索引读表5,物理端口号做索引读表7,依次对读回结果做左移及或运算,左移位数等于下一张表元素的有效比特位数,由此得到聚合后的结果作为查表9的索引;5、将表8和表9读回的结果同样做左移和或运算得到查表10所用的索引;6、读表10得到的结果中保存有命中的规则号及该规则对应的处理方式信息;从上述过滤匹配过程分析,完成一次过滤匹配操作与规则条数无关,图3匹配流程访问内存次数最大为11次,如果判断某张表元素的有效比特位数为0,查表次数还可减少。
可以看出使用本发明所述的快速包过滤方法具有如下优点1、匹配查找的速度快,适合高速路由器线卡上实现多字段包过滤;2、过滤器规则使用的字段灵活且容易扩充,满足其他需要对IP包分类的应用需求;3、当过滤器中规则条数增加时,只是算法预处理部分构造查找表的时间增加,过滤匹配时查表次数恒定,不影响包的线速转发性能,特别适应规则条数多达数千条的情况;4、可以使用通用网络处理器和普通存储器达到高性能并行包过滤处理,相对ASIC或FPGA实现开发周期短,成本低。
权利要求
1.一种快速数据包过滤方法,其特征在于,所述方法包括以下处理过程步骤一,对所有过滤规则进行预处理,并生成各阶段索引表;1)根据数据包分类使用的字段和字段的宽度,确定递归分类的元字段Chunk、阶数及路线;2)对过滤器中的所有过滤规则进行冗余检查,剔除冗余规则项,并加入缺省处理规则;3)第一阶段索引表的生成,对原始过滤规则中携带的信息,通过等于、前缀、范围三种表示方式转换为数轴上区间表示,将所有规则依次在各元字段上做投影,分别标注起始点,得到不相重叠的区间个数,将区间进行顺序编号,落在区间上的点标注区间号,没有规则显示标注的点分配一个缺省区间号,各元字段的每一个合理取值均被赋予一个表示其所属类别的区间号即等价类标识eqID,其中每一个等价类标识eqID还对应一个比特位图CBM,表明规则集合中哪些规则与该等价类标识eqID关联,生成了第一阶段的索引表;4)中间阶段索引表的生成,利用上一级等价类标识eqID及对应比特位图信息,将不同的比特位图CBM通过移位和按位或运算得到新的比特位图CBM,如果新生成的比特位图是第一次出现,分配一个等价类标识eqID,如果得到的比特位图CBM之前出现过,填入原先比特位图对应的等价类标识eqID,通过这样的循环遍历生成中间阶段的索引表;5)最后一阶段检索表的生成,处理的方式与步骤4)中唯一不同的是检索标中输出信息存放的不是等价类标识eqID信息,而是按优先级顺序首条命中规则号及对应处理方式信息;6)将各检索表的内存起始偏移地址及表内元素有效比特位数信息写入存储器单元,完成预处理;步骤二,根据步骤一确定的递归查表路线,将数据包的使用的字段通过各阶段的检索表的查询和聚合操作得到最终的数据包处理方式信息,完成数据包分类操作。
2.根据权利要求1所述的快速数据包过滤方法,其特征在于,所述步骤二具体包括以下处理过程7)从接收到的IP报头中取出分类规则所需的字段信息;8)用报头中各字段信息为索引对应读取第一阶段各检索表,依次对读回结果做左移及或运算,由此得到聚合后的结果作为下一阶段检索表的索引,依此类推,查询最后一阶段检索表后,获得数据包命中的规则号及该规则对应的处理方式信息,完成分类处理。
3.根据权利要求1或2所述的快速数据包过滤方法,其特征在于,所述步骤8)中从存储器中一次读出第一阶段检索表信息;若有效比特位数为0,可跳过该表。
4.根据权利要求1或2所述的快速数据包过滤方法,其特征在于,所述步骤2)中可以采用冒泡排序算法对规则做两两检查,以剔除冗余规则项。
5.根据权利要求1或2所述的快速数据包过滤方法,其特征在于,所述步骤3)中所述比特位图长度为过滤器中规则条数,位图中的比特与过滤器规则一一对应,为1表明该规则满足,否则为0。
全文摘要
本发明公开了一种快速数据包过滤方法,包括以下处理过程对所有过滤规则进行预处理,并生成各阶段索引表;根据确定的递归查表路线,将数据包的使用的字段通过各阶段的检索表的查询和聚合操作得到最终的数据包处理方式信息,完成数据包分类操作。采用本发明所述方法,可以满足高速路由器上线速包过滤处理要求。当过滤规则条数增加时,该方案明显优于线形查找方式,在一定范围内过滤匹配的时间开销与过滤器中的规则条数增大无关,规则条数越大,优点越明显;同时包转发时过滤匹配时间恒定、延时小,不影响网络的稳定及可靠性。还可以应用于防火墙、网络接入服务器、四层交换机等需要快速包过滤的应用。
文档编号H04Q3/00GK1545254SQ20031011360
公开日2004年11月10日 申请日期2003年11月13日 优先权日2003年11月13日
发明者张钢钢, 白英杰, 唐珂, 戴进, 方军 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1