[发明专利]一种策略规则匹配查询树生成方法、匹配方法及装置有效
申请号: | 201210382461.0 | 申请日: | 2012-10-10 |
公开(公告)号: | CN102945249B | 公开(公告)日: | 2016-10-12 |
发明(设计)人: | 关建峰;张宏科;许长桥;张朝贵;权伟;戴彧;曹远龙 | 申请(专利权)人: | 北京邮电大学 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京三高永信知识产权代理有限责任公司 11138 | 代理人: | 王希刚 |
地址: | 100876 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 策略 规则 匹配 查询 生成 方法 装置 | ||
技术领域
本发明涉及计算机网络技术领域,特别涉及一种策略规则匹配查询树生成方法、匹配方法及装置。
背景技术
随着通信技术和计算机网络技术的不断发展,Internet的规模不断增大,骨干网路由条目的剧增以及带宽的高速增加,使路由器处理报文的时间要求越来越高,路由查找已成为制约路由器性能的瓶颈。
现有的互联网路由查找方法采用的是最长前缀匹配查找方法,通过查找在路由表中与数据包的目的IP地址从最左侧开始存在最多匹配位数的路由条目作为首选路由。最长前缀匹配查找的难点在于在查找过程中不仅需要与地址前缀的比特值进行匹配查找,而且还需要考虑地址前缀的长度。由于确定最长匹配的子网掩码并不总是明确的,地址前缀的长度可以为任意,路由查找时进行最长前缀匹配,也增加了路由查找问题的复杂度。
传统的路由查找使用的方法还包括:线性查找法,二进制Trie树法,路径压缩Trie树法,多分支Trie树法,地址前缀长度的二分查找法,地址区间的二分查找法等。这些算法都为路由查找提供了技术支撑。
哈希查找是一种经典的路由查找方法,由于简单可行,被用在Linux操作系统作为默认的路由查找方法。哈希查找首先需要根据不同的掩码长度分别构建与每个掩码对应的哈希表,使得每一个掩码域都有一个哈希表。每个哈希表又由N个哈希桶组成,而每个哈希桶中存有多个冲突链表。在查找过程中,为了实现最长前缀匹配,从最长的掩码域开始当前掩码的匹配操作,计算键值(Key)使得目的IP地址哈希到这些哈希表的特定的桶中,然后遍历其冲突链表,如果不匹配则进入少一位的掩码域,直到得到最终结果。哈希查找是基于掩码的从长到短遍历来实现严格的最长前缀匹配的,也就是说如果一条最终将要通过默认网关发出的数据报,它起码要匹配32次才能得到结果,这种方式十分类似于传统的Netfilter的filter表的过滤方式-一个一个尝试匹配。
然而,哈希查找的可扩展性是一个问题,一个特定的哈希函数只适合一定数量的匹配项,几乎很难找到一个通用的哈希函数能够适应从几个匹配项到几千万个匹配项的情形。随着匹配项的增加,哈希碰撞也会随着增加,并且其时间复杂性不可控。这个问题限制了路由策略规则查找的规模,阻止了哈希路由查找方法走向核心专用路由器,所以不可能使用哈希来应对大型互联网络或者BGP之类的域间路由协议产生的大量路由信息。
现有技术中常用的另外一种方法是Trie,又称单词查询树、前缀树,是一种哈希树的变种。Trie树查找典型应用于路由策略规则匹配,统计和排序大量的字符串(但不仅限于字符串),经常被搜索引擎系统用于文本词频统计。Trie所具有的性质:(1)根节点不包含字符,除根节点外的每一个节点都只包含一个字符;(2)从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串;(3)每个节点的所有子节点包含的字符都不相同。它的优点是:(1)查询快,通过最大限度地减少无谓的字符串比较,查询效率比哈希表高;(2)因为键值并非显式存储的,而是与其他键值共享子串。当存储大量字符串时,Trie耗费的空间较少;(3)采用了基于树的查找使得其查找的时间复杂度限制在一个范围,具有一定的可扩展性。Trie适用于最长前缀匹配,基于Tire的匹配方法常可以被应用在路由器的策略匹配中。目前路由器的基于trie树的最长前缀匹配方法有一些变种:包括二进制Trie树,路径压缩Trie树,多分支Trie树。
Trie树查找方法的具体实施操作过程包括:
初始化或清空:
遍历Trie,删除所有节点,只保留根节点。
插入字符串构建Trie树,具体包括:
设置当前节点为根节点,设置当前字符为插入字符串中的首个字符。
在当前节点的子节点上搜索当前字符,若存在,则将当前节点设为值为当前字符的子节点;否则新建一个值为当前字符的子节点,并将当前结点设置为新创建的节点。
将当前字符设置为串中的下个字符,若当前字符为0,则结束;否则转上一步骤。
查找字符串,具体包括:
搜索过程与插入操作类似,当字符找不到匹配时返回假;若全部字符都存在匹配,判断最终停留的节点是否为树叶,若是,则返回真,否则返回假。
删除字符串,具体包括:
首先查找该字符串,边查询边将经过的节点压栈,若找不到,则返回假;否则依次判断栈顶节点是否为树叶,若是则删除该节点,否则返回真。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京邮电大学,未经北京邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210382461.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:图像文件检索的方法和装置
- 下一篇:一种块级数据的缓存管理方法及系统