CN102461092A - 用于地址查找的数据结构、方法和系统 - Google Patents
用于地址查找的数据结构、方法和系统 Download PDFInfo
- Publication number
- CN102461092A CN102461092A CN2010800269412A CN201080026941A CN102461092A CN 102461092 A CN102461092 A CN 102461092A CN 2010800269412 A CN2010800269412 A CN 2010800269412A CN 201080026941 A CN201080026941 A CN 201080026941A CN 102461092 A CN102461092 A CN 102461092A
- Authority
- CN
- China
- Prior art keywords
- address
- node
- scope
- decision tree
- separately
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/742—Route cache; Operation thereof
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
用于构建在地址空间中对所请求的地址进行地址查找中所用的决策树的方法和计算机系统。所述地址空间被布置为一组基本地址范围。每个基本地址范围由一个下边界地址和一个上边界地址限定,并且所述地址空间中的地址由预定数量的位表示。
Description
技术领域
本发明涉及一种使用决策树在地址空间中对所请求的地址进行地址查找的方法。而且,本发明涉及一种使用决策树在地址空间中对所请求的地址进行地址查找的计算机系统。此外,本发明涉及一种使用决策树在地址空间中对所请求的地址进行地址查找的计算机程序。
背景技术
本发明涉及一种表示一组基本地址范围的数据结构,以及一种搜索该结构的方法。而且,本发明涉及一种用于地址查找的系统。
地址查找是一种在若干领域中获得应用的基本功能:主要在IP(互联网协议)查找和路由以及分组(packet)分类中,但也在处理器间通信中。
互联网主干路由器使用分组的目的地址并执行地址查找,以确定分组的下一跳。每个路由器可以在查找表中包含数十万个表目,并且可以被要求每秒执行数百万个查找。互联网流量的迅速增长以及路由表大小的日益增大使得更难以跟上日益提升的对更快处理速度的需要。另外,IPv6的128比特地址的使用要求在地址宽度方面可缩放的查找策略解决方案。IPv6在过去两年中增长提升了300%,加上IPv4的耗尽,提出了对在地址宽度方面可缩放的解决方案的需要。
分组分类要求多Gbps(Multi-Gbps)性能,以及要求具有多个域查找和可能地更少的表目。
在较小规模的处理器间通信中,虚拟地址至物理地址的逐渐转换可能要求显著更小的路由表,但查找时间的约束条件更严格,因为通信时延对于多核系统的性能是关键。
给定一个地址空间[0,2W),和k个唯一地址(地址边界)Ai,其中0<Ai<2n-1并且i=1,2,...,k,这限定了k+1个可变大小的基本地址范围,然后地址查找确定一个引入的(incoming)所请求的地址AIN属于的基本地址范围。
通常,当执行地址查找时,存在许多需要解决的有挑战性的问题。性能(即,快速查找和高吞吐量)很可能是这样的算法的主要目标。在许多情况下(例如,IP查找、分组分类),在查找期间需要的存储器大小也是重要的,并且常常决定着性能(存储器存取时延)。另外,存储器带宽是有限的,并且其高效利用可以直接影响性能。随着路由表日益增大,性能需要在表目的数量(即,地址范围的数量)方面良好缩放,而从IPv4到IPv6的迁移表明在地址宽度(W)方面的性能缩放也是必要的。最后,针对给定的一组表目生成查找表(即,存储器内容)的“配置”的时间,以及用于因渐进更新而适配表的时间,对于许多应用也是重要的。
尽管已经提出了众多算法,但上述挑战中的一些仍存在。
已经提出了各种各样的用于地址查找的算法。它们已经被总结在一些调查报告中:诸如由Gupta和McKeown在“Algorithms for packetclassification,”IEEE Network,vol.15,pp.24-32,Mar/Apr 2001中做出的,以及由Taylor在“Survey and taxonomy of packet classificationtechniques”,ACM Comput.Surv.,vol.37,no.3,pp.238-275,2005中做出的,它们关注于分组分类(在多个域中查找);或者由Ruiz-Sanchez等人在“Survey and taxonomy of IP address lookup algorithms”,IEEENetwork,vol.15,pp.8-23,Mar/Apr 2001中做出的,它更强调各种各样的途径的算法方面。
在上述调查报告中可以找到先前提出的地址查找算法的完整列表和分析。
图1示出了一个地址空间,其包括一组基本地址范围。所述地址空间可以例如与IP(互联网协议)地址空间有关。该组基本地址范围可以被表示为由地址边界限定的区间101——其中可以比较地址的完整位模式以执行查找,或者可以被表示为前缀102——其中应报告最长匹配者(最长前缀匹配)。在图1中示出了包括从00000到11111的5位地址空间(W=5)的示例性的一组八个地址范围R1、R2、R3、R4、R5、R6、R7、R6’——被表示为区间和前缀。注意,尽管前缀0*103正常地将限定区间[00000,10000),但它实际上只限定了该区间的一部分——区间(以及基本地址范围)[00000,00110)104。这是因为,对于剩余地址范围[00110,10000),存在限定了基本地址范围(前缀0011*、0100*、0101*、011*)105、106、107的更长的前缀。
Ruiz-Sanchez等人指出,地址查找包括在两个维度进行搜索:长度或值。他们根据搜索所基于的维度对现有途径分类,即“在长度上搜索”或“在值上搜索”。
一种称为“Tries”的方法可以被认为是一种“在长度上搜索”途径,因为Tries在长度维度上执行顺序搜索,在步骤n匹配长度n的前缀。
在基本Trie结构上的改进,可以包括在长度上的二分搜索而非顺序搜索、路径压缩(塌缩单路分支节点)以及固定步幅多位tries或可变步幅多位tries。最广为人知的用于地址查找的基于trie的结构是,在Eatherton,W.,Varghese,G.,and Dittia,Z.″Tree bitmap:hardware/software IP lookups with incremental updates″,SIGCOMMComput.Commun.Rev.34,2(Apr.2004),97-122中,以及在Eatherton;William N.,Dittia;Zubin D.″Tree bitmap data structures and their use inperforming lookup operations″美国专利7249149中的使用树-位图(Tree-bitmap)的结构。
图2描绘了Trie结构的一个实施例。在水平方向上,101的基本地址范围R1、R2、R3、R4、R5、R6和R7用201指示。在竖直方向上,该决策树的分支用202-203指示。沿着该决策树的路线,对于位是“0”的位比较用标有“0”的箭头203指示,且对于位是“1”的位比较用标有“1”的箭头202指示。
可以观察到,所得到的决策树可以是明显不平衡的。如Ruiz-Sanchez指出的,难以控制那些不以在地址宽度上的缩放作为其改进的Tire的高度(例如,树位图)。此外,Tires的存储器要求相对高。多位tires改进了决策树高度但没有改进可缩放性,而同时它们指数地增加了它们的存储器消耗。
图3通过称为“范围树(Range Tree)”的现有技术方法例示了一个典型的“在值上搜索”途径。在水平方向上,101的基本地址范围R1、R2、R3、R4、R5、R6、R7和R6’用301指示。在图3中,在每个层,全地址(地址边界)302的一个或多个值需要被存储在节点中,并且需要与引入的所请求的地址AIN进行比较。每个分支上的标签L303指示“具有的值小于”,标签E指示“具有的值等于”,标签G 614指示“具有的值大于”,且标签GE 304指示“具有的值大于或等于”。
现有技术的范围树避免了长度维度存储以及对扩展的前缀(全/完整地址边界)执行比较。它们执行一个或许多地址比较,在每个比较步骤都创建一棵平衡的决策树。它们需要存储在每个阶段待被比较的完整地址,从而消耗了相当大的存储器大小。
图4描绘了现有技术的多路范围树(Multiway Range Tree)结构的一个实例。多路范围树对全地址(地址边界)执行多个并发比较,然而它们在每个步骤读取多个地址的要求将它们的路数量限制到可用存储器带宽,并且降低了它们对于地址宽度的可缩放性。
理解作为用于搜索的数据树结构的最接近的已知方法的现有技术的范围树方法的背景是有帮助的。
给定一个地址空间[0,2W)和k个唯一地址边界Ai,其中0<Ai<2n-1且i=1,2,...,k,这限定了k+1个基本地址范围,然后使用一个地址查找来确定一个引入的地址AIN属于的基本地址范围。
基本地址范围401、405是由其下边界地址(端点)和上边界地址(端点)或前缀限定。
一个现有技术的决策树是一个为搜索而组织的树结构。
范围树节点406、407、410、411是该树结构的一部分,该树结构存储k个地址边界(节点地址)并在引入的地址和这k个地址边界402之间执行k个(一个或多个)比较。这些比较限定了k+1个不相交的地址范围(分支地址范围),每个地址范围与该节点的一个分支403、404、409关联。
根范围树节点407映射到整个地址空间。
任何其他节点406、410、411映射到与其父分支(父分支地址范围)关联的节点地址范围。
多路范围树是能够在单个节点执行多于一个比较的范围树。
范围树408的叶节点映射到基本地址范围。
通常,一个多路范围树节点映射到该地址空间的一个地址范围。(1)单个树层中的节点地址范围和(2)先前树层的叶节点地址范围的联合是整个地址空间。于节点地址范围的联合是它们的父节点的地址范围。
当父节点地址范围没有被完全包含在限定了地址范围的前缀中时,通过在每个节点存储完全包含了该节点映射到的地址区间的最长前缀,该限定了地址范围的前缀可以被存储在范围树中。另外,为了更新的缘故,存储在该数据结构中的每个地址边界(节点地址)也存储了其边界落在这一地址边界上的前缀的数量。
通常,Tries方法在地址的一部分中执行了精确匹配,而现有技术的范围树方法执行了全地址比较。
图5例示了多路范围树节点501的一个大致视图。当引入的地址AIN属于该节点映射到的地址范围[Na,Nb)502-503时,该节点被重新得到(retrieve)。多路范围树的根节点映射到整个地址空间[0,2W),其中W是地址宽度。该节点存储k个唯一地址边界A1,A2,...,Ai,...,Ak(也被表示为节点地址),这些地址边界限定了k+1个地址范围R1,R2,...,Rk+1520-523。Ai∈[Na,Nb),任给i∈自然数且i≤k,使得R1=[Na,A1),...,Ri=[Ai-1,Ai),...Rk+1=[Ak,Nb)。然后引入的地址AIN∈[Na,Nb)需要与地址Ai相比较,以确定它属于的地址范围Ri。
图4例示了存储一组基本地址范围的多路范围树的一个实例。根节点407映射到整个地址空间[0,100000),且存储两个地址边界“01010”和“10000”402并将它们与引入的地址AIN相比较。如果AIN<01010,那么随后是到最左边的子节点411的分支403,该子节点411映射到[00000,01010);如果01010≤AIN<10000,那么随后是到中间的子节点410的分支409,该子节点410映射到[01010,10000);当AIN≥10000时,选取到节点406的最右边的分支404,该节点406映射到[10000,100000)。上述数目为二进制编码。相似地,最左边的子节点411将地址“00110”和“01000”与引入的地址AIN相比较。如果AIN<00110,那么随后是到最左边的区间R1408的分支,该区间R1408映射到[00000,00110);如果00110≤AIN<01000,那么随后是到区间R2的分支,该区间R2映射到[01010,10000);当AIN≥10000时,随后是到R3的分支,R3映射到[10000,100000)。
本发明的一个目的是提供一种允许更高效的地址查找的方法。
该目的是通过一种用于构建在地址空间中对所请求的地址进行地址查找中所用的决策树的方法来实现的,
所述地址空间被布置为一组基本地址范围,
每个基本地址范围由一个下边界地址和一个上边界地址限定;
所述地址空间中的一个地址由预定数量的位表示;
所述方法包括:
-将所述决策树布置为用于从该组基本地址范围中确定所述所请求的地址属于的一个具体基本地址范围,
所述决策树包括至少一个层,所述至少一个层包括至少一个节点;
所述至少一个节点被布置为用于映射到一个节点地址范围,所述节点地址范围是所述地址空间的一个与节点有关的部分,所述节点地址范围由一个下节点边界地址和一个上节点边界地址限定;
所述至少一个节点具有至少两个节点分支,
每个节点分支映射到所述节点地址范围中的各自非重叠分支地址范围,
所述分支地址范围由所述节点地址范围中的节点地址限定;
-将每个节点地址分解成多个地址部分,每个地址部分由所述预定数量的位的各自的子集表示,所述分解包括下列中的至少一个:
a)将对于多个节点地址公共的至少一个地址部分确定为至少一个公共地址部分,以及
b)将可省略的至少又一个地址部分确定为至少一个可省略的地址部分,所述至少一个可省略的地址部分要么是值为“零”的一个节点地址后缀,要么是对于所述节点地址范围中的所有地址公共的一个地址部分;
-根据一个选择规则将所述多个地址部分存储在所述至少一个节点中,
所述选择规则包括选自一组动作中的至少一个动作,该组动作包括:
-将所述至少一个公共地址部分仅在所述节点中存储一次;
-省略所述至少一个可省略的地址部分,以及
-将在所述分解步骤中确定的所有其他地址部分存储在所述节点中,所述所有其他地址部分既不是所述至少一个公共地址部分,又不是所述至少一个可省略的地址部分。
在一个实施方案中,该方法包括:
-接收所述所请求的地址作为输入;
-确定所述所请求的地址属于的基本地址范围,包括,在所述决策树的每个层中,从顶层中的根节点开始:
针对所述各自的层中的各自的节点:
读取存储在所述各自的节点中的地址部分;
将存储在所述层中的所述各自的节点中的至少一个地址部分与所述所请求的地址的各自的对应地址部分相比较;
基于所述至少一个比较,分支到所述决策树的下一个层中的一个节点,直到当到达所述决策树的所述叶节点之一时已确定所述基本地址范围时。
本发明还涉及一种用于构建在地址空间中对所请求的地址进行地址查找中所用的决策树的计算机系统,
所述地址空间被布置为一组基本地址范围,
每个基本地址范围由一个下边界地址和一个上边界地址限定;
所述地址空间中的一个地址由预定数量的位表示;
所述计算机系统包括存储器和处理器,所述处理器联接至所述存储器,其中所述处理器被布置为执行用于构建在所述地址空间中对所请求的地址进行地址查找中所用的决策树的方法,包括:
-将所述决策树布置为用于从该组基本地址范围中确定所述所请求的地址属于的一个具体基本地址范围,
所述决策树包括至少一个层,所述至少一个层包括至少一个节点;
所述至少一个节点被布置为用于映射到一个节点地址范围,所述节点地址范围是所述地址空间的一个与节点有关的部分,所述节点地址范围由一个下节点边界地址和一个上节点边界地址限定;
所述至少一个节点具有至少两个节点分支,
每个节点分支映射到所述节点地址范围中的各自非重叠分支地址范围,
所述分支地址范围由所述节点地址范围中的节点地址限定;
-将每个节点地址分解成多个地址部分,每个地址部分由所述预定数量的位的各自的子集表示,所述分解包括下列中的至少一个:
a)将对于多个节点地址公共的至少一个地址部分确定为至少一个公共地址部分,以及
b)将可省略的至少又一个地址部分确定为至少一个可省略的地址部分,所述至少一个可省略的地址部分要么是值为“零”的一个节点地址后缀,要么是对于所述节点地址范围中的所有地址公共的一个地址部分;
-根据一个选择规则将所述多个地址部分存储在所述至少一个节点中,
所述选择规则包括选自一组动作中的至少一个动作,该组动作包括:
-将所述至少一个公共地址部分仅在所述节点中存储一次;
-省略所述至少一个可省略的地址部分,以及
-将在所述分解步骤中确定的所有其他地址部分存储在所述节点中,所述所有其他地址部分既不是所述至少一个公共地址部分,又不是所述至少一个可省略的地址部分。
此外,本发明涉及一种待被上述计算机系统加载的计算机可读介质上的计算机程序,用于构建在地址空间中对所请求的地址进行地址查找中所用的决策树,所述地址空间被布置为一组基本地址范围,
每个基本地址范围由一个下边界地址和一个上边界地址限定;
所述地址空间中的一个地址由预定数量的位表示;
所述计算机系统包括存储器和处理器,所述处理器联接至所述存储器,其中所述计算机程序产品在被加载之后允许所述处理器执行:
-将所述决策树布置为用于从该组基本地址范围中确定所述所请求的地址属于的一个具体基本地址范围,
所述决策树包括至少一个层,所述至少一个层包括至少一个节点;
所述至少一个节点被布置为用于映射到一个节点地址范围,所述节点地址范围是所述地址空间的一个与节点有关的部分,所述节点地址范围由一个下节点边界地址和一个上节点边界地址限定;
所述至少一个节点具有至少两个节点分支,
每个节点分支映射到所述节点地址范围中的各自非重叠分支地址范围,
所述分支地址范围由所述节点地址范围中的节点地址限定;
-将每个节点地址分解成多个地址部分,每个地址部分由所述预定数量的位的各自的子集表示,所述分解包括下列中的至少一个:
a)将对于多个节点地址公共的至少一个地址部分确定为至少一个公共地址部分,以及
b)将可省略的至少又一个地址部分确定为至少一个可省略的地址部分,所述至少一个可省略的地址部分要么是值为“零”的一个节点地址后缀,要么是对于所述节点地址范围中的所有地址公共的一个地址部分;
-根据一个选择规则将所述多个地址部分存储在所述至少一个节点中,
所述选择规则包括选自一组动作中的至少一个动作,该组动作包括:
-将所述至少一个公共地址部分仅在所述节点中存储一次;
-省略所述至少一个可省略的地址部分,以及
-将在所述分解步骤中确定的所有其他地址部分存储在所述节点中,所述所有其他地址部分既不是所述至少一个公共地址部分,又不是所述至少一个可省略的地址部分。
另外,本发明涉及一种使用决策树用于在地址空间中对所请求的地址进行地址查找的计算机系统,所述决策树是根据上述方法构建的,所述计算机系统包括存储器和处理器,所述处理器联接至所述存储器,其中所述处理器被布置为执行:
-接收所述所请求的地址作为输入;
-确定所述所请求的地址属于的基本地址范围,
包括,在所述决策树的每个层中,从顶层中的根节点开始:
针对所述各自的层中的各自的节点:
读取存储在所述各自的节点中的地址部分;
将存储在所述层中的所述各自的节点中的至少一个地址部分与所述所请求的地址的各自的对应地址部分相比较;
基于所述至少一个比较,分支到所述决策树的下一个层中的一个节点,直到当到达所述叶节点之一时已确定所述基本地址范围时。
本发明的其他实施方案由随附的从属权利要求限定。
尽管已经具体参照远程通信应用公开了本发明,但本发明的数据结构和搜索方法促进了对以地址区间或地址前缀形式限定的地址范围的任何数据库的迅速搜索。本方法和系统还适于以计算机硬件实施,根据地址宽度和所存储的地址范围的数量而可缩放,提供了紧凑的存储,并且可以被应用至互联网多服务路由器的设计中的紧迫问题。
本数据结构和搜索方法尤其有利于以数字计算机硬件实施。当前感兴趣的首要应用是,用于IP查找、分组分类、多服务互联网路由器的半导体集成电路。然而,本技术可以在涉及需要区分优先级的数据或数据中的结构需要被确定然后被分类的多种应用中有用。作为地址查找的结果,可以更快以及更高效地对数据采取行动。
附图说明
现在将参照所附的示意图仅通过实施例描述本发明的实施方案,在附图中对应的参考符号指示对应的部分,并且在附图中:
图1示意性地示出了地址空间内的地址区的一个实例;
图2示意性地示出了根据来自现有技术的Trie方法的一个决策树;
图3示意性地示出了根据来自现有技术的范围树方法的一个决策树;
图4示意性地示出了根据来自现有技术的多路范围树方法的一个决策树;
图5示意性地示出了映射到范围树节点的一个范围Trie节点;
图6A示意性地示出了根据本发明的一个方法的一个决策树;
图6B示意性地示出了根据本发明的一个方法的一个决策树节点;
图6C示意性地示出了根据本发明的一个方法的一个决策树节点;
图7A根据本发明示出了一个范围Trie的图;
图7B示出了在用额外叶节点和指针进行注释操作(annotationoperation)之后的一个范围Trie的图;
图8是根据本发明示出了已注释的范围Trie节点在存储器分级体系中的布置的图;
图9是根据本发明的一个范围Trie节点和要被存储在存储器分级体系中的相应的节点数据结构的图形表示;
图10是根据本发明描绘了本发明的功能单元及其互连的框图;
图11A是根据本发明的单个32位比较器的组合逻辑的框图;
图11B是根据本发明的实施下一个范围偏移单元的组合逻辑的框图;
图12A示意性地示出了被布置为执行根据本发明的一个方法的又一个计算机系统的功能框图;
图12B示意性地示出了被以流水线形式布置、用于执行根据本发明的一个方法的又一个计算机系统的功能框图;
图13示意性地示出了被布置为执行根据本发明的一个方法的一个系统的框图。
具体实施方式
本发明的方法接收一个所请求的引入的地址AIN,并且确定该所请求的地址AIN属于的基本地址范围R1...R7。范围Trie节点的外部特性与现有技术的范围树节点的外部特性一一匹配。图5示意性地示出了映射到一个范围树节点的一个范围Trie节点。
因此,图5可以被用来例示范围Trie节点和现有技术的范围树的外部特性。所述外部特性是:1)一个节点映射到的地址范围由节点下边界502和节点上边界503确定;2)该节点的分支530、531、532、533;以及3)分支531、533、530、532各自指向的分支地址范围520、521、522、523,由数个地址边界(也被表示为节点地址)507、505、504、506、508和节点边界(下节点边界地址和上节点边界地址)502、503确定的地址范围。
本发明的方法与范围树方法之间的区别是:(1)不同数据被存储在一个节点中;以及(2)基于节点信息和引入的地址,要求不同的计算来确定待选取的分支。
从该决策树的第一层节点开始,根据本发明,所请求的引入的地址在一个节点中被处理。基于该所请求的引入的地址、存储在节点中的数据以及该节点计算,来确定将要选取的节点分支。重复这一过程,直到到达该决策树的一个叶节点,以及由此到达该所请求的引入的地址属于的地址范围。
本发明的方法以下列方式对现有技术的多路范围树方法做出了改进:
给定每个树节点待被存储的最大量数据,该最大量数据可能由计算机可读介质的带宽限定,该方法增加了存储在一个节点中的地址边界的数量。如在具体实施方案的描述中进一步解释的,这可以通过下列方式来做到:通过共享和省略地址边界的一部分,且可选地另外通过使用压缩技术来压缩存储在一个节点中的地址边界。
因此,该方法增加了存储在一个节点中的地址边界的数量,从而增加了在该节点中可用的分支的数量。通过这样做,对于待被存储在该决策树中的给定数量的基本地址范围,以及对于每个节点所存储的给定量的数据,减少了该决策树的层的数量。
然后,给定一个所请求的引入的地址,一个节点需要基于对应于该节点的数据来执行若干个计算以确定待选取的正确分支。所述计算可以是如下二者之一:(1)解压缩存储在该节点中的数据以重新得到原始地址边界,然后执行在所请求的引入的地址与所述地址边界之间的比较;或者(2)如下文所述,直接对存储在该节点中的数据执行计算,而不解压缩。后一实施方案包括地址对齐操作,以及在地址的一部分中的比较。
作为对本发明的方法的总体描述,我们考虑通过下列方式减少存储在一个节点中所要求的地址边界位的数量:(1)共享地址边界的公共地址部分;(2)省略可省略的地址部分;以及可选地(3)另外进一步压缩待被存储在该决策树的一个节点中的数据;然后,读取已压缩的地址部分,并使用所请求的引入的地址AIN和该节点的数据作为输入来执行计算。计算可包括解压缩存储在该节点中的地址部分,以及在该地址边界的地址部分中执行比较。
此后,我们详细描述一个实施方案,它是采用了本发明的范围Trie方法的许多替代设计或快速地址查找之一。然而,它是在简单性和速度之间的极好平衡。在本文的末尾简要描述了又一些实施方案,这些实施方案涉及压缩和解压缩存储在一个节点中的地址边界,然后执行所请求的引入的地址与所述地址边界之间的比较。
另外,本发明的方法的一个具体实施方案被布置为:(1)共享在同一节点中被并行比较的(节点地址/地址边界的)公共地址部分;(2)省略对于所述比较不要求的地址边界的部分;以及(3)对齐所述地址边界和所请求的引入的地址,以增加待被省略的地址部分。
限定了地址范围的地址边界(节点地址)可以被分别较稀疏或较密集地放置在创建了较长或较短的地址范围的地址空间中。直观地,对于该地址空间中较稀疏的区域,较少的地址位的比较可以是足够的,而较密集的区域需要更好的精度,但可以具有能够被共享的长的公共前缀甚至可以被共享的后缀。上述方法可以被执行,以保持所得到的决策树平衡以及充分利用共享,从而提高存储器带宽的使用。此外,随着地址宽度的增大和路由表大小的增长,该方法允许在性能方面的可缩放性。
举例而言,图6A示出了根据本发明的一个方法的一个多路决策树。该决策树在该树中的若干个层处包括多个节点601、602、603、604。较高层中的一个节点可以分支到该较高层之下的层中的数个节点。该较高层中的该节点是该较高层之下的层中的(子)节点的父。
该多路决策树可以在某一层是两个分支,但也可以在该树中的单个层具有两个以上的分支。
再一次,这里使用了如图1中限定的基本地址范围。如图6A所例示,本发明的方法增加了该决策树在比较较少的地址位时的分支的数量。在图6A的实施例中,可用的5位存储器带宽被假定为等于图3中所示的现有技术的范围树方法的可用存储器带宽。
为了例示本发明的方法,在第一迭代中,在层1607的根节点601,将引入的地址AIN的两个最高有效位与存储在该根节点的地址边界的部分相比较,该地址边界的部分是:两个最高有效位“01---”605和最高有效位“1----”606。较低的有效地址边界位被省略(由“-”指示)。这一比较等效于比较完整地址边界“01000”和“10000”,如同在现有技术的范围树结构中会做的那样。
在层2608且在从根节点601选取中间分支610之后的第二迭代中,正常地将比较地址边界“01010”和“01100”。然而,它不需要存储和比较两个最高有效位,因为在第一迭代之后已知引入的地址是“01xxx”,其中x是未定的位值。而且,待被比较的地址边界的最低有效位被省略,因为它的值是“0”。
相似地,在从根层选取右边的分支615之后,已知最高有效位是“1xxxx”。那么,在层2608,待被比较的两个地址边界“11100”和“11101”具有公共前缀Ai CP(“-110-”)611,该公共前缀被共享从而在该节点中仅被存储一次,并被单独比较。这一节点602的决策是基于公共前缀Ai CP比较的结果,以及(如果需要)在同一节点602指示为“----1”613的最低有效位的比较。
如这一实施例所例示的,本发明的方法产生了良好平衡的决策树,该决策树不像使用较少存储器带宽的现有技术的范围树那么深。
在下面的两个实施例中例示了减少每个地址边界存储在一个节点中的数据的量的两种附加方式。这就是该方法的地址对齐性质以及该方法的公共地址后缀共享性质。
图6B例示了使用本发明的范围Trie方法表示地址范围集620的范围Trie节点622的一个实施例。该节点例示了共享地址边界的公共后缀的一个实施例。这一节点表示具有两位公共后缀“10”的两个地址边界“10010”625和“11010”626。AIN的前三位被与所述地址的边界625的三位前缀“100”和边界626的三位前缀“110”相比较。如果在AIN的3位前缀和所述地址边界的3位前缀之间不存在精确匹配,那么匹配地址范围被识别。如果存在AIN与所述地址边界的两个前缀之一的精确匹配,那么所述公共地址的边界后缀623将与AIN的后缀相比较。在这一实施例中,该引入的地址的最后两位将被与“10”相比较。根据该公共后缀比较的结果以及之前刚刚发生的匹配,该基本地址范围被识别。本发明在上述实施例中的优势在于,共享公共后缀,从而仅存储它、读取它和比较它一次。
图6C例示了使用本发明的范围Trie方法表示地址范围集630的范围Trie节点632的一个实施例。该节点例示了对齐地址边界与该引入的地址AIN的一个实施例。该节点映射到的地址范围的长度是从上节点边界地址637减去下节点边界地址634的结果,NL=01110-10011=00101,在这一实施例中该NL要求被表示成3位的二进制“101”,因为两个最高有效位是零。表示该节点地址范围的长度所要求的位的数量,确定了将被用在这一节点所要求的计算中的后缀位的数量。因此,在这一实施例中,在这一节点中相同数量的最低有效地址位(三位)对于随后的计算将是有用的。首先,下节点边界634的三个最低有效位“--110”被从AIN的三个最低有效位中减去。从所述地址中省略的最高有效位由“-”指示。该减法的结果的三个最低有效位被与随后计算的结果的三个最低有效位相比较:下节点边界634的三个最低有效位“--110”被从每个地址边界635、636的三个最低有效位“--111”和“--010”中减去。上述计算的结果确定了待选取的节点分支。注意,原始节点的边界没有公共前缀,但在对齐之后存在2位公共前缀,所述2位公共前缀从该节点的计算中被省略。因此,我们仅需要对下列各项的仅三个最低有效位进行存储和执行计算:(1)AIN;(2)下节点边界634;以及(3)地址边界635、636。
通常,本发明的范围Trie节点和分支可以被一一映射到(现有技术)范围树数据结构。如在现有技术范围树中,一个范围Trie节点映射到该地址空间的一个地址范围。
(1)单个树层中的节点的地址范围和(2)先前树层的叶节点的地址范围的联合是整个地址空间。子节点地址范围的联合是它们的父节点的地址范围。
当引入的地址AIN为Ak-1≤AIN<Ak时,选取指向分支地址范围[Ak-1,Ak)的一个节点分支。然而,存储在本发明的一个范围Trie节点中的数据显著少于存储在一个范围树节点中的数据,而基于该引入的地址来确定随后的子分支所需要的计算也是不同的。而且,前缀可以用与存储在现有技术范围树中相同的方式被存储到本发明的数据结构。
一个范围Trie节点由一些地址边界的部分组成,这些地址边界的部分可以被布置为根据一个具体实施方案组成:(1)两个或更多个地址边界的单个公共地址部分;(2)每个地址边界在省略该比较不要求的任何位的子集(可省略的地址部分)之后的剩余部分;这一位的子集可以是节点地址范围公共的位,也可以是具有值为“0”的地址边界后缀。
因此,根据图5和图6A-6C,本发明提供了一种用于构建在地址空间中对所请求的地址进行地址查找中所用的决策树的方法,
所述地址空间被布置为一组基本地址范围,
每个基本地址范围由一个下边界地址和一个上边界地址限定;
所述地址空间中的一个地址由预定数量的位表示;
所述方法包括:
-将所述决策树布置为用于从该组基本地址范围中确定所述所请求的地址属于的一个具体基本地址范围,
所述决策树包括至少一个层,所述至少一个层包括至少一个节点;
所述至少一个节点被布置为用于映射到一个节点地址范围,所述节点地址范围是所述地址空间的一个与节点有关的部分,所述节点地址范围由一个下节点边界地址和一个上节点边界地址限定;
所述至少一个节点具有至少两个节点分支,
每个节点分支映射到所述节点地址范围中的各自非重叠分支地址范围,
所述分支地址范围由所述节点地址范围中的节点地址限定;
-将每个节点地址分解成多个地址部分,每个地址部分由所述预定数量的位的各自的子集表示,所述分解包括下列中的至少一个:
a)将对于多个节点地址公共的至少一个地址部分确定为至少一个公共地址部分,以及
b)将可省略的至少又一个地址部分确定为至少一个可省略的地址部分,所述至少一个可省略的地址部分要么是值为“零”的一个节点地址后缀,要么是对于所述节点地址范围中的所有地址公共的一个地址部分;
-根据一个选择规则将所述多个地址部分存储在所述至少一个节点中,
所述选择规则包括选自一组动作中的至少一个动作,该组动作包括:
-将所述至少一个公共地址部分仅在所述节点中存储一次;
-省略所述至少一个可省略的地址部分;以及
-将在所述分解步骤中确定的所有其他地址部分存储在所述节点中,所述所有其他地址部分既不是所述至少一个公共地址部分,也不是所述至少一个可省略的地址部分。
读取包括预定地址空间中的一个地址的一个引入的地址AIN。接下来,该引入的地址AIN由对应于该地址空间的范围的数个位限定。
在该地址空间内,存在限定了基本地址范围R1,...,R7的数个地址边界。每个基本地址范围R1,...,R7自身就是包括数个单独地址的一个子地址空间。
基于地址边界的数量来构建一个决策树,该决策树被用来确定该引入的地址AIN位于哪个基本地址范围中。
为了确定该引入的地址在该地址空间内的位置,该方法被布置为在数个迭代中执行一个或多个比较,所述比较为将位的子集或整个所请求的引入的地址的一个值与位的子集或整个地址边界的一个或多个值相比较。该位的子集的大小在不同迭代中可以不同。该决策树以如下方式分支:在完成所述迭代之后,该引入的地址所属于的基本地址范围被确定。下面,将更详细地描述该决策树的构建。
在一个实施方案中,本发明提供了如上述的方法,该方法还包括:
-接收所述所请求的地址作为输入;
-确定所述所请求的地址属于的基本地址范围,包括,在所述决策树的每个层中,从顶层中的根节点开始:
针对所述各自的层中的各自的节点:
读取存储在所述各自的节点中的地址部分;
将存储在所述层中的所述各自的节点中的至少一个地址部分与所述所请求的地址的各自的对应地址部分相比较;
基于所述至少一个比较,分支到所述决策树的下一个层中的一个节点,直到当到达所述叶节点之一时已确定所述基本地址范围时。
接下来,描述根据该方法减少在一个节点中需要被存储、读取和处理的地址边界位的数量的一个具体实施方案。在该决策树的一个节点中,对于数个地址边界公共的位可以被组合成一个公共地址部分,作为待被比较的位的一个子集。有利地,这些位在该节点中仅需要被存储一次,然后对于多于一个的地址边界仅要求针对这些位做单个比较。另外,对于一个节点映射到的地址范围中的所有地址的公共的位可以从该比较中被省略。而且,具有零值的地址边界后缀位可以从该比较中被省略。最后,地址边界和所请求的引入的地址可以被适当地对齐,以使得需要被存储在该节点中的信息最小化。
该方法应用根据该实施方案的决策树,该决策树具有下列性质:
-映射到该地址空间的地址范围的节点。(1)单个树层中的节点的地址范围和(2)先前树层的叶节点的地址范围的联合是整个地址空间。于节点地址范围的联合是它们的父节点的地址范围;
-在一个节点,每个比较要求被处理的地址位(或该决策树中的节点分支)的最大数量是log2D,其中D是该节点映射到的地址范围的长度;
-当地址后缀的值为零时可以从处理中省略该地址后缀。在一些情况下,可以迫使一个地址边界具有值为零的后缀,以减少需要被存储的数据,然后一个新的地址边界被创建,尽管它没有被包括在原始组的地址边界——其限定了待被存储在该决策树中的原始组的地址范围——中。
-公共地址部分在地址边界(节点地址)之间共享;以及
-地址可以被适当地对齐以使得它们共享的公共前缀最大化。
对应于这些性质,根据这一实施方案的该方法提供了一些数据处理规则。这些规则旨在,在给定一个具体的存储器带宽的前提下,增加每节点分支的数量,以减小该决策树的深度。
现在考虑图5的节点501。由于一个范围Trie节点的外部特性与一个范围树节点的外部特性一一匹配,所以图5可以被用来例示一个范围Trie节点。
第一规则(规则1)是,省略节点边界502、503的公共前缀。当在地址Na 502和地址Nb 503的节点边界存在一个长度为L(L<W,W是地址宽度)的公共前缀CP时,所述地址的L个最高有效位(输入地址和地址边界)可以从在该节点的比较中被省略。
第二规则(规则2)是,在该节点映射到的地址范围内共享地址边界Ai 504的公共前缀(最高有效位)ACP。多个地址边界Ai的长度为L(L<W)的公共前缀ACP可以在多个比较中被共享、仅被存储一次并被分别处理。然后,如果该长度为L的AIN前缀小于ACP,那么AIN∈R1(即,AIN属于R1)。如果该长度为L的AIN前缀大于ACP,那么AIN∈Rk+1。如果该长度为L的AIN前缀等于ACP,那么AIN的(W-L)位后缀(最低有效位)与地址边界Ai 504的(W-L)位后缀的比较确定了AIN属于何处。
第三规则(规则3)是,省略值为“0”的地址边界后缀。令地址边界Ai 504的长度为L的后缀为零,其中L<W。那么,Ai 504的这一后缀不需要被与AIN的该L个最低有效位相比较。那么AIN的(W-L)位前缀(最高有效位)与地址边界Ai 504的(W-L)位前缀的比较确定了AIN属于何处
第四规则(规则4)是,在该节点映射到的地址范围内共享地址边界Ai 504的公共后缀(最低有效位)ACS。多个地址Ai的公共后缀ACS可以在多个比较中被共享,并被分别处理。
令Rp=[Ap-1,Ap)(p∈自然数,1≤p≤k+1)是Ai和AIN的(W-L)位前缀比较所指示的地址范围。那么,当下列所有三个条件为真时,有AIN∈Rp-1=[Ap-2,Ap-1):
(1)长度为L的AIN后缀小于ACS;
(2)长度为W-L的AIN前缀等于Ap-1的前缀;
(3)Rp≠R1
如果上述三个条件中的一个或多个不被满足,那么AIN∈Rp。
第五规则(规则5)是,使用地址对齐。在映射到具有地址边界Ai 504的[Na,Nb)的节点N中查找地址AIN等效于在映射到具有地址边界A′i=(Ai-Na)的地址范围[0,Nb-Na)的节点N′中查找地址A′IN=(AIN-Na)。那么,当A′IN属于节点N′的地址范围Ri=[A′i-1,A′i)时,AIN属于原始节点N的地址范围Ri=[Ai-1,Ai)。
第五规则使得第一规则的益处最大化,并且本质上是实现本发明的方法的本质属性的手段:一个节点需要处理的地址位的最大数量等于表示该节点区域的长度所需要的位的数量,即log2(Nb-Na)。
关于并行地应用上述一个以上的规则,出现了一个问题。规则一至四可以被独立地应用,因为它们不彼此影响。例如,有可能省略使用公共节点前缀(规则1)、省略使用任何零后缀(规则3),然后应用共享剩余地址位的地址公共前缀(规则2)和后缀(规则4)。
然而,第五规则更难以与规则一至四中的一个或多个组合起来应用。第五规则旨在使得公共节点前缀最大化,因此它可以与第一规则组合,但需要被应用在第二规则之前,因为地址前缀在该减法之后改变了。关于零和公共地址后缀,第五规则可以被独立地应用。优选的是,使用原始地址值分别省略零地址后缀和共享公共地址后缀(长度为L的),然后在剩余的W-L个地址位中做减法。这是可行的,因为,代替减去Na 502,可以减去Na 502的W-L个最高有效位,假定剩余的是零。通过这样做,甚至当应用地址对齐以及另外将该减法中要求的地址位减少到仅有用于该前缀比较所需要的位时,也保留了共享后缀的益处。
应注意,上述规则考虑减少存储在一个节点中的地址边界所要求的部分以及它们各自的比较。相同的规则可以被应用至地址部分的部分以及它们各自的比较。
最后,规则2和规则4可以被扩展至共享两个或更多个节点地址的任何公共地址部分。
系统
图13示意性地示出了被布置为执行本发明的一个方法的系统1300的框图。该系统包括:存储器1301(例如,片上存储器SRAM);范围Trie处理单元1302-1306,每个处理单元执行单个树层的处理;以及可选地,如果该存储器不足以存储所有的范围Trie节点,那么还包括外部存储器1307(例如DRAM)以存储最后的范围Trie层的节点(在所示出的实施例中,第五层的节点被外部地存储)。
在下面详细描述每个范围Trie处理单元1302-1306的内部,并且在图12A、12B中以及进一步在如图10所示的一个示例性硬件实施方式中例示。
取决于该系统的应用,引入的地址AIN可以是通过网络I/O设备从来自该网络的引入的分组的分组头中所提取的一个或多个分组域。引入的地址AIN被录入范围Trie处理单元1302的第一层,该范围Trie处理单元1302可以不需要读存储器,因为第一范围Trie层包括单个根节点,并且可以被存储在1302中的寄存器中。范围Trie处理层21303、层31304、层41305和层51306在从存储器(SRAM 1301或DRAM 1307)读取由先前的范围Trie层处理单元确定的范围Trie节点的数据之后,执行与1302相同的计算。范围Trie节点根据上述规则或除这些规则之外,通过使用另一种压缩技术,以压缩形式存储地址边界。在最后的范围Trie处理单元(层5)之后,需要从存储器单元中读取结果阵列(Result Array)804,该结果阵列804存储每个基本地址范围的动作或匹配前缀。针对给定的引入的地址的匹配基本地址范围和/或与该基本地址范围关联的动作是该系统的输出。
系统1300被示为在存储器单元1301、1307中读和写的范围Trie处理单元或处理器序列,然而,它可以包括并行工作的或由一个主处理器控制的几个处理单元序列,它们彼此之间可以是远程设置,如本领域技术人员已知的。
用于执行本发明的方法的计算机布置的实例有:(骨干)网络路由器、报文分组交换系统、多服务互联网路由器、多域分组分类系统、网关、提供网络服务的(支持多播、隧道、虚拟专用网、服务质量支持)的服务器、网络安全系统。
范围Trie处理单元1302-1306包括硬件部件形式或软件部件形式的功能性,以执行它们各自的功能,如在下面更详细地描述的。技术人员应意识到,本发明的功能性可以通过硬件部件与软件部件的组合来实现。如本领域技术人员已知的,硬件数字部件可以存在于范围Trie处理单元1302、1303、1304、1305、1306内,或者可以作为与范围Trie处理单元1302、1303、1304、1305、1306接口的分立电路而存在。而且,本领域技术人员应意识到,软件部件可以存在于1302、1303、1304、1305、1306的存储器区域或者存储器单元1301、1307中。
图13所示的计算机系统1300被布置为执行本发明的方法的计算。计算机系统1300能够执行根据位于计算机可读介质上的配置(或程序代码)的计算,该计算机可读介质在被载入该计算机系统之后允许该计算机系统执行本发明的方法。本发明可以选取如下形式:含有描述上面所公开的方法的一个或多个机器可读指令序列的计算机程序,或者其内存储有这样的计算机程序的数据存储介质(例如,半导体存储器)。
因此,本发明提供了一种用于构建在地址空间中对所请求的地址进行地址查找中所用的决策树的计算机系统,
所述地址空间被布置为一组基本地址范围,
每个基本地址范围由一个下边界地址和一个上边界地址限定;
所述地址空间中的一个地址由预定数量的位表示;
所述计算机系统包括存储器和处理器,所述处理器联接至所述存储器,其中所述处理器被布置为执行用于构建在所述地址空间中对所请求的地址进行地址查找中所用的决策树的方法,包括:
-将所述决策树布置为用于从该组基本地址范围中确定所述所请求的地址属于的一个具体基本地址范围,
所述决策树包括至少一个层,所述至少一个层包括至少一个节点;
所述至少一个节点被布置为用于映射到一个节点地址范围,所述节点地址范围是所述地址空间的一个与节点有关的部分,所述节点地址范围由一个下节点边界地址和一个上节点边界地址限定;
所述至少一个节点具有至少两个节点分支,
每个节点分支映射到所述节点地址范围中的各自非重叠分支地址范围,
所述分支地址范围由所述节点地址范围中的节点地址限定;
-将每个节点地址分解成多个地址部分,每个地址部分由所述预定数量的位的各自的子集表示,所述分解包括下列中的至少一个:
a)将对于多个节点地址公共的至少一个地址部分确定为至少一个公共地址部分,以及
b)将可省略的至少又一个地址部分确定为至少一个可省略的地址部分,所述至少一个可省略的地址部分要么是值为“零”的一个节点地址后缀,要么是对于所述节点地址范围中的所有地址公共的一个地址部分;
-根据一个选择规则将所述多个地址部分存储在所述至少一个节点中,
所述选择规则包括选自一组动作中的至少一个动作,该组动作包括:
-将所述至少一个公共地址部分仅在所述节点中存储一次;
-省略所述至少一个可省略的地址部分;以及
-将在所述分解步骤中确定的所有其他地址部分存储在所述节点中,所述所有其他地址部分既不是所述至少一个公共地址部分,又不是所述至少一个可省略的地址部分。
范围Trie处理单元1302-1306(或处理器)还被布置为执行本发明的方法,包括:
-接收所述所请求的地址作为输入;
-确定所述所请求的地址属于的基本地址范围,包括,在所述决策树的每个层中,从顶层中的根节点开始:
针对所述各自的层中的各自的节点:
读取存储在所述各自的节点中的地址部分;
将存储在所述层中的所述各自的节点中的至少一个地址部分与所述所请求的地址的各自的对应地址部分相比较;
基于所述至少一个比较,分支到所述决策树的下一个层中的一个节点,直到当到达所述叶节点之一时已确定所述基本地址范围时。
附加地,本发明提供了一种位于计算机可读介质上的计算机程序,所述计算机程序待被上述计算机系统加载,用于构建在地址空间中对所请求的地址进行地址查找中所用的决策树,
所述地址空间被布置为一组基本地址范围,
每个基本地址范围由一个下边界地址和一个上边界地址限定;
所述地址空间中的一个地址由预定数量的位表示;
所述计算机系统包括存储器和处理器,所述处理器联接至所述存储器,其中所述计算机程序产品在被加载之后允许所述处理器执行:
-将所述决策树布置为用于从该组基本地址范围中确定所述所请求的地址属于的一个具体基本地址范围,
所述决策树包括至少一个层,所述至少一个层包括至少一个节点;
所述至少一个节点被布置为用于映射到一个节点地址范围,所述节点地址范围是所述地址空间的一个与节点有关的部分,所述节点地址范围由一个下节点边界地址和一个上节点边界地址限定;
所述至少一个节点具有至少两个节点分支,
每个节点分支映射到所述节点地址范围中的各自非重叠分支地址范围,
所述分支地址范围由所述节点地址范围中的节点地址限定;
-将每个节点地址分解成多个地址部分,每个地址部分由所述预定数量的位的各自的子集表示,所述分解包括下列中的至少一个:
a)将对于多个节点地址公共的至少一个地址部分确定为至少一个公共地址部分,以及
b)将可省略的至少又一个地址部分确定为至少一个可省略的地址部分,所述至少一个可省略的地址部分要么是值为“零”的一个节点地址后缀,要么是对于所述节点地址范围中的所有地址公共的一个地址部分;
-根据一个选择规则将所述多个地址部分存储在所述至少一个节点中,
所述选择规则包括选自一组动作中的至少一个动作,该组动作包括:
-将所述至少一个公共地址部分仅在所述节点中存储一次;
-省略所述至少一个可省略的地址部分,以及
-将在所述分解步骤中确定的所有其他地址部分存储在所述节点中,所述所有其他地址部分既不是所述至少一个公共地址部分,又不是所述至少一个可省略的地址部分。
此外,本发明提供了一种设有上述计算机程序的计算机可读介质。
根据该方法,范围Trie处理单元1302、1303、1304、1305、1306接收一个引入的地址AIN,以根据本方法执行地址查找。该引入的地址是通过网络I/O设备从该网络的引入的分组的分组头中提取的。引入的地址AIN可以包括该分组的目的地址,但也包括或替代地包括源地址、源端口、目的端口和/或协议。引入的地址AIN是在覆盖了预定数量的位的一个地址范围的一个地址空间内的一个地址。
范围Trie处理单元1302、1303、1304、1305、1306则在数个迭代中,在每个迭代中从引入的地址的预定数量的位中选择该位的一个子集。接下来在每个迭代中,范围Trie处理单元1302、1303、1304、1305、1306将该预定数量的位的该子集的一个值与来自该地址空间的位的一个子集的一个值相比较。
进一步,范围Trie处理单元1302、1303、1304、1305、1306可以被布置为执行根据第一、第二、第三、第四和第五规则中的一个或多个规则限定的算法,如上所述。
图12A示意性地示出了被布置为执行根据本发明的一个方法的又一个计算机系统1200的功能框图。
在要求多个位操纵指令来移位地址、选择它们的待被比较的部分以及选择匹配区的情况下,以硬件形式实施本发明的方法可以比以软件形式实施更有效率。另一方面,软件实施方式也可以得益于本发明的方法,因为该方法减少了存储器访问的数量,而这存储器访问的数量的减少将显著改进性能。
该又一个计算机系统1200包括:存储器1201;地址的一部分的地址对齐和选择1202、1213;比较器1203、1212;公共前缀地址对齐和选择1210;公共前缀比较器1208;公共后缀地址对齐和选择1211;公共后缀比较器1209;编码器单元,基于地址的部分的个体比较来输出结果1204;模块1205,如果必要就根据公共前缀比较结果来修改该编码器的结果;模块1206,如果必要就根据公共后缀比较结果来修改模块1205的结果;模块1207,其计算待从存储器1201中读取的下一个地址。
通常而言,引入的地址AIN在1202、1213中被适当地对齐,并且引入的地址AIN的一部分馈送给并行比较器1203、1212。比较器1203、1212可以被配置为执行其在不同实施方案中可以变化的可变长度的比较,该长度例如8位、16位或32位。可用的存储器带宽和所执行的比较的长度确定了可用的比较的总数量;例如,对于256位存储器带宽和32位比较器——其可以被配置为多个8位和16位比较器,我们可以有7个32位比较器1203、1212,其余的32位是针对公共前缀1208和公共后缀1209的。每个比较器的第二输入被从存储器1201中读取,并且包括由给定一组地址范围的探试(heuristic)生成的单个迭代(树节点)的一个或多个决策树边界。探试的例子将在下文中更详细地讨论。两个其他比较器1208、1209并行地比较公共地址前缀和后缀。然后,个体比较器结果在1204中被编码。在1205中根据规则二来考虑公共前缀输出。然后在1206中根据规则四考虑公共后缀比较。上述可以以流水线形式实施,如图12B所示,以使得每个迭代在具有分立的存储器块的分立的级中被执行。通过这样做,可以以额外的硬件为代价来提高总吞吐量。替代地,流水线级可以加倍,在不同级中具有比较和存储器访问,以改善循环时间。
下面根据本发明的一个方面示出了范围Trie数据结构、节点描述和硬件实施的一个更详细的描述和实施例。
本发明提供了快速搜索以在地址空间中识别引入的地址属于的基本地址范围。
图7A示出了根据本发明的一个范围Trie的图,以及图7B示出了在具有额外的叶节点和指针的注释操作之后的一个范围Trie的图。
首先,如图7A所示的范围Trie 700被注释为:(a)具有额外的叶节点730-734,其保存着指向结果阵列710的指针760、761、762、764、765;(b)指向每个非根非叶节点的最右边的子节点的指针750、751;以及(c)从叶节点到结果阵列710的指针763、766、767。
该注释操作提供了一个已注释的范围Trie 700’,如图7B所示。
举个例子,原始范围Trie 700具有3层节点。
已注释的范围Trie 700’也具有3层节点,因为额外的叶节点没有被添加在层3节点之下。每个额外的叶节点730-734被添加至已注释的范围Trie 700’,以防原始范围Trie 700的非层3节点701-703直接指向结果阵列710中的地址范围Ri。
额外的叶节点被放置在指向它的范围Trie节点的下一层中,并且保存指向结果阵列中的地址范围Ri的指针。(即,根节点701是节点702、703的父,并且也直接指向结果阵列中的R3)。这导致创建额外的叶节点732,其被放置在已注释的范围Trie 700’的层2中作为根节点720的子节点,且在子节点721、722之间。
额外的叶节点732保存了指向结果阵列710中的地址范围R3的结果阵列指针762。以一种相似的形式,范围Trie 700’被注释为具有额外的叶节点730、731、733、734。
通过使用指向最右边的子节点的指针750、751将非根非叶节点721、722与它们的最右边的子节点731、725相链接,范围Trie 700’的注释继续。
通过使用指向结果阵列的指针763、766、767将叶节点723-725与结果阵列710的最右边的结果(范围Trie 700的每个节点704-706指向的)相链接,完成对范围Trie 700’的注释。
接下来,根据本发明,该3层已注释的范围Trie 700’的每个节点被放置在图8中例示的4层存储器分级体系的表目中。
图8是根据本发明示出了该存储器分级体系中的已注释的范围Trie节点的布置的图。
图8也示出了节点在该存储器分级体系中的组织以及注释了范围Trie 700’的指针的语义。
存储器层1801的单个表目810被已注释的范围Trie 700’的根节点720填充。存储器层2802和存储器层3803被已注释的范围Trie700’的层2和层3的节点填充。存储器层i的每个相继的存储器表目被从已注释的范围Trie 700’的层i的最右边的节点开始的节点朝最左边的节点移动的节点填充。存储器层2802被提供有来自700’的层2的节点;节点722在表目0811中;额外的叶节点723在表目1812中;以及,节点721在表目2813中。以相同的方式,存储器层3803被填充。结果阵列710位于第四存储器层804中,在此该结果阵列710被放置为从它的最右边的范围开始朝最左边的范围移动。在完成用于识别引入的地址属于的范围的搜索之后,结果阵列804中的各自的范围的表目被获得以确定待选取的动作823。即,在分组分类和IP查找的情形中,所搜寻的结果常常是下一跳地址,但也可能是分组的部署(disposition)或分组头的一些变体。
在将已注释的范围Trie 700’的节点放置在存储器层1-3801-803中之前,它们必须首先被编码成表示在图9中的节点数据结构901。
图9描绘了将范围Trie节点900表示成节点数据结构901的一个示例性表示。范围Trie节点900中的信息保存了用于当在搜索过程中遍历经过范围Trie节点900时要执行的计算的所有必要的细节。
举个例子,引入的地址宽度和可用的比较器的宽度被假定为32位。可用的存储器带宽被假定为128。因此,存在4(四)个可用的比较器。用于节点数据结构901中的比较器1-3931-933的比较值(地址部分)被填充有用于节点900的比较器1-3910-912的单个比较值918。用于比较器3912的比较值总共小于32位宽,因此用于比较器3933的比较值中的其余位被设置为0。比较值930的这32个最低有效位934要么保存前缀/后缀比较值914-915,要么保存用于比较器4913(如果有效)的比较值。
比较器1-4910-913的操作模式(即,[8 8 8 8],[8,8,16],[16,0],禁用(disabled))被编码成放置在比较器1-4操作模式945-948中的值。基于公共前缀914、公共后缀915和减去值(subtractvalue)916,设置了移位控制941(用于字节对齐)、比较开始字节942、减去值943以及前缀/后缀掩码944。
为了完成节点数据结构901,指向下一个存储器层的指针950被填充有节点900的指针917。根节点720——其用数据结构901表示,不具有指向下一个存储器层950的指针,因为该根节点总是指向存储器层2802的表目0811。
另一个特定情况是将额外的叶节点730-734表示在节点数据结构901中。额外的叶节点仅保存指向结果阵列710的指针760、761、762、764、765。用于叶节点的节点数据结构901被完全填充有0,除了它的保存了指向结果阵列的指针的那些最高有效位以及它的用于比较器1945的保存特定编码以说明这一节点是额外的叶节点的比较模式。
在将存储器分级体系设置为具有该数据结构之后,可以开始操作根据本发明的方法的地址查找。该计算现在可以以从存储器层1801的单个存储器表目810中重新得到根节点720数据结构开始着手。所要求的计算
在范围Trie节点数据结构已经被从存储器中重新得到之后,存在数个所要求的计算,以沿着搜索路径前进到后续的范围Trie节点,直到该搜索完成。
所要求的计算的第一部分在表1中示出,其中基于引入的地址来计算待要在该比较器中被比较的值。例如,使用了在图9中表示在901中的节点。首先,根据本发明,输入地址被左移了shift_ctrl*2941位,并且在右边被填充有0(如表1的行1中所示)。在本发明的这一实施方案中,移位被假定为朝左执行0、2、4或6位,以与引入的地址字节对齐。然后仅向该已移位的引入的地址的开始字节942加上减去值943(如表1的行2中所示),如本发明的这一实施方案叙述的。字节从最高有效位开始计数。此后,基于比较器操作模式945-948和开始字节942,构建待要在这4个比较器中被比较的值(如表1的行3中所示)。比较器操作模式945-948确定待要在比较器中被执行的有用的比较的宽度。在该实施例中,32位比较器1将比较4个8位值。这意味着待被构建用于该比较的值包括从开始字节开始的4个8位。
所要求的计算的第二部分在表2中示出,其中比较被执行,并且结果被编码成单个值。所述计算将基于从存储器分级体系中重新得到的范围节点数据结构901的数据。
首先,该比较是在表1的行3中构建的值与比较器1-3的比较值931-933之间执行的(如表2的行1中所示)。每个比较器执行比较,就像在模式[32]、[16,16]和[8,8,8,8]中同时操作那样。每个比较的输出是一个“结果(result)位”(1:如果小于;0:如果大于等于)以及一个“相等(equal)位”(1:如果相等;0:如果不相等)。表2的行1中的比较器输出(res8、res16、res32、equa18、equal16、equal32)是二进制的,并且每个位对应于所执行的比较之一。
此后,仅收集有效结果(如表2的行2中所示)。基于比较器操作模式且如果比较有效(如果待被比较的值的所有位都是非零的),那么获得了由比较结果位所创建的一阵列位。即,比较器2以模式[8,8,16]操作且所有比较都有效,因此针对比较器2的有效比较结果是res8(3)、res8(2)、res16(0)和equal8(3)、equal8(2)、equal16(0)。
然后,通过计数报告为小于(其被编码为1)的有效比较的数量,执行每个比较器结果的编码(如表2的行3中所示)。为了完成该计算,在表2的行3中产生的结果以二进制数字进行相加,以形成该比较的结果(如表2的行4中所示)。
在表2的计算过程中,比较器也提供了关于所执行的比较的相等性(equality)的结果。这一结果被如所提及地处理,但不是对“1”进行计数以及对彼此的值相加,而是在有效的相等性结果(equalityresult)之间执行逻辑“或(OR)”。
所要求的计算的最后部分在表3中示出,并且引至待被处理的下一个存储器表目的计算,或引至结果阵列中的最终结果。首先,计算所述比较的结果的最大可能编码(maximum possible encoding)(max_range)(如表3的行1中所示)。假定比较器1-3的输出都是1并且执行与表2的行2-4中的那些相似的步骤。
此后,确定表2的行4的已编码的结果是否等于该max_range值(如表3的行2中所示)。这一计算的结果被存储在is_max_range位中(1:如果相等;0:如果不相等)。这是通过检查比较器1的结果的那些最高有效位来执行的,同时考虑到它的比较操作模式。
在计算待被处理的下一个存储器表目之前,引入的地址的前缀/后缀应与前缀/后缀比较器中的前缀/后缀比较值934相比较(如表3的行3中所示)。前缀/后缀的宽度是从前缀/后缀掩码944获得的。该前缀/后缀比较提供了如下结果:prefix_less(1:如果引入的前缀小于公共前缀;0:其他情况)、prefix_equal(1:如果引入的前缀等于公共前缀;0:其他情况)、suffix_less(1:如果引入的后缀小于公共后缀;0:其他情况)、suffix_equal(1:如果引入的后缀等于公共后缀;0:其他情况)。
该计算的最后步骤是计算待被从存储器中重新得到的下一个节点的地址。这一地址是作为指向下一个存储器层的指针950(如果它存在)与下一个范围偏移(如表2的行4中所示)的总和来计算的。
下一个范围偏移是作为如下的一个函数来确定的:(a)算得的已编码的结果和相等(在表2的行4中);(b)算得的max_range、is_max_range、prefix_less、prefix_equal和suffix_less(在表3中);以及(c)前缀/后缀掩码944。尤其,如果引入的前缀小于公共前缀,那么下一个范围偏移是最大可能的一个(max_range)。如果引入的前缀大于公共前缀,那么下一个范围偏移是0。如果引入的前缀等于公共前缀,那么下一个范围偏移是已编码的结果或已编码的结果增加1(当引入的后缀小于公共后缀时,已编码的结果不等于max_range,并且已编码的相等是1)。
此时,要被从存储器中重新得到的下一个节点的地址是已知的。各自的存储器表目被从下一个存储器层中重新得到,并且针对该新的节点数据和相同的引入的地址重复该计算。这一搜索继续,直到得到结果。
如果被计算的节点是一个额外的子节点,那么该计算缩减到重新得到指向该结果阵列的指针。
尽管表3的行1-3中的计算被表达为依次的,但它们可以并行于彼此执行以及并行于表1、2的计算执行。
用于所要求的计算的架构
图10是根据本发明描绘了本发明的功能单元及其互连的框图。
表1-3中描述的计算可以在如图10所描绘的功能单元中执行。针对本发明的这一实施方案,假定了128位宽的存储器带宽、32位的最大比较器宽度以及32位宽的引入的地址。本领域技术人员应认识到,本发明可以使用其他带宽值和比较器宽度值来实施。
本发明的这一实施方案所需的计算的输入是:引入的地址(32位宽)、shift_control(2位宽)、开始字节(2位宽)、减去值(8位宽)、比较器的1-3操作模式(每个3位宽,总共9位宽)、比较值1-4(每个32位宽,总共128位宽)、前缀/后缀比较值(24位宽)、前缀/后缀掩码(10位宽)以及指向下一个存储器层的指针(与该下一个存储器层的地址一样宽)。这些输入被连接到图10的功能单元。连同这些单元之间的物理联结一起,该计算可以被执行。
具体地,左移0填充移位器1001被连接到引入的地址输入和输入shift_control值。通过它的已移位的值输出(32位宽),它与减法单元1002相连接。
减法单元1002被连接到输入开始字节值、该输入减去值以及1001的该已移位的值输出。它的输出(减去值:32位宽)与比较值构建器1-3单元1003-1005相连接。
比较值构建器1-3单元1003-1005通过它们的输出(所构建的比较值:32位宽)与比较器1-3单元1006-1008相连接。为了计算该输出,它们与所输入的开始字节值、比较器1-3操作模式以及1002的减去值输出相连接。
比较器1-3单元1006-1008通过它们的输出(比较结果:14位宽)与局部编码器1-3单元1013-1015相连接。为了计算该输出,它们与所输入的比较值1-3以及1003-1005的所构建的比较值1-3输出相连接。
针对比较器1单元1006,呈现了通过1006的3位比较结果输出与最大范围检测单元1026的一个额外的联结。
比较器4单元1009通过它的输出(比较结果:2位宽)与局部编码器4单元1016相连接。为了计算该输出,它与所输入的比较值4以及所输入的引入的地址相连接。
使能1-3单元1010-1012通过它们的输出(有效比较:5位宽)与局部编码器1-3单元1013-1015以及最大范围局部编码器1-3单元1017-1019相连接。为了计算该输出,它们与所输入的比较值1-3相连接。
局部编码器1-3单元1013-1015通过它们的输出(每个局部编码:4位宽;总共12位宽)被连接到具有相等编码的局部编码器加法器单元1021。为了计算该输出,它们与所输入的比较器1-3操作模式、比较器1-3单元1006-1008结果输出以及使能1-3单元1010-1012结果输出相连接。
局部编码器4单元1016通过它的输出(局部编码:2位宽)被连接到具有相等编码的局部编码器加法器单元1021。为了计算该输出,它与所输入的比较器4操作模式以及比较器4单元1009结果输出相连接。
最大范围局部编码器1-3单元1017-1019通过它们的输出(每个最大范围局部编码:3位宽;总共9位宽)被连接到最大范围局部编码加法器单元1022。为了计算该输出,它们与所输入的比较器1-3操作模式以及使能1-3单元1010-1012结果输出相连接。
最大范围局部编码器4单元1020通过它的输出(局部编码:1位宽)被连接到最大范围局部编码加法器单元1021。为了计算该输出,它与所输入的比较器4操作模式以及比较器4单元1009结果输出相连接。
最大范围检测单元1026通过它的输出(所检测的最大范围:1位宽)被连接到下一个范围偏移单元1024。为了计算该输出,它与所输入的比较器1操作模式以及比较器1单元1006结果输出的3位相连接。
局部编码器1-4单元1013-1016的局部编码值输出形成了具有相等编码的局部编码器加法器单元1021的14位宽输入。这一单元通过它的5位宽输出被连接到下一个范围偏移单元1024。
最大范围局部编码器1-4单元1017-1020的最大范围局部编码值输出形成了最大范围局部编码器加法器单元1022的10位宽输入。这一单元通过它的4位宽输出被连接到下一个范围偏移单元1024。
前缀/后缀单元1023通过它的输出(1位宽前缀等于、1位宽前缀小于、1位宽后缀小于)被连接到下一个范围偏移单元1024。为了计算该输出,它与所输入的引入的地址、所输入的前缀/后缀比较值以及所输入的前缀/后缀掩码相连接。
下一个范围偏移单元1024通过它的输出(下一个范围:5位宽)被连接到最终加法器单元1025。为了计算该输出,它与单元1021、1022、1023、1026以及所输入的前缀/后缀掩码相连接。
最终加法器单元1025产生了该计算的输出,该输出如下一个存储器层的地址一样宽。为了计算该输出,它与下一个范围偏移单元1024的输出以及所输入的指向下一个存储器层的指针相连接。
图10的功能单元在引入的地址上以及节点数据结构上操作,以确定下一个存储器层中的下一个范围Trie节点的位置。
左移0填充移位器1001被布置为执行表1的行1中的计算。它根据shift_ctrl值将引入的地址移位0、2、4或6位。本发明的其他实施方案可以执行另一数量的移位或以一种不同方式执行移位。
减法单元1002被布置为向已移位的引入的地址的开始字节加上减去值,因此它执行表1的行2中的计算。
比较值构建器1-3单元1003-1005被布置为构建待要在比较器1-3单元1006-1008中被比较的值。该值基于开始字节的值以及比较操作模式1-3被构建,如表1的行3中所描述的。
比较器单元1-31006-1007被布置为将所构建的值与用于比较1-3的值相比较,如在表2的行1中那样。所述比较器的输出是14位宽的,表示针对所有可能的比较宽度的比较结果(大于等于/小于、等于)。
在本发明的该实施方案中,使能单元1010-1012被布置为确定比较器内的最右边的比较是否被禁用,假定比较值从最左边的位开始被填充。当在用于比较的值中用于该比较的对应的值等于0时,这一情形被识别。所述使能单元的结果连同比较器1-3操作模式被传送到局部编码器单元1013-1015以及最大范围局部编码器单元1017-1019。这些单元可以确定哪些比较结果被使能/有效,并且可以:(a)通过计算报告了小于(被编码为1)的有效比较结果,以及通过对有效相等性结果执行逻辑“或”,计算每个比较器的已编码的结果/相等(表2的行2-3);以及(b)当所有比较结果被假定为1时,通过计数有效比较结果(被编码为1),计算每个比较器的已编码的最大范围(表3的行1)。
在本发明的这一实施方案中,比较器单元41009中的比较直接在引入的地址与用于比较器4的值之间执行,而不需要比较值构建器和使能单元。该比较输出基于比较器4操作模式被局部编码器单元1016以及最大范围局部编码器单元1020平凡地(trivially)编码。
局部编码器单元1-41013-1016输出被布置为要被添加在“具有相等编码的局部编码器加法器”单元1021中,以计算所有比较的已编码的结果(如在表2的行4中那样)。这一单元也通过逻辑“或”计算已编码的相等结果。
以与1021相似的方式,最大范围局部编码器加法器1022被布置为加上最大范围局部编码器1-4单元1017-1020的输出,以计算最大范围(如在表3的行1中那样)。
最大范围检测单元1026被布置为检查比较器单元11006的那些最高有效位,并且决定已编码的比较结果是否等于最大可能范围。
前缀/后缀单元1023被布置为执行表3的行3的计算,并且输出被连接到下一个范围偏移单元1024。
下一个范围偏移单元1024被布置为基于1021(比较的已编码的结果以及已编码的相等性结果)、1026(is_max_range)、1022(最大范围)、1023(prefix_less、prefix_equal、suffix_less)的输出以及前缀/后缀掩码来决定下一个范围偏移。
所述计算步骤通过向指向加法器单元1025中的下一个存储器的指针加上下一个范围偏移来完成。此时,能够从该存储器中重新得到下一个节点,并针对相同的引入的地址重复所请求的计算,直到得到结果。
所述单元的组合逻辑设计
左移0填充移位器1001被实施为由shift_ctrl控制的2位宽的4至1多路复用器的一个阵列。
减法单元1002被实施为四个8位宽加法器的一个阵列。减去值仅被加在开始字节的各自的加法器中;其他加法通过加0被省略。所述8位加法器被实施为2级进位选择加法器,并且每级的4位加法器被实施为超前进位加法器。
每个比较值构建器1-3单元1003-1005被实施为由开始字节逻辑功能和比较器操作模式控制的4个8位宽的4至1多路复用器的一个阵列。
图11A示出了如图10的实施例中所示的32位宽比较器单元1006-1009的实施方式。
该32位宽比较器单元执行一个32位的比较、两个16位的比较以及四个8位的比较。它是使用8位比较器1101-1104实施的,并且它们的结果以倒置树方式1105被组合。在倒置树1105中,连接逻辑1106-1108被用来形成更大的比较的结果。所述比较的可能的结果是:大于、等于/小于和等于。
局部编码器1-3单元1013-1015使用比较操作模式1-3的位以及使能单元1-31010-1012的输出,来确定比较器单元1-31006-1008的有效输出。然后有效结果被加在具有四个1位输入的加法器中,并且对相等性结果执行逻辑“或”。
具有相等编码的局部编码器加法器单元1021被实施为进位求和加法器(carry sum adder),其加3个3位值和1个1位值。在该进位求和加法器的最终级,存在超前进位加法器,以取得结果编码。所述相等性结果的逻辑“或”与该加法并行地被执行。
如果公共前缀/后缀比较必须被执行,那么引入的地址的公共前缀位和公共后缀位在前缀/后缀单元1023中通过使用前缀/后缀掩码值被重新得到。然后这些位被与两个24位宽比较器中各自的前缀/后缀值位相比较。所述24位宽比较器以与所述32位比较器相似的方式被实施。
图11B描绘了下一个范围偏移单元1024的一个实施方式。
首先,下一个范围偏移单元1024通过对前缀/后缀掩码的各自的位执行逻辑“或”1110、1111来确定是否存在有效前缀和后缀比较。然后下一个范围偏移被计算,并且它可以是:(a)0、(b)max_range、(c)已编码的结果或(d)已编码的结果+1。针对每个情况的条件被描绘在图11B中的单元的逻辑设计中。当进位输入是1时,以1为增量的增量器1112增加1,否则其输出与其输入相同。
最终加法器1025被实施为一个两级进位选择加法器。第一级与下一个范围编码一样宽,并且由一个超前进位加法器来实施。第二级根据第一级的进位输出在其余位增加1或不增加1之间进行选择。
数字系统设计领域的技术人员应熟悉其余逻辑电路。
使能单元1010-1012被实施为“或”逻辑门的分级体系。
最大范围局部编码器单元1017-1019与局部编码器单元1013-1015几乎相同,只不过没有相等性结果且假定比较器结果都是1。
考虑到比较器单元41009以两个模式(使能/禁用)操作,第四局部编码器单元1016和第四最大范围局部编码单元1020是它们针对比较器1-3的配对物的一个子集。
上文描述的实施方案例示了根据本发明的采用范围Trie用于快速地址查找和前缀匹配的设计的实施例。根据本发明的范围Trie方法和系统提供了简单性和速度之间的卓越平衡。另外,数字系统设计领域的普通技术人员遵照上述教导可以容易地开发出一些其他实施方式。
除了上文所述的共享公共地址边界部分、省略地址边界部分以及对齐地址的规则之外,范围Trie节点可以以压缩形式存储多个地址边界。在这样的情况下,在上文所述的计算之前,要求从计算机可读介质中读取的节点数据的解压缩。
替代地,范围Trie节点可以存储以另一方式压缩的多个地址边界。然后要求解压缩和重新得到原始边界,并且在所请求的引入的地址与存储在该节点中的地址之间的随后比较将确定待选取的分支。
在上述两种情况下,以及在上文详细描述的具体实施方案中,范围Trie的主要优势是清楚地或隐含地增加以预定数量的位所存储的存储在节点中的地址边界的数量。通过这样做,实现了每节点更多数量的分支,从而构建了更短和更可缩放的决策树。
下面,我们描述四种探试,其可以被用来在给定一组限定地址范围的地址边界的情况下根据本发明构建范围Trie数据结构。
给定一组k个地址Ai,所述地址限定了k+1个基本地址边界,所述基本地址边界在一个地址空间中限定了地址范围Ri(例如R1,...,R7),基于上述第一、第二、第三、第四和第五规则构建了根据本发明的方法的决策树。该构建是通过选择在每个迭代(树节点)待被比较的地址同时旨在获得低树深度来执行的。
当构建该决策树时存在两个目标。第一个是选择要求更少位被处理的地址,以使节点分支的数量最大化。第二,该决策树中的节点应分支到相等深度或相似深度的子树,以使得整个树基本平衡。
上述目标可能在某种程度上彼此矛盾,因为使分支的数量最大化不一定能保持该树平衡,反之亦然。因此,提出了四种简单探试,而不是将可能具有不可接受的复杂性和/或将要求相对广泛的计算努力的优化解决方案。
除这两个目标之外,还要考虑与本发明的方法的实施方式有关的其他参数。这些参数中的一些是:存储器带宽、可能的比较长度、单个迭代中比较的数量以及地址对齐约束。
针对基于任意一组地址范围和地址边界构建用于与本发明的方法一起使用的决策树,描述了四个探试。另外,软件编程领域的技术人员遵照上述教导可以容易地开发出更多的探试。
每个探试使用生成树节点或树层的配置的递归函数。随后可以是两个不同的途径,被称为自顶向下和自底向上。
自顶向下探试首先创建根节点,然后相似地向它的子并朝该树的端点(叶)移动。
自底向上探试首先构建叶节点,然后它们的地址边界被用于下一个树层,这被重复,直到到达该树的根节点。
探试应为具体实施方式量身定制,从而可以允许仅几个地址长度或其组合的仅一个或几个的比较同时发生。
下面关于在地址边界之间共享和省略地址部分的具体实施方案来描述两个自顶向下探试和两个自底向上探试。不同的压缩方案要求不同的探试,然而它们可以由本领域普通技术人员容易地开发出来。
注意,构建范围Trie的探试是为该方法的一个具体实施方式量身定制的。下面描述的一个自顶向下探试和一个自底向上探试允许并行比较仅单个长度,而另一个允许比较几个组合。所述探试的描述如下:
a)TD-SLC具有单个长度并行比较的自顶向下探试:
1)应用该方法的规则,尤其是:对齐地址、找到待被省略的节点公共前缀以及零后缀。
2)从这些中选择使分支的数量最大化的最长的比较器长度,例如8位。此时不考虑树平衡和可用比较器的数量。
3)在具有上述比较长度的待被处理的组中考虑所有地址(地址边界)。省略不能被比较的地址后缀(由于所选择的最长的比较长度),假定它们等于零。
4)创建由上述比较限定的地址范围(区间)。
5)将相邻地址范围合并成单个地址范围,直到比较的数量(由所述范围的地址边界限定)被减少到可用比较器资源。考虑该方法的规则,尤其是:找到待被共享的公共地址前缀和后缀。合并旨在创建包含平衡数量的地址边界的地址范围(以及由此范围Trie节点)。所得到的地址范围是根据该方法的规则执行的所述比较的节点分支和它们的边界。
6)针对所创建的子节点递归地重复。
7)当每个节点包含单个基本地址范围时,结束。
应注意,代替使地址范围的数量平衡,可以用其他度量来保持树平衡,例如范围的密度、每区间长度的范围数量。
b)TD-VLC具有可变长度并行比较的自顶向下探试:
TD-VLC是其中步骤5)被如下修改的上述TD-SLC:
5’)合并相邻排序的地址范围,并分裂长地址范围,直到比较的数量被减少到可用资源的数量,创建包含平衡数量的基本地址范围的群(group)。分裂是通过添加更长的长度的比较(获得更好的精度)来执行的。基于目标实施方式应考虑所允许的比较长度的组合。
c)BU-SLC具有单个长度并行比较的自底向上探试:
1)选择第一b个地址Ai>Na(其中Na初始为0),其可以在应用该方法的规则之后在一个迭代被比较,只要有必要(例如,Ai,Ai+1,...Ab;0≤i≤b)。该比较长度应对于所有第一b个地址是公共的,并且足以使该比较等效于一个完整地址宽度比较。这里也应用了规则(第一至第五,只要有必要)。
2)将地址空间中的任何点设置为正被创建的节点地址范围的上边界Nb,其中Nb∈(At,Ab]且t/b=C%(其中C指示0与100之间的一个常数),以使得Nb具有最长的0后缀。所得到的映射到正被创建的节点的地址范围是[Na,Nb)。
3)从先前群Nb的上边界开始重复上述步骤,直到该地址空间中的所有地址Ai都在节点中。
4)使用具有先前层的所有节点的边界Na,Nb作为新的一组地址Ai,递归地重复上述步骤。
5)当该列表中的所有地址都被处理在单个节点中时(即,已经到达根节点时),结束。
d)BU-VLC具有可变长度并行比较的自底向上探试:
BU-VLC是具有修改的步骤1的BU-SLC。在BU-VLC中,比较长度是可变的,但它应处于目标实施方式允许的组合之内。范围Trie更新
大多数使用地址查找的应用需要频繁更新它们的地址范围集。例如,当前的核心路由器大约每五分钟就接收前缀更新。当地址范围被描述为前缀或简单区间时,需要采用一种不同的更新机制。然而,在任一情况下,更新要求插入或删除限定了地址范围的地址(钥匙)。在本发明的方法中,这可以通过如下方式容易地实现:更新如在上述探试中所述的执行分裂或合并的受影响的叶节点或子树,优选地使用自底向上途径。
当地址范围被描述为区间——例如分组分类中的端口范围——时,上述简单的地址插入或删除就足以添加或去除区间。另一方面,当前缀被用来描述地址范围时,更新机制需要存储更多信息以保持跟踪重叠的前缀以及单个前缀的多个部分。然而,我们的优势是,本发明的方法可以与具有不受限的存储器带宽和每节点分支的现有技术范围树一一映射,从而随后可以是存储和更新前缀的范围树技术。
简而言之,在本发明的方法中,前缀可以像在如下文献中针对现有技术范围树描述的那样被存储和更新:P.Warkhede,S.Suri和G.Varghese,“Multiway range trees:scalable ip lookup with fast updates,”Comput.Netw.,vol.44,no.3,pp.289-303,2004。
主要观点是,限定了地址范围的前缀可以被存储在内部树节点中,而不是仅存储在该树的叶节点中。每个限定了地址范围边界的地址边界(被描述为前缀)保留一个针对具有在该地址边界上的端点的前缀的数量的计数器。如Warhede等人所描述的,每个节点保留具有W+1个位的一个位图,其中第i-1位指示是否长度i的前缀被匹配。在本发明的方法的定义和Warhede等人描述的现有技术范围树之间存在一个微小区别。在本发明的方法中,比较报告“小于”或“大于等于”,以及前缀“10***”被映射到区间[10000,11000)。在范围树中,比较器报告“小于等于”或“大于”,从而例如前缀“10***”被映射到区间(10111,10111]。Warhede等人考虑,现有技术范围树映射到的地址空间是(-∞,2n],那么,前缀被存储在它的开始地址边界以及任何如下的节点或叶地址边界:它被包含在该前缀地址范围中,但它的父不被包含在该前缀地址范围中。本发明的方法可以像现有技术范围树那样被容易地调节以执行比较,然而,这将不太有益,因为这将损失长0后缀的优势(规则3)。
从上述实施例中可以观察到,本发明的方法将前缀映射到具有0后缀(而非1后缀)边界的区间。因此,优选的是如下调节前缀存储和更新机制,而不舍弃任何优势。本发明的方法映射到的地址空间是[0,∞),并且前缀被存储在该前缀的端点以及在任何如下的节点或叶地址边界:它被包含在该前缀范围中,但它的父不被包含在该前缀范围中。
替代地,地址空间[0,2W)可以像在这一方法中原始地描述的那样被考虑。那么,前缀(或指向前缀的指针)连同其长度被存储在每个如下的节点:该节点的地址范围被该前缀包含,但它的父节点的地址范围不被该前缀包含。每个限定了地址范围(被描述为前缀)边界的地址边界保留一个针对具有在该地址边界上的端点的前缀的数量的计数器。当一个新的前缀被插入时,它可以基于上述条件被存储在范围Trie节点中,只要任何已经被存储在该节点中的前缀都短于该新插入的前缀。当一个前缀被删除时,则替代该被删除的前缀的前缀需要作为输入被提供,即使它已经被存储在该数据结构中。
根据本发明的方法的范围Trie也可以存储一组可以彼此重叠的地址范围。任何一组重叠地址范围(区间)可以,以与上文描述的存储一组前缀相同的方式,被存储在范围Trie中。
本领域技术人员应明了的是,在不脱离本发明的真实精神的前提下,可以设想本发明的其他实施方案并付诸实践,本发明的范围仅由所附权利要求来限定。本说明书例示了本发明,而不旨在限制本发明。
Claims (31)
1.一种用于构建在地址空间中对所请求的地址进行地址查找中所用的决策树的方法,
所述地址空间被布置为一组基本地址范围,
每个基本地址范围由一个下边界地址和一个上边界地址限定;
所述地址空间中的一个地址由预定数量的位表示;
所述方法包括:
-将所述决策树布置为用于从该组基本地址范围中确定所述所请求的地址属于的一个具体基本地址范围,
所述决策树包括至少一个层,所述至少一个层包括至少一个节点;
所述至少一个节点被布置为用于映射到一个节点地址范围,所述节点地址范围是所述地址空间的一个与节点有关的部分,所述节点地址范围由一个下节点边界地址和一个上节点边界地址限定;
所述至少一个节点具有至少两个节点分支,
每个节点分支映射到所述节点地址范围中的各自非重叠分支地址范围,
所述分支地址范围由所述节点地址范围中的节点地址限定;
-将每个节点地址分解成多个地址部分,每个地址部分由所述预定数量的位的各自的子集表示,所述分解包括下列中的至少一个:
a)将对于多个节点地址公共的至少一个地址部分确定为至少一个公共地址部分,以及
b)将可省略的至少又一个地址部分确定为至少一个可省略的地址部分,所述至少一个可省略的地址部分要么是值为“零”的一个节点地址后缀,要么是对于所述节点地址范围中的所有地址公共的一个地址部分;
-根据一个选择规则将所述多个地址部分存储在所述至少一个节点中,
所述选择规则包括选自一组动作中的至少一个动作,该组动作包括:
-将所述至少一个公共地址部分仅在所述节点中存储一次;
-省略所述至少一个可省略的地址部分,以及
-将在所述分解步骤中确定的所有其他地址部分存储在所述节点中,所述所有其他地址部分既不是所述至少一个公共地址部分,又不是所述至少一个可省略的地址部分。
2.根据权利要求1所述的方法,其中所述至少一个节点中的所有分支地址范围的联合是所述至少一个节点的节点地址范围。
3.根据权利要求1所述的方法,其中所述分支地址范围是所述分支指向的节点的节点地址范围。
4.根据权利要求1所述的方法,其中被存储在所述节点中的地址部分占据的位的总数少于所述节点地址的位的总数。
5.根据权利要求1所述的方法,其中一个节点被布置为用于存储具有两个节点分支的单个节点地址的地址部分;所述单个节点地址具有至少一个可省略的地址部分。
6.根据权利要求1所述的方法,其中所述决策树还被布置为包括在所述顶层之下的至少一个底层,所述底层中的节点被布置为所述决策树的叶节点,每个叶节点映射到来自该组基本地址范围的一个基本地址范围或一个基本地址范围的一部分,每个叶节点存储与其映射到的各自的基本地址范围有关的信息。
7.根据权利要求6所述的方法,其中每个节点被布置为用于存储限定地址范围的一组前缀中的一个前缀或一个指向前缀的指针;所述前缀是包含所述节点地址范围的该组前缀的最长匹配前缀。
8.根据权利要求7所述的方法,其中每个非叶节点的节点还被布置为用于存储每节点地址的计数器值,所述计数器值被布置为用于计数在节点地址具有端点的前缀的数量。
9.根据权利要求6所述的方法,还包括:
-接收所述所请求的地址作为输入;
-确定所述所请求的地址属于的基本地址范围,
包括,在所述决策树的每个层中,从顶层中的根节点开始:
针对所述各自的层中的各自的节点:
读取存储在所述各自的节点中的地址部分;
将存储在所述层中的所述各自的节点中的至少一个地址部分与所述所请求的地址的各自的对应地址部分相比较;
基于所述至少一个比较,分支到所述决策树的下一个层中的一个节点,直到当到达所述叶节点之一时已确定所述基本地址范围时。
10.根据权利要求6所述的方法,还包括:
-接收所述所请求的地址作为输入;
-确定所述所请求的地址属于的基本地址范围,
包括,在所述决策树的每个层中,从顶层中的根节点开始:
针对所述各自的层中的各自的节点:
读取存储在所述各自的节点中的地址部分;
将所述所请求的地址减去一个预定常数值;
将存储在所述层中的所述各自的节点中的至少一个地址部分与减得结果的各自的对应地址部分相比较;
基于所述至少一个比较,分支到所述决策树的下一个层中的一个节点,直到当到达所述叶节点之一时已确定所述基本地址范围时。
11.根据权利要求1所述的方法,其中所述至少一个可省略的地址部分是由对于所述节点地址范围中的所有地址的至少一个公共部分确定的作为所述预定数量的位的公共节点前缀子集的一个公共节点前缀;所述公共节点前缀子集被从存储在所述节点中的地址部分的位的子集中省略。
12.根据权利要求1所述的方法,其中所述至少一个可省略的地址部分表示所述节点地址范围中的节点地址的一个后缀;所述后缀具有“零”值;所述至少一个可省略的地址部分被省略而不被存储在所述节点中。
13.根据权利要求1所述的方法,其中所述至少一个公共地址部分是对于所述节点中的两个或更多个节点地址公共的;所述至少一个公共地址部分在所述节点中仅被存储一次,并且当确定待选取的节点分支时仅被与所述所请求的地址的对应地址部分相比较一次。
14.根据权利要求1所述的方法,包括从所述下节点边界地址中和从所述上节点边界地址中、从每个节点地址中以及从所述所请求的地址中减去一个预定常数值;
所述减去先于每个节点地址的分解。
15.根据权利要求14所述的方法,其中所述预定常数值等于所述下节点边界地址的值。
16.根据权利要求1所述的方法,包括,通过对所述数量的位应用与压缩有关的技术,进一步减少被存储在所述节点中的地址部分占据的位的总数。
17.根据权利要求9或10所述的方法,其中所述比较的结果被以从较高有效地址部分到较低有效地址部分的优先级为每节点地址考虑;仅当节点地址的较高有效地址部分的比较结果相等时,才考虑所述节点地址的较低有效地址部分的比较结果;
该方法包括:组合每个节点地址的比较结果,从而限定所述所请求的地址属于的分支地址范围,并且随后分支到由该分支地址所限定的下一层。
18.根据权利要求6所述的方法,其中布置所述决策树包括:
-选择来自该组基本地址范围的范围边界的地址,所选择的地址的部分待被包括在所述决策树的一个节点中;
-将所述节点布置在所述决策树结构中,使得
所述决策树的每个叶节点指向来自该组基本地址范围的一个基本地址范围或一个基本地址范围的子集。
19.根据权利要求18所述的方法,其中布置所述决策树是通过一个自顶向下探试实现的,包括:
-选择其部分待被包括在一个节点中的地址,从所述决策树的顶层开始,
-然后构建向下方向的下几个层的节点,
-当所有叶节点都指向该组基本地址范围中的一个基本地址范围或一个基本地址范围的子集时,完成。
20.根据权利要求18所述的方法,其中布置所述决策树是通过一个自底向上探试实现的,包括:
-选择其部分待被包括在一个节点中的地址,从所述决策树的底层开始,首先构建分支到叶节点的节点,所述决策树的每个叶节点指向该组基本地址范围中的一个基本地址范围或一个地址范围的子集;
-然后构建沿着所述决策树的向上方向的下一个层的节点,
-当单个根节点被构建在顶层中时,完成。
21.一种用于构建在地址空间中对所请求的地址进行地址查找中所用的决策树的计算机系统,
所述地址空间被布置为一组基本地址范围,
每个基本地址范围由一个下边界地址和一个上边界地址限定;
所述地址空间中的一个地址由预定数量的位表示;
所述计算机系统包括存储器和处理器,所述处理器联接至所述存储器,其中所述处理器被布置为执行用于构建在所述地址空间中对所请求的地址进行地址查找中所用的决策树的方法,包括:
-将所述决策树布置为用于从该组基本地址范围中确定所述所请求的地址属于的一个具体基本地址范围,
所述决策树包括至少一个层,所述至少一个层包括至少一个节点;
所述至少一个节点被布置为用于映射到一个节点地址范围,所述节点地址范围是所述地址空间的一个与节点有关的部分,所述节点地址范围由一个下节点边界地址和一个上节点边界地址限定;
所述至少一个节点具有至少两个节点分支,
每个节点分支映射到所述节点地址范围中的各自非重叠分支地址范围,
所述分支地址范围由所述节点地址范围中的节点地址限定;
-将每个节点地址分解成多个地址部分,每个地址部分由所述预定数量的位的各自的子集表示,所述分解包括下列中的至少一个:
a)将对于多个节点地址公共的至少一个地址部分确定为至少一个公共地址部分,以及
b)将可省略的至少又一个地址部分确定为至少一个可省略的地址部分,所述至少一个可省略的地址部分要么是值为“零”的一个节点地址后缀,要么是对于所述节点地址范围中的所有地址公共的一个地址部分;
-根据一个选择规则将所述多个地址部分存储在所述至少一个节点中,
所述选择规则包括选自一组动作中的至少一个动作,该组动作包括:
-将所述至少一个公共地址部分仅在所述节点中存储一次;
-省略所述至少一个可省略的地址部分,以及
-将在所述分解步骤中确定的所有其他地址部分存储在所述节点中,所述所有其他地址部分既不是所述至少一个公共地址部分,又不是所述至少一个可省略的地址部分。
22.根据权利要求21所述的计算机系统,其中所述计算机系统被布置为执行:
将所述决策树布置为包括在所述预层之下的至少一个底层,所述底层中的节点被布置为所述决策树的叶节点,所述叶节点映射到来自该组基本地址范围的一个基本地址范围或一个基本地址范围的一部分,每个叶节点存储与其映射到的各自的基本地址范围有关的信息。
23.根据权利要求22所述的计算机系统,其中所述计算机系统被布置为执行:
-接收所述所请求的地址作为输入;
-确定所述所请求的地址属于的基本地址范围,
包括,在所述决策树的每个层中,从顶层中的根节点开始:
针对所述各自的层中的各自的节点:
读取存储在所述各自的节点中的地址部分;
将存储在所述层中的所述各自的节点中的至少一个地址部分与所述所请求的地址的各自的对应地址部分相比较;
基于所述至少一个比较,分支到所述决策树的下一个层中的一个节点,直到当到达所述叶节点之一时已确定所述基本地址范围时。
24.根据权利要求22所述的计算机系统,其中所述计算机系统被布置为执行:
-接收所述所请求的地址作为输入;
-确定所述所请求的地址属于的基本地址范围,
包括,在所述决策树的每个层中,从顶层中的根节点开始:
针对所述各自的层中的各自的节点:
读取存储在所述各自的节点中的地址部分;
将所述所请求的地址减去一个预定常数值;
将存储在所述层中的所述各自的节点中的至少一个地址部分与减得结果的各自的对应地址部分相比较;
基于所述至少一个比较,分支到所述决策树的下一个层中的一个节点,直到当到达所述叶节点之一时已确定所述基本地址范围时。
25.根据权利要求23或24所述的计算机系统,其中所述处理器包括多个处理单元;每个处理单元与所述决策树的至少一个层关联,并且被布置为用于在所述决策树的关联层中执行计算,以将存储在所述关联层的节点中的地址部分的至少之一与所述所请求的地址的各自的对应地址部分相比较,然后分支到沿着所述决策树的向下方向的下一个层的节点。
26.根据权利要求21-25中任一项权利要求所述的计算机系统,其中所述计算机系统选自通信系统、联网路由器以及报文分组交换系统中的一个。
27.一种待被根据权利要求21-26中任一项权利要求所述的计算机系统加载的计算机可读介质上的计算机程序,用于构建在地址空间中对所请求的地址进行地址查找中所用的决策树,
所述地址空间被布置为一组基本地址范围,
每个基本地址范围由一个下边界地址和一个上边界地址限定;
所述地址空间中的一个地址由预定数量的位表示;
所述计算机系统包括存储器和处理器,所述处理器联接至所述存储器,其中所述计算机程序产品在被加载之后允许所述处理器执行:
-将所述决策树布置为用于从该组基本地址范围中确定所述所请求的地址属于的一个具体基本地址范围,
所述决策树包括至少一个层,所述至少一个层包括至少一个节点;
所述至少一个节点被布置为用于映射到一个节点地址范围,所述节点地址范围是所述地址空间的一个与节点有关的部分,所述节点地址范围由一个下节点边界地址和一个上节点边界地址限定;
所述至少一个节点具有至少两个节点分支,
每个节点分支映射到所述节点地址范围中的各自非重叠分支地址范围,
所述分支地址范围由所述节点地址范围中的节点地址限定;
-将每个节点地址分解成多个地址部分,每个地址部分由所述预定数量的位的各自的子集表示,所述分解包括下列中的至少一个:
a)将对于多个节点地址公共的至少一个地址部分确定为至少一个公共地址部分,以及
b)将可省略的至少又一个地址部分确定为至少一个可省略的地址部分,所述至少一个可省略的地址部分要么是值为“零”的一个节点地址后缀,要么是对于所述节点地址范围中的所有地址公共的一个地址部分;
-根据一个选择规则将所述多个地址部分存储在所述至少一个节点中,
所述选择规则包括选自一组动作中的至少一个动作,该组动作包括:
-将所述至少一个公共地址部分仅在所述节点中存储一次;
-省略所述至少一个可省略的地址部分,以及
-将在所述分解步骤中确定的所有其他地址部分存储在所述节点中,所述所有其他地址部分既不是所述至少一个公共地址部分,又不是所述至少一个可省略的地址部分。
28.一种计算机可读介质,设有根据权利要求27所述的计算机程序。
29.一种使用决策树用于在地址空间中对所请求的地址进行地址查找的计算机系统,所述决策树是根据权利要求1-6中任一项所述的方法构建的,所述计算机系统包括存储器和处理器,所述处理器联接至所述存储器,其中所述处理器被布置为执行:
-接收所述所请求的地址作为输入;
-确定所述所请求的地址属于的基本地址范围,
包括,在所述决策树的每个层中,从顶层中的根节点开始:
针对所述各自的层中的各自的节点:
读取存储在所述各自的节点中的地址部分;
将存储在所述层中的所述各自的节点中的至少一个地址部分与所述所请求的地址的各自的对应地址部分相比较;
基于所述至少一个比较,分支到所述决策树的下一个层中的一个节点,直到当到达所述叶节点之一时已确定所述基本地址范围时。
30.根据权利要求29所述的计算机系统,其中所述计算机系统还被布置为执行:
在读取存储在所述各自的节点中的所述地址部分之后,将所述所请求的地址减去一个预定常数值,以获得一个减得结果;
以及,在将存储在所述层中的所述各自的节点中的至少一个地址部分与所述所请求的地址的各自的对应地址部分相比较之前,用所述减得结果取代所述所请求的地址。
31.根据权利要求29或30所述的计算机系统,其中所述计算机系统选自通信系统、联网路由器以及报文分组交换系统中的一个。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
NL2002799A NL2002799C2 (en) | 2009-04-24 | 2009-04-24 | Data structure, method and system for address lookup. |
NL2002799 | 2009-04-24 | ||
PCT/NL2010/050231 WO2010123370A1 (en) | 2009-04-24 | 2010-04-26 | Data structure, method and system for address lookup |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102461092A true CN102461092A (zh) | 2012-05-16 |
Family
ID=41397617
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010800269412A Pending CN102461092A (zh) | 2009-04-24 | 2010-04-26 | 用于地址查找的数据结构、方法和系统 |
Country Status (8)
Country | Link |
---|---|
US (1) | US20120066410A1 (zh) |
EP (1) | EP2422496A1 (zh) |
JP (1) | JP2012524932A (zh) |
CN (1) | CN102461092A (zh) |
AU (1) | AU2010239780A1 (zh) |
CA (1) | CA2759557A1 (zh) |
NL (1) | NL2002799C2 (zh) |
WO (1) | WO2010123370A1 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015032214A1 (zh) * | 2013-09-03 | 2015-03-12 | 中兴通讯股份有限公司 | 一种同时支持IPv4和IPv6的高速路由查找方法及装置 |
CN107735775A (zh) * | 2015-07-10 | 2018-02-23 | Arm 有限公司 | 用于使用与指针相关联的范围信息来执行指令的装置和方法 |
CN107798117A (zh) * | 2017-11-08 | 2018-03-13 | 杭州迪普科技股份有限公司 | 一种数据存储与读取的方法和装置 |
CN108121500A (zh) * | 2016-11-30 | 2018-06-05 | 深圳市中兴微电子技术有限公司 | 一种数据的存取方法及装置 |
CN110583100A (zh) * | 2017-05-08 | 2019-12-17 | 昕诺飞控股有限公司 | 通过分析设备控制信息形成设备的组 |
CN111930757A (zh) * | 2020-09-24 | 2020-11-13 | 南京中兴软件有限责任公司 | 数据处理方法、系统、封装节点和解封装节点 |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9680747B2 (en) * | 2012-06-27 | 2017-06-13 | Futurewei Technologies, Inc. | Internet protocol and Ethernet lookup via a unified hashed trie |
CN103699623B (zh) * | 2013-12-19 | 2017-07-04 | 百度在线网络技术(北京)有限公司 | 地理编码实现方法和装置 |
WO2015187200A1 (en) * | 2014-06-04 | 2015-12-10 | Nicira, Inc. | Efficient packet classification for dynamic containers |
US9774707B2 (en) | 2014-06-04 | 2017-09-26 | Nicira, Inc. | Efficient packet classification for dynamic containers |
US10110712B2 (en) | 2014-06-04 | 2018-10-23 | Nicira, Inc. | Efficient packet classification for dynamic containers |
US10078801B2 (en) * | 2015-09-03 | 2018-09-18 | Ali Abbas | System, method and software for representing decision trees |
GB2548603B (en) | 2016-03-23 | 2018-09-26 | Advanced Risc Mach Ltd | Program loop control |
GB2548602B (en) | 2016-03-23 | 2019-10-23 | Advanced Risc Mach Ltd | Program loop control |
GB2548604B (en) * | 2016-03-23 | 2018-03-21 | Advanced Risc Mach Ltd | Branch instruction |
US10275273B2 (en) * | 2016-10-28 | 2019-04-30 | Nicira, Inc. | Efficient computation of address groupings across multiple network interfaces |
US10728614B2 (en) | 2017-02-28 | 2020-07-28 | The Nielsen Company (Us), Llc | Methods and apparatus to replicate panelists using a local minimum solution of an integer least squares problem |
US20180249211A1 (en) | 2017-02-28 | 2018-08-30 | The Nielsen Company (Us), Llc | Methods and apparatus to estimate population reach from marginal ratings |
US10602224B2 (en) | 2017-02-28 | 2020-03-24 | The Nielsen Company (Us), Llc | Methods and apparatus to determine synthetic respondent level data |
US10681414B2 (en) | 2017-02-28 | 2020-06-09 | The Nielsen Company (Us), Llc | Methods and apparatus to estimate population reach from different marginal rating unions |
US10382818B2 (en) | 2017-06-27 | 2019-08-13 | The Nielson Company (Us), Llc | Methods and apparatus to determine synthetic respondent level data using constrained Markov chains |
US10856027B2 (en) | 2019-03-15 | 2020-12-01 | The Nielsen Company (Us), Llc | Methods and apparatus to estimate population reach from different marginal rating unions |
US11216834B2 (en) | 2019-03-15 | 2022-01-04 | The Nielsen Company (Us), Llc | Methods and apparatus to estimate population reach from different marginal ratings and/or unions of marginal ratings based on impression data |
US11741485B2 (en) * | 2019-11-06 | 2023-08-29 | The Nielsen Company (Us), Llc | Methods and apparatus to estimate de-duplicated unknown total audience sizes based on partial information of known audiences |
GB2590658A (en) * | 2019-12-23 | 2021-07-07 | Graphcore Ltd | Communication in a computer having multiple processors |
US11783354B2 (en) | 2020-08-21 | 2023-10-10 | The Nielsen Company (Us), Llc | Methods and apparatus to estimate census level audience sizes, impression counts, and duration data |
US11481802B2 (en) | 2020-08-31 | 2022-10-25 | The Nielsen Company (Us), Llc | Methods and apparatus for audience and impression deduplication |
US11941646B2 (en) | 2020-09-11 | 2024-03-26 | The Nielsen Company (Us), Llc | Methods and apparatus to estimate population reach from marginals |
US11553226B2 (en) | 2020-11-16 | 2023-01-10 | The Nielsen Company (Us), Llc | Methods and apparatus to estimate population reach from marginal ratings with missing information |
US11790397B2 (en) | 2021-02-08 | 2023-10-17 | The Nielsen Company (Us), Llc | Methods and apparatus to perform computer-based monitoring of audiences of network-based media by using information theory to estimate intermediate level unions |
US20230155815A1 (en) * | 2021-11-12 | 2023-05-18 | Sap Se | Secure integer comparison using binary trees |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1333616A (zh) * | 2000-07-12 | 2002-01-30 | 日本电气株式会社 | 路由选择检索系统及其方法以及使用的路由器 |
WO2003079618A2 (en) * | 2002-03-15 | 2003-09-25 | Globespan Virata Incorporated | System and method for longest prefix match internet protocol lookup |
US20050018683A1 (en) * | 2003-07-21 | 2005-01-27 | Zhao Yigiang Q. | IP address storage technique for longest prefix match |
CN1778075A (zh) * | 2003-02-19 | 2006-05-24 | 日本电气株式会社 | 网络系统、生成树构成方法和构成程序、生成树构成节点 |
US20070280466A1 (en) * | 2006-05-30 | 2007-12-06 | Santera Systems, Inc. | Methods, systems, and computer program products for performing range-based directory number (DN) screening |
US20080016066A1 (en) * | 2006-06-30 | 2008-01-17 | Tele Atlas North America, Inc. | Adaptive index with variable compression |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7249149B1 (en) | 1999-08-10 | 2007-07-24 | Washington University | Tree bitmap data structures and their use in performing lookup operations |
DE69937830T2 (de) * | 1999-10-12 | 2008-12-24 | Alcatel Lucent | Vorrichtung und Verfahren zur Komprimierung von Mehrfahrnachrichten-Zieladressen |
US20030177166A1 (en) * | 2002-03-15 | 2003-09-18 | Research Foundation Of The State University Of New York | Scalable scheduling in parallel processors |
US20060179191A1 (en) * | 2005-02-10 | 2006-08-10 | Young David W | Covert channel firewall |
US7962717B2 (en) * | 2007-03-14 | 2011-06-14 | Xmos Limited | Message routing scheme |
WO2009058600A1 (en) * | 2007-11-02 | 2009-05-07 | Symbol Technologies, Inc. | Efficient encoding and decoding of mixed data strings in rfid tags and other media |
US8086982B2 (en) * | 2009-03-04 | 2011-12-27 | Springsoft Usa, Inc. | Methods and systems for reducing clock skew in a gated clock tree |
-
2009
- 2009-04-24 NL NL2002799A patent/NL2002799C2/en not_active IP Right Cessation
-
2010
- 2010-04-26 CN CN2010800269412A patent/CN102461092A/zh active Pending
- 2010-04-26 JP JP2012507174A patent/JP2012524932A/ja not_active Withdrawn
- 2010-04-26 AU AU2010239780A patent/AU2010239780A1/en not_active Abandoned
- 2010-04-26 EP EP10718718A patent/EP2422496A1/en not_active Withdrawn
- 2010-04-26 WO PCT/NL2010/050231 patent/WO2010123370A1/en active Application Filing
- 2010-04-26 US US13/265,663 patent/US20120066410A1/en not_active Abandoned
- 2010-04-26 CA CA2759557A patent/CA2759557A1/en not_active Abandoned
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1333616A (zh) * | 2000-07-12 | 2002-01-30 | 日本电气株式会社 | 路由选择检索系统及其方法以及使用的路由器 |
WO2003079618A2 (en) * | 2002-03-15 | 2003-09-25 | Globespan Virata Incorporated | System and method for longest prefix match internet protocol lookup |
CN1778075A (zh) * | 2003-02-19 | 2006-05-24 | 日本电气株式会社 | 网络系统、生成树构成方法和构成程序、生成树构成节点 |
US20050018683A1 (en) * | 2003-07-21 | 2005-01-27 | Zhao Yigiang Q. | IP address storage technique for longest prefix match |
US20070280466A1 (en) * | 2006-05-30 | 2007-12-06 | Santera Systems, Inc. | Methods, systems, and computer program products for performing range-based directory number (DN) screening |
US20080016066A1 (en) * | 2006-06-30 | 2008-01-17 | Tele Atlas North America, Inc. | Adaptive index with variable compression |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015032214A1 (zh) * | 2013-09-03 | 2015-03-12 | 中兴通讯股份有限公司 | 一种同时支持IPv4和IPv6的高速路由查找方法及装置 |
CN104426774A (zh) * | 2013-09-03 | 2015-03-18 | 中兴通讯股份有限公司 | 一种同时支持IPv4和IPv6的高速路由查找方法及装置 |
CN107735775A (zh) * | 2015-07-10 | 2018-02-23 | Arm 有限公司 | 用于使用与指针相关联的范围信息来执行指令的装置和方法 |
US11314641B2 (en) | 2015-07-10 | 2022-04-26 | Arm Limited | Apparatus and method for executing instruction using range information associated with a pointer |
CN108121500A (zh) * | 2016-11-30 | 2018-06-05 | 深圳市中兴微电子技术有限公司 | 一种数据的存取方法及装置 |
CN110583100A (zh) * | 2017-05-08 | 2019-12-17 | 昕诺飞控股有限公司 | 通过分析设备控制信息形成设备的组 |
CN110583100B (zh) * | 2017-05-08 | 2021-12-24 | 昕诺飞控股有限公司 | 便于控制照明设备的系统和方法以及计算机可读存储介质 |
CN107798117A (zh) * | 2017-11-08 | 2018-03-13 | 杭州迪普科技股份有限公司 | 一种数据存储与读取的方法和装置 |
CN107798117B (zh) * | 2017-11-08 | 2020-12-04 | 杭州迪普科技股份有限公司 | 一种数据存储与读取的方法和装置 |
CN111930757A (zh) * | 2020-09-24 | 2020-11-13 | 南京中兴软件有限责任公司 | 数据处理方法、系统、封装节点和解封装节点 |
CN111930757B (zh) * | 2020-09-24 | 2021-01-12 | 南京中兴软件有限责任公司 | 数据处理方法、系统、封装节点和解封装节点 |
Also Published As
Publication number | Publication date |
---|---|
NL2002799C2 (en) | 2010-10-26 |
EP2422496A1 (en) | 2012-02-29 |
AU2010239780A1 (en) | 2011-11-10 |
WO2010123370A1 (en) | 2010-10-28 |
US20120066410A1 (en) | 2012-03-15 |
CA2759557A1 (en) | 2010-10-28 |
JP2012524932A (ja) | 2012-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102461092A (zh) | 用于地址查找的数据结构、方法和系统 | |
EP2040184B1 (en) | Database and database processing methods | |
KR100441317B1 (ko) | 데이터 패킷 분류 방법 및 장치 | |
US8856203B1 (en) | System and method for algorithmic TCAM packet classification | |
US20170242855A1 (en) | Fast, scalable dictionary construction and maintenance | |
KR100586461B1 (ko) | 파이프라인 이진 트리를 이용한 ip 어드레스 검색 방법,하드웨어 구조 및 기록매체 | |
Le et al. | Scalable tree-based architectures for IPv4/v6 lookup using prefix partitioning | |
EP1335538B1 (en) | Method and system for address lookup in data communication | |
CN101286935A (zh) | 一种基于ip地址范围的路由查找方法 | |
Le et al. | Memory-efficient and scalable virtual routers using FPGA | |
US8874837B2 (en) | Embedded memory and dedicated processor structure within an integrated circuit | |
US20050163122A1 (en) | System and methods for packet filtering | |
WO2015192742A1 (zh) | 一种查找装置、查找方法和配置方法 | |
Erdem et al. | Hierarchical hybrid search structure for high performance packet classification | |
Vijay et al. | Implementation of memory-efficient linear pipelined IPv6 lookup and its significance in smart cities | |
Erdem | Pipelined hierarchical architecture for high performance packet classification | |
Banerjee et al. | PC-DUOS+: A TCAM architecture for packet classifiers | |
KR100460188B1 (ko) | 인터넷 프로토콜 주소 룩-업 방법 | |
CN116156026B (zh) | 一种支持rmt的解析器、逆解析器、解析方法及交换机 | |
Ioannidis et al. | Level compressed DAGs for lookup tables | |
Yalinkaya | A new mapping algorithm for systolic array based IP Lookup architectures | |
JP3754043B2 (ja) | データ検索装置 | |
Fadishei et al. | A fast IP routing lookup architecture for multi-gigabit switching routers based on reconfigurable systems | |
Katamaneni | Longest prefix match and incremental updates for range tries | |
Erdem et al. | Hybrid data structure for IP lookup in virtual routers using FPGAs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20120516 |