CN102945249A - 一种策略规则匹配查询树生成方法、匹配方法及装置 - Google Patents

一种策略规则匹配查询树生成方法、匹配方法及装置 Download PDF

Info

Publication number
CN102945249A
CN102945249A CN2012103824610A CN201210382461A CN102945249A CN 102945249 A CN102945249 A CN 102945249A CN 2012103824610 A CN2012103824610 A CN 2012103824610A CN 201210382461 A CN201210382461 A CN 201210382461A CN 102945249 A CN102945249 A CN 102945249A
Authority
CN
China
Prior art keywords
node
character
query tree
coupling
matching
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.)
Granted
Application number
CN2012103824610A
Other languages
English (en)
Other versions
CN102945249B (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.)
Beijing University of Posts and Telecommunications
Original Assignee
Beijing University of Posts and Telecommunications
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 Beijing University of Posts and Telecommunications filed Critical Beijing University of Posts and Telecommunications
Priority to CN201210382461.0A priority Critical patent/CN102945249B/zh
Publication of CN102945249A publication Critical patent/CN102945249A/zh
Application granted granted Critical
Publication of CN102945249B publication Critical patent/CN102945249B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开了一种策略规则匹配查询树生成方法及匹配方法,生成方法包括:步骤A.将当前节点位置S设置为节点root,当前字符C设置为第一个字符;步骤B.比较当前字符C与节点S的下一级节点,若节点S的下一级节点存在与字符C相等的节点n,则S=n;否则,新建节点S的子节点n,并设置n=C,设置S=n;步骤C.判断当前字符C是否为最后一个字符,若是,流程结束;否则,设置当前字符C为下一个字符;执行步骤B。本发明查询树的叶子节点用字符赋值,同时叶子节点允许被赋值为一个集合,使策略匹配规则的制定更加灵活,能够解决新型网络体系架构中基于命名标签的路由寻址或策略匹配问题。

Description

