基于优先级Trie树的动态IP匹配模型的建立方法技术

技术编号:12277182 阅读:85 留言:0更新日期:2015-11-05 03:07
本发明专利技术提供一种基于优先级Trie树的动态IP匹配模型,其包括:BIPT匹配模型的构建过程;BIPT树的前缀插入操作;BIPT树的前缀删除操作;BIPT树的IP匹配操作。与现有的方法相比,本发明专利技术提出了基于优先级Trie树的动态IP匹配模型,利用优先级Trie树在IP查找方面的优越性,提高它在更新方面的性能。利用B*树保证在更快定位到优先级Trie树分支,同时能以更小的概率分配索引结点。本发明专利技术提出的算法与已有的优先级Trie树相比,不仅减少了前缀更新时的开销,同时也保持了较高的查找效率。

【技术实现步骤摘要】

本专利技术属于防火墙
,尤其涉及一种基于优先级Trie树的动态IP匹配模 型。
技术介绍
Web防火墙可以很好的解决互联网平台监管问题。在Web防火墙工作过程中,需要 根据数据流的IP地址进行筛选,并对相应的数据流进行安全控制。由于Internet规模的 不断扩大,Web防火墙中IP安全规则的更新愈加频繁的发生。这就在Web防火墙对IP地 址进行筛选过程中,引入了一个问题:如何处理Web防火墙中IP安全规则的大量事实更新。 最常用的IP匹配算法就是基于二进制Trie树的算法。在IP最长前缀匹配算法 中最基本的Trie树为二进制Trie。前缀匹配算法是对比特串进行逐位比较,而比特串的 每一位只包含两种情况,那就是0和1,对应二进制Trie树中的左结点和右结点。在二进 制Trie树中,将一次Trie树的操作分为多个步骤。在Trie树的构建或更新过程中,需要 根据前缀各比特的值决定分支的走向。在IP最长前缀匹配过程中,需要根据地址各比特的 值决定分支的走向。 综上所述,当前IP匹配算法的缺点是查找效率低下,开销大。
技术实现思路
为解决上述问题,本专利技术提供一种基于优先级Trie树的动态IP匹配模型,克服了 当前Web防火墙中IP匹配模块的以下缺点,即查找效率低下,开销比较大。 本专利技术的基于优先级Trie树的动态IP匹配模型,其包括以下步骤: 步骤I:BIPT匹配模型的构建过程,具体包括: 步骤11,划分前缀; 设前缀P的长度为1,则该前缀P表示为P=PidP1. ..P1 4 ;以长度k(k< 1)对前 缀P进行划分,分为长度大于划分点k的第一前缀集合和长度小于划分点k的第二前缀集 合,赋予第一前缀集合内每个前缀一个索引值,赋予第二前缀集合内每个前缀一个索引后 缀,且所有的索引后缀相同; 以Prek (P)来表示有索引值的前缀,贝IJPrek (P) = (P0Pp-Pkl)2;以Park (P)表示 有索引后缀的如缀,则Park(P) =PkPk+1. ? ?P1丨* ; 步骤12,构建索引树; 将第一前缀集合内的前缀P根据索引值挂载到索引树上相应的结点中,并 用BIPT表示,且0彡i彡2k-l;将第二前缀集合内的所有前缀挂载到索引树上的一 个共同的B*结点中,并用BIPT表示; 步骤2 :BIPT树的前缀插入操作; 步骤21 :对每一个前缀P,先求前缀P的长度,如果其长度大于划分点k,则设置起 始查找结点为根结点并进行步骤22 ;否则将前缀插入BIPT对应的优先级Trie树中并 终止前缀插入操作; 步骤22:在B*索引树的给定结点中进行查找,直到叶子结点;在索引结 点中若Pre(p) <Ic1,则选择索引结点的第1个分支进行查找,并执行步骤23 ;若 Pre(p) <ki+1,则选择索引结点的第i个分支进行查找,并执行步骤23 ;若knW <Pre(p),贝Ij选择索引结点的第n(X)个分支进行查找,并执行步骤23 ;并记录查找路径中 所搜索的给定结点以及给定结点中分支的选择; 其中规定Ici (X)是结点X的第i个索引值,Cj (X)是结点X的第j个孩子指针,其 中i和j满足1彡i彡H(X)并且1彡j彡n(x)。在结点中的索引值存在如下关系: kj(x) <k2 (x) < . . . <kn(x) (x) 步骤23:查找索引结点中是否有与B*索引树的给定结点的索引值相同的关键字, 如果有,则直接在该索引树的给定结点优先级Trie树中插入索引后缀,并结束插入操 作;否则执行步骤24 ; 步骤24:判断索引树的给定结点中索引值数目是否已满,如果给定结点已满, 则进行索引结点分裂,在新结点中的优先级Trie树中插入索引后缀;如果结点未满,则在 该B*索引树的给定结点中插入索引值,并在优先级Trie树中插入索引后缀; 步骤3 :BIPT树的前缀删除操作; 步骤31 :对每一个前缀P,先求前缀P的长度,如果其长度小于划分点,则在 BIPT形成的优先级Trie树中删除前缀P,并终止前缀删除操作;否则进行步骤32 ; 步骤32 :在索引树的索引结点中进行查找,直到叶子结点;使得索引值在索引 结点两个关键字之间,索引结点分别为左区间和右区间; 步骤33,在左区间对应的优先级Trie树中移除索引后缀,释放相应的数据结点; 然后记录搜索路径各结点指针以及左区间的位置; 步骤34 :释放数据结点后,若左区间对应的优先级Trie树为空,则在索引树中 删除对应的索引值,并判断索引结点中的结点数小于「2m/3l,执行步骤34,否则结束删除 操作; 步骤35若结点数小于'「2相/3>则进行结点合并操作,否则结束删除操作;合并操 作如下: 步骤351 :若索引结点为根结点,则结束合并操作,否则执行步骤352 ;步骤352 :判断兄弟结点中的结点数是否小于「2m/3^,若小于则结束合并操作, 若大于则将兄弟结点中的结点移至该索引结点中,并更新父结点对这两个分支的索引值; 若兄弟结点中的结点数等于「2m/3\则将这三个结点合并为两个结点,同时更新并删除父 结点中对这两个分支的索引值,如果父结点中元素不足_「2w/3l,则结束合并操作; 步骤4 :BIPT树的IP匹配操作; 根据给定的IP地址,将其前缀分为索引值以及索引后缀,根据索引值在索引树 中定位到对应的优先级Trie树分支并进行查找,得到的结果为最长前缀;若未找到对应分 支,或在优先级Trie树中未找到匹配结果,则在BIPT中继续进行最长前缀匹配,直到 找到最长前缀,结束BIPT最长前缀匹配过程。 进一步的,所述步骤24中结点分裂的过程如下: 步骤241 :若给定结点为根结点,则分裂为两个结点,并申请新结点;在索引结点 中,对其中的索引值赋值并指向两个分裂结点,用新结点替换根结点; 步骤242:判断给定结点的兄弟结点中索引值数目是否已满,如果兄弟结点中索 引值数目未满,则根据索引值大小计算位置,并将该兄弟结点的部分信息移至其兄弟结点 中,并更新父结点中关于两个结点的标记; 如果兄弟结点中索引值数目已满,则申请索引结点,并将兄弟结点和刚申请的索 引结点中的个元素移至新结点,并计算新索引结点的位置,进行分裂,同时更新并插 入父结点中关于三个结点的索引值,如果父结点中元素已满,则跳转到步骤241。 有益效果: 本专利技术的有益效果体现在,与现有的方法相比,本专利技术提出了基于优先级Trie树 的动态IP匹配模型,利用优先级Trie树在IP查找方面的优越性,提高它在更新方面的性 能。利用树保证在更快定位到优先级Trie树分支,同时能以更小的概率分配索引结点。 本专利技术提出的算法与已有的优先级Trie树相比,不仅减少了前缀更新时的开销,同时也保 持了较高的查找效率。【附图说明】 图1为本专利技术的基于优先级Trie树的动态IP匹配模型中BIPT结构示意图。【具体实施方式】 本专利技术结合B*树和优先级Trie树的数据结构构建能够支持前缀实时更新的BIPT 匹配模型,它包括如下步骤: BIPT匹配模型的构建过程(步骤1); BIPT树的前缀插入操作(步骤2); BIPT树的前缀删除操作(步骤3); BIPT树的IP匹配操作(步骤4本文档来自技高网...
<a href="http://www.xjishu.com/zhuanli/62/CN105025013.html" title="基于优先级Trie树的动态IP匹配模型的建立方法原文来自X技术">基于优先级Trie树的动态IP匹配模型的建立方法</a>

