用于地址查找的数据结构、方法和系统的制作方法

文档序号:7911898阅读:124来源:国知局
专利名称:用于地址查找的数据结构、方法和系统的制作方法
技术领域
本发明涉及一种使用决策树在地址空间中对所请求的地址进行地址查找的方法。 而且,本发明涉及一种使用决策树在地址空间中对所请求的地址进行地址查找的计算机系统。此外,本发明涉及一种使用决策树在地址空间中对所请求的地址进行地址查找的计算机程序。
背景技术
本发明涉及一种表示一组基本地址范围的数据结构,以及一种搜索该结构的方法。而且,本发明涉及一种用于地址查找的系统。地址查找是一种在若干领域中获得应用的基本功能主要在IP(互联网协议)查找和路由以及分组(packet)分类中,但也在处理器间通信中。互联网主干路由器使用分组的目的地址并执行地址查找,以确定分组的下一跳。 每个路由器可以在查找表中包含数十万个表目,并且可以被要求每秒执行数百万个查找。 互联网流量的迅速增长以及路由表大小的日益增大使得更难以跟上日益提升的对更快处理速度的需要。另外,IPv6的128比特地址的使用要求在地址宽度方面可缩放的查找策略解决方案。IPv6在过去两年中增长提升了 300%,加上IPv4的耗尽,提出了对在地址宽度方面可缩放的解决方案的需要。分组分类要求多(ibps (Multi-Gbps)性能,以及要求具有多个域查找和可能地更少的表目。在较小规模的处理器间通信中,虚拟地址至物理地址的逐渐转换可能要求显著更小的路由表,但查找时间的约束条件更严格,因为通信时延对于多核系统的性能是关键。给定一个地址空间
所述选择规则包括选自一组动作中的至少一个动作,该组动作包括-将所述至少一个公共地址部分仅在所述节点中存储一次;-省略所述至少一个可省略的地址部分,以及-将在所述分解步骤中确定的所有其他地址部分存储在所述节点中,所述所有其他地址部分既不是所述至少一个公共地址部分,又不是所述至少一个可省略的地址部分。在一个实施方案中,该方法包括-接收所述所请求的地址作为输入;-确定所述所请求的地址属于的基本地址范围,包括,在所述决策树的每个层中, 从顶层中的根节点开始针对所述各自的层中的各自的节点读取存储在所述各自的节点中的地址部分;将存储在所述层中的所述各自的节点中的至少一个地址部分与所述所请求的地址的各自的对应地址部分相比较;基于所述至少一个比较,分支到所述决策树的下一个层中的一个节点,直到当到达所述决策树的所述叶节点之一时已确定所述基本地址范围时。本发明还涉及一种用于构建在地址空间中对所请求的地址进行地址查找中所用的决策树的计算机系统,所述地址空间被布置为一组基本地址范围,每个基本地址范围由一个下边界地址和一个上边界地址限定;所述地址空间中的一个地址由预定数量的位表示;所述计算机系统包括存储器和处理器,所述处理器联接至所述存储器,其中所述处理器被布置为执行用于构建在所述地址空间中对所请求的地址进行地址查找中所用的决策树的方法,包括-将所述决策树布置为用于从该组基本地址范围中确定所述所请求的地址属于的一个具体基本地址范围,所述决策树包括至少一个层,所述至少一个层包括至少一个节点;所述至少一个节点被布置为用于映射到一个节点地址范围,所述节点地址范围是所述地址空间的一个与节点有关的部分,所述节点地址范围由一个下节点边界地址和一个上节点边界地址限定;所述至少一个节点具有至少两个节点分支,每个节点分支映射到所述节点地址范围中的各自非重叠分支地址范围,所述分支地址范围由所述节点地址范围中的节点地址限定;-将每个节点地址分解成多个地址部分,每个地址部分由所述预定数量的位的各自的子集表示,所述分解包括下列中的至少一个a)将对于多个节点地址公共的至少一个地址部分确定为至少一个公共地址部分, 以及b)将可省略的至少又一个地址部分确定为至少一个可省略的地址部分,所述至少一个可省略的地址部分要么是值为“零”的一个节点地址后缀,要么是对于所述节点地址范围中的所有地址公共的一个地址部分;-根据一个选择规则将所述多个地址部分存储在所述至少一个节点中,所述选择规则包括选自一组动作中的至少一个动作,该组动作包括-将所述至少一个公共地址部分仅在所述节点中存储一次;-省略所述至少一个可省略的地址部分,以及
12
-将在所述分解步骤中确定的所有其他地址部分存储在所述节点中,所述所有其他地址部分既不是所述至少一个公共地址部分,又不是所述至少一个可省略的地址部分。此外,本发明涉及一种待被上述计算机系统加载的计算机可读介质上的计算机程序,用于构建在地址空间中对所请求的地址进行地址查找中所用的决策树,所述地址空间被布置为一组基本地址范围,每个基本地址范围由一个下边界地址和一个上边界地址限定;所述地址空间中的一个地址由预定数量的位表示;所述计算机系统包括存储器和处理器,所述处理器联接至所述存储器,其中所述计算机程序产品在被加载之后允许所述处理器执行-将所述决策树布置为用于从该组基本地址范围中确定所述所请求的地址属于的一个具体基本地址范围,所述决策树包括至少一个层,所述至少一个层包括至少一个节点;所述至少一个节点被布置为用于映射到一个节点地址范围,所述节点地址范围是所述地址空间的一个与节点有关的部分,所述节点地址范围由一个下节点边界地址和一个上节点边界地址限定;所述至少一个节点具有至少两个节点分支,每个节点分支映射到所述节点地址范围中的各自非重叠分支地址范围,所述分支地址范围由所述节点地址范围中的节点地址限定;-将每个节点地址分解成多个地址部分,每个地址部分由所述预定数量的位的各自的子集表示,所述分解包括下列中的至少一个a)将对于多个节点地址公共的至少一个地址部分确定为至少一个公共地址部分, 以及b)将可省略的至少又一个地址部分确定为至少一个可省略的地址部分,所述至少一个可省略的地址部分要么是值为“零”的一个节点地址后缀,要么是对于所述节点地址范围中的所有地址公共的一个地址部分;-根据一个选择规则将所述多个地址部分存储在所述至少一个节点中,所述选择规则包括选自一组动作中的至少一个动作,该组动作包括-将所述至少一个公共地址部分仅在所述节点中存储一次;-省略所述至少一个可省略的地址部分,以及-将在所述分解步骤中确定的所有其他地址部分存储在所述节点中,所述所有其他地址部分既不是所述至少一个公共地址部分,又不是所述至少一个可省略的地址部分。另外,本发明涉及一种使用决策树用于在地址空间中对所请求的地址进行地址查找的计算机系统,所述决策树是根据上述方法构建的,所述计算机系统包括存储器和处理器,所述处理器联接至所述存储器,其中所述处理器被布置为执行-接收所述所请求的地址作为输入;-确定所述所请求的地址属于的基本地址范围,包括,在所述决策树的每个层中,从顶层中的根节点开始针对所述各自的层中的各自的节点读取存储在所述各自的节点中的地址部分;
将存储在所述层中的所述各自的节点中的至少一个地址部分与所述所请求的地址的各自的对应地址部分相比较;基于所述至少一个比较,分支到所述决策树的下一个层中的一个节点,直到当到达所述叶节点之一时已确定所述基本地址范围时。本发明的其他实施方案由随附的从属权利要求限定。尽管已经具体参照远程通信应用公开了本发明,但本发明的数据结构和搜索方法促进了对以地址区间或地址前缀形式限定的地址范围的任何数据库的迅速搜索。本方法和系统还适于以计算机硬件实施,根据地址宽度和所存储的地址范围的数量而可缩放,提供了紧凑的存储,并且可以被应用至互联网多服务路由器的设计中的紧迫问题。本数据结构和搜索方法尤其有利于以数字计算机硬件实施。当前感兴趣的首要应用是,用于IP查找、分组分类、多服务互联网路由器的半导体集成电路。然而,本技术可以在涉及需要区分优先级的数据或数据中的结构需要被确定然后被分类的多种应用中有用。 作为地址查找的结果,可以更快以及更高效地对数据采取行动。


