CN100472427C - 一种数据包递归流分类方法 - Google Patents

一种数据包递归流分类方法 Download PDF

Info

Publication number
CN100472427C
CN100472427C CNB021366470A CN02136647A CN100472427C CN 100472427 C CN100472427 C CN 100472427C CN B021366470 A CNB021366470 A CN B021366470A CN 02136647 A CN02136647 A CN 02136647A CN 100472427 C CN100472427 C CN 100472427C
Authority
CN
China
Prior art keywords
territory
value
stage
rule
vector table
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
Application number
CNB021366470A
Other languages
English (en)
Other versions
CN1477494A (zh
Inventor
阮沈勇
马彧
钟卫东
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ZTE Corp
Original Assignee
ZTE Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by ZTE Corp filed Critical ZTE Corp
Priority to CNB021366470A priority Critical patent/CN100472427C/zh
Publication of CN1477494A publication Critical patent/CN1477494A/zh
Application granted granted Critical
Publication of CN100472427C publication Critical patent/CN100472427C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种数据包递归流分类方法,包括以下处理步骤:预处理阶段,把规则库中规则包含的字段分成多个域,确定递归分类的阶段个数和各个域的组合情况;根据规则的域是确定值或范围分别处理,并生成递归分类各阶段的预处理向量表;查找阶段,将接收到的数据包在各阶段的预处理向量表中查找,确定出数据包所属的类标识,根据数据包的类标识对应的服务类型对数据包进行区分处理。本发明的方法能够在多个域条件下,快速地进行数据包的分类。本发明的数据包递归流分类方法的分类器具有相当好的数据结构和数据冗余性,能够很好地为分类方法所用。

Description

一种数据包递归流分类方法
所属技术领域
本发明涉及IP网络中数据流的分类方法,具体涉及一种数据包的递归流分类方法,能够快速地对数据流进行分类处理。
背景技术
在Internet中,有许多种网络服务需要对数据包进行流分类,标记每个数据包所属的业务类,以决定它们应该接受哪种服务类型。数据包流分类的一个最简单的例子是IP地址的路由查找,即根据数据包中的目的IP地址来查找路由表,以选择不同的路由。随着Internet的飞速发展,涌现出了许多新的业务需求,如控制访问列表、策略路由、差分服务、流量计费等,与此相对应的数据流分类技术也变得越来越重要,越来越复杂,出现了基于多个域的数据包流分类技术。而随着业务类型的日趋复杂、分类规则的不断增多,要求数据流分类方法仍然具有极高的速度,这样才能满足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)
Figure C02136647D0005102406QIETU
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表)时,并没有根据不同的业务特点,进行区别处理。
发明内容:
本发明克服了现有技术RFC分类方法的上述不足,提出了一种更优化,并能适用多种业务情况下的数据包递归流分类方法,使得本发明的方法能够应用在路由器、防火墙等多种网络设备中。
本发明所述的数据包递归流分类方法,实现步骤如下:
一、预处理阶段:把规则库中规则包含的字段分成多个域,确定递归分类的阶段个数和各个域的组合情况;根据规则的域是确定值或范围分别处理,并生成递归分类各阶段的预处理向量表;
1)第一阶段,对每个域包括的值进行分类,计算出各个域的等价类标识号及其个数,并把等价类识别号填入与各个域相对应的第一阶段的预处理向量表中;
当域的类型是单一确定值时:
首先对域内的每一个整数值(0~2n-1,n为域的位数)进行循环取值;在循环的内部,还包括下列处理步骤:
a.遍历规则库中每条规则的相对应域的值,如果与循环中域的取值相等,修改类比特位图对应位的值(CBM值),否则,保持类比特位图值不变;
b.如果生成的比特位图值是第一次出现,记录下该比特位图值,更新等价类标识,等价类标识的总个数加1,并用新的等价类标识号填入预处理向量表;
c.否则,用原来的等价类标识号填入预处理向量表;
d.最后把类比特位图值重置为初始值;
当域的类型是一个范围时:
首先对域内的每一个整数值(0~2 n-1,n为域的位数)进行循环取值;在循环的内部,还包括下列处理步骤:
a.遍历规则库中每条规则的相对应域的左区间值,如果与循环中域的取值相等,修改类比特位图对应位的值(CBM值),否则,保持类比特位图值不变;
b.如果生成的比特位图值是第一次出现,记录下该比特位图值,更新等价类标识,等价类标识的总个数加1,并用新的等价类标识号填入预处理向量表;
c.否则,用原来的等价类标识号填入预处理向量表;
d.再遍历规则库中每条规则的域的右区间值,如果与循环中域的取值相等,把类比特位图中该规则号对应的位置重新设为0,并置规则结束标志位为真;否则,保持类比特位图值不变,规则结束标志位为假;
e.判断规则结束标志位的真假;如果为假,则重新判断新生成的类比特位图是否第一次出现,如果是,更新等价类标识,等价类标识的总个数加1;如果为真,则循环下一个域的取值;
f.如果为真,再判断规则库中是否有规则的左区间值等于循环中域的取值加1;如果是,则循环下一个域的取值;否则重新判断新生成的类比特位图是否第一次出现,如果是,更新等价类标识,等价类标识的总个数加1;
2)根据前一阶段的预处理向量表,生成其它阶段的预处理向量表;
具体包括以下处理步骤:
a.根据进行组合的域,分别循环选取每个预处理向量表中的一个等价类标识的类比特位图,将这些类比特位图按位与,得到新的类比特位图;
b.根据所述类比特位图生成本阶段预处理向量表中所需的等价类标识,填入本阶段的预处理向量表中的相应位置;
3)读取最后一阶段生成的预处理向量表中的等价类标识,找到与之对应的类比特位图,从所述类比特位图的最低位开始查找,找到第一个为1的位,用该位所在的位置号代替预处理向量表中的等价类标识号,更新最后一个阶段的预处理向量表;
二、查找阶段:将接收到的数据包在各阶段的预处理向量表中查找,确定出数据包所属的类标识,根据数据包的类标识对应的服务类型对数据包进行区分处理;
具体包括以下处理步骤:
1)将接收到的数据包的包头对应分成多个域,每个域的值做为第一阶段索引值在第一阶段预处理向量表中进行并行内存查找;
2)把前一阶段的查找结果按照预处理阶段域的组合情况,进行组合,生成一个新的索引值,在下一级的预处理向量表中递归查找;
如果为两个域进行组合,组合方式为:下一级索引值等于上一级某个域A查找结果的值乘以与它组合的另一个域B的等价类标识的个数,然后加上域B的查找结果;
如果为多域的组合,先以某两个域组合的索引结果做为域的查找结果值再与第3个域进行组合,以此类推;
3)最后一个阶段的查找结果获得的值就是数据包所属类的类标识,然后根据数据包的类标识对应的服务类型对数据包进行区分处理。
本发明的方法能够在多个域条件下,快速地进行数据包的分类。方法的分类器具有相当好的数据结构和数据冗余性,能够很好地为分类方法所用。本发明的方法是基于多阶段逐步递减的分类方法,用硬件实现时,每秒钟能够分类3000万个数据包;用软件实现时,每秒钟能够分类100万个数据包。
附图说明:
图1是递归分类方法的递归映射原理图。
图2为数据包递归分类示意图。
图3为数据包头域的划分示意图。
图4为本发明数据包递归流分类方法实施例中第一阶段的处理流程图。
图5是本发明数据包递归流分类方法实施例中的数据包递归分类示意图。
具体实施方式:
下面结合附图和实施例具体说明本发明的数据包递归流分类方法:
如图1所示的递归映射原理,数据包头的S比特通过几个阶段的递归映射,最后映射成所属类classID的T比特。每个阶段都通过映射,成为相对前一阶段更少的比特值。
图2所示的数据包递归分类示意图,包括多个递归映射阶段,每个阶段都进行一系列的并行内存查找,每次查找返回的值都比内存查找时输入的值有更少的比特值。首先,对用户配置的一系列规则进行处理,在各个阶段,产生一系列预处理后生成的预处理向量表(Preprocessed table),存放在内存中;然后,就可以根据数据包头中多个域的值,在内存中进行多次并行的哈希运算,查找各阶段生成的预处理向量表,最后查到分类结果(即类的标识)。
数据包头的F个域被分成多个chunk#,这多个chunk#就成为了第一阶段并行内存时的索引值,例如,图3所示的源、目的IP地址等几个域,就被分成8个chunk#。在后续阶段,就把前一阶段不同chunk#的内存查找结果(用术语eqID来表示)按照某种规则组合在一起,形成一个新的索引值,然后再进行内存的查找,找到一个新的eqID。这样递归查找,在最后阶段,查找结果获得一个确定的值,而该确定的值对应的就是数据包所属类的classID。根据该classID,就知道了数据包可得到何种服务类型。
以下再具体说明本发明的数据包递归流分类方法的具体实现过程:
首先,是方法的预处理阶段。对于预处理阶段,其的第一阶段与后续阶段的处理方式是不一样的。
在预处理的第一阶段,对规则库中的每个chunk#域包括的值进行分类,求出各个chunk#域的不同类别号(eqID)及其个数,并把eqID按照一定的填充方式,填入与各个域相对应的预处理向量表中(table表)。根据chunk#域包括的值是一个的确定的值,还是一个范围,分别进行了处理。当是一个确定的值时,生成的类别号eqID对应的是一个单个的值;当是一个范围时,生成的类别号eqID对应的是一个范围。图4是处理的流程图。图中,一个CBM与一个类别号eqID相对应,用于标识规则库中哪些规则符合该eqID,如果某条规则条目符合该eqID,那么就在CBM的该规则条目位置置为1,形成的CBM如,0000110010010001001000,CBM包括的位数等于规则条目数,每一位对应一条规则条目。
在预处理的其余阶段,根据拟定的组合情况,采用与第一阶段不同的处理方式。其处理过程如下:对组合的每一个chunk#,循环遍历每个chunk#的CBM,把要组合的每个chunk#域的CBM值按位与,生成一个CBM值。然后,判断生成的CBM值是否是第一次出现。如果是,那么说明有一个新的eqID号出现,因此eqID的总个数加1,同时记录下该CBM值,并用新的eqID号填充table表。否则,用老的eqID号填充table表。通过这样的循环遍历,最后就生成了table表、各个CBM值及eqID的个数。
很明显的是,一个类比特位图CBM中,有可能多个位为1,也就是说,根据与等价类标识eqID对应的类比特位图CBM生成的预处理向量表,有很大的冗余性。因此,可以借助于这种冗余性,把所有的规则合在一起进行处理。已知的是,每个的控制访问列表号包括许多的规则条目,这其中最后的规则是一个默认的可以匹配任何数据包的规则。如果用户配置了多个不同的控制访问列表号,这样如果把所有的控制访问列表号包含的规则合在一起进行处理,生成最后的预处理向量表时,总是从各个eqID对应的CBM的最低位开始查找,那么其结果肯定是不对的,因为每个控制访问列表号都有多个可以匹配任何数据包的规则存在,查找CBM时,当该数据包不匹配第一个控制访问列表号的除最后一条规则外的所有规则时,该数据包仍然会匹配第一个控制访问列表号的最后一条规则,而不会继续往前,去查找第二个控制访问列表号包括的规则条目。为此,在生成与各控制访问列表号对应的预处理向量表时,应该从不同的控制访问列表号包括的规则所在的起始位置进行查找,而不是总是从最低位置开始进行查找,这样找到的第一个为1的bit所在的位置,对应的规则条目一定属于该控制访问列表号包括的规则,然后就可以把该位置的位置号填入相应的预处理向量表内。最后,就生成与各个控制访问列表号对应的预处理向量表了。
其次,是方法的查找阶段。在其第一个阶段,以数据包头的多个chunk#为索引值,并行查找第一阶段生成的各个table表,获得各个eqID。然后,按照预处理阶段设定的组合情况,把这多个eqID组合,生成一个新的索引值,在各个阶段进行查找。组合方式为:index=eqID_a*sizeB+eqID_b,其中eqID_a、eqID_b为上一级Chunk#查表得到的结果,sizeB为Chunk#B中类别号的个数。通过这样的递进查找,在最后阶段的查找结果获得了一个确定的值,而该确定的值对应的就是数据包所属类的classID(规则号)。根据该classID,就知道了数据包可以得到何种服务类型。当然,在查找的最后阶段也可以针对不同的应用,进行特定的查找。
在上述二个必备条件的基础上,为了节省内存的使用、提高查找性能,还可以对RFC方法进行如下的优化处理。
RFC方法预处理的最后一个阶段,生成table表时,开始的处理与前面其余阶段的处理类似,在table表中存放各个eqID号。接着的处理有所不同:在这里,根据各个eqID对应的CBM值,从最低位开始查找,找到第一个为1的位(最先匹配原则,如应用在控制访问列表中),用该位所在的位置号(相对应于规则条目号)代替table表中的eqID号,这样重新生成各个table表。很明显的是,一个CBM中,有多个位置的值可能为1,也就是说,根据与eqID对应的CBM值生成的table表,有很大的冗余性。因此,在查找CBM的各个bit位,找到第一个为1的bit时,可以进行特殊处理。
如果用户在核心路由器的多个端口配置了不同的控制访问列表号,已知的是,每个控制访问列表号都有一个默认的匹配任何数据包的规则。这样,如果把所有的控制访问列表号包含的规则合在一起,用RFC方法进行处理,按上面的RFC方法生成最后的table表时,总是从各个eqID对应的CBM值的最低位开始查找,那么其结果肯定是不对的,因为有多个可以匹配任何数据包的规则存在,查找CBM时,首先找到的肯定是第一个控制访问列表号的那个可以匹配任何数据包的规则。为此,在生成与各端口对应的table表时,应该从该端口包括的规则所在的起始位置进行查找,而不是总是从最低位置开始进行查找,这样找到的第一个为1的bit所在的位置,对应的规则条目一定属于该端口配置的规则之一,然后把该位置写入相应的table表内。最后,生成的table表就是与各端口对应的table表了。
上述的特殊处理,可以节省绝大部分RFC方法预处理阶段需要的内存使用。事实上,通过把各个控制访问列表号的所有ACL条目混合在一起进行预处理,然后只是在形成最后一个表时生成与各个端口对应的预处理向量表。查找阶段,开始的查找与前面必备条件下论述的查找方式基本相同,只是在查找最后一个表时,只查找与本端口对应的预处理向量表,而不是预处理最后阶段原先形成的那个table表,这种处理方式除了最后一个阶段生成的多个table表外,只需维护一份其它阶段生成的各个预处理向量table表,极大的节省了内存的使用量。很明显,如果不这样处理,每个控制访问列表号各自要维护一份自己的每个阶段的各个table表,其占用的内存量使用量是惊人的。
此外,为了节省查找次数与时间,提高查找性能,还可以进行如下的技巧性处理。在RFC方法预处理最后一个阶段生成的预处理向量表中,存放的是数据包所属类的规则号(classID),根据该classID,还需查找一次内存才能获得数据包可以得到的服务类型。实际上,这一次内存查找是多余的。在处理时,可以用规则号对应的服务类型代替规则号(classID)存放在最后一个阶段生成的table表内,这样查找最后一个预处理向量表,得到的直接就是规则号的服务类型。对于控制访问列表来说,可以把服务类型permit或deny存放在预处理向量内。另外,在查找阶段,可以通过判断预处理阶段生成的各个预处理向量表的类别号(eqID)的个数来节省查找读内存的次数。当知道预处理向量表的类别号(eqID)只有一类时,就可以不再从内存中读该预处理向量表,以获得类别号(eqID),而是直接把该类别号设为零,因为当只有一个类别号时,该类别号肯定为零。这样,也就节省了许多次的读内存次数,特别当有很多table表只有一类时。根据上述改进的RFC方法的思想,把它应用于实现某核心路由器的控制访问列表(ACL)的快速数据包过滤的实现过程。
表1所示,为规则库中的规则条目。其中,前6条规则属于标准ACL号1,后6条规则属于扩展ACL号105,每个ACL号的最后一条规则是默认规则项,它可以匹配任意数据包。从表中可以看到,该规则库中包括的域有:源IP地址、目的IP地址、源端口号、目的端口号、协议类型、TCP建链标志ACK_RSTE及ICMP协议的类型等。其中,源端口与目的端口域都是一个范围,在规则库中,用源端口与目的端口的左端点与右端点来加于标识。
Figure C02136647D00141
表1  优选实例的规则库
为了合理使用内存,把源IP地址、目的IP地址分成了4个chunk#,这样共有8个chunk#,这8个chunk#的组合情况如图5所示。
考虑到核心路由器上软件系统的整个架构,把RFC方法的两个部分——预处理与查找,分别在不同的软件层进行实现。其中,预处理部分放在IP层实现,查找部分放在微码层实现。由于核心路由器的整个软件系统已经占用了绝大部分内存,而且查找所在的微码层只能访问到SDRAM内存的很少一部分,而RFC方法所消耗的内存非常大。核心路由器的接口板最多可以有24个端口,如果按常规考虑,每个端口各维护一份RFC方法预处理后生成的各个阶段的多张table表,那么内存的消耗肯定是巨大的,初步估算其内存消耗可能有几十兆,这种情况根本无法应用于核心路由器的软件系统中。
为此,唯一的可行方法是让所有端口共享这些table表。这样,只需维护一份RFC方法预处理后生成的table表占用的内存空间。但是,由于各个端口的配置的ACL号可能是不一样的,如果把所有的规则条目混在一起后,那么最后进行查找时,怎么来区分各个不同端口呢?为此,对最后一个阶段生成的table表,根据前述最后一个阶段的优化处理方式进行了特殊处理,根据不同端口配置的不同ACL号,从最后一个table表中再生成多份与各自端口对应的table表,并根据规则条目号,把各自规则条目的Action(permit或deny)填入对应的table表。这样,按各自端口进行查找,进行最后一步查找时,查到的就是Action,根据该Action,就可以允许该数据包通过,或拒绝它通过。
经过这样处理后,对24个端口的情况,并且每个table表中每个元素占用空间是一个byte时,其总共的内存消耗大约为2.4M。
最后,仍然需要强调的是,当在预处理阶段,对各个chunk#域的组合方式确定之后(相应的其阶段数也就确定了),方法的查找次数也就固定了。就优选实例来说,按照现在对多个chunk#的组合方式来看,其查找次数是15次,即要读15次内存。这在规则条目较少的情况下,该方法的性能与线性查找差不多。但按照统计得来的数据,一般用户配置时,每个端口的规则条目平均为50条,因此用该方法是合适的。

Claims (5)

1.一种数据包递归流分类方法,其特征在于,实现所述方法的步骤是:
一、预处理阶段:把规则库中规则包含的字段分成多个域,确定递归分类的阶段个数和各个域的组合情况;根据规则的域是单一确定值或范围分别处理:对每个域包括的值进行分类,当域是单一确定值时,首先对域内的每一个整数值进行循环取值,在循环的内部再遍历规则库中每条规则的相对应域的值,计算出等价类标识号填入各个域的相对应的第一阶段的预处理向量表中;当域是范围时,对域内的每一个整数值进行循环取值,在循环的内部,先遍历规则库中每条规则的相对应域的左区间值,计算等价类标识号及其个数,再遍历规则库中每条规则的相对应域的右区间值,重新计算等价类标识号及其个数,并把等价类标识号填入与各个域相对应的第一阶段的预处理向量表中;生成递归分类各阶段的预处理向量表;
二、查找阶段:将接收到的数据包在各阶段的预处理向量表中查找,确定出数据包所属的类标识,根据数据包的类标识对应的服务类型对数据包进行区分处理。
2.如权利要求1所述的数据包递归流分类方法,其特征在于,所述生成递归分类各阶段的预处理向量表具体包括:
1)根据前一阶段的预处理向量表,生成其它阶段的预处理向量表;
2)读取最后一阶段生成的预处理向量表中的等价类标识号,找到与之对应的类比特位图,从所述类比特位图的最低位开始查找,找到第一个为1的位,用该位所在的位置号代替预处理向量表中的等价类标识号,更新最后一个阶段的预处理向量表。
3.如权利要求2所述的数据包递归流分类方法,其特征在于,所述预处理阶段中的步骤1)还包括以下处理步骤:
a.根据进行组合的域,分别循环选取每个预处理向量表中的一个等价类标识号的类比特位图,将这些类比特位图按位与,得到新的类比特位图;
b.根据所述类比特位图生成本阶段预处理向量表中所需的等价类标识号,填入本阶段的预处理向量表中的相应位置。
4.如权利要求1或2所述的数据包递归流分类方法,其特征在于,所述预处理阶段中的根据规则的域是单一确定值或范围分别处理具体实现步骤是:
当域的类型是单一确定值时:
首先对域内的每一个整数值进行循环取值;
在循环的内部,整数值为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。
5.如权利要求1所述的数据包递归流分类方法,其特征在于,所述查找阶段的具体实现步骤是:
1)将接收到的数据包的包头对应分成多个域,每个域的值做为第一阶段索引值在第一阶段预处理向量表中进行并行内存查找;
2)把前一阶段的查找结果按照预处理阶段域的组合情况,进行组合,生成一个新的索引值,在下一阶段的预处理向量表中递归查找;
如果为两个域进行组合,组合方式为:下一阶段索引值等于上一阶段某个域A查找结果的值乘以与它组合的另一个域B的等价类标识号的个数,然后加上域B的查找结果;
如果为多域的组合,先以某两个域组合的索引结果做为域的查找结果值再与第3个域进行组合,以此类推;
3)最后一个阶段的查找结果获得的值就是数据包所属类的类标识,然后根据数据包的类标识对应的服务类型对数据包进行区分处理。
CNB021366470A 2002-08-20 2002-08-20 一种数据包递归流分类方法 Expired - Fee Related CN100472427C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB021366470A CN100472427C (zh) 2002-08-20 2002-08-20 一种数据包递归流分类方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB021366470A CN100472427C (zh) 2002-08-20 2002-08-20 一种数据包递归流分类方法

