一种包分类规则集快速压缩方法技术

技术编号:7120297 阅读:246 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种包分类规则集快速压缩方法,特征是先使用哈希函数将提取的规则信息散列并以散列值作为查找关键字构建二叉查找树实现粗略分类;然后为二叉查找树的每个结点保存一个冲突列表,顺序比较每条规则完成精确分类;最后遍历二叉查找树所有结点的冲突列表,合并其中可合并的规则;重复该过程直至规则集中没有可以合并的规则,然后将没有被合并的规则组成一个新的规则集,重复执行上述所有过程直至不可能再发生合并。与基于逐条规则逐个域比较的现有技术相比较,在保持相近压缩率的前提下,本发明专利技术可明显减少压缩时间,有效地减少规则之间比较次数,比较速度较快;实验结果表明,本发明专利技术方法可将压缩时间平均减少90%以上。

【技术实现步骤摘要】

本专利技术属于电数字数据处理
,具体涉及包分类规则集的快速压缩方法。
技术介绍
规则集是包分类算法执行分类的基础和依据,它的性质主要取决于它的结构特性和规模。在实际应用中,规则集的结构特性一般由具体应用的场景所决定;而规则集的规模经常变化,并且规则集的规模对一些包分类算法性能的影响也比较明显,一般情况下,规则集规模越小,其存储所需空间越少,且能够使包分类算法的性能越好。目前压缩规则集的方法多采用逐条规则逐个域比较的简单压缩方法,这种压缩策略随着规则集规模的增大会导致压缩时间越来越长。
技术实现思路
本专利技术的目的是提出,以解决在规则集规模较大时,基于逐条规则逐个域比较的简单压缩方法导致压缩时间较长的问题,实现规则集的快速压缩。本专利技术包分类规则集快速压缩方法,首先提取包括源/目的地址的前缀长度、源 /目的端口号的范围、协议类型以及处理动作在内的这些规则信息,通过哈希(Hash)函数h =H(Ri) = mask+ V Iog(W) + prtcl+actionm ^P^将规则信息散列,式中氏表示包分类规则集sip _l,dp_wdip _h中的第i条规则,sip_h、sip_l和dip_h分别为源地址高16位、低16位和目的地址高16 位的前缀长度,sp_w和dp_w分别为源端口和目的端口的范围,prtcl为协议类型值,action 为处理动作项的值;再以散列值作为查找关键字构建二叉查找树,然后为二叉查找树的每个结点保存一个冲突列表,并在冲突列表中顺序比较每条规则,最后合并冲突列表中的可合并规则;其特征在于将比较压缩过程转变为先分类再合并的过程,即先通过使用哈希函数将提取的规则信息散列并以散列值作为查找关键字构建二叉查找树实现粗略分类;然后为二叉查找树的每个结点保存一个冲突列表,在冲突列表中顺序比较每条规则完成精确分类;最后遍历二叉查找树所有结点的冲突列表,合并其中可合并的规则;重复“先通过使用哈希函数将提取的规则信息散列”到“合并其中可合并的规则”的过程直至规则集中没有可以合并的规则,然后将没有被合并的规则-即合并了其它规则和不能被其它规则合并的规则-组成一个新的规则集,重复执行上述所有过程直至不可能再发生合并;具体操作步骤如下第一步、规则集读取和存储步骤读取规则集并将其存储在嵌套定义的数据结构中;第二步、快速压缩步骤,该步骤又可分为以下具体步骤初始化步骤1)置规则集的合并标志为假,并新建一棵空的二叉查找树;提取规则信息步骤2)对于包分类规则集中的某条规则Ri,如果它没有被合并且4没有合并其它规则,则对其提取规则信息并使用哈希函数散列成查找关键字;查找关键字步骤;3)在二叉查找树上查找与包分类规则集中的某条规则氏的查找关键字相同的结点;如果遍历整棵二叉查找树都没有找到关键字相同的结点,则将查找关键字和该规则信息作为一个新的结点插入树中并为其新建冲突列表,然后执行合并规则步骤5);如果找到相同结点,则执行检查规则信息步骤4);检查规则信息步骤4)判断查找关键字相同结点的规则信息是否相同;如果相同,则返回结点的冲突列表;如果不相同,则执行合并规则步骤5);合并规则步骤5)遍历冲突列表,如果冲突列表为空则将包分类规则集中的规则 Ri直接插入,如果冲突列表不为空并且包分类规则集中的规则氏与列表中的所有规则都是可合并的,则将包分类规则集中的某条规则Ri添加至冲突列表中;如果冲突列表不为空而且包分类规则集中的某条规则Ri与列表中的所有规则并不都是可合并的,则不添加包分类规则集中的规则氏,执行重复处理步骤6);重复处理步骤6):重复执行提取规则信息步骤2)到合并规则步骤5),直至所有规则被处理;获取冲突列表步骤7)遍历二叉查找树,得到所有冲突列表;设置合并标志步骤8)将冲突列表中的规则合并,如果有规则发生合并,则设置合并标志为1,并且对于其中被合并或合并其它规则分别设置相应的标志;检查合并标志步骤9)删除二叉查找树;并且,如果合并标志为真,则返回初始化步骤1);如果合并标志不为真,则执行再次合并步骤10);再次合并步骤10)将没有被合并的规则看作新的规则集重复执行初始化步骤1) 到检查合并标志步骤9),直至不再有合并发生;第三步、释放压缩阶段过程中的临时空间和被合并规则的存储空间。与基于逐条规则逐个域比较的现有技术相比较,本专利技术提出的这种规则集快速压缩方法是一个先粗略分类再精确分类然后合并的先分类再合并压缩的过程;在保持相近压缩率的同时,可明显减少压缩时间;快速压缩方法通过粗略分类将规则集划分可有效地减少规则之间比较次数,通过精确分类保证规则之间可合并,从而实现规则之间直接合并,粗略分类通过规则信息、哈希函数以及二叉查找树结构实现,精确分类仍需逐条规则逐个域比较,但粗略分类保证了其比较次数较少,所以比较速度较快;实验结果表明,与基于逐条规则逐个域比较的现有技术相比较,在保持相近压缩率的前提下,本专利技术提出的规则集快速压缩方法可将压缩时间平均减少90%以上。附图说明图1为本专利技术实施例的规则集存储结构示意图;图2为本专利技术实施例中快速压缩过程的主要数据结构示意图。具体实施例方式实施例1 本实施例是对本专利技术规则集快速压缩方法操作过程的一种具体举例说明。先通过哈希函数散列值和规则信息将规则集粗略分类,所述规则信息主要包括源/目的地址的前缀长度、源/目的端口号的范围、协议类型以及处理动作;然后在每个分类中逐条比较精确分类,精确分类后的每类规则都是可直接合并的;然后直接合并规则实现压缩。本实施例的具体操作步骤列举如下第一步、规则集读取和存储步骤图1给出了本实施例的规则集存储结构示意图。如图1中所示,本实施例采用结构嵌套的方式存储规则集RS,其规则集结构中存储了指向每条规则的指针Riptr、合并标志数组MFA以及规则集规模SRS,其中i为指向规则的指针的序号,取值范围为0到N-1,规则R结构中存储了被其合并的规则的编号Rid、指向该规则每个域的指针Fkptr以及合并规则列表MRL,其中k为指向域的指针的序号,取值范围为0到K-1,域F结构中则存储了该域上值V和掩码M的列表以及匹配类型Mtyp,其中,值V的取值个数为0,1到X-1,掩码M的取值个数为0,1到X-1,列表项保存了规则和被其合并的规则在该域上的值和掩码。域列表长度视被其合并规则的数量而定,以减少规则集的存储空间为准。第二步、快速压缩步骤一、实现步骤本实施例中所采取的规则集快速压缩的具体实现流程步骤如下初始化步骤1)置规则集的合并标志为假,并新建一棵空的二叉查找树;提取规则信息步骤2)对于某条包分类规则集中的规则氏,如果它没有被合并且没有合并其它规则,那么对其提取规则信息并使用哈希函数散列成查找关键字;查找关键字步骤幻在二叉查找树上查找与某条包分类规则集中的规则氏的查找关键字相同的结点;如果遍历整棵二叉查找树都没有找到,则将查找关键字和该规则信息作为一个新的结点插入树中并为其新建冲突列表,然后执行合并规则步骤5);如果找到相同结点,则执行检查规则信息步骤4);检查规则信息步骤4)判断查找关键字相同结点的规则信息是否相同;如果相同,则返回结点的冲突列表;如果不相同,则执行合并规则步骤5);合并规则步骤5)遍历冲突列表,如果冲突列表为空则将包分类规则集中的规则 R本文档来自技高网...