一种策略规则匹配查询树生成方法、匹配方法及装置
技术领域
本发明涉及计算机网络技术领域,特别涉及一种策略规则匹配查询树生成方法、匹配方法及装置。
背景技术
随着通信技术和计算机网络技术的不断发展,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,则结束;否则转上一步骤。
查找字符串,具体包括:
搜索过程与插入操作类似,当字符找不到匹配时返回假;若全部字符都存在匹配,判断最终停留的节点是否为树叶,若是,则返回真,否则返回假。
删除字符串,具体包括:
首先查找该字符串,边查询边将经过的节点压栈,若找不到,则返回假;否则依次判断栈顶节点是否为树叶,若是则删除该节点,否则返回真。
这种方法仍然存在一定的局限性,主要表现在:在未来网络体系结构中,路由寻址不再仅仅基于IP地址,而是基于具有实际意义的命名标识,路由寻址是一种基于属性标签的策略匹配。而这些属性标签由于具有了实际意义,并不一定是按照从高级往低级的顺序进行排列。而Trie适用于最长前缀匹配,意味着会优先考虑前面的属性。同时,Trie树的前缀节点不能是个集合,如[0|1],[00|01|10|11],[a|b]m等等,因此不支持一些集合匹配和全匹配的功能,不具有灵活性。
在未来网络体系结构中,路由寻址不再仅仅是基于定长的、数字化的IP地址,而可能是基于具有实际意义的命名标识,而这些命名标识又包含了许多元属性。国家973项目“一体化可信网络与普适服务体系基础研究”提出了一种新的网络体系架构,以下简称一体化网络。在一体化网络的安全管理过程中,同样需要使用到基于属性标签的策略匹配。一体化网络包括了对用户的注册和认证过程以及服务的注册过程,通过引入用户属性标签(UTAG,User TAG)和服务属性标签(STAG,Service TAG)分别对用户属性和服务属性进行标记描述,同时设定一系列基于UTAG和STAG的管控策略对访问资源过程控制和监管。基于这种带有属性标签的名字的路由策略匹配成为一种新的挑战,能够快速的进行路由策略匹配为路由器性能提出了更高的要求。同时,因为属性标签具有实际的语义信息,基于属性标签的策略匹配不再完全按照从左至右最长匹配的规则来进行,可以进行挑选重要的属性进行匹配。路由查找方法的效率提高,将会直接减少网络通信的时延;路由查找方法的准确度提高,将会直接降低网络的误包率以及较少不必要的通信开销。研究基于名字的策略规则匹配方法是解决未来新型网络体系结构的一个关键,提出新型高效的策略规则匹配方法有很好的实际应有前景。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
由于未来的网络体系结构中,路由寻址不再仅仅是基于定长的、数字化的IP地址,而可能是基于具有实际意义的命名标识,而这些命名标识又包含了许多元属性。所以,现有的路由寻址策略匹配方案已经不能适应未来网络中路由寻址的高效率和高准确性的需求。迫切需要一种新的基于命名标签的策略匹配方案,以适应未来网络的发展需求。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种策略规则匹配查询树生成方法、匹配方法及装置。所述技术方案如下:
一种策略规则匹配查询树生成方法,所述方法包括:
步骤A、将当前节点位置S设置为节点root,当前字符C设置为需要添加进查询树的字符串的第一个字符;
步骤B、比较当前字符C与节点S的下一级节点,若所述节点S的下一级节点存在与字符C相等的节点n,则设置当前节点位置S为节点n;否则,新建节点S的子节点n,并设置节点n=C,设置当前节点位置S为节点n;
步骤C、判断当前字符C是否为需要添加进查询树的字符串的最后一个字符,若是,流程结束,查询树生成完成;否则,执行步骤D;
步骤D、设置当前字符C为需要添加进查询树的字符串的下一个字符;返回执行步骤B。
所述字符C为单个字符或者字符集合。
所述字符C包含转发信息或策略配置规则。
一种策略规则匹配方法,应用于如权利要求1所述的查询树,所述方法包括:
步骤A、将当前节点位置S设置为节点root,当前字符C设置为需要在查询树中匹配的字符串的第一个字符;
步骤B、比较当前字符C与节点S的下一级节点,若所述节点S的下一级节点存在与字符C相等的节点n1,n2,...nk,则设置当前节点位置S分别为节点n1,n2,...nk;否则,匹配完成;
步骤C、判断当前字符C是否为需要在查询树中匹配的字符串的最后一个字符,若是,流程结束,匹配完成;否则,执行步骤D;
步骤D、设置当前字符C为需要在查询树中匹配的字符串的下一个字符;返回执行步骤B。
所述步骤B包括:
分别以S=n1、S=n2...S=nk进行所述查询树中不同分支的匹配,得到不同分支的匹配结果;
将所有完成匹配的匹配结果输出作为匹配结果。
所述步骤B中,所述节点S的下一级节点存在与字符C相等的节点n1,n2,...nk,包括:
所述节点S的下一级节点存在与字符C相等的节点n1,n2,...nk;或者
所述节点S的下一级节点存在包含字符C的节点n1,n2,...nk。
所述匹配完成包括:
在查询树中匹配的字符串的最后一个字符完成匹配,并且匹配成功的查询树中的节点不能再有下级节点时,匹配完成。
一种策略规则匹配装置,所述装置包括设置单元、匹配单元和判断单元,其中,
所述设置单元,用于将当前节点位置S设置为节点root,当前字符C设置为需要在查询树中匹配的字符串的第一个字符;
所述匹配单元,用于比较当前字符C与节点S的下一级节点,若所述节点S的下一级节点存在与字符C相等的节点n1,n2,...nk,则通知所述设置单元将当前节点位置S分别设置为节点n1,n2,...nk;
所述判断单元,用于判断当前字符C是否为需要在查询树中匹配的字符串的最后一个字符,若不是最后一个字符,通知所述设置单元设置当前字符C为需要在查询树中匹配的字符串的下一个字符,并通知所述匹配单元进行匹配。
所述装置进一步包括匹配完成判断单元,用于确定所述在查询树中匹配的字符串的最后一个字符完成匹配,并且匹配成功的查询树中的节点不能再有下级节点时,匹配完成。
所述装置进一步包括输出单元,用于将匹配结果输出。
本发明实施例提供的技术方案带来的有益效果是:
通过构造策略规则匹配查询树,通过独特的查询树结构完成对策略规则的生成和存储。查询树的叶子节点用字符赋值,适用于基于名字命名的路由寻址,同时它的叶子节点允许被赋值为一个集合,从而支持集合查找。在进行策略规则匹配的时候,可以方便的进行字符的匹配和字符集和的匹配,使策略匹配规则的制定更加灵活,能够解决新型网络体系架构中基于命名标签的路由寻址或策略匹配问题。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的策略规则匹配查询树生成方法原理流程图;
图2是本发明实施例二提供的策略规则匹配方法流程图;
图3是本发明实施例二提供的已经建立的查询树的结构示意图;
图4是本发明实施例三提供的策略规则匹配装置结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
现有网络安全管理策略是基于IP地址或URL的,根据源地址和目的地址或访问URL进行路由策略管理。在一体化网络中用户注册生成唯一的用户ID(UID),同时服务在网络中注册生成唯一的服务ID(SID)。用户每一次操作都是用户向服务的一次请求,也就是UID和SID的一个配对操作。UID和SID可以唯一的确定用户和服务,但是单纯的依靠UID和SID来进行策略,由于UID和SID含有的信息量极少,所以无法支持一些高级的策略控制和一些安全管理。通过对UID进行描述生成一个用户属性标签,记做UTAG(User TAG),两者之间可以进行绑定关系形成一个配对(UID,UTAG);对SID属性进行描述生成一个服务属性标签,记做STAG(Service TAG),两者之间进行绑定关系形成一个配对(SID,STAG)。由于UTAG和STAG是对所选属性的描述,具有丰富的含义。基于UTAG和STAG进行策略规则设定规则(记作RULES)。用户UID每次访问资源SID都会通过绑定查询,得到UTAG和STAG。通过查询相关的RULES得到策略结果,来实现安全管理。
为了支持未来网络体系结构中的基于名字命名的路由寻址和策略匹配,在此提出一种支持集合查找的策略规则匹配方法。不同于IP寻址中的二进制Tire树,它的叶子节点用字符赋值,适用于基于名字命名的路由寻址,同时它的叶子节点允许被赋值为一个集合,从而支持集合查找,使路由表或者策略匹配规则的制定更加灵活。本发明方案主要体现在两个方面:查询树的构建和基于查询树的查找。
实施例一
如图1所示,为本发明实施例一提供的策略规则匹配查询树生成方法原理流程图,具体如下:
步骤11,将当前节点位置S设置为节点root,当前字符C设置为需要添加进查询树的字符串的第一个字符。
如上所述,一体化网络中,基于UTAG+STAG可以设定大量的丰富的策略规则,即本发明实施例提出的叶子节点的信息,每个叶子节点都是一个形式为(UTAG,STAG)的策略规则。用户每一次访问服务的操作都会产生一条(STAG,UTAG),通过本发明实施例方法查询这些策略规则是否允许用户访问该资源。而对于本实施例中的查询树来说,将需要加入查询树的字符串信息准确的加入查询树的第一步,先将当前节点位置S设置为节点root,也就是根节点,从根节点上逐步的往下逐个字符的增加。首先把当前字符C设置为需要添加进查询树的字符串的第一个字符。这里的节点位置S和当前字符C都是指代需要加入查询树的字符串中当前的字符和当下的节点的。S和C可以随着查询树的生成而被赋予不同的值。
步骤12,比较当前字符C与节点S的下一级节点,若节点S的下一级节点存在与字符C相等的节点n,则设置当前节点位置S为节点n;否则,新建节点S的子节点n,并设置节点n=C,设置当前节点位置S为节点n。
这一步骤用以解决具体的字符加入查询树的过程。首先在节点S的下一级节点中寻找是否有与当前字符C相等的节点,如果有,这个节点记做节点n。此时说明至少字符串中当前这个字符C在查询树中是存在的,则只需要在这个节点n下继续进行下级节点的生成和查询即可。此时,将当前节点位置S设置成节点n,也就是将节点n作为当前节点。如果上述的查询没有找到与当前字符C相等的节点,则说明不存在与当前字符C相等的节点,需要新建一个节点n,节点n等于当前字符C,完成当前字符存入查询树的过程。当然,后续还需要设置当前节点位置S为节点n。
这个步骤实际上完成了具体的一个字符加入查询树的过程,实际上,一个字符串中有很多的字符,因而需要一个循环来将所有的字符全部加入查询树。
步骤13,判断当前字符C是否为需要添加进查询树的字符串的最后一个字符,若是,流程结束,查询树生成完成。
本步骤解决字符串是否全部加入查询树,也就是判断当前字符C是否为需要添加进查询树的字符串的最后一个字符。如果是,说明字符串已经加入完毕,则查询树生成完毕,流程结束。否则,说明当前字符串还没有加入完毕,还需要继续对下一个字符继续加入查询树,也就是还需要继续执行下一个步骤的内容。
步骤14,设置当前字符C为需要添加进查询树的字符串的下一个字符,返回执行步骤12。
本步骤中,将当前字符C的值设置为字符串的下一个字符,返回执行步骤12,重新开始新的字符加入查询树的过程。如此构成一个循环,直至字符串中所有的字符全部加入查询树,成为查询树的叶子节点。
这里的字符C可以为单个的字符,也可以是字符的集合,根据不同的策略匹配来确定。例如,字符C可以等于2,也可以等于[0-9]中任意一个。同样,字符C中可以包含转发信息或者策略配置规则,也就是说,这里的字符C生成了查询树的叶子节点,查询树的叶子节点中可以包含的是一个规则,而不仅仅局限于具体的字符。
在一体化网络下,策略匹配的字符串长度超过70,一条策略匹配字符串在二进制或多分支trie树种可能包含成千上万个节点,例如“0A[0-9A-F]{70}”这个字符串,在传统trie树中对应exp(16,70)个叶子节点,存储空间大得难以想象,采取本发明方法,总共只用72个节点就能存储,而时间复杂度的增加并没有很明显。匹配速度更快,使用户访问资源的行为尽快得到结果。
由此可以看出,本发明实施例方案是以牺牲时间复杂度为代价换取存储空间的节省。在某些情况下,由于树的深度太大,导致程序所要求的存储空间过于庞大,这种情况下,牺牲一定的查找时间来换取存储空间是很值得的。
实施例二
如图2所示,本发明实施例提供了一种策略规则匹配方法,具体如下:
步骤21,将当前节点位置S设置为节点root,当前字符C设置为需要在查询树中匹配的字符串的第一个字符。
策略匹配的过程与查询树生成的过程相似,是一个将需要在查询树中匹配的字符串中的各个字符逐个在查询树中匹配比较的循环过程。首先需要把将当前节点位置S设置为节点root,也就是根节点。然后将当前字符C设置为需要在查询树中匹配的字符串的第一个字符,开始第一个字符的匹配。
步骤22,比较当前字符C与节点S的下一级节点,若节点S的下一级节点存在与字符C相等的节点n1,n2,...nk,则设置当前节点位置S分别为节点n1,n2,...nk;否则,匹配完成。
这里的比较过程中,是将当前字符C分别与节点S的下一级节点比较,看是否有匹配的节点。通常会有多个节点匹配,这些匹配的节点记做n1,n2,...nk。之后需要将当前节点位置S分别设置为n1,n2,...nk,然后进行后续操作。当然,如果一开始就没有匹配到具体的节点,则匹配失败,流程结束。
进一步的,需要分别以S=n1、S=n2...S=nk进行所述查询树中不同分支的匹配,得到不同分支的匹配结果,将所有完成匹配的匹配结果输出作为匹配结果。也就是说,这里可能匹配完成之后,有多个匹配结果。
匹配的过程中,节点S的下一级节点存在与字符C相等的节点n1,n2,...nk;或者节点S的下一级节点存在包含字符C的节点n1,n2,...nk。这两种情况,都认为是匹配正确。
步骤23,判断当前字符C是否为需要在查询树中匹配的字符串的最后一个字符,若是,流程结束,匹配完成;否则,执行下一步骤。
本步骤解决字符串是否全部匹配完成,若是,则匹配结束,输出匹配结果。否则,还需要继续执行下一个步骤来继续进行匹配。
步骤24,设置当前字符C为需要在查询树中匹配的字符串的下一个字符;返回执行步骤22。
本步骤中,将当前字符C设置成为下一个匹配字符,重新进行步骤22中的的匹配过程。当然,这里的匹配与之前略有不同,就是如果步骤22中已经确认了多个节点n1,n2,...nk,则进一步的匹配在节点n1,n2,...nk的下级节点上分别进行,匹配的过程也就被分为了多个分支。每个分支都可能完成匹配,最终输出的是所有分支完成匹配的结果。
进一步的,匹配是否完成有两个标准,就是在查询树中匹配的字符串的最后一个字符完成匹配,并且匹配成功的查询树中的节点不能再有下级节点时,匹配完成。这是为了保证完整的匹配,并且不会出现匹配错误的情况。
如图3所示,为本实施例提供的一个已经建立的查询树的结构示意图。在查找字符串“b3n”的过程中,包括如下步骤:
root向一级节点找到“节点b”和“节点a-z”。
“b”向二级节点找到“节点3”,得到“b3”。
“a-z”向二级节点找到“节点3”和“节点0-9”,得到“[a-z]3”和“[a-z][0-9]”。
“b3”向三级节点找到“节点n”,得到“b3n”,匹配成功。
“[a-z]3”向三级节点找到“节点n”,得到“[a-z]3n”,不是叶子节点,匹配失败。
“[a-z][0-9]”向三级节点找到“节点n”,得到“[a-z][0-9]n”,不是叶子节点,匹配失败。
在查找字符串“b3n4”的过程中,包括如下步骤:
root向一级节点找到“节点b”和“节点a-z”。
“b”向二级节点找到“节点3”,得到“b3”。
“a-z”向二级节点找到“节点3”和“节点0-9”,得到“[a-z]3”和“[a-z][0-9]”。
“b3”向三级节点找到“节点n”,得到“b3n”。
“[a-z]3”向三级节点找到“节点n”,得到“[a-z]3n”。
“[a-z][0-9]”向三级节点找到“节点n”,得到“[a-z][0-9]n”。
“b3n”为叶子节点,匹配成功。
“[a-z]3n”下级节点不符,匹配失败。
“[a-z][0-9]”向四级节点找到“节点4”,得到“[a-z][0-9]n4”,匹配成功。
实施例三
如图4所示,本发明实施例提供了一种策略规则匹配装置,该装置包括设置单元31、匹配单元32和判断单元33,其中,
设置单元31,用于将当前节点位置S设置为节点root,当前字符C设置为需要在查询树中匹配的字符串的第一个字符。
匹配单元32,用于比较当前字符C与节点S的下一级节点,若节点S的下一级节点存在与字符C相等的节点n1,n2,...nk,则通知设置单元31将当前节点位置S分别设置为节点n1,n2,...nk。
判断单元33,用于判断当前字符C是否为需要在查询树中匹配的字符串的最后一个字符,若不是最后一个字符,通知设置单元31设置当前字符C为需要在查询树中匹配的字符串的下一个字符,并通知匹配单元32进行匹配。
进一步的,上述装置进一步包括匹配完成判断单元34,用于确定在查询树中匹配的字符串的最后一个字符完成匹配,并且匹配成功的查询树中的节点不能再有下级节点时,匹配完成。
进一步的,上述装置进一步包括输出单元35,用于将匹配结果输出。
需要说明的是:上述实施例提供的装置在策略匹配时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
综上所述,本发明实施例存在以下特点:
一个字符串可能匹配到多个结果,这些结果处于不同的叶子节点上,这些相同的叶子节点没有被融合在一起,事实上,很多地方存在这种冗余并且需要这种冗余。因为叶子节点上的字符串中允许被赋值为一个集合,增加了字符串的灵活性,我们可以更灵活、更直观地定义字符串,例如“节点[a-z][0-9]n4”。而这种定义方法会使不同的叶子节点覆盖同一个字符串,导致冗余出现。
由于查找过程中,某一级节点可能会有多个符合要求,查找过程会同时搜索所有符合要求的子树,二进制或多分支trie树只需沿着一条路径找到头就能得到结果,相比之下,此查找算法增加了查找的时间复杂度。而且时间复杂度随着树的深度增加呈指数型增长。
由于不确定的节点,是几个节点聚合在一起后的结果,二进制或多分支的trie树只能进行除前缀以外聚合,但前缀的节点不能是个集合,如[00|01|10|11]、[0|1],等,如果使用二进制或多分支的trie树,一条自定义的转发信息或者策略规则可能会被分配到很多个节点,如[1-192].168.16.0/24,引起存储空间的急剧增加,存储空间随着前缀的长度增加呈指数型增长。这种存储空间的增加在树的深度超过10之后更为明显。
本发明实施例通过构造策略规则匹配查询树,通过独特的查询树结构完成对策略规则的生成和存储。查询树的叶子节点用字符赋值,适用于基于名字命名的路由寻址,同时它的叶子节点允许被赋值为一个集合,从而支持集合查找。在进行策略规则匹配的时候,可以方便的进行字符的匹配和字符集和的匹配,使策略匹配规则的制定更加灵活,能够解决新型网络体系架构中基于命名标签的路由寻址或策略匹配问题。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种策略规则匹配查询树生成方法,其特征在于,所述方法包括:
步骤A、将当前节点位置S设置为节点root,当前字符C设置为需要添加进查询树的字符串的第一个字符;
步骤B、比较当前字符C与节点S的下一级节点,若所述节点S的下一级节点存在与字符C相等的节点n,则设置当前节点位置S为节点n;否则,新建节点S的子节点n,并设置节点n=C,设置当前节点位置S为节点n;
步骤C、判断当前字符C是否为需要添加进查询树的字符串的最后一个字符,若是,流程结束,查询树生成完成;否则,执行步骤D;
步骤D、设置当前字符C为需要添加进查询树的字符串的下一个字符;返回执行步骤B。
2.如权利要求1所述的方法,其特征在于,所述字符C为单个字符或者字符集合。
3.如权利要求1所述的方法,其特征在于,所述字符C包含转发信息或策略配置规则。
4.一种策略规则匹配方法,其特征在于,应用于如权利要求1所述的查询树,所述方法包括:
步骤A、将当前节点位置S设置为节点root,当前字符C设置为需要在查询树中匹配的字符串的第一个字符;
步骤B、比较当前字符C与节点S的下一级节点,若所述节点S的下一级节点存在与字符C相等的节点n1,n2,...nk,则设置当前节点位置S分别为节点n1,n2,...nk;否则,匹配完成;
步骤C、判断当前字符C是否为需要在查询树中匹配的字符串的最后一个字符,若是,流程结束,匹配完成;否则,执行步骤D;
步骤D、设置当前字符C为需要在查询树中匹配的字符串的下一个字符;返回执行步骤B。
5.如权利要求4所述的方法,其特征在于,所述步骤B包括:
分别以S=n1、S=n2...S=nk进行所述查询树中不同分支的匹配,得到不同分支的匹配结果;
将所有完成匹配的匹配结果输出作为匹配结果。
6.如权利要求4所述的方法,其特征在于,所述步骤B中,所述节点S的下一级节点存在与字符C相等的节点n1,n2,...nk,包括:
所述节点S的下一级节点存在与字符C相等的节点n1,n2,...nk;或者
所述节点S的下一级节点存在包含字符C的节点n1,n2,...nk。
7.如权利要求4所述的方法,其特征在于,所述匹配完成包括:
在查询树中匹配的字符串的最后一个字符完成匹配,并且匹配成功的查询树中的节点不能再有下级节点时,匹配完成。
8.一种策略规则匹配装置,其特征在于,所述装置包括设置单元、匹配单元和判断单元,其中,
所述设置单元,用于将当前节点位置S设置为节点root,当前字符C设置为需要在查询树中匹配的字符串的第一个字符;
所述匹配单元,用于比较当前字符C与节点S的下一级节点,若所述节点S的下一级节点存在与字符C相等的节点n1,n2,...nk,则通知所述设置单元将当前节点位置S分别设置为节点n1,n2,...nk;
所述判断单元,用于判断当前字符C是否为需要在查询树中匹配的字符串的最后一个字符,若不是最后一个字符,通知所述设置单元设置当前字符C为需要在查询树中匹配的字符串的下一个字符,并通知所述匹配单元进行匹配。
9.如权利要求8所述的装置,其特征在于,所述装置进一步包括匹配完成判断单元,用于确定所述在查询树中匹配的字符串的最后一个字符完成匹配,并且匹配成功的查询树中的节点不能再有下级节点时,匹配完成。
10.如权利要求8所述的装置,其特征在于,所述装置进一步包括输出单元,用于将匹配结果输出。
CN201210382461.0A 2012-10-10 2012-10-10 一种策略规则匹配查询树生成方法、匹配方法及装置 Active CN102945249B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210382461.0A CN102945249B (zh) 2012-10-10 2012-10-10 一种策略规则匹配查询树生成方法、匹配方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210382461.0A CN102945249B (zh) 2012-10-10 2012-10-10 一种策略规则匹配查询树生成方法、匹配方法及装置