Publications (2)

Publication Number Publication Date
CN1477494A CN1477494A (zh) 2004-02-25
CN100472427C true CN100472427C (zh) 2009-03-25

Family

ID=34146585

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB021366470A Expired - Fee Related CN100472427C (zh) 2002-08-20 2002-08-20 一种数据包递归流分类方法

Country Status (1)

Country Link
CN (1) CN100472427C (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100440859C (zh) * 2005-06-06 2008-12-03 中兴通讯股份有限公司 一种位图聚合的递推流分类方法及其系统
CN1897564B (zh) * 2005-07-11 2010-04-14 中兴通讯股份有限公司 基于递归流分类算法的策略路由匹配方法
CN100417140C (zh) * 2005-10-24 2008-09-03 华为技术有限公司 一种流分类装置和方法以及采用该流分类装置的基站
CN100454902C (zh) * 2006-08-02 2009-01-21 华为技术有限公司 一种多域流分类的实现方法
CN101146027B (zh) * 2006-09-14 2010-08-18 中兴通讯股份有限公司 基于访问控制列表分类的方法
CN101500012B (zh) * 2009-02-27 2012-08-22 中国人民解放军信息工程大学 一种报文分类方法和系统
CN101848248B (zh) * 2010-06-04 2012-12-26 华为技术有限公司 一种规则查找方法和装置
TWI489825B (zh) * 2010-08-24 2015-06-21 Gemtek Technolog Co Ltd 路由設備及其網路封包處理方法
CN104462144B (zh) * 2013-09-24 2019-06-14 中兴通讯股份有限公司 一种包分类规则的查找方法及装置
CN104486240B (zh) * 2014-12-08 2018-03-06 福建星网锐捷网络有限公司 一种数据包分类方法及装置
CN106326234A (zh) * 2015-06-18 2017-01-11 深圳市中兴微电子技术有限公司 流分类方法及装置
CN109672623B (zh) * 2018-12-28 2020-12-25 大唐软件技术股份有限公司 一种报文处理方法和装置
CN111628935B (zh) * 2020-05-26 2021-02-12 清华大学 适用于软件定义网络的数据包分类方法及装置

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
具有高速过滤算法的IP防火墙. 申震生,龚向阳,王文东,阕喜戎.计算机应用,第21卷第5期. 2001
具有高速过滤算法的IP防火墙. 申震生,龚向阳,王文东,阕喜戎.计算机应用,第21卷第5期. 2001 *
高速路由器中TCP/IP数据流的分类技术. 龚向阳.中兴通讯技术,第4期. 2001
高速路由器中TCP/IP数据流的分类技术. 龚向阳.中兴通讯技术,第4期. 2001 *

Also Published As

Publication number Publication date
CN1477494A (zh) 2004-02-25

Similar Documents

Publication Publication Date Title
US9627063B2 (en) Ternary content addressable memory utilizing common masks and hash lookups
US7668160B2 (en) Methods for performing packet classification
US10496680B2 (en) High-performance bloom filter array
US9984144B2 (en) Efficient lookup of TCAM-like rules in RAM
CN100472427C (zh) 一种数据包递归流分类方法
US7684400B2 (en) Logarithmic time range-based multifield-correlation packet classification
CN106452868A (zh) 一种支持多维度聚合分类的网络流量统计实现方法
CN102377664A (zh) 一种基于tcam的区域匹配装置和方法
CN103107945B (zh) 一种快速查找ipv6路由的系统及方法
CN103248573A (zh) 面向OpenFlow的集中管理交换机及其数据处理方法
KR100512949B1 (ko) 필드레벨 트리를 이용한 패킷분류장치 및 방법
CN100488174C (zh) 流分类中基于硬件的差异化组织方法
CN110442570A (zh) 一种BitMap高速模糊查找方法
Abbasi et al. MBitCuts: optimal bit-level cutting in geometric space packet classification
CN106170956B (zh) 一种路由方法和设备
Pao et al. A multi-pipeline architecture for high-speed packet classification
Yang et al. Fast OpenFlow table lookup with fast update
CN101848248A (zh) 一种规则查找方法和装置
CN109754021B (zh) 基于范围元组搜索的在线包分类方法
Kekely et al. Packet classification with limited memory resources
Wang Scalable packet classification with controlled cross-producting
Waldvogel Multi-dimensional prefix matching using line search
Li et al. A fast, smart packet classification algorithm based on decomposition
Rafiee et al. Pruned Kd-tree: a memory-efficient algorithm for multi-field packet classification
CN100425039C (zh) 标志集合式两维报文分类及查找方法和设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
ASS Succession or assignment of patent right

Owner name: ZTE CO., LTD.

Free format text: FORMER OWNER: SHENZHENG CITY ZTE CO., LTD. SHANGHAI SECOND INSTITUTE

Effective date: 20040528

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20040528

Address after: Shenzhen Nanshan District hi tech Industrial Park Science and technology south road Zhongxing building law department

Applicant after: ZTE Corporation

Address before: No. 396, Shanghai, Guilin Road

Applicant before: Shanghai Inst. of No.2, Zhongxing Communication Co., Ltd., Shenzhen City

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

Granted publication date: 20090325

Termination date: 20140820

EXPY Termination of patent right or utility model