一种数据包递归流分类方法技术

技术编号:2873460 阅读:205 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种数据包递归流分类方法,包括以下处理步骤:预处理阶段,把规则库中规则包含的字段分成多个域,确定递归分类的阶段个数和各个域的组合情况;根据规则的域是确定值或范围分别处理,并生成递归分类各阶段的预处理向量表;查找阶段,将接收到的数据包在各阶段的预处理向量表中查找,确定出数据包所属的类标识,根据数据包的类标识对应的服务类型对数据包进行区分处理。本发明专利技术的方法能够在多个域条件下,快速地进行数据包的分类。本发明专利技术的数据包递归流分类方法的分类器具有相当好的数据结构和数据冗余性,能够很好地为分类方法所用。(*该技术在2022年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及IP网络中数据流的分类方法,具体涉及一种数据包的递归流分类方法,能够快速地对数据流进行分类处理。通常数据包流分类是根据数据包头的几个不同的域(如源IP地址、目的IP地址等),通过查找规则库进行的。这里,规则库是分类的依据,它由一系列的规则条目组成,每个规则条目对应一种特定的业务类型或处理方法。数据包分类的实质是对于特定的数据包D,在规则库中搜索与之匹配的规则R,以确定数据包D所应接受的服务类型。分类过程是通过数据包头的K个域进行的,规则库中的任意规则R中也包含K个域。数据包D匹配了规则R即为对于任意的域F,数据包头的第k个域D(k)都与规则R中的第k个域R(k)相匹配。一般地,规则R的任一域都定义了整数集上的一个范围或某个确定的整数值,数据包D匹配规则R,即为对任意的k,有D(k)R(k)。在IP网络中,规则库中规则包含的域个数越来越多,有时多达8个。而且,不同应用的规则库规模差别很大,从数十条到数万条规则不等。为了保证性能,要求数据流分类方法在最坏情况下的最大分组处理速率一般不能低于数据包的到达速率,方法性能不依赖于某一确定的业务特征,即方法的性能是与业务相分离的。在这种情况下,近年来在国内外出现了许多实用化的快速数据流分类方法。近年来在出现的快速数据流分类方法包括三重内容寻址存储器方法、基于比特向量的多维范围匹配方法、Grid of Tries方法、Tuple空间搜索方法、有向非循环图DAG方法、交叉乘积方法、RFC(recursive flow classification)递归流分类方法等。它们的一个共同特点是,在某些限定的条件下(如规则包含的域个数、存储空间和规则库的规模等)设计出来的,依赖特定的环境(如必须用硬件或软件)实现的。这其中,三重内容寻址存储器方法必须采用硬件实现,只适于小规则库,且不支持范围匹配;基于比特向量的多维范围匹配方法也需要硬件的辅助,而且该方法不利于规则库的扩展;Grid of Tries方法尽管查找速度挺快,但它只适合于二维前缀匹配查找;Tuple空间搜索方法的实现中,存在线性搜索问题,这影响了搜索的速度,尽管改进方案使方法的效率提高了很多,但搜索时间仍与规则库的规则条目的多少有关;有向非循环图DAG方法仅与分类器的维数K有关,而与规则条目数无关,但该方法在最坏情况下的空间复杂度太大;交叉乘积方法在最坏情况下的搜索时间得不到保证。从上述分析可以看出,绝大多数方法的性能都依赖于特定的硬件、规则条目数,或域个数。RFC分类方法是由Stanford University大学的Pankaj Gupta与Nick McKeown提出的。参考附附图说明图1所示,RFC分类方法的核心思想是,把数据包头的S比特通过几个阶段的递归映射,最后映射成所属类classID的T比特。每个阶段都通过映射,成为相对前一阶段更少的比特值。参考附图2所示,RFC分类方法包括多个递归映射阶段,每个阶段都进行一系列的并行内存查找,每次查找返回的值都比内存查找时输入的值有更少的比特值。该方法的实现由预处理与查找两部分组成。首先,对用户配置的一系列规则进行处理,在各个阶段,产生一系列预处理后生成的预处理向量表(Preprocessedtable),存放在内存中;然后,就可以根据数据包头中多个域的值,在内存中进行多次并行的哈希运算,查找各阶段生成的预处理向量表,最后查到分类结果(即类的标识)。RFC递归流分类方法,能够解决任意多个域条件下的流分类问题,其性能不依赖于规则条目数,也不依赖于特定的硬件,RFC分类方法的性能由阶段个数和数的形状(即各个域的组合情况)决定,这两个参数决定了内存查找的次数。当阶段数目增加时,所需的总内存空间减少,但是在搜索过程中会增加内存访问次数和时间。但是数据包的分类规则的域一般有两种某个范围或某个确定的值,这样就使得预处理过程相当复杂。由于针对规则中的域包括的值是一个确定的值,还是一个范围,其预处理应该有很大的不同,而现有技术的RFC分类方法没有很好的加以区分处理。而且,现有的RFC分类方法最后只是生成一个预处理向量表(table表)时,并没有根据不同的业务特点,进行区别处理。本专利技术所述的数据包递归流分类方法,实现步骤如下一、预处理阶段把规则库中规则包含的字段分成多个域,确定递归分类的阶段个数和各个域的组合情况;根据规则的域是确定值或范围分别处理,并生成递归分类各阶段的预处理向量表;1)第一阶段,对每个域包括的值进行分类,计算出各个域的等价类标识号及其个数,并把等价类识别号填入与各个域相对应的第一阶段的预处理向量表中;当域的类型是单一确定值时首先对域内的每一个整数值(0~2n-1,n为域的位数)进行循环取值;在循环的内部,还包括下列处理步骤a.遍历规则库中每条规则的相对应域的值,如果与循环中域的取值相等,修改类比特位图对应位的值(CBM值),否则,保持类比特位图值不变;b.如果生成的比特位图值是第一次出现,记录下该比特位图值,更新等价类标识,等价类标识的总个数加1,并用新的等价类标识号填入预处理向量表;c.否则,用原来的等价类标识号填入预处理向量表;d.最后把类比特位图值重置为初始值; 当域的类型是一个范围时首先对域内的每一个整数值(0~2n-1,n为域的位数)进行循环取值;在循环的内部,还包括下列处理步骤a.遍历规则库中每条规则的相对应域的左区间值,如果与循环中域的取值相等,修改类比特位图对应位的值(CBM值),否则,保持类比特位图值不变;b.如果生成的比特位图值是第一次出现,记录下该比特位图值,更新等价类标识,等价类标识的总个数加1,并用新的等价类标识号填入预处理向量表;c.否则,用原来的等价类标识号填入预处理向量表;d.再遍历规则库中每条规则的域的右区间值,如果与循环中域的取值相等,把类比特位图中该规则号对应的位置重新设为0,并置规则结束标志位为真;否则,保持类比特位图值不变,规则结束标志位为假;e.判断规则结束标志位的真假;如果为假,则重新判断新生成的类比特位图是否第一次出现,如果是,更新等价类标识,等价类标识的总个数加1;如果为真,则循环下一个域的取值;f.如果为真,再判断规则库中是否有规则的左区间值等于循环中域的取值加1;如果是,则循环下一个域的取值;否则重新判断新生成的类比特位图是否第一次出现,如果是,更新等价类标识,等价类标识的总个数加1;2)根据前一阶段的预处理向量表,生成其它阶段的预处理向量表;具体包括以下处理步骤a.根据进行组合的域,分别循环选取每个预处理向量表中的一个等价类标识的类比特位图,将这些类比特位图按位与,得到新的类比特位图;b.根据所述类比特位图生成本阶段预处理向量表中所需的等价类标识,填入本阶段的预处理向量表中的相应位置;3)读取最后一阶段生成的预处理向量表中的等价类标识,找到与之对应的类比特位图,从所述类比特位图的最低位开始查找,找到第一个为1的位,用该位所在的位置号代替预处理向量表中的等价类标识号,更新最后一个阶段的预处理向量表;二、查找阶段将接收到的数据包在各阶段的预处理向量表中查找,确定出数据包所属的类标识,根据数据包的类标识对应的服务类型对数据包进行区分处理;具体包括以下处理步骤1)将接收到的数据包本文档来自技高网...

【技术保护点】
一种数据包递归流分类方法,其特征在于,实现所述方法的步骤是:一、预处理阶段:把规则库中规则包含的字段分成多个域,确定递归分类的阶段个数和各个域的组合情况;根据规则的域是确定值或范围分别处理,并生成递归分类各阶段的预处理向量表;二、查 找阶段:将接收到的数据包在各阶段的预处理向量表中查找,确定出数据包所属的类标识,根据数据包的类标识对应的服务类型对数据包进行区分处理。

【技术特征摘要】

【专利技术属性】
技术研发人员:阮沈勇马彧钟卫东
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1