现在将参照所附的示意图仅通过实施例描述本发明的实施方案,在附图中对应的参考符号指示对应的部分,并且在附图中图1示意性地示出了地址空间内的地址区的一个实例;图2示意性地示出了根据来自现有技术的Trie方法的一个决策树;图3示意性地示出了根据来自现有技术的范围树方法的一个决策树;图4示意性地示出了根据来自现有技术的多路范围树方法的一个决策树;图5示意性地示出了映射到范围树节点的一个范围Trie节点;图6A示意性地示出了根据本发明的一个方法的一个决策树;图6B示意性地示出了根据本发明的一个方法的一个决策树节点;图6C示意性地示出了根据本发明的一个方法的一个决策树节点;图7A根据本发明示出了一个范围Trie的图;图7B示出了在用额外叶节点和指针进行注释操作(annotation operation)之后的一个范围Trie的图;图8是根据本发明示出了已注释的范围Trie节点在存储器分级体系中的布置的图;图9是根据本发明的一个范围Trie节点和要被存储在存储器分级体系中的相应的节点数据结构的图形表示;图10是根据本发明描绘了本发明的功能单元及其互连的框图;图IlA是根据本发明的单个32位比较器的组合逻辑的框图;图IlB是根据本发明的实施下一个范围偏移单元的组合逻辑的框图;图12A示意性地示出了被布置为执行根据本发明的一个方法的又一个计算机系统的功能框图;图12B示意性地示出了被以流水线形式布置、用于执行根据本发明的一个方法的又一个计算机系统的功能框图13示意性地示出了被布置为执行根据本发明的一个方法的一个系统的框图。
具体实施例方式本发明的方法接收一个所请求的引入的地址Ain,并且确定该所请求的地址Ain属于的基本地址范围Rl. . . 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)解压缩存储在该节点中的数据以重新得到原始地址边界,然后执行在所请求的引入的地址与所述地址边界之间的比较;或者( 如下文所述,直接对存储在该节点中的数据执行计算,而不解压缩。后一实施方案包括地址对齐操作,以及在地址的一部分中的比较。作为对本发明的方法的总体描述,我们考虑通过下列方式减少存储在一个节点中所要求的地址边界位的数量(1)共享地址边界的公共地址部分;(2)省略可省略的地址部分;以及可选地(3)另外进一步压缩待被存储在该决策树的一个节点中的数据;然后,读取已压缩的地址部分,并使用所请求的引入的地址Ain和该节点的数据作为输入来执行计算。计算可包括解压缩存储在该节点中的地址部分,以及在该地址边界的地址部分中执行比较。此后,我们详细描述一个实施方案,它是采用了本发明的范围Trie方法的许多替代设计或快速地址查找之一。然而,它是在简单性和速度之间的极好平衡。在本文的末尾简要描述了又一些实施方案,这些实施方案涉及压缩和解压缩存储在一个节点中的地址边
15界,然后执行所请求的引入的地址与所述地址边界之间的比较。另外,本发明的方法的一个具体实施方案被布置为(1)共享在同一节点中被并行比较的(节点地址/地址边界的)公共地址部分;(2)省略对于所述比较不要求的地址边界的部分;以及C3)对齐所述地址边界和所请求的引入的地址,以增加待被省略的地址部分。限定了地址范围的地址边界(节点地址)可以被分别较稀疏或较密集地放置在创建了较长或较短的地址范围的地址空间中。直观地,对于该地址空间中较稀疏的区域,较少的地址位的比较可以是足够的,而较密集的区域需要更好的精度,但可以具有能够被共享的长的公共前缀甚至可以被共享的后缀。上述方法可以被执行,以保持所得到的决策树平衡以及充分利用共享,从而提高存储器带宽的使用。此外,随着地址宽度的增大和路由表大小的增长,该方法允许在性能方面的可缩放性。举例而言,图6A示出了根据本发明的一个方法的一个多路决策树。该决策树在该树中的若干个层处包括多个节点601、602、603、604。较高层中的一个节点可以分支到该较高层之下的层中的数个节点。该较高层中的该节点是该较高层之下的层中的(子)节点的父。该多路决策树可以在某一层是两个分支,但也可以在该树中的单个层具有两个以上的分支。再一次,这里使用了如图1中限定的基本地址范围。如图6A所例示,本发明的方法增加了该决策树在比较较少的地址位时的分支的数量。在图6A的实施例中,可用的5位存储器带宽被假定为等于图3中所示的现有技术的范围树方法的可用存储器带宽。为了例示本发明的方法,在第一迭代中,在层1607的根节点601,将引入的地址Ain 的两个最高有效位与存储在该根节点的地址边界的部分相比较,该地址边界的部分是两个最高有效位“01-—”605和最高有效位“1”606。较低的有效地址边界位被省略(由 “_”指示)。这一比较等效于比较完整地址边界“01000”和“10000”,如同在现有技术的范围树结构中会做的那样。在层沈08且在从根节点601选取中间分支610之后的第二迭代中,正常地将比较地址边界“01010”和“01100”。然而,它不需要存储和比较两个最高有效位,因为在第一迭代之后已知引入的地址是“Olxxx”,其中X是未定的位值。而且,待被比较的地址边界的最低有效位被省略,因为它的值是“O”。相似地,在从根层选取右边的分支615之后,已知最高有效位是“lxxxx”。那么,在层2608,待被比较的两个地址边界“ 11100,,和“ 11101”具有公共前缀A10" ( “_110_”)611, 该公共前缀被共享从而在该节点中仅被存储一次,并被单独比较。这一节点602的决策是基于公共前缀Α:比较的结果,以及(如果需要)在同一节点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,在这一实施例中该队要求被表示成3位的二进制“101”,因为两个最高有效位是零。表示该节点地址范围的长度所要求的位的数量,确定了将被用在这一节点所要求的计算中的后缀位的数量。因此,在这一实施例中,在这一节点中相同数量的最低有效地址位(三位)对于随后的计算将是有用的。首先,下节点边界634的三个最低有效位 “一110”被从Ain的三个最低有效位中减去。从所述地址中省略的最高有效位由“_”指示。 该减法的结果的三个最低有效位被与随后计算的结果的三个最低有效位相比较下节点边界634的三个最低有效位“一110”被从每个地址边界635、636的三个最低有效位“一111” 和“--010”中减去。上述计算的结果确定了待选取的节点分支。注意,原始节点的边界没有公共前缀,但在对齐之后存在2位公共前缀,所述2位公共前缀从该节点的计算中被省略。因此,我们仅需要对下列各项的仅三个最低有效位进行存储和执行计算(I)Ain; (2)下节点边界634 ;以及(3)地址边界635、636。通常,本发明的范围Trie节点和分支可以被一一映射到(现有技术)范围树数据结构。如在现有技术范围树中,一个范围Trie节点映射到该地址空间的一个地址范围。(1)单个树层中的节点的地址范围和(2)先前树层的叶节点的地址范围的联合是整个地址空间。子节点地址范围的联合是它们的父节点的地址范围。当引入的地址Ain为AhSAinC Ak时,选取指向分支地址范围[Ak^Ak)的一个节点分支。然而,存储在本发明的一个范围Trie节点中的数据显著少于存储在一个范围树节点中的数据,而基于该引入的地址来确定随后的子分支所需要的计算也是不同的。而且,前缀可以用与存储在现有技术范围树中相同的方式被存储到本发明的数据结构。一个范围Trie节点由一些地址边界的部分组成,这些地址边界的部分可以被布置为根据一个具体实施方案组成(1)两个或更多个地址边界的单个公共地址部分;(2)每个地址边界在省略该比较不要求的任何位的子集(可省略的地址部分)之后的剩余部分; 这一位的子集可以是节点地址范围公共的位,也可以是具有值为“0”的地址边界后缀。因此,根据图5和图6A-6C,本发明提供了一种用于构建在地址空间中对所请求的地址进行地址查找中所用的决策树的方法,所述地址空间被布置为一组基本地址范围,每个基本地址范围由一个下边界地址和一个上边界地址限定;所述地址空间中的一个地址由预定数量的位表示;
所述方法包括-将所述决策树布置为用于从该组基本地址范围中确定所述所请求的地址属于的一个具体基本地址范围,所述决策树包括至少一个层,所述至少一个层包括至少一个节点;所述至少一个节点被布置为用于映射到一个节点地址范围,所述节点地址范围是所述地址空间的一个与节点有关的部分,所述节点地址范围由一个下节点边界地址和一个上节点边界地址限定;所述至少一个节点具有至少两个节点分支,每个节点分支映射到所述节点地址范围中的各自非重叠分支地址范围,所述分支地址范围由所述节点地址范围中的节点地址限定;-将每个节点地址分解成多个地址部分,每个地址部分由所述预定数量的位的各自的子集表示,所述分解包括下列中的至少一个a)将对于多个节点地址公共的至少一个地址部分确定为至少一个公共地址部分, 以及b)将可省略的至少又一个地址部分确定为至少一个可省略的地址部分,所述至少一个可省略的地址部分要么是值为“零”的一个节点地址后缀,要么是对于所述节点地址范围中的所有地址公共的一个地址部分;-根据一个选择规则将所述多个地址部分存储在所述至少一个节点中,所述选择规则包括选自一组动作中的至少一个动作,该组动作包括-将所述至少一个公共地址部分仅在所述节点中存储一次;-省略所述至少一个可省略的地址部分;以及-将在所述分解步骤中确定的所有其他地址部分存储在所述节点中,所述所有其他地址部分既不是所述至少一个公共地址部分,也不是所述至少一个可省略的地址部分。读取包括预定地址空间中的一个地址的一个引入的地址Ain。接下来,该引入的地址Ain由对应于该地址空间的范围的数个位限定。在该地址空间内,存在限定了基本地址范围Rl,. . .,R7的数个地址边界。每个基本地址范围Rl,...,R7自身就是包括数个单独地址的一个子地址空间。基于地址边界的数量来构建一个决策树,该决策树被用来确定该引入的地址Ain 位于哪个基本地址范围中。为了确定该引入的地址在该地址空间内的位置,该方法被布置为在数个迭代中执行一个或多个比较,所述比较为将位的子集或整个所请求的引入的地址的一个值与位的子集或整个地址边界的一个或多个值相比较。该位的子集的大小在不同迭代中可以不同。该决策树以如下方式分支在完成所述迭代之后,该引入的地址所属于的基本地址范围被确定。下面,将更详细地描述该决策树的构建。在一个实施方案中,本发明提供了如上述的方法,该方法还包括-接收所述所请求的地址作为输入;-确定所述所请求的地址属于的基本地址范围,包括,在所述决策树的每个层中, 从顶层中的根节点开始针对所述各自的层中的各自的节点
18
读取存储在所述各自的节点中的地址部分;将存储在所述层中的所述各自的节点中的至少一个地址部分与所述所请求的地址的各自的对应地址部分相比较;基于所述至少一个比较,分支到所述决策树的下一个层中的一个节点,直到当到达所述叶节点之一时已确定所述基本地址范围时。接下来,描述根据该方法减少在一个节点中需要被存储、读取和处理的地址边界位的数量的一个具体实施方案。在该决策树的一个节点中,对于数个地址边界公共的位可以被组合成一个公共地址部分,作为待被比较的位的一个子集。有利地,这些位在该节点中仅需要被存储一次,然后对于多于一个的地址边界仅要求针对这些位做单个比较。另外,对于一个节点映射到的地址范围中的所有地址的公共的位可以从该比较中被省略。而且,具有零值的地址边界后缀位可以从该比较中被省略。最后,地址边界和所请求的引入的地址可以被适当地对齐,以使得需要被存储在该节点中的信息最小化。该方法应用根据该实施方案的决策树,该决策树具有下列性质-映射到该地址空间的地址范围的节点。(1)单个树层中的节点的地址范围和O) 先前树层的叶节点的地址范围的联合是整个地址空间。于节点地址范围的联合是它们的父节点的地址范围;-在一个节点,每个比较要求被处理的地址位(或该决策树中的节点分支)的最大数量是lo&D,其中D是该节点映射到的地址范围的长度;-当地址后缀的值为零时可以从处理中省略该地址后缀。在一些情况下,可以迫使一个地址边界具有值为零的后缀,以减少需要被存储的数据,然后一个新的地址边界被创建,尽管它没有被包括在原始组的地址边界——其限定了待被存储在该决策树中的原始组的地址范围——中。-公共地址部分在地址边界(节点地址)之间共享;以及-地址可以被适当地对齐以使得它们共享的公共前缀最大化。对应于这些性质,根据这一实施方案的该方法提供了一些数据处理规则。这些规则旨在,在给定一个具体的存储器带宽的前提下,增加每节点分支的数量,以减小该决策树的深度。现在考虑图5的节点501。由于一个范围Trie节点的外部特性与一个范围树节点的外部特性一一匹配,所以图5可以被用来例示一个范围Trie节点。第一规则(规则1)是,省略节点边界502、503的公共前缀。当在地址Na 502和地址Nb 503的节点边界存在一个长度为L(L < W,W是地址宽度)的公共前缀CP时,所述地址的L个最高有效位(输入地址和地址边界)可以从在该节点的比较中被省略。第二规则(规则2)是,在该节点映射到的地址范围内共享地址边界Ai 504的公共前缀(最高有效位)Aep。多个地址边界Ai的长度为L (L< W)的公共前缀Aep可以在多个比较中被共享、仅被存储一次并被分别处理。然后,如果该长度为L的Ain前缀小于Aep, 那么Ain e R1 (艮口,Ain属于Rl)。如果该长度为L的Ain前缀大于Acp,那么Ain e 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的公共后缀(最低有效位)Aes。多个地址&的公共后缀Aes可以在多个比较中被共享,并被分别处理。令艮=[Ap_1;Ap) (ρ e自然数,1彡ρ彡k+1)是AjP Ain的(W-L)位前缀比较所指示的地址范围。那么,当下列所有三个条件为真时,有Ain e Rp^1 = [Ap_2, V1)(1)长度为L的Ain后缀小于Aes ;(2)长度为W-L的Ain前缀等于Alri的前缀;(3) Rp ^ Rl如果上述三个条件中的一个或多个不被满足,那么Ain e艮。第五规则(规则5)是,使用地址对齐。在映射到具有地址边界Ai 504的[Na,Nb) 的节点N中查找地址Ain等效于在映射到具有地址边界A' i = (Ai-Na)的地址范围W, Nb-Na)的节点N'中查找地址A' IN= (Ara-Na)。那么,当A' 属于节点N'的地址范围Ri =[Α' η,A' 0时,Ain属于原始节点N的地址范围Ri = [Ai+ Ai)。第五规则使得第一规则的益处最大化,并且本质上是实现本发明的方法的本质属性的手段一个节点需要处理的地址位的最大数量等于表示该节点区域的长度所需要的位的数量,即 Iog2(Nb-Na)0关于并行地应用上述一个以上的规则,出现了一个问题。规则一至四可以被独立地应用,因为它们不彼此影响。例如,有可能省略使用公共节点前缀(规则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内,或者可以作为与范围iTrie处理单元 1302、1303、1304、1305、1306接口的分立电路而存在。而且,本领域技术人员应意识到,软件部件可以存在于1302、1303、1304、1305、1306的存储器区域或者存储器单元1301、1307中。图13所示的计算机系统1300被布置为执行本发明的方法的计算。计算机系统 1300能够执行根据位于计算机可读介质上的配置(或程序代码)的计算,该计算机可读介质在被载入该计算机系统之后允许该计算机系统执行本发明的方法。本发明可以选取如下形式含有描述上面所公开的方法的一个或多个机器可读指令序列的计算机程序,或者其内存储有这样的计算机程序的数据存储介质(例如,半导体存储器)。因此,本发明提供了一种用于构建在地址空间中对所请求的地址进行地址查找中所用的决策树的计算机系统,所述地址空间被布置为一组基本地址范围,每个基本地址范围由一个下边界地址和一个上边界地址限定;所述地址空间中的一个地址由预定数量的位表示;所述计算机系统包括存储器和处理器,所述处理器联接至所述存储器,其中所述处理器被布置为执行用于构建在所述地址空间中对所请求的地址进行地址查找中所用的决策树的方法,包括-将所述决策树布置为用于从该组基本地址范围中确定所述所请求的地址属于的一个具体基本地址范围,
所述决策树包括至少一个层,所述至少一个层包括至少一个节点;所述至少一个节点被布置为用于映射到一个节点地址范围,所述节点地址范围是所述地址空间的一个与节点有关的部分,所述节点地址范围由一个下节点边界地址和一个上节点边界地址限定;所述至少一个节点具有至少两个节点分支,每个节点分支映射到所述节点地址范围中的各自非重叠分支地址范围,所述分支地址范围由所述节点地址范围中的节点地址限定;-将每个节点地址分解成多个地址部分,每个地址部分由所述预定数量的位的各自的子集表示,所述分解包括下列中的至少一个a)将对于多个节点地址公共的至少一个地址部分确定为至少一个公共地址部分, 以及b)将可省略的至少又一个地址部分确定为至少一个可省略的地址部分,所述至少一个可省略的地址部分要么是值为“零”的一个节点地址后缀,要么是对于所述节点地址范围中的所有地址公共的一个地址部分;-根据一个选择规则将所述多个地址部分存储在所述至少一个节点中,所述选择规则包括选自一组动作中的至少一个动作,该组动作包括-将所述至少一个公共地址部分仅在所述节点中存储一次;-省略所述至少一个可省略的地址部分;以及-将在所述分解步骤中确定的所有其他地址部分存储在所述节点中,所述所有其他地址部分既不是所述至少一个公共地址部分,又不是所述至少一个可省略的地址部分。范围Trie处理单元1302-1306(或处理器)还被布置为执行本发明的方法,包括-接收所述所请求的地址作为输入;-确定所述所请求的地址属于的基本地址范围,包括,在所述决策树的每个层中, 从顶层中的根节点开始针对所述各自的层中的各自的节点读取存储在所述各自的节点中的地址部分; 将存储在所述层中的所述各自的节点中的至少一个地址部分与所述所请求的地址的各自的对应地址部分相比较;基于所述至少一个比较,分支到所述决策树的下一个层中的一个节点,直到当到达所述叶节点之一时已确定所述基本地址范围时。附加地,本发明提供了一种位于计算机可读介质上的计算机程序,所述计算机程序待被上述计算机系统加载,用于构建在地址空间中对所请求的地址进行地址查找中所用的决策树,所述地址空间被布置为一组基本地址范围,每个基本地址范围由一个下边界地址和一个上边界地址限定;所述地址空间中的一个地址由预定数量的位表示;所述计算机系统包括存储器和处理器,所述处理器联接至所述存储器,其中所述计算机程序产品在被加载之后允许所述处理器执行-将所述决策树布置为用于从该组基本地址范围中确定所述所请求的地址属于的
22一个具体基本地址范围,所述决策树包括至少一个层,所述至少一个层包括至少一个节点;所述至少一个节点被布置为用于映射到一个节点地址范围,所述节点地址范围是所述地址空间的一个与节点有关的部分,所述节点地址范围由一个下节点边界地址和一个上节点边界地址限定;所述至少一个节点具有至少两个节点分支,每个节点分支映射到所述节点地址范围中的各自非重叠分支地址范围,所述分支地址范围由所述节点地址范围中的节点地址限定;-将每个节点地址分解成多个地址部分,每个地址部分由所述预定数量的位的各自的子集表示,所述分解包括下列中的至少一个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中的地址范围Ri0额外的叶节点被放置在指向它的范围Trie节点的下一层中,并且保存指向结果阵列中的地址范围氏的指针。(即,根节点701是节点702、703的父,并且也直接指向结果阵列中的R3)。这导致创建额外的叶节点732,其被放置在已注释的范围Trie 700’的层2 中作为根节点720的子节点,且在子节点721、722之间。额外的叶节点732保存了指向结果阵列710中的地址范围民的结果阵列指针762。 以一种相似的形式,范围iTrie 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填充。 存储器层观02和存储器层3803被已注释的范围Trie700,的层2和层3的节点填充。存储器层i的每个相继的存储器表目被从已注释的范围Trie 700’的层i的最右边的节点开始的节点朝最左边的节点移动的节点填充。存储器层观02被提供有来自700’的层2的节点;节点722在表目0811中;额外的叶节点723在表目1812中;以及,节点721在表目观13 中。以相同的方式,存储器层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和减去值(subtract value) 916,设置了移位控制941 (用于字节对齐)、比较开始字节942、减去值943以及前缀/后缀掩码944。为了完成节点数据结构901,指向下一个存储器层的指针950被填充有节点900的指针917。根节点720——其用数据结构901表示,不具有指向下一个存储器层950的指针, 因为该根节点总是指向存储器层观02的表目0811。另一个特定情况是将额外的叶节点730-734表示在节点数据结构901中。额外的叶节点仅保存指向结果阵列710的指针760、761、762、764、765。用于叶节点的节点数据结构901被完全填充有0,除了它的保存了指向结果阵列的指针的那些最高有效位以及它的用于比较器1945的保存特定编码以说明这一节点是额外的叶节点的比较模式。在将存储器分级体系设置为具有该数据结构之后,可以开始操作根据本发明的方法的地址查找。该计算现在可以以从存储器层1801的单个存储器表目810中重新得到根节点720数据结构开始着手。所要求的计算在范围Trie节点数据结构已经被从存储器中重新得到之后,存在数个所要求的计算,以沿着搜索路径前进到后续的范围Trie节点,直到该搜索完成。所要求的计算的第一部分在表1中示出,其中基于引入的地址来计算待要在该比较器中被比较的值。例如,使用了在图9中表示在901中的节点。首先,根据本发明,输入地址被左移了 shift_ctrlM941位,并且在右边被填充有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.一种用于构建在地址空间中对所请求的地址进行地址查找中所用的决策树的方法, 所述地址空间被布置为一组基本地址范围,每个基本地址范围由一个下边界地址和一个上边界地址限定; 所述地址空间中的一个地址由预定数量的位表示; 所述方法包括-将所述决策树布置为用于从该组基本地址范围中确定所述所请求的地址属于的一个具体基本地址范围,所述决策树包括至少一个层,所述至少一个层包括至少一个节点; 所述至少一个节点被布置为用于映射到一个节点地址范围,所述节点地址范围是所述地址空间的一个与节点有关的部分,所述节点地址范围由一个下节点边界地址和一个上节点边界地址限定;所述至少一个节点具有至少两个节点分支,每个节点分支映射到所述节点地址范围中的各自非重叠分支地址范围, 所述分支地址范围由所述节点地址范围中的节点地址限定;-将每个节点地址分解成多个地址部分,每个地址部分由所述预定数量的位的各自的子集表示,所述分解包括下列中的至少一个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或M所述的计算机系统,其中所述处理器包括多个处理单元;每个处理单元与所述决策树的至少一个层关联,并且被布置为用于在所述决策树的关联层中执行计算,以将存储在所述关联层的节点中的地址部分的至少之一与所述所请求的地址的各自的对应地址部分相比较,然后分支到沿着所述决策树的向下方向的下一个层的节点。
26.根据权利要求21-25中任一项权利要求所述的计算机系统,其中所述计算机系统选自通信系统、联网路由器以及报文分组交换系统中的一个。
27.一种待被根据权利要求21-26中任一项权利要求所述的计算机系统加载的计算机可读介质上的计算机程序,用于构建在地址空间中对所请求的地址进行地址查找中所用的决策树,所述地址空间被布置为一组基本地址范围,每个基本地址范围由一个下边界地址和一个上边界地址限定;所述地址空间中的一个地址由预定数量的位表示;所述计算机系统包括存储器和处理器,所述处理器联接至所述存储器,其中所述计算机程序产品在被加载之后允许所述处理器执行-将所述决策树布置为用于从该组基本地址范围中确定所述所请求的地址属于的一个具体基本地址范围,所述决策树包括至少一个层,所述至少一个层包括至少一个节点; 所述至少一个节点被布置为用于映射到一个节点地址范围,所述节点地址范围是所述地址空间的一个与节点有关的部分,所述节点地址范围由一个下节点边界地址和一个上节点边界地址限定;所述至少一个节点具有至少两个节点分支,每个节点分支映射到所述节点地址范围中的各自非重叠分支地址范围, 所述分支地址范围由所述节点地址范围中的节点地址限定;-将每个节点地址分解成多个地址部分,每个地址部分由所述预定数量的位的各自的子集表示,所述分解包括下列中的至少一个a)将对于多个节点地址公共的至少一个地址部分确定为至少一个公共地址部分,以及b)将可省略的至少又一个地址部分确定为至少一个可省略的地址部分,所述至少一个可省略的地址部分要么是值为“零”的一个节点地址后缀,要么是对于所述节点地址范围中的所有地址公共的一个地址部分;-根据一个选择规则将所述多个地址部分存储在所述至少一个节点中, 所述选择规则包括选自一组动作中的至少一个动作,该组动作包括 -将所述至少一个公共地址部分仅在所述节点中存储一次; -省略所述至少一个可省略的地址部分,以及-将在所述分解步骤中确定的所有其他地址部分存储在所述节点中,所述所有其他地址部分既不是所述至少一个公共地址部分,又不是所述至少一个可省略的地址部分。
28.一种计算机可读介质,设有根据权利要求27所述的计算机程序。
29.一种使用决策树用于在地址空间中对所请求的地址进行地址查找的计算机系统, 所述决策树是根据权利要求1-6中任一项所述的方法构建的,所述计算机系统包括存储器和处理器,所述处理器联接至所述存储器,其中所述处理器被布置为执行-接收所述所请求的地址作为输入;-确定所述所请求的地址属于的基本地址范围,包括,在所述决策树的每个层中,从顶层中的根节点开始针对所述各自的层中的各自的节点读取存储在所述各自的节点中的地址部分;将存储在所述层中的所述各自的节点中的至少一个地址部分与所述所请求的地址的各自的对应地址部分相比较;基于所述至少一个比较,分支到所述决策树的下一个层中的一个节点,直到当到达所述叶节点之一时已确定所述基本地址范围时。
30.根据权利要求四所述的计算机系统,其中所述计算机系统还被布置为执行在读取存储在所述各自的节点中的所述地址部分之后,将所述所请求的地址减去一个预定常数值,以获得一个减得结果;以及,在将存储在所述层中的所述各自的节点中的至少一个地址部分与所述所请求的地址的各自的对应地址部分相比较之前,用所述减得结果取代所述所请求的地址。
31.根据权利要求四或30所述的计算机系统,其中所述计算机系统选自通信系统、联网路由器以及报文分组交换系统中的一个。
全文摘要
用于构建在地址空间中对所请求的地址进行地址查找中所用的决策树的方法和计算机系统。所述地址空间被布置为一组基本地址范围。每个基本地址范围由一个下边界地址和一个上边界地址限定,并且所述地址空间中的地址由预定数量的位表示。
文档编号H04L12/56GK102461092SQ201080026941
公开日2012年5月16日 申请日期2010年4月26日 优先权日2009年4月24日
发明者G·N·盖达德杰夫, G·斯特凡纳基斯, I·索迪斯, R·德斯迈特 申请人:代尔夫特科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1