【技术保护点】
一种基于优先级Trie树的动态IP匹配模型,其特征在于,包括以下步骤:步骤1:BIPT匹配模型的构建过程,具体包括:步骤11,划分前缀;设前缀P的长度为l,则该前缀P表示为P=P0P1…Pl‑1*;以长度k(k<l)对前缀P进行划分,分为长度大于划分点k的第一前缀集合和长度小于划分点k的第二前缀集合,赋予第一前缀集合内每个前缀一个索引值,赋予第二前缀集合内每个前缀一个索引后缀,且所有的索引后缀相同;以Prek(P)来表示有索引值的前缀,则Prek(P)=(P0P1…Pk‑1)2;以Park(P)表示有索引后缀的前缀,则Park(P)=PkPk+1…Pl‑1*;步骤12,构建B*索引树;将第一前缀集合内的前缀P根据索引值挂载到B*索引树上相应的B*结点中,并用BIPT[i]表示,且0≤i≤2k‑1;将第二前缀集合内的所有前缀挂载到B*索引树上的一个共同的B*结点中,并用BIPT[‑1]表示;步骤2:BIPT树的前缀插入操作;步骤21:对每一个前缀P,先求前缀P的长度,如果其长度大于划分点k,则设置起始查找结点为根结点并进行步骤22;否则将前缀插入BIPT[‑1]对应的优先级Trie树中并终止前缀插入操作;步骤22:在B*索引树的给定结点中进行查找,直到叶子结点;在索引结点中若Pre(p)<k1,则选择索引结点的第1个分支进行查找,并执行步骤23;若ki≤Pre(p)≤ki+1,则选择索引结点的第i个分支进行查找,并执行步骤23;若kn(x)<Pre(p),则选择索引结点的第n(x)个分支进行查找,并执行步骤23;并记录查找路径中所搜索的给定结点以及给定结点中分支的选择;其中规定ki(x)是结点x的第i个索引值,cj(x)是结点x的第j个孩子指针,其中i和j满足1≤i≤n(x)并且1≤j≤n(x)。在结点中的索引值存在如下关系:k1(x)<k2(x)<…<kn(x)(x)步骤23:查找索引结点中是否有与B*索引树的给定结点的索引值相同的关键字,如果有,则直接在该B*索引树的给定结点优先级Trie树中插入索引后缀,并结束插入操作;否则执行步骤24;步骤24:判断B*索引树的给定结点中索引值数目是否已满,如果给定结点已满,则进行索引结点分裂,在新结点中的优先级Trie树中插入索引后缀;如果结点未满,则在该B*索引树的给定结点中插入索引值,并在优先级Trie树中插入索引后缀;步骤3:BIPT树的前缀删除操作;步骤31:对每一个前缀P,先求前缀P的长度,如果其长度小于划分点,则在BIPT[‑1]形成的优先级Trie树中删除前缀P,并终止前缀删除操作;否则进行步骤32;步骤32:在B*索引树的索引结点中进行查找,直到叶子结点;使得索引值在索引结点两个关键字之间,索引结点分别为左区间和右区间;步骤33,在左区间对应的优先级Trie树中移除索引后缀,释放相应的数据结点;然后记录搜索路径各结点指针以及左区间的位置;步骤34:释放数据结点后,若左区间对应的优先级Trie树为空,则在B*索引树中删除对应的索引值,并判断索引结点中的结点数小于执行步骤34,否则结束删除操作;步骤35若结点数小于则进行结点合并操作,否则结束删除操作;合并操作如下:步骤351:若索引结点为根结点,则结束合并操作,否则执行步骤352;步骤352:判断兄弟结点中的结点数是否小于若小于则结束合并操作,若大于则将兄弟结点中的结点移至该索引结点中,并更新父结点对这两个分支的索引值;若兄弟结点中的结点数等于则将这三个结点合并为两个结点,同时更新并删除父结点中对这两个分支的索引值,如果父结点中元素不足则结束合并操作;步骤4:BIPT树的IP匹配操作;根据给定的IP地址,将其前缀分为索引值以及索引后缀,根据索引值在B*索引树中定位到对应的优先级Trie树分支并进行查找,得到的结果为最长前缀;若未找到对应分支,或在优先级Trie树中未找到匹配结果,则在BIPT[‑1]中继续进行最长前缀匹配,直到找到最长前缀,结束BIPT最长前缀匹配过程。...

【技术特征摘要】

【专利技术属性】
技术研发人员:卫冰洁杨武王巍曹首峰苘大鹏玄世昌贺龙涛贺欣袁媛于贺威王啸李城龙
申请(专利权)人:国家计算机网络与信息安全管理中心
类型:发明
国别省市:北京;11

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

1