一种位图聚合的递推流分类方法及其系统
技术领域
本发明涉及一种基于位图的递推流分类方法和系统,尤其涉及数据通讯领域中根据数据包上多个字段,将符合预定规则的特定的数据包从其它数据包中区别出来的方法和系统。
背景技术
IP网络进入了“IP电信网”的发展阶段,由此也带来了许多技术上新的挑战,许多新业务,诸如:包过滤、QoS、策略路由、NAT、流计费等,传统的基于目的地址路由匹配的数据包转发过程已经不再满足网络运营和管理的要求,基于整个IP头,甚至传输层头部的IP包(流)分类转发技术成为这些新业务的核心技术之一,其中快速流分类系统是分类转发技术的基础和关键。
快速流分类系统是数据通讯设备数据包处理流程的一部分,快速流分类系统有一个可配置的规则集,即若干条有优先级的规则的集合,每条规则描述一簇数据包头部的若干特征条件,快速流分类系统就是要在数据包到来时,从数据包满足其要求的若干规则中找出优先级最高的规则来。
包分类问题可形式化定义为:一个有N个规则的分类器{Rk},其中k=1,2,...,N;Rk包括2个实体:
1、一个d元的范围[llk,r1k]、[l2k,r2k]、......[ldk,rdk]。
2、一个指定分类器中优先权的数字Pri(Rk);
对一个到达分类器的被一d元组(P1,P2,...,Pd)指定相应域的数据包P,d维分类器问题就是找一个特定的值k,称为k*,满足:
对任意k≠k*,pri(Rk*)>Pri(Rk);且对任意i:1≤i≤d,有lik≤Pi≤rik流分类器不可能等到数据包到达后再一条一条地匹配,以找到优先级最高的规则。快速流分类器通常分为两个部分,一部分是控制层面根据分类规则集构造分类索引表的预处理模块;另一部分是数据层面将实际数据包通过分类索引表匹配到优先权最高规则的索引模块,可参照图1。
1999~2000年间,流分类技术有过一个研究的高潮,取得了一些成果,涌现了基于Trie算法流分类系统、递推流分类(RFC,Recursive FlowClassification)系统、基于层次化空间分割(Hi-Cuts)算法的流分类系统、基于位向量(BV)算法的流分类系统等快速流分类系统,这些系统各有优点,也各有缺点,有些分类系统分类速度随着分类规则集中规则数的增加而下降;有些系统需要配置很大的内存,系统成本较高;有些分类系统规则变化响应时间较长。这些算法都只能满足了数百条分类规则的应用场合的需求,其中递推流分类系统因为分类速度较快,且与分类规则数无关,是应用最为广泛的流分类系统。
递推流分类系统是1999年由Pankaj Gupta和Nick McKeown提出的一个在多字段上进行包分类的流分类系统,这个系统的核心包括:1)一个索引表的结构;2)一个由规则集构造索引表的预处理算法单元;3)一个索引算法单元。递推流分类系统没有增量式更新算法,一旦规则集发生变化,需要重新执行预处理算法单元。
其中,索引表结构如图2所示,索引表分为若干级(phase),每一级又有若干个索引块(Chunk),分级的结构就是采用的递推结构,每一级索引表包含两个字段,即索引值和对应的eqID,第一级的索引值是数据包的字段值,后面每一级的索引值是递推结构中前面两个或几个表的索引结果(即eqID的加权和)。在第Phase 0索引表中,规则的每个字段对应一个索引块;而Phase J(J>0)索引表中的每一个Chunk是由上一级索引表的若干个Chunk合并得到的。每一索引块的索引结果称为等价类标识(eqId,equal-class identification),所谓等价类,就是m元子空间(m≤d)中匹配到相同规则的子集(不考虑优先权)。位图用于表示等价类和规则集中规则的匹配情况,位图是一个N位的数据,其中N是规则集中的规则数,如果等价类与第i条规则匹配,则位图的第i位为“1”,否则为“0”。这样,等价类索引值就可以通过索引块中对应的等价类标识映射到位图。
索引算法单元收到一个数据包,由数据包(packet)对应位置的每一个字段,查找一个phase0索引表,由若干上一级的索引结果的运算值(如,加权和)索引下一级表,直到得到最后一级索引的结果,该结果就是packet在d元空间上等价类的标识(eqId),也就匹配到了一个位图,这个位图表明了这个等价类和哪些规则匹配,从中可以找出优先权最高的规则。值得说明的是,由于每个eqId对应的位图在预处理阶段就确定了,对应的优先权最高的规则也是确定的,大多数分类系统在预处理阶段就把eqId和对应的优先权最高的规则关联起来,从而直接得到数据包所符合的优先级最高的规则,索引算法单元不需要真的处理位图。
近年来分类规则数有爆炸增长的趋势。递推流分类系统与其它流分类系统一样暴露出了固有的弱点,一个具有图2结构的递推流分类系统,当规则集中的规则数达到2000条扩展访问列表规则时,等价类规则匹配位图(CBM,Equal Class Bitmap)表需要26M以上的内存,且在采用了Pentium1.6GHz CPU的系统中,等价类规则匹配位图响应规则变化的时间达2000秒。动辄数十兆的内存开销和数百秒的规则变化响应时间是妨碍超过2000条规则的快速流分类技术进入实用的关键因素。
发明内容
本发明要解决的技术问题是提出一种位图聚合的递推流分类方法,可以减少等价类规则匹配位图表的存储空间开销,加快等价类规则匹配位图生成和查找的操作速度。本发明还要提供一种可实现上述方法的系统。
为了解决上述技术问题,本发明提供了一种位图聚合的递推流分类方法,应用于递推流分类系统,包括以下步骤:
(a)首先构造一个初始位图,使其每一位对应于规则集合的一条规则,然后从一个规则字段取值范围内取出一个值,遍历规则集合,若该值满足当前规则,将位图中该规则对应的位置1,否则置0,得到一个位图BM;
(b)对位图BM进行聚合度为q的聚合,得到包括定长的聚合位部分和变长的细节位部分的聚合形式位图CBM,其聚合位部分的第i位对应于位图BM的第i个q元组,该q元组全为0时该位置0,否则该位置1,其细节位部分由位图BM去掉全为0的q元组后构成;
(c)比较聚合形式位图CBM和该规则字段对应索引块所属的位图集合中的聚合形式位图,检查是否已有相同的位图,若没有,为位图CBM生成新的等价类标识并将其加入到该位图集合,否则位图CBM使用其相同位图对应的等价类标识;然后,在所述索引块中建立位图CBM的等价类标识和当前规则字段值的映射关系;
(d)对该规则字段取值范围内的每一个值,按步骤(a)到(c)的方法处理完成后,该规则字段对应的索引块构造完成,再按同样方法构造出每个规则字段对应的索引块,形成完整的第0级索引表;
(e)按照设定的递推结构,对上一级的索引块进行递推,得到其下一级的索引块,递推时两个位图按其聚合形式进行比较,两个位图的“与”运算以聚合形式位图的“与”运算方法完成,如此逐级递推,直至所有索引块最后递推成为一个索引块;
(f)递推流分类系统收到一个数据包后,根据该数据包与流分类相关的每一个字段查找第0级的一个索引表,由若干上一级的索引结果运算得到的索引值来索引下一级表,直到得到最后一级索引结果,然后将该数据包匹配到其满足要求的优先权最高的规则。
进一步地,上述方法还可具有以下特点:所述步骤(b)进一步分为以下步骤:
(b1)按设定的聚合度q将N位的位图BM分为N/q个q位组,第i个q位组对应于位图中第q*i~q*i+q-1位,i=0,1,......,N/q-1,其对应的聚合形式位图CBM包括N/q位的聚合位部分和变长的细节位部分;
(b2)逐一判断位图BM的第i个q位组,i=0,1,......,N/q-1,对每个q位组,判断其各个位是否全为0,如果是,将所述聚合形式位图的聚合位部分第i位置0,否则将该聚合位部分的第i位置1,并将该q位组在位图BM中的对应位追加拷贝到聚合形式位图CBM的细节位部分;
(b3)对位图BM的所有q位组处理完成后,其对应的聚合形式位图CBM构造完成。
进一步地,上述方法还可具有以下特点:所述聚合形式位图的聚合位部分采用q位边界对齐,不足部分补0。
进一步地,上述方法还可具有以下特点:所述步骤(b3)后还包括步骤:再将所述聚合形式位图细节位部分的变长长度写入到其聚合位部分的前面,作为所述聚合形式位图的变长长度部分。
进一步地,上述方法还可具有以下特点:所述细节位部分的变长长度是用细节位部分包含的q位组个数表示的。
进一步地,上述方法还可具有以下特点:所述聚合形式位图的比较算法是:依次比较聚合形式位图CBM1和CBM2的变长长度部分、聚合位部分和细节位部分,只要有一个部分不同,直接返回二个位图不同的结果,结束;如果三个部分都相同,则返回二个位图相同的结果。
进一步地,上述方法还可具有以下特点:对两个聚合形式位图CBM1和CBM2进行与运算得到聚合形式的结果位图CBM的方法是:
依次比较CBM1和CBM2的聚合位部分的每一个相同位,每次比较时:
如果参与比较的两个位至少有一个为0,则将CBM聚合位部分的相同位置0;
如果参与比较的两个位均为1,将该两个位在各自位图的细节位部分对应的q位组进行按位“与”操作,得到q位组Q,如果Q全为0,将CBM聚合位部分的相同位置0,否则将CBM聚合位部分的相同位置1,并将CBM细节位部分与其聚合位部分该位对应的q位组赋值为Q。
进一步地,上述方法还可具有以下特点:所述步骤(b3)中,还将所述聚合形式位图细节位部分的变长长度写入其聚合位部分的前面,作为该聚合形式位图的变长长度部分;且在进行位图CBM1和CBM2的“与”运算时,在两者聚合位部分的所有位比较和处理完后,还将得到的CBM细节位部分的变长长度写入到其变长长度部分,得到包括三部分的结果位图CBM。
进一步地,上述方法还可具有以下特点:所述步骤(e)对上一级的两个索引块Chunk 1和Chunk 2递推得到下一级索引块Chunk 3时,对分属两个索引块Chunk 1和Chunk 2的两个等价类标识EqID1和EqID2,执行以下步骤:
(e1)将EqID1和EqID2对应的聚合形式位图进行“与”操作,生成属于下一级索引块Chunk 3的一个聚合形式的位图CBM3;
(e2)检查聚合形式位图CBM3在Chunk 3所属的位图集合中是否存在,若不存在,为其生成新的等价类标识,并将其加入到Chunk 3所属位图集合中;若存在,则位图CBM3使用与其相同的位图的等价类标识;
(e3)计算EqID1×(Chunk 2的等价类个数)+EqID2,作为Chunk 3中对应于位图CBM3的索引值,然后将位图CBM3的等价类标识填入Chunk3中该索引值对应的位置,形成字段值到该等价类标识的映射关系;
对Chunk 1和Chunk 2中的任意两个等价类标识,按上述方法处理完成后,得到最终的递推结果Chunk 3。
进一步地,上述方法还可具有以下特点:所述聚合度q为8、16、32、64或128。
本发明提供的位图聚合的递推流分类系统包括用于根据分类规则集构造分类索引表的预处理模块和将实际数据包通过分类索引表匹配到优先权最高规则的索引模块,所述预处理模块包含预处理总控单元、第0级索引表构造单元和第J级索引表构造单元,所述索引模块包含索引表和位图存储单元、索引算法单元,其特点是:
所述第0级索引表构造单元包含聚合运算子单元和位图比较子单元,在构造各个规则字段对应的索引块时,所述聚合运算子单元用于对未经聚合的位图BM进行聚合度为q的聚合,得到包括定长的聚合位部分和变长的细节位部分的聚合形式位图CBM,其聚合位部分的第i位对应于位图BM的第i个q元组,该q元组全为0时该位置0,否则该位置1,其细节位部分由位图BM去掉全为0的q元组后构成;而所述位图比较子单元按两个位图的聚合形式完成该两个位图的比较;
所述第J级索引表构造单元包含位图比较子单元和“与”运算子单元,在按照设定的递推结构,对上一级索引块进行递推得到下一级索引块时,位图以聚合后的形式表示,所述位图比较子单元按两个位图的聚合形式完成该两个位图的比较,所述“与”运算子单元以聚合形式位图的“与”运算方法完成两个位图的“与”运算;
所述索引表存储单元用于保存构造得到的各级索引表。
进一步地,上述系统还可具有以下特点:所述聚合运算子单元按以下方式完成对位图的聚合运算:
(I)按设定的聚合度q将N位的位图BM分为N/q个q位组,第i个q位组对应于位图中第q*i~q*i+q-1位,i=0,1,......,N/q-1,其对应的聚合形式位图CBM包括N/q位的聚合位部分和变长的细节位部分;
(II)逐一判断位图BM的第i个q位组,i=0,1,......,N/q-1,对每个q位组,判断其各个位是否全为0,如果是,将所述聚合形式位图的聚合位部分第i位置0,否则将该聚合位部分的第i位置1,并将该q位组在位图BM中的对应位追加拷贝到聚合形式位图CBM的细节位部分;
(III)对位图BM的所有q位组处理完成后,其对应的聚合形式位图CBM构造完成。
进一步地,上述系统还可具有以下特点:所述聚合运算子单元在进行位图的聚合运算时,在所述步骤(III)中,还将所述聚合形式位图CBM的细节位部分的变长长度写入到其聚合位部分的前面,作为所述聚合形式位图CBM的变长长度部分。
进一步地,上述系统还可具有以下特点:所述位图比较子单元对两个聚合形式的位图进行比较时,依次比较这两个位图的变长长度部分、聚合位部分和细节位部分,只要有一个部分不同,就直接返回二个位图不同的结果,结束;如果三个部分都相同,则返回二个位图相同的结果。
进一步地,上述系统还可具有以下特点:所述“与”运算子单元对两个聚合形式位图CBM1和CBM2进行“与”运算得到聚合形式的结果位图CBM的方法是:
依次比较CBM1和CBM2的聚合位部分的每一个相同位,每次比较时:
如果参与比较的两个位至少有一个为0,则将CBM聚合位部分的相同位置0;
如果参与比较的两个位均为1,将该两个位在各自位图的细节位部分对应的q位组进行按位“与”操作,得到q位组Q,如果Q全为0,将CBM聚合位部分的相同位置0,否则将CBM聚合位部分的相同位置1,并将CBM细节位部分与其聚合位部分该位对应的q位组赋值为Q。
进一步地,上述系统还可具有以下特点:所述位图比较子单元进行以聚合形式表示的位图的比较时,在步骤(III)中,还将聚合形式位图CBM的细节位部分的变长长度写入其聚合位部分的前面,作为其变长长度部分;相应地,所述“与”运算子单元进行以聚合形式位图的“与”运算时,在将位图CBM1和CBM2聚合位部分的所有位比较并处理完后,还将聚合形式位图CBM的细节位部分的变长长度写入到该CBM的变长长度部分。
由上可知,本发明通过对递推流分类算法中等价类规则匹配位图的聚合,减少了递推流分类系统在规则集预处理生成索引表阶段等价类规则匹配位图表的存储空间开销,也减少了等价类规则匹配位图生成操作(按位与运算)和等价类规则匹配位图表查找的CPU时间开销,从而缩短预处理时间,加快规则变化响应速度。
附图说明
图1是本发明实施例位图聚合的递推流分类系统结构框图;
图2是典型递推IP流分类系统的递推结构图;
图3是本发明实施例位图聚合示意图;
图4是本发明实施例位图聚合的递推流分类系统Phase 0索引表的构造流程图;
图5是本发明实施例聚合形式的位图“与”操作的流程图;
图6是本发明实施例聚合形式的位图比较操作的流程图;
图7是本发明实施例位图聚合的递推流分类系统Phase J(J>0)索引表的构造流程图。
具体实施方式
位图是N位的数据,在预处理模块存储了大量的位图,并且大多数时间都在进行位图的“与”及“比较”操作。通过大量的研究分析,发明人发现,实际上位图中“1”位是很少,一个等价类往往只与极少的规则匹配。也就是说位图是稀疏的,因此,本发明通过对稀疏的位图表项进行聚合处理,用长度更短的数据来表达位图所携带的信息,从而减少位图信息的存储所占用的内存空间,以及减少位图“与”及“比较”操作所花费的时间,也就是响应时间。
如图1所示,本实施例所述位图聚合的递推流分类系统主要由以下控制层面和数据层面两部分组成:
控制层面是根据分类规则集构造分类索引表的预处理模块,该模块进一步包括:
预处理总控单元,用于控制Phase 0索引表构造模块构造Phase 0的各个索引块(chunk),然后控制Phase J(J>0)索引表构造模块依次递推构造PhaseJ(J>0)的各个chunk。
Phase 0索引表构造单元,用于根据构造各个规则字段对应的索引块。其包含聚合运算子单元和位图比较子单元(各个子单元在图中未示出),在构造时,所述聚合运算子单元用于对未经聚合的位图BM进行聚合度为q的聚合,得到包括定长的聚合位部分和变长的细节位部分的聚合形式位图CBM,其聚合位部分的第i位对应于位图BM的第i个q元组,该q元组全为0时该位置0,否则该位置1,其细节位部分由位图BM去掉全为0的q元组后构成;而所述位图比较子单元在比较两个位图时,是按这两个位图的聚合形式来比较的。
Phase J(J>0)索引表构造单元,用于按照设定的递推结构,对上一级Chunk进行递推计算得到下一级的Chunk,如此逐级递推直至最终得到一个Chunk。其包含位图比较子单元和“与”运算子单元,在递推时,位图以聚合后的形式表示,所述位图比较子单元按两个位图的聚合形式完成该两个位图的比较,所述“与”运算子单元以聚合形式位图的“与”运算方法完成两个位图的“与”运算。
数据层面是将实际数据包通过分类索引表匹配到优先权最高规则的索引模块,该单元包括索引表和位图存储单元,以及索引算法单元,其中:
索引表和位图存储单元保存了构造得到的各级索引块,每个索引块包括一个索引表和对应的以聚合形式表示的位图。在另一实施例中,聚合形式的位图可以只在索引表构造阶段生成,可以不保存聚合形式的位图,只要有索引表就可以了,当然,需要预先直接将最后一级的EqID对应到优先权最高的规则。
索引算法单元收到一个数据包后,由数据包(packet)的每一个字段,查找phase 0的一个索引表,按照相同的递推结构,由上一级的索引结果(即EqID)的加权和作为索引值来索引下一级表,直到得到最后一级索引的结果,即为packet在d元空间上等价类的标识(eqId),最后找到该标识对应的优先权最高的规则,可以在预处理阶段把eqId和对应的优先权最高的规则直接关联起来。
本发明的位图聚合没有改变递推分类系统的索引块的形式,所以本发明的索引模块与传统的递推分类系统相同,只是位图采用聚合后的形式来表示。但是由于位图的聚合,Phase 0索引表构造单元和Phase J(J>0)索引表构造单元的构造流程需要做相应的改进。
Phase 0索引表构造模块构造一个规则字段(一般来说是8~16bits)对应的Chunk的方法如图4所示,包括以下步骤:
步骤110,构造一初始位图,长度等于规则集合中的规则数,位图中每一bit位置0,对应于一条规则;
步骤120,从该规则字段取值范围(1,2B-1)内依次取出一个值,B是规则中某个字段的宽度;
步骤130,依先后顺序遍历规则集合,如果该值满足当前规则,则将位图中该规则对应的bit位置1,否则置0,得到当前位图BM;
步骤140,对位图BM进行聚合度为q的聚合,得到该位图的聚合形式表示CBM,下文也称为聚合形式位图CBM,其聚合位部分的第i位对应于位图BM的第i个q元组,该q元组全为0时该位置0,否则该位置1,其细节位部分由位图BM去掉全为0的q元组后构成;
步骤150,将聚合形式位图CBM与该规则字段对应索引块所属位图集合中的位图(也是聚合形式的)进行比较,检查是否有相同的位图,若没有,则为位图CBM生成新的EqID(等价类标识)并将其加入到该位图集合中,否则,位图CBM使用其相同位图对应的EqID;
步骤160,将位图CBM的EqID填入Chunk中当前规则字段值对应的位置,形成字段值到EqID的映射关系;
步骤170,判断该规则字段取值范围内的所有值是否处理完毕,如果没有,返回步骤120,如果处理完毕,则该规则字段对应的Chunk构造完成。
通过以同样的方法构造每个规则字段对应的Chunk,Phase 0索引表构造模块最终构造出完整的Phase 0的索引表。
下面将以一个实例详细论述上述步骤三和四中的位图聚合运算方法。
我们对N Bits的稀疏位图进行q Bits的聚合压缩。q称为聚合度,可以取8、16、32、64、128等值以便于CPU处理。图3是一个聚合度为8的位图聚合的一个实例。
聚合后的位图由三部分组成:第一部分是变长长度部分,用于表示聚合形式位图细节位部分的变长长度,即其包含的q元组个数。该变长长度部分是冗余信息,但是该字段是含有丰富的位图信息,是信息总体的特征,有助于加快比较的速度,进一步改进系统性能;第二部分是N/q位的聚合位部分(q位边界对齐,不足部分补0),聚合位部分的第i位是未经聚合的位图中第i*q~i*q+1位“或”运算的结果,该位为0表示其对应q位组全为0,该位为1表示其对应q位组至少有一个“1”位;第三部分是变长的细节位部分,由未经聚合的位图去掉等于0的q位组而成,细节位部分的第k个q位组(第k*q~k*q+q-1位)对应于聚合位部分的第k个“1”位,如果聚合位部分的第k个“1”位出现在第i位上,则细节位部分的第k个q位组与未经聚合位图的第i个q位组(第i*q~i*q+q-1位)相等。
聚合的方法如下:依次对未经聚合的位图的第i个q位组进行处理(即第q*i~q*i+q-1位,i=0,1,...),如果该q位组不全为0,则聚合后的位图第二部分的第i位置1,并把未经聚合的位图的这个非0的局部(第q*i~q*i+q-1位)追加拷贝到聚合后的位图的第三部分(细节位部分)。否则,聚合形式位图的第二部分(聚合位部分)的第i位置0。第三部分相当于未经聚合的位图忽略了全0的q位组后的形式。未经聚合的位图的所有q位组处理完成后,再调整聚合形式位图的第一部分(变长长度部分)为写入第三部分(细节位部分)的q位组个数。
图3是一个30条规则的分类器中某等价类所对应位图的聚合示意图,该等价类和规则{0,1,2,20}匹配,取聚合度q=8。因为未经聚合的位图的0~8位、16~23位中有“1”位,所以聚合形式位图的聚合位部分的第1、3位为“1”,其它位为“0”,其细节位部分中包含了未经聚合的位图中的非全0的q位组,即0~8位和16~23位。
在位图聚合的递推流分类系统中需要对聚合形式位图做两种操作,第一种是两个聚合形式位图的“与”运算,以求得两个等价类交集(新等价类)的位图(聚合形式),其流程参见图5。第二种是两个聚合形式位图的比较操作,用于判断两个等价类是否可以合并,其流程参见图6。
图5的流程用于对两个聚合形式位图CBM1和CBM2进行与运算,得到聚合形式的结果位图CBM,包括如下步骤:
步骤210,依次读出CBM1和CBM2的“聚合位部分”的一个相同位(通常从第0位开始);
步骤220,判断参与比较的两个bit位是否至少有一个为0,如果是,执行下一步,否则,执行步骤240;
步骤230,将结果CBM的聚合位部分的对应bit位置0,执行步骤270;
步骤240,将CBM1和CBM2“细节位部分”中与各自“聚合位部分”该位对应的两个q位组进行按位“与”运算,得到q位组Q;
步骤250,判断该q位组Q是否全为0,如果是,执行步骤230,否则,执行下一步;
步骤260,将结果位图CBM的聚合位部分的对应bit位置1,并将结果位图CBM细节位部分中与该bit位对应的q位组(如该bit位为聚合位部分第k个“1”位,则该q位组为细节位部分第k个q位组)赋值为Q;
步骤270,判断CBM1和CBM2“聚合位部分”的所有位是否处理完毕,如果是,执行下一步,否则,返回步骤210;
步骤280,调整CBM的变长长度部分为写入的细节位部分的q位组个数,得到最终的结果位图CBM。
图6示出了对两个聚合形式位图CBM1和CBM2进行比较操作的流程,包括以下步骤:
步骤310,比较聚合形式位图CBM1和CBM2的变长长度部分是否相同,如果不同,执行步骤350,否则继续下一步;
步骤320,比较聚合形式位图CBM1和CBM2的聚合位部分是否相同,如果不同,执行步骤350,否则继续下一步;
步骤330,比较聚合形式位图CBM1和CBM2的细节位部分是否相同,如果不同,执行步骤350,否则继续下一步;
步骤340,返回二者相同的结果,结束;
步骤350,返回二者不同的结果,结束。
可以看出,相比传统递推流分类系统中的位图“与”及“比较”操作,聚合后的位图数据长度更短,“与”及“比较”操作花费时间也短,所以位图聚合的递推流分类系统预处理模块处理时间短,响应时间减少。
Phase J(J>0)索引表构造模块通过对前一级生成的Chunk进行递推计算,得到其下一级的索引表,此过程一直进行下去(J不断增加),直到所有的Chunk最后递推成为一个Chunk。
对两个Chunk 1和Chunk 2进行递推得到递推结果Chunk 3的方法如图7所示,包括以下步骤:
步骤410,取出分属Chunk 1和Chunk 2的两个等价类标识EqID1和EqID2,将其对应的聚合形式位图CBM1和CBM2进行“与”操作,生成属于Chunk 3的一个聚合形式的结果位图CBM3;
步骤420,检查聚合形式位图CBM3在Chunk 3所属的位图集合中是否存在,若不存在,执行下一步,若存在,执行步骤440;
步骤430,为位图CBM3生成新的EqID,并将其加入到Chunk 3所属的位图集合中,执行步骤450;
步骤440,位图CBM3使用相同位图对应的EqID;
步骤450,计算EqID1×Chunk 2的等价类个数+EqID2,结果作为Chunk3中对应于位图CBM3的索引值;
步骤460,将该位图CBM3的EqID填入Chunk 3中该索引值对应的位置,形成字段值到EqID的映射关系;
步骤470,判断Chunk 1和Chunk 2中任意两个等价类标识的组合是否都已处理完毕,如果未处理完,返回步骤410,如果处理完成,则得到了递推结果Chunk 3,结束。
对于具有图2递推结构的分类系统,传统递推分类系统和采用本发明位图聚合的递推分类系统在Pentium M1.6GHz计算机上仿真对比如下:
一,1000条标准acl分类规则的分类器,传统递推分类器算法和位图聚合的递推分类器(聚合度32)的比较见表1。
表1:1000条标准acl规则分类器比较
|
内存占用 |
响应时间 |
传统递推分类系统 |
13,173,102 |
<1s |
位图聚合的递推分类系统 |
1,654,800 |
<1s |
二,1000条扩展acl分类规则的分类器,传统递推分类器算法和位图聚合的递推分类器(聚合度32)的比较见表2。
表2:1000条扩展acl规则分类器比较
|
内存占用 |
响应时间 |
传统递推分类系统 |
13,173,102 |
157s |
位图聚合的递推分类系统 |
7,526,704 |
<1s |
三,2000条扩展acl分类规则的分类器,传统递推分类器算法和位图聚合的递推分类器(聚合度32)的比较见表3。
表3:2000条扩展acl规则分类器比较
|
内存占用 |
响应时间 |
传统递推分类系统 |
26,728,467 |
2,052s |
位图聚合的递推分类系统 |
18,032,924 |
4s |
实践证明改进的规则变化响应时间优化了10~100倍,空间开销优化了2~10倍。可见改进取得了相当好的效果,其内存和响应时间开销完全能够满足2000条以上扩展acl规则的分类器的要求。