【技术保护点】
1.一种包分类规则集快速压缩方法,首先提取源/目的地址的前缀长度、源/目的端口号的范围、协议类型以及处理动作这些规则信息,通过哈希函数***将规则信息散列,式中Ri表示包分类规则集中的第i条规则,sip_h、sip_l和dip_h分别为源地址高16位、低16位和目的地址高16位的前缀长度,sp_w和dp_w分别为源端口和目的端口的范围,prtcl为协议类型值,action为处理动作项的值;再以散列值作为查找关键字构建二叉查找树,然后为二叉查找树的每个结点保存一个冲突列表,并在冲突列表中顺序比较每条规则,最后合并冲突列表中的可合并规则;其特征在于:先通过使用哈希函数将提取的规则信息散列并以散列值作为查找关键字构建二叉查找树实现粗略分类;然后为二叉查找树的每个结点保存一个冲突列表,在冲突列表中顺序比较每条规则完成精确分类;最后遍历二叉查找树所有结点的冲突列表,合并其中可合并的规则;重复“先通过使用哈希函数将提取的规则信息散列”到“合并其中可合并的规则”的过程直至规则集中没有可以合并的规则,然后将没有被合并的规则-即合并了其它规则和不能被其它规则合并的规则-组成一个新的规则集,重复执行上述所有过程直至不可能再发生合并;具体操作步骤如下:第一步、规则集读取和存储步骤:读取规则集并将其存储在嵌套定义的数据结构中;第二步、快速压缩步骤,该步骤又可分为以下具体步骤:初始化步骤1):置规则集的合并标志为假,并新建一棵空的二叉查找树;提取规则信息步骤2):对于包分类规则集中的某条规则Ri,如果它没有被合并且没有合并其它规则,则对其提取规则信息并使用哈希函数散列成查找关键字;查找关键字步骤3):在二叉查找树上查找与包分类规则集中的某条规则Ri的查找关键字相同的结点;如果遍历整棵二叉查找树都没有找到关键字相同的结点,则将查找关键字和该规则信息作为一个新的结点插入树中并为其新建冲突列表,然后执行合并规则步骤5);如果找到相同结点,则执行检查规则信息步骤4);检查规则信息步骤4合并标志步骤9),直至不再有合并发生;第三步、释放压缩阶段过程中的临时空间和被合并规则的存储空间。并其它规则分别设置相应的标志;检查合并标志步骤9):删除二叉查找树;并且,如果合并标志为真,则返回初始化步骤1);如果合并标志不为真,则执行再次合并步骤10);再次合并步骤10):将没有被合并的规则看作新的规则集重复执行初始化步骤1)到检查骤6):重复执行提取规则信息步骤2)到合并规则步骤5),直至所有规则被处理;获取冲突列表步骤7):遍历二叉查找树,得到所有冲突列表;设置合并标志步骤8):将冲突列表中的规则合并,如果有规则发生合并,则设置合并标志为1,并且对于其中被合并或合则Ri与列表中的所有规则都是可合并的,则将包分类规则集中的某条规则Ri添加至冲突列表中;如果冲突列表不为空而且包分类规则集中的某条规则Ri与列表中的所有规则并不都是可合并的,则不添加包分类规则集中的规则Ri,执行重复处理步骤6);重复处理步):判断查找关键字相同结点的规则信息是否相同;如果相同,则返回结点的冲突列表;如果不相同,则执行合并规则步骤5);合并规则步骤5):遍历冲突列表,如果冲突列表为空则将包分类规则集中的规则Ri直接插入,如果冲突列表不为空并且包分类规则集中的规...

【技术特征摘要】

【专利技术属性】
技术研发人员:顾乃杰王坤任开新
申请(专利权)人:中国科学技术大学
类型:发明
国别省市:34

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

1