Publications (2)

Publication Number Publication Date
CN102945249A true CN102945249A (zh) 2013-02-27
CN102945249B CN102945249B (zh) 2016-10-12

Family

ID=47728193

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210382461.0A Active CN102945249B (zh) 2012-10-10 2012-10-10 一种策略规则匹配查询树生成方法、匹配方法及装置

Country Status (1)

Country Link
CN (1) CN102945249B (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103516550A (zh) * 2013-09-29 2014-01-15 国家计算机网络与信息安全管理中心 一种面向大规模包分类规则集的规则冲突检测方法及系统
CN104468381A (zh) * 2014-12-01 2015-03-25 国家计算机网络与信息安全管理中心 一种多域流规则匹配的实现方法
CN106657437A (zh) * 2016-12-02 2017-05-10 董伟国 一种网络通信方法
CN106897281A (zh) * 2015-12-17 2017-06-27 阿里巴巴集团控股有限公司 一种日志分片方法和装置
CN107153647A (zh) * 2016-03-02 2017-09-12 奇简软件(北京)有限公司 进行数据压缩的方法、装置、系统和计算机程序产品
CN107682300A (zh) * 2016-08-02 2018-02-09 华为技术有限公司 确定安全组规则链的方法和装置
CN108123872A (zh) * 2017-12-21 2018-06-05 国网浙江省电力有限公司电力科学研究院 面向电力物联网的流量分类和转发方法及系统
CN112187743A (zh) * 2020-09-14 2021-01-05 北京云杉世纪网络科技有限公司 一种基于ip地址最长前缀的网络策略匹配方法及系统
CN113326108A (zh) * 2020-02-28 2021-08-31 北京沃东天骏信息技术有限公司 一种管理应用服务的方法和装置
CN113326267A (zh) * 2021-06-24 2021-08-31 中国科学技术大学智慧城市研究院(芜湖) 基于倒排索引和神经网络算法的地址匹配方法
CN114281830A (zh) * 2022-03-01 2022-04-05 杭州涂鸦信息技术有限公司 多属性条件的规则映射表构建方法、规则匹配方法和装置
CN115221205A (zh) * 2022-09-09 2022-10-21 中电科新型智慧城市研究院有限公司 政策确定方法、设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102255617A (zh) * 2010-05-19 2011-11-23 鸿富锦精密工业(深圳)有限公司 哈夫曼树的存储方法及利用数组进行数据解码的方法
CN102629269A (zh) * 2012-03-09 2012-08-08 深圳市民德电子科技有限公司 一种嵌入式数据库的检索及存储方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102255617A (zh) * 2010-05-19 2011-11-23 鸿富锦精密工业(深圳)有限公司 哈夫曼树的存储方法及利用数组进行数据解码的方法
CN102629269A (zh) * 2012-03-09 2012-08-08 深圳市民德电子科技有限公司 一种嵌入式数据库的检索及存储方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
徐孝凯等: "《数据结构实用教程习题参考解答》", 31 December 1999 *
徐孝凯等: "《数据结构实用教程习题参考解答》", 31 December 1999, article "数据结构实用教程习题参考解答", pages: 55-56 *
王禄: ""多键值字符串键树的原理及实现"", 《电脑知识与技术(学术交流)》 *

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103516550B (zh) * 2013-09-29 2016-05-11 国家计算机网络与信息安全管理中心 一种面向大规模包分类规则集的规则冲突检测方法及系统
CN103516550A (zh) * 2013-09-29 2014-01-15 国家计算机网络与信息安全管理中心 一种面向大规模包分类规则集的规则冲突检测方法及系统
CN104468381B (zh) * 2014-12-01 2017-05-10 国家计算机网络与信息安全管理中心 一种多域流规则匹配的实现方法
CN104468381A (zh) * 2014-12-01 2015-03-25 国家计算机网络与信息安全管理中心 一种多域流规则匹配的实现方法
CN106897281B (zh) * 2015-12-17 2020-08-14 阿里巴巴集团控股有限公司 一种日志分片方法和装置
CN106897281A (zh) * 2015-12-17 2017-06-27 阿里巴巴集团控股有限公司 一种日志分片方法和装置
US10496616B2 (en) 2015-12-17 2019-12-03 Alibaba Group Holding Limited Log fragmentation method and apparatus
CN107153647B (zh) * 2016-03-02 2021-12-07 北京字节跳动网络技术有限公司 进行数据压缩的方法、装置、系统和计算机程序产品
CN107153647A (zh) * 2016-03-02 2017-09-12 奇简软件(北京)有限公司 进行数据压缩的方法、装置、系统和计算机程序产品
CN107682300A (zh) * 2016-08-02 2018-02-09 华为技术有限公司 确定安全组规则链的方法和装置
CN106657437A (zh) * 2016-12-02 2017-05-10 董伟国 一种网络通信方法
CN108123872A (zh) * 2017-12-21 2018-06-05 国网浙江省电力有限公司电力科学研究院 面向电力物联网的流量分类和转发方法及系统
CN113326108A (zh) * 2020-02-28 2021-08-31 北京沃东天骏信息技术有限公司 一种管理应用服务的方法和装置
CN112187743A (zh) * 2020-09-14 2021-01-05 北京云杉世纪网络科技有限公司 一种基于ip地址最长前缀的网络策略匹配方法及系统
CN112187743B (zh) * 2020-09-14 2022-10-28 北京云杉世纪网络科技有限公司 一种基于ip地址最长前缀的网络策略匹配方法及系统
CN113326267A (zh) * 2021-06-24 2021-08-31 中国科学技术大学智慧城市研究院(芜湖) 基于倒排索引和神经网络算法的地址匹配方法
CN113326267B (zh) * 2021-06-24 2023-08-08 长三角信息智能创新研究院 基于倒排索引和神经网络算法的地址匹配方法
CN114281830A (zh) * 2022-03-01 2022-04-05 杭州涂鸦信息技术有限公司 多属性条件的规则映射表构建方法、规则匹配方法和装置
CN114281830B (zh) * 2022-03-01 2022-08-30 杭州涂鸦信息技术有限公司 多属性条件的规则映射表构建方法、规则匹配方法和装置
CN115221205A (zh) * 2022-09-09 2022-10-21 中电科新型智慧城市研究院有限公司 政策确定方法、设备及存储介质

Also Published As

Publication number Publication date
CN102945249B (zh) 2016-10-12

Similar Documents

Publication Publication Date Title
CN102945249A (zh) 一种策略规则匹配查询树生成方法、匹配方法及装置
CN101345707B (zh) 一种实现IPv6报文分类的方法及设备
US20050050060A1 (en) Data structure for range-specified algorithms
CN108875064B (zh) 基于FPGA的OpenFlow多维数据匹配查找方法
CN107302443A (zh) 基于网络配置协议的设备配置方法及装置
CN110727760B (zh) 一种对大规模知识图谱进行分布式正则路径查询的方法
CN110120923B (zh) 一种基于Hash-Trie的流规则冲突检测方法
JP3881663B2 (ja) フィールドレベルツリーを用いたパケット分類装置及び方法
JP2013055642A (ja) データセンター向けの拡張可能なマルチキャスト転送方法および装置
CN107276916B (zh) 基于协议无感知转发技术的交换机流表管理方法
CN105515997B (zh) 基于bf_tcam实现零范围扩张的高效范围匹配方法
CN107948060A (zh) 一种新型的路由表建立、以及ip路由查找方法和装置
CN105429879A (zh) 流表项查询方法、设备及系统
CN101794318A (zh) Url解析方法及设备
Yuan et al. Keyword search over distributed graphs with compressed signature
CN106416152A (zh) 一种查找装置、查找配置方法和查找方法
US9485179B2 (en) Apparatus and method for scalable and flexible table search in a network switch
CN103475584A (zh) 三态内容寻址存储器(tcam)查询方法和装置
Pao et al. A multi-pipeline architecture for high-speed packet classification
CN102014065A (zh) 报文包头的解析方法、包头解析预处理装置和网络处理器
Lim et al. Two-dimensional packet classification algorithm using a quad-tree
CN104125146B (zh) 一种业务处理方法及装置
WO2017198052A1 (zh) 一种报文的处理方法和装置
CN112667640B (zh) 一种路由地址存储方法及装置
CN108616385A (zh) 简单网管协议代理的查询方法、mib树的遍历方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant