CN101491015A - 用于ip查找和更新的动态树位图 - Google Patents
用于ip查找和更新的动态树位图 Download PDFInfo
- Publication number
- CN101491015A CN101491015A CNA2007800276700A CN200780027670A CN101491015A CN 101491015 A CN101491015 A CN 101491015A CN A2007800276700 A CNA2007800276700 A CN A2007800276700A CN 200780027670 A CN200780027670 A CN 200780027670A CN 101491015 A CN101491015 A CN 101491015A
- Authority
- CN
- China
- Prior art keywords
- node
- prefix
- dtbm
- array
- bitmap
- 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
- 238000000034 method Methods 0.000 claims abstract description 35
- 238000012217 deletion Methods 0.000 claims abstract description 33
- 230000037430 deletion Effects 0.000 claims abstract description 33
- 230000015654 memory Effects 0.000 claims description 71
- 238000009826 distribution Methods 0.000 claims description 21
- 230000009191 jumping Effects 0.000 claims description 21
- 238000003860 storage Methods 0.000 claims description 17
- 238000013508 migration Methods 0.000 claims description 11
- 230000005012 migration Effects 0.000 claims description 11
- 238000010586 diagram Methods 0.000 claims description 5
- 230000008878 coupling Effects 0.000 claims description 4
- 238000010168 coupling process Methods 0.000 claims description 4
- 238000005859 coupling reaction Methods 0.000 claims description 4
- 238000003780 insertion Methods 0.000 abstract description 17
- 230000037431 insertion Effects 0.000 abstract description 17
- 238000007726 management method Methods 0.000 description 12
- 230000008859 change Effects 0.000 description 8
- 238000013461 design Methods 0.000 description 7
- 230000009471 action Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 230000000295 complement effect Effects 0.000 description 4
- 238000005520 cutting process Methods 0.000 description 4
- 238000012797 qualification Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 241000218691 Cupressaceae Species 0.000 description 2
- 241001234523 Velamen Species 0.000 description 2
- 238000004140 cleaning Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013468 resource allocation Methods 0.000 description 2
- 238000012552 review Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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/745—Address table lookup; Address filtering
- H04L45/74591—Address table lookup; Address filtering using content-addressable memories [CAM]
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
本发明提供了一种数据结构和方法,用于使用动态树位图结构(DTBM)来进行IP查找、插入和删除,该DTBM利用用于每个节点的子代指针的阵列,而不是典型的使用指向子代阵列的一个指针的TBM方法。
Description
技术领域
本发明整体涉及基于IP的数据网络、通信和计算机系统;更具体而言,涉及一种用于通过动态树位图(DTBM,dynamic tree bitmap)来表示动态IP路由器表的方法和系统。
背景技术
随着光网络提供的带宽越来越高,需要更有效的方法来在高性能因特网路由器中进行IP查找和分组分类。通常,路由器被连接到几个不同的网络,并且通常利用含在分组报头中的信息以及分类规则表,将输入分组分类成流。该表被称作“路由器表”(等效于规则表)。当计算机与因特网上的另一计算机通信时,IP数据分组被通过一系列路由器而从源导向目的地,其中,所述一系列路由器读取目的地址,并且将分组重新传输到由该目的地址指示的其目的地或者到另一路由器,该另一路由器将进一步转发该分组直到该分组到达其目的地。在路由器与目的地之间的这些中间步骤的每一步被称为“下一跳”。
输出接口和下一跳的组合被称为“路由”。由于通常存在超过一个的路由最终将分组导向其目的地,因此,在路由数据分组之前,路由器必须获知可以向其转发该分组的地址集合。通常,用于给定IP地址的合适的路由被编码于部分的或全部的该IP地址本身中。路由器的下一步骤是找到对应于该地址集合中的任何地址的路由。显然,由于存在一系列地址,因此,该路由器可以找到与该分组的地址相匹配的超过一个的路由。该路由器的任务是找到以下地址所定义的最佳路由,即该地址具有最多的与该分组的目的地址一样的位(bit)。
通常使用分组的目的地址来完成分组分类。每个路由器表规则均是一对表单(F,NH),其中,F是过滤器,并且NH是下一跳。过滤器是目的地址前缀,其与具有该前缀的所有目的地址相匹配。关联的规则表被称为LMPT,并且W被用于指明前缀的最大可能长度。例如,过滤器10*匹配于从位序列(bit sequence)10开始的所有目的地址。通过使用路由查找表,路由器必然确定输出接口端口,由此而从连接到该接口的节点转发分组以及该分组的下一跳。
通常,路由器表前缀的长度不能超过目的地址的长度W。对于网际协议第4版本(IPv4)来说,转发判定是基于在每个分组的报头中所携带的32位目的地址,并且W被认为是32位的。路由器的每个端口处的查找引擎使用适当的路由数据结构,以便为该分组的目的地址确定合适的输出链路。类似地,对于网际协议第6版本(IPv6)来说,转发判定是基于在每个分组的报头中所携带的128位目的地址,并且W被认为是128位的。
常规地,路由器查找操作以线性方式实现。为了匹配而检查查找表中的每个条目。即使在找到匹配之后,该操作也必须持续贯穿该表以确定找到最佳匹配。由于因特网路由器表可以含有与给定目的地址d相匹配的若干规则,因此,打破僵局者(tie breaker)被用于从与该目的地址匹配的规则集合中选择规则。通常,通过选择与这样的最长前缀相关联的下一跳来打破僵局,其中,该最长前缀经由最长前缀匹配而与分组的目的地址相匹配。
近年来已经较多地研究了用于最长前缀匹配的数据结构。三态内容可寻址存储器(TCAM)使用并行性来获得O(1)查找。TCAM的每个存储单元可以被设置成三种状态“0”、“1”和“?”(随意)中的一个。路由器表的前缀按照前缀长度的降序被存储在TCAM中。假设TCAM的每个字具有32个单元,则前缀10*被存储在TCAM字中作为10???...?,其中,?指明“随意”,并且在给定序列中存在30个?。为了进行最长前缀匹配,针对每个TCAM条目以及由TCAM仲裁逻辑所报告的第一(即,最长)匹配条目,对该目的地址进行并行匹配。因而,使用TCAM和按长度排序的线性列表,可以在O(1)时间内确定最长匹配前缀。可以在O(q)时间内插入或删除前缀,其中q是该表中不同前缀长度的数目。尽管TCAM为静态和动态路由器表提供了简单和有效的解决方案,然而,该解决方案相对于其它当前解决方案来说,需要专门化的硬件、更多的成本,并且使用更多的动力和板空间。
在针对该问题的大量的一系列解决方案中,很少能达到性能、效率和成本的良好平衡。动态IP路由器表在本领域中是已知的,并且若干数据结构已经被提出用于动态LMPT。(参见美国专利No.7,031,320(下文称为‘320专利))。特别地,该‘320专利教导使用用于路由表的跳跃列表(skiplist),其中查找、插入、删除和更新必须从头节点开始(第8栏,第22-26行)。每个节点具有单个指针或多个指针,并且最左边的节点被称为头节点。另外,每个前缀长度具有其自己的散列表(hash table),以便存储匹配于对应前缀长度的路由条目。每个散列表仅存储精确匹配于其前缀长度的路由条目(第9栏,第17-27行)。每个节点具有范围从32到24的路由条目,并且如果存在对应于范围从32到24(且包括32和24)的每个前缀长度的路由条目,那么对应节点将具有指向九(9)个不同散列表的九(9)个指针。尽管这些结构可以改进插入/删除的复杂性,然而,该改进是以查找的复杂性为代价的。
用于动态LMPT的树位图(TBM)数据结构已经由Eatherton等人之前在“Tree bitmap:hardware/software IP lookups with incrementalupdates”(SIGCOMM Comput.Commun.Rev.,34(2):97-122,2004)中提出,以便改进查找的复杂性。(另外参见美国专利申请No.2005/0157712)。尽管该数据结构导致了快速查找,然而,插入和删除造成过多的存储器访问。在插入和删除操作上TBM的糟糕性能的原因在于以下事实:在TBM中,节点的子代被存储在使用可变大小的存储块的邻近存储器中。这对插入和删除操作有两个不利后果。首先,需要复杂的存储器管理系统来分配和解除分配可变大小的存储块。其次,对前缀的插入和删除可能显著地改变节点所具有的子代的数目,从而导致糟糕的性能。这需要解除分配旧的存储块以及分配新的存储块。因此,在最差情况下,每个插入和删除可能需要超过3000次存储器访问。
涉及使用内容可寻址存储器的硬件解决方案以及涉及修改网际协议的解决方案(即,向每个分组附加信息)也已经被提出以便提高路由分组的效率。不幸的是,专门化的硬件解决方案昂贵并且难以有效地使特定的需要个性化。
因此,需要一种数据结构和方法,其在不顾此失彼的情况下提供非常高的查找和更新速率,达到性能、效率和成本的良好平衡。
发明内容
本发明提供了用于通过动态树位图(DTBM)来表示动态IP路由器表的方法和系统,所述动态树位图(DTBM)支持非常高的查找和更新速率。通过启用高速路由查找和更新操作,作为性能瓶颈的路由器被减少并且在某些情况下被消除。
如本发明所涵盖的,通过使用一种被称为动态树位图(DTBM)的新型数据结构来构造动态路由表,所述动态树位图(DTBM)使用每个节点的子代指针的阵列(an array of child pointers)而不是在邻近存储器中的常规存储。
作为树位图(TBM)的有效替代,在新颖的DTBM中,每个节点均具有子代指针的阵列。该变化极大地简化了存储器管理并且导致非常快的插入和删除,同时不必牺牲查找速度。本发明所需要的附加存储器都很好地处于市售SRAM的容量之内。
相应地,本发明的特征包括针对数据结构的实施例,所述数据结构合并了下一跳阵列、子代指针的阵列、每个节点的非空子代数的计数、使用自由节点的单个链的存储器管理、使用组装模式(packed mode)(在该模式下,若干叶(没有其自己的后续子代的最外侧的子节点)被组装成单个28字的节点(可选地,12字的节点和/或8字的节点))的存储器管理,或者懒惰模式操作(在该模式下,通过将节点的位设置成0并且不解除分配该节点来实现前缀删除)。另外,本发明中还包括使用动态树位图插入和删除前缀的方法。
本发明的优点众多。本发明的一个显著优点是其提供了一种数据结构,该数据结构通过达到很高的查找和更新速率而允许简单的存储器管理和更好的系统资源分配。根据下面的详细描述,结合通过例子说明了本发明的原理的附图,本发明的其它方面和优点将变得显而易见。
附图说明
图1A是前缀集合R的一位Trie(特里结构)表示;
图1B是其高度为2的满Trie(full Trie);
图2是为d找到最长匹配前缀的长度的算法;
图3是一位Trie(one-bit Trie)的步幅3(stride-3)(SFE)全扩展;
图4是动态树位图(DTBM)结构的图形表示;
图5是用于DTBM节点的通用格式的图形表示;
图6是用于DTBM的查找算法;
图7是将前缀p插入DTBM(其步幅为s)的算法;
图8是从DTBM删除前缀p的算法;
图9是由delete(p)所使用的清理算法;
图10是用于懒惰模式的前缀插入的算法;以及
图11是用于懒惰模式的前缀删除的算法。
应当理解,在某些情况下,由于计算效率或方便维护的原因,本领域的技术人员可以重新安排或重新关联所示出的流程图的块的顺序和关系。
具体实施方式
本发明涉及用于改进路由器操作以及使用一种数据结构的方法,该数据结构通过获得非常高的查找和更新速率来允许简单的存储器管理和更好的系统资源分配。该结构能够在不必牺牲查找速度的情况下支持非常高的更新速率。本发明针对该数据结构和方法,其用于使用动态树位图结构(DTBM)来进行IP查找、插入和删除,该动态树位图结构利用了每个节点的子代指针的阵列,而不是典型的使用指向子代阵列的一个指针的TBM方法。
在本发明的一个实施例中,对于一位Trie中的任何节点x来说,prefix(x)是从根到x的路径的编码。图1(a)示出了前缀集合R={*,01*,1*}的一位Trie表示。左分支向编码添加0并且右分支添加1。该编码总是以*结束。例如,prefix(root)=*、prefix(root.left)=0*、prefix(root.right)=1*,以及prefix(root.left.left)=00*。当且仅当prefix(x)是集合R的元素时,节点x被阴影化。如果图1(a)的一位Trie被扩展成高度为2的满Trie(图1(b)),则可以使用前缀位图(也称为内部位图(IBM))来简洁地表示这一满Trie,其中,该前缀位图是通过在每个阴影节点中放置1并在每个非阴影节点中放置0且然后以层级顺序列出这些节点位来获得的。对于图1(b)的满Trie来说,该层级顺序遍历产生IBM 1010100。
在另一实施例中,高度为h的满一位Trie的IBM正好具有2h+1-1位,该Trie中的每个节点有一位。如果从1开始按照层级顺序对IBM的位进行编号,那么可以通过使用以下公式来对游走(walk)经过对应的满Trie进行仿真:i的左子代(left child)是2i,右子代(right child)是2i+1,并且父代是i/2(S.Sahni,“Data structures,algorithms,and applications inJava”,McGraw Hill,NY,2000,pg.833)。为了为最长匹配前缀获得下一跳,IBM被补充了称为nextHop的下一跳阵列,其存储了含于满Trie的节点中的下一跳。对于高度为h的满Trie来说,下一跳阵列的大小是2h+1-1。对于所示例的Trie来说,该nextHop阵列具有七个条目,其中四个为空。
在本发明的一个实施例中,通过仿真从Trie根开始的自顶到底的游走并且使用目的地址中的那些位,找到与最长匹配前缀相关联的下一跳。所仿真的游走移动经过IBM的那些位,跟踪所看到的最后的1。如果最后的1处于IBM的位置i,则从nextHop阵列的位置i检索下一跳。
在另一实施例中,备选策略是从该Trie的适当的叶(leaf)开始,并且朝着根向上移动,在IBM中遇到的最初的1处停止。如果d.bits(j)是由目的地址d的最初的j位表示的整数,那么对于所有的d,d.bits(0)=0,并且对于d=1012来说,d.bits(1)=12=1、d.bits(2)=102=2,以及d.bits(3)=1012=5。在d具有少于j位的情况下,那么通过首先向d附加足够的0来获得d.bits(j),以便新的d具有j位。
在另一实施例中,对于高度为h的满Trie来说,自顶向下的搜索终止在其索引(index)是2h+d.bits(h)的叶。例如,在图1(b)中,当d=1012并且h=2时,该搜索终止在被标记为22+2=6的叶。
在又一实施例中,遍历可以从IBM的位2h+d.bits(h)开始,并且对于每次到父代的移动,可以通过将当前的位索引除以2来仿真对Trie的向上游走。当到达值为1的位或当位索引变成0时,所仿真的游走终止。图2给出了使用该备选策略的算法,以便为d找到最长匹配前缀的长度。IBM(i)返回IBM的第i位(注意,这些位从1开始编号)。
在另一实施例中,选择了步幅s,并且构建了一位Trie的步幅s全扩展(SFE)。通过从根开始将一位Trie分割成高度为s-1的子Trie来获得该SFE。没有后代的分割可以具有小于s-1的高度。然后将每个分割扩展成高度为s-1的满Trie。图3示出了步幅-3 SFE的例子。在分割x4中,根及其左子代还处在针对前缀集合的原始的一位Trie中。添加其余的4个节点以便将分割完成为高度为2的满Trie。
在另一实施例中,步幅-s SFE的每个分割是通过2s-1位IBM、大小为2s-1的nextHop阵列、子代指针的阵列以及该分割的非空子代数的计数来表示的。子代指针的阵列可以容纳指向子代分割的2s个指针。图4示出了图3的步幅-3SFE的表示。该图的每个节点表示了步幅-3分割。每个节点的第一字段是其IBM,第二字段是子代的计数,并且接下来的2s个字段是子代指针。因此,图4定义了动态树位图(DTBM)结构。图5示出了用于DTBM节点的一般格式。
术语的定义:
如文中所使用的术语“子代”或“多个子代”指的是任何给定节点所指向的后续节点。
如文中所使用的术语“节点”指的是进入树结构的入口。
如文中所使用的术语“过滤器”指的是IP地址前缀。
如文中所使用的术语“父代”指的是指向任何给定节点或子代的节点。
如文中所使用的术语“根”指的是树结构的顶端节点,并且术语“叶”指的是没有子代的节点。
如文中所使用的术语“步幅”指的是二进制Trie(binary Trie)的组在一起的树层级的数目,或者作为在单个读操作中所访问的树中的层级数(其表示树或Trie中的多个层级)。
如文中所使用的术语“Trie”指的是为了搜索数据所组织的一种特殊的树结构。
查找算法:
图6给出了DTBM的lookup(查找)算法,node.pointers[i]位置返回第i个子代指针,并且nextHop[i]位置返回当前DTBM节点的nextHop阵列中的第i个条目。子代索引从0开始,并且下一跳索引从1开始。
例如,当搜索DTBM时,如图4中所示,使用d=11101112,使用d的最初2位(11)来搜索由节点x1表示的分割。因此,x1.IBM.llmp(d)返回1,并且y被设置成x1,而hopIndex被设置成21+1=3。由于d.bits(s)=d.bits(3)=7,因此节点被更新成x3。此外,d被左移s=3位而变成01112。接下来,使用所更新的d的最初2位(01)来搜索由x3表示的分割,并且x3.IBM.llmp(d)返回2。因此,y被更新成x3并且hopIndex被更新成5。此时,d.bits(3)=3并且节点被更新成x4。在左移3位之后,d变成12。为了搜索x4,必须将0附加到d以获得102。接下来,可以从位置22+2=6开始搜索x4的IBM。该搜索返回-1并且节点被更新为空。现在通过退出do循环,返回x3的nextHop[5]值。
插入前缀:
图7给出了将前缀p插入步幅为s的DTBM中的算法。在第3行至第6行的while循环中,向下游走DTBM每次一个节点消耗p的s位。当p具有剩余少于s位或者不存在将要移至的下一DTBM节点时,该游走终止。在后一种情况下,我们向DTBM添加节点,继续每次采样p的s位,直到p中所剩少于s位。p的剩余位(少于s)被用于将p插入到所遇到的最后节点Z。如果p没有剩余位,则Z的最左边的IBM位被设置成1,并且Z.nextHop[1]被设置成用于p的下一跳。否则,Z的IBM的位2p.length+p.bits(p.length)被设置成1,并且对应的nextHop条目被设置成用于p的下一跳。
删除前缀:
图8给出了从DTBM删除前缀p的算法。该算法首先搜索含有p的DTBM节点。在该搜索期间,具有计数字段等于1并且IBM等于0的最后的节点序列,以及用于从该序列中的每个节点进行移动的子代指针的索引,一起被存储在阵列节点中。每当搜索到达具有大于0的计数或具有非零IBM字段的DTBM节点时,该序列就被重新设置为空。当在DTBM中找到p的情况下,将P从其DTBM节点Z中移除。如果现在Z的IBM是0并且Z没有子代,那么(使用图9中的deleteCleanup(删除清理)方法)删除Z及其具有等于1的计数和等于0的IBM的邻近先辈(ancestors)。
存在三种可能的操作模式用于DTBM-自由(free)、组装(packed)和懒惰(lazy)。为了分析这三种模式的每一种模式中DTBM数据结构的性能,利用Cypress FullFlex双端口(Dual-Port)SRAM在计算机上实现该数据结构。该SRAM的存储容量是36Mb(512K个72位的字)。该SRAM具有两个独立端口,这两个端口都支持读和写。可以在2个周期内(即,8ns,使用250MHz的时钟)通过任何一个端口来读/写72位的字。然而,多个读/写可以是流水线式的(pipelined),并且每个附加字都可以在单个周期(4ns)中被读/写。假设CPU足够快,从而使得查找、插入和删除所需的时间受控于从/向SRAM读/写数据的时间。
因此,通过对存储器访问数(最坏情况)进行计数来分析查找、插入和删除的复杂性。在SRAM中,在单个存储器访问中可以读/写两个字。当该分析以及特定的DTBM实现是所选择的SRAM所特有的时,这些概念可以很容易地被应用于任何其它的SRAM。
试验结果:
为了评估DTBM结构与两种其它的结构—BaRT(Lunteren,J.,“Searching very large routing tables in fast SRAM”,Proceedings ICCCN,2001以及Lunteren,J.“Search very large routing tables in wide embeddedmemory”Proceedings Globecom,2001)和TBM(Eatherton,W.,G.Varghese,Z.Dittia“Tree bitmap:hardware/software IP lookups with incrementalupdates”ACM SIGCOMM Computer Communication Review,34,2,April2004)的动态路由器表的功效,假设每个存储器访问需要两个周期。对于BaRT来说,Lunteren,J.中所报告的版本8888,86558和844448(Lunteren,J.,“Searching very large routing tables in fast SRAM”,Proceedings ICCCN,2001)被用于独立模式,并且对于TBM来说,使用Eatherton等人的13-4-4-4-4-3软件参考设计(Eatherton,W.,G.Varghese,Z.Dittia“Treebitmap:hardware/software IP lookups with incremental updates”ACMSIGCOMM Computer Communication Review,34,2,April 2004)。尽管Cypress FullFlex双端口SRAM能够使存储器访问流水线,从而使得除了第一访问之外的所有访问都各花费一个周期,然而,所考虑的数据结构都不能使用该特征。因而,周期数变成存储器访问数的两倍。表1给出了最坏情况下对于所考虑的数据结构来说查找和更新所需要的周期数。如表1中可见的,DTBM变体具有好得多的更新特性;在查找周期上它们都是可比较的。
(a).排除用于存储管理的存储器访问。
(b).当我们接近用完存储器时需要重建数据结构。
表1还给出了6种公共可用的路由器表的不同数据结构所需要的存储器。数据库Paix1、Pb1、MaeWest和Aads是在2001年11月22日获得的,而Pb2和Paix2是在2000年9月13日从Merit,Ipma statistics,http://nic.merit.edu/ipma获得的,并且现在通过例如众所周知的因特网存档服务便可获得。这6种数据库的大小范围从低的16,172(Paix1)个规则到高的85,987(Paix2)个规则。尽管主题DTBM方案比BaRT和TBM方案占用稍多的存储器,然而所需要的存储器是可接受的,并且在当前技术的范围之内。
下面是说明用于实施本发明的过程的例子。这些例子不应当被解释为限制性的。
例子1—自由模式位图:
在该模式中,使用自由节点的单链来完成存储器管理,在该单链上的每个节点都具有相同的大小。通过移除该链上的第一节点来分配节点,并且通过向该链的前端添加被解除分配的节点来解除分配节点。所有的存储器都被初始化为0,并且每当节点被解除分配时,所有其子代字段也都是0。因此,这些算法是在每次分配节点时无需显性地将子代指针设置为0的情况下工作。由于使用简单的存储器管理方案,因此,对于总共2个周期,节点分配和解除分配各需要单个存储器访问。
对于SRAM 72位长的字来说,可以使用的而具有适合于字的IBM的最大步幅是s=6。由于IPv4前缀的最大长度是32,且步幅为6,因此DTBM最多具有6个层级。这六个层级的步幅可以有几种可能的选择。每种选择在每次操作的时间与存储器使用之间提供不同的平衡。
在一个实施例中,所描述的称为366666的实施方式对DTBM的根使用步幅3并且对其余的DTBM节点使用步幅6。从0(根)到5对这些层级编号。DTBM的根需要7位的IBM,八个子代指针和七个nextHop字段。步幅-3的DTBM根是通过在寄存器中存储其IBM并且在预定的存储位置中存储其nextHop字段来表示的。这8个子代指针被消除,并且作为替代,编号1到8的节点被指定为DTBM的根的(多达)八个子代。因为从不删除根,所以没有为根存储计数字段。
节点需要63位的IBM、6位的计数字段、64个子代指针以及63个nextHop字段。如果向每个指针分配18位,则256K个节点可以被编写索引。对于64个子代指针来说,需要16个72位的字。对于每个nextHop字段来说,分配了12位。这对于4096个不同的nextHop可能性来说是足够的。因此,为了容纳所有所需的nextHop字段,需要11个字。因而,每个节点使用28个字。节点被编写索引1、2等等。通过将节点索引乘以28并且可能的话添加偏移,可以确定节点的第一个字。在我们的18位的指针字段的情况下,有可能编写索引多达7M个字,这远大于所考虑的SRAM的大小。
对于查找来说,从层级0(根)移动到层级1不需要存储器访问。在层级1,IBM以及单个节点的子代指针被访问。通过检查目的地址中的s=6位来确定所需要的子代指针。根据这s位并且知道节点在存储器中的起始位置以及节点结构,人们可以计算含有所期望的子代指针的字的索引。因此,可以获得使用SRAM的一个端口的IBM以及使用其它端口的子代指针。因此,从层级1移动到层级2需要总共2个周期(或单个存储器访问)。事实上,每个后续的向下移动TDBM都花费相同的时间量。在最坏的情况下,查找需要四次这样的移动(之后是对层级-5的IBM的读取),总时间为10个周期。最后,需要另一次存储器访问以获得最长匹配前缀的下一跳。因此,最坏情况下的查找时间是12个周期(或48ns)。因而,预计每秒约2100万次查找。
对于插入来说,最坏情况是当在层级2到5中的每个层级处,该插入都需要添加新的节点的时候。为此,必须以四次存储器访问或8个周期为代价来分配四个节点。另外,必须更新计数字段,并且必须在层级1到4的每个层级处的节点中设置子代指针,并且必须设置层级-5的节点的IBM字段和nextHop字段。使用双端口存储器,可以设置在2个周期中每个节点中所需要的两个字段。因此,在最坏的情况下,插入需要18个周期。
对于删除来说,最坏情况发生在处于层级-5的节点中的前缀和用于该删除的清理步骤被删除的时候。由于节点1到8不能被分配(因为它们被保留用于层级1),因此,解除分配发生在层级2到5中的每个层级。通过进行四次读取而到达所期望的层级-5的节点。当读取所到达的层级-5的节点的IBM时,应当检验:在前缀删除之后其变成0。这需要另外的读取。在此,四个子代指针必须被设置成0,并且必须解除分配四个节点。在解除分配节点的同时可以完成0指针的写入。因此,删除最多需要九次存储器访问或18个周期。
在自由模式中,TDBM中的多数节点是叶,并且可以通过检查叶的计数字段(其为0)来检测叶。因此,叶并不需要子代字段。这些字段占了构成节点的28个字中的16个字。
例子2—组装模式位图:
在对改进TDBM结构的存储器效率的努力中,组装模式是这样一个例子,即在该模式中,可以将若干叶组装到单个28字的节点中。28字的节点可以被称为类型A节点。
对于组装模式来说,人们可以考虑466656的实施方式。该实施方式的促成在于观察到实际上IPv4规则表具有非常少的长度超过24的前缀。因此,预计到366666 DTBM在层级5具有非常少的节点。因此,事实上层级4的所有节点都是叶。进一步地,预计到在层级2和3有非常少的叶。在466656设计中,在层级5使用类型B节点,并且在层级4使用类型C节点。
在466656 TDBM中,根步幅是4,在层级4的步幅是5,并且在其它每一层级的步幅是6。DTBM的根需要15位的IBM、16个子代指针和15个nextHop字段。如366666设计的情况,DTBM根是通过将其IBM存储在寄存器中并且将其nextHop字段存储在预定的存储位置中来表示的。16个子代指针被消除,并且作为替代,编号1到16的类型A节点被指定为DTBM的根的(多达)16个子代。类型C节点的大小是8个字。层级4的叶是使用单个类型C节点来表示的。该节点的第一个字被用于存储31位的IBM、5位的计数字段、18位的指针(其为空)以及12位的nextHop字段。接下来的6个字被用于存储其余的30个nextHop字段。最后的字未使用。层级-4的非叶(non-leaf)使用2个类型C节点。第一个用于层级4的叶(除了指针字段现在指向第二个类型C节点之外)。第二个类型C节点存储32个18位的子代指针。类型B节点需要12个字,并且具有除了计数字段和子代指针之外的类型A节点的所有字段。注意到,利用18位的指针,人们可以仅对如在自由模式中被编写索引的那么多的存储器的四分之一编写索引。这是因为类型A节点中的指针需要指向嵌在类型A节点内的类型C节点。
尽管存在三种节点类型,然而存储器管理相对简单。可用的存储器被分成类型A节点。类型A节点可以被用作类型A节点,或者可以用于容纳三个类型C节点(CCC),留下四个字未使用。类型A节点还可以被用于容纳两个类型C节点和一个类型B节点(CCB)。当在后两种方式中使用时,最初八个字需要被用作具有IBM、计数和下一跳的类型C节点。这提供了随意用于控制信息的被组装到类型A节点的第一个类型C节点中的最后一个字(即,类型A节点的字8)。28字的节点的字8被称为其控制字。子代指针总是指向在类型A、B或C节点中的第一个字。
如果从0开始对这些字编写索引,那么子代指针可以被认为是4的倍数,并且因而其最后两位(它们总是0)不需要被存储。使用19位的子代指针,对多达1M个字寻址是可行的。由于字(或字中的位)具有多重用途(IBM、子代指针、下一跳),因此,删除操作将与被删除的前缀相关联的所有的位设置成0是有必要的。
在一个实施例中,可以维护七个自由列表,free[0:6],且阵列索引中的各个位标识了每个列表上的节点的状态。例如,free[0]=free[0002]是这样的自由节点的列表,即该列表中所有的28个字都供使用,并且free[3]=free[0112]是这样的自由节点的列表,即该列表中最初8个字是自由的,接下来的8个字被用作类型C节点,并且接下来的8个字被用作类型C节点或接下来的12个字被用作类型B节点。列表free[0]是链,并且其余的列表是双链接的(doubly linked)。在每个双链接列表中,第一节点的在先指针可以被设置成任意值。已经被组装了类型B或C节点的节点的控制字中的三位被用于指示该节点处于哪个列表中。在节点不处于任何列表中的情况下,这三位是0,并且对于双链接列表来说,在先和下一指针各需要18位。
在另一个实施例中,可以仅从列表free[0]中分配类型A节点(在层级2和3需要的节点)。择优地从列表free[1:6]的任何一个中分配将具有IBM的那些类型C节点,并且择优地从列表free[1:2]和free[4:6]中分配其余的类型C节点。择优地从自由列表free[0102]、free[1002]和free[1102]的任何一个中分配类型B节点。在不能从其择优列表之一中分配类型B或C节点的情况下,从free[0]进行分配。当从列表free[0]中分配类型B节点时,从列表free[0]的前端移除所分配的节点,并且将其放到列表free[0012]上,等等。例如,假设处于free[1002]的前端的节点X将被分配用作类型B节点。需要1次存储器访问以便从free[1002]移除该节点,这是因为free[1002]必须被重新设置成该列表上的下一节点(这要求读取X的控制字)。
并不对在free[1002]的前端的新节点的控制字进行读或写,因为其在先指针不需要被设置成空。而是会将X添加到free[1012]的前端。X的控制字的下一字段被设置成free[1012];并且写入该控制字和读取free[1012]的控制字(使用两个存储器端口在相同的存储器访问中完成该读取和写入)。free[1012]的控制字中的在先指针被改成X,并且被写回到存储器。因此,需要两次存储器访问,以便将X添加到free[1012]的前端。对于节点分配的最坏情况的存储器访问是三次,以6个周期为代价。更确切地,需要一次存储器访问来分配类型A的节点,以及多达3次存储器访问来分配类型B或C的节点。
为了从层级2和3解除分配节点,被解除分配的节点被添加到free[0]的前端。这是以一次存储器访问为代价(free[0]是链)。为了解除分配任何其它的节点,28字的节点的开始必须首先被计算(其中容纳该节点)。例如,令x是类型B或类型C节点的开始。该节点被容纳在开始于的类型A节点中。读取开始于y的该类型A节点的控制字,并且计算该节点的新状态。在最坏的情况下,必须将该类型A节点从一个双链接自由列表的中部移动到另一个双链接自由列表的前端。根据y的控制字,可以确定其当前、在先和下一节点。可以读取和修改这些在先和下一节点的控制字,以便反映使用双端口存储器在两次存储器访问的情况下对y的删除。将y添加到其新自由列表的前端需要另外多达两次的存储器访问。因而,解除分配类型B或C的节点可以构成多达五次访问;利用单个存储器访问可以解除分配类型A的节点。
在466656方案中的最坏情况的查找代价相比于在366666方案中多2个周期,因为在层级4,IBM和子代指针不能够被并行地访问。必须首先访问在层级3的节点中使用子代指针的类型C节点,然后使用该类型C节点中的指针,可以确定下一个类型C节点(其含有指向所期望的层级5的节点的子代指针)中的字。因而,总的查找时间是14个周期。
对于插入来说,最坏情况是当该插入需要在层级2到5的每个层级处都添加新节点的时候。必须分配两个类型A节点和三个类型B或C节点。由于可以在对于从任何一个其它列表的分配的第一读取访问期间完成从free[0]的分配,因此,分配所需的五个节点所需要的最坏情况的访问是九次访问。另外,必须更新计数字段,并且必须在层级1到3的每个层级处的节点中设置子代指针。除了在层级4的类型C节点中的子代指针、IBM字段以及层级5的节点的nextHop字段之外,必须设置在层级4处的类型C节点的计数和下一字段。使用双端口存储器,可以在2个周期中设置这六个节点的每个节点中所要求的字段。因此,插入在最坏情况下需要30(15次存储器访问)个周期。
对于删除来说,最坏情况发生在当删除了处于层级5的节点中的前缀以及清理步骤,解除分配在层级2和3的每个层级处的类型A节点、在层级4处的两个类型C节点以及在层级5处的一个类型B节点的时候。这些节点解除分配具有17个存储器访问(34个周期)的额定的最坏情况代价。通过在以下时间片(slot)中解除分配类型A节点,可以将最坏情况代价降低到15个存储器访问,即在该时间片中,对于其余三个节点的解除分配仅使用双端口存储器中的一个端口。通过进行5次读取,可以到达所期望的层级5的节点。所到达的层级5的节点的IBM可以被读取,并且被检验出在前缀删除之后其变成0。下一步骤是写出0IBM,将所删除的前缀的nextHop字段设置成0,以及将层级4的类型C节点中的下一指针设置成0。这需要另外两次访问。在被解除分配的五个节点的三个中以及在层级1的节点中,子代指针需要被设置成空。可以利用两次存储器访问将这四个子代指针设置成空。总的存储器访问数是24(对于48的周期计数来说)。
例子3—懒惰模式位图:
在该模式中,通过将含有所删除的前缀的节点的IBM的适当的位简单地设置成0来完成前缀删除。并不完成由deleteCleanup所实现的清理动作。因此,节点从不被解除分配。虽然从其对清理动作的消除很容易看出懒惰模式操作支持更快的删除,但是懒惰模式操作还加快了插入,因为存储器管理被简化了。除了降低最坏情况下用于插入的时间之外,还可以降低一般情况下的时间,因为将来的插入可以重新使用那些若非如此则会在删除的清理阶段期间就被解除分配的节点。为了防止不能进行插入的风险,优选地,每当“接近”用完存储器时就重建数据结构。重建时间(甚至是对大型路由器表来说)是数十毫秒的量级。
在懒惰模式的操作中,计数字段(图5)是不需要的,因为该字段仅用于帮助确定在删除的清理阶段中将要解除分配哪些节点。图10和图11给出了在懒惰模式的操作下用于插入和删除的算法。366666和466656DTBM这二者的懒惰模式实现均被评估。
对于366666来说,对层级1到4使用了类型A节点并且对层级5使用了类型B节点。DTBM的根被存储为用于非懒惰实现;编号为1到8的类型A节点被用于DTBM的根的(多达)八个子代。
尽管在该模式中并未使用计数字段,然而类型A和类型B节点的大小并不改变。也就是说,类型A节点长28个字,并且类型B节点是12个字。由于在懒惰模式操作中从不解除分配节点,并且由于类型A节点从不作为插入或删除的结果而变成类型B节点(或相反),因此可以使用相当简单的存储器管理方案。待管理的存储器是一块邻近的字。该块中所有的位都被初始化成零。从该块的一端分配类型A节点,并且从另一端分配类型B节点。当分配了节点时,向其分派索引。类型A节点被编写索引1、2、3等等。以相同方式对类型B节点编写索引。类型A节点中的子代指针存储了其所指向的节点的索引。当导航通过DTBM时,从其当前所处的层级推断节点的类型,并且通过将节点索引乘以其大小(28或12)并将结果添加到基地址或从基地址减去该结果,而获得该节点中的第一个字。由于每个节点至少长12个字,因此在SRAM中有可能少于44K个节点。
与非懒惰366666 DTM一样,查找时间也是12个周期。对于插入来说,最坏情况是当新的前缀进入到新的层级5的节点或现有层级5的节点中的时候。考虑前一种情况,这样的插入需要:从层级1到4的每个层级处(可选地,在其中没有要读取的节点、新节点被创建并且指针被写到父节点的这样的每个层级处)的一个节点读取指针字段,对层级4的节点的指针字段进行写入,以及对新的层级5的节点进行写入。通过写入含有其IBM的字外加具有用于所插入前缀的nextHop值的字,完成对层级5的节点的写入。其余的字不改变(所有的位最初都被设置成0)。要写入的层级5的节点的这两个字可以使用2端口的存储器来并行写入。因此,最坏情况的插入需要从该2端口存储器的四次读取以及向该2端口存储器的两次写入,总时间为12个周期。
对于删除来说,最坏情况发生在当删除了处于层级5的节点中的前缀的时候。通过进行四次读取可以到达所期望的层级5的节点。接下来,必须将所到达的层级5的节点的IBM的位设置成0。为了进行该改变,必须读取和改变旧的IBM,并且该改变必须被写回到存储器。这需要另外的读和写访问。因此,对于总的12个周期,需要五次读访问和一次写访问。有趣地是,所有的三种操作都具有12个周期的相同的最坏情况需求。
懒惰模式466656 DTBM的根被表示(如同其非懒惰对应物(counterpart)),并且从1到16对类型A节点编号作为DTBM的根的(多达)16个子代。类型A节点被用在层级1、2和3,并且类型C节点被用在层级4和5。类型C节点的大小是8个字。在层级5,两个相邻的类型C节点被用于每个DTBM节点。由于节点相邻,因此从第一节点到第二节点不需要指针。对两个类型C节点的这种使用在每个DTBM层级5的节点浪费四个字。然而,由于预计到在该层级有非常少的节点,因此预计总的浪费是小的。由于懒惰模式的466656设计仅使用两个节点大小,因此,可以与懒惰模式的366666方案使用相同的存储器管理方案。在466656方案中最坏情况的查找代价与非懒惰模式的查找代价是相同的,都是14个周期。
对于插入来说,最坏情况是当前缀被插入到现有的层级5的节点的时候。花费10个周期来到达该层级5的节点,2个周期来读取该层级5的节点的IBM,以及另外两个周期来写入被修改的IBM以及与所插入的前缀相关联的下一跳。总的插入时间是14个周期。
最坏情况的删除是从层级5的节点删除前缀的情况。如同最坏情况的插入,花费10个周期来达到该层级5的节点,2个周期来读取其IBM以及另外2个周期来写入被改变的IBM。总的时间还是14个周期。尽管懒惰模式466656设计比懒惰模式366666设计在每操作多花费2个周期,然而,预计到466656设计需要更少的存储器来表示真实世界的IPv4路由器表。
基于前述说明,可以使用计算机编程或工程技术(包括计算机软件、固件、硬件或其任何组合或子集)来实现本发明。具有计算机可读代码装置的任何这样得到的程序均可以被体现于或提供在一个或多个计算机可读介质内,从而形成根据本发明的计算机程序产品,即制品。该计算机可读介质可以是,例如,固定(硬)驱动、磁盘、光盘、磁带、可编程逻辑器件、诸如只读存储器(ROM)等的半导体存储器,或者诸如因特网或其它通信网络或链路的任何发射/接收介质。可以通过执行直接来自一种介质的代码、通过将代码从一种介质拷贝到另一种介质或通过在网络上传输代码来形成和/或使用含有计算机代码的制品。
计算机科学领域的技术人员将很容易能够将上述创建的软件与包括可编程逻辑器件的适当的通用或专用计算机硬件进行组合,以创建体现本发明的方法的计算机系统或计算机子系统。用于制造、使用或销售本发明的装置可以是一个或多个处理系统,包括但不限于,中央处理单元(CPU)、存储器、存储设备、通信链路和设备、服务器、I/O设备或者一个或多个处理系统的任何子组件(包括软件、固件、硬件或其任何组合或子集),它们体现了本发明。可以从键盘、鼠标、笔、话音、触摸屏或人们由此可以将数据输入到计算机(包括通过诸如应用程序的其它程序)的任何其它装置来接收用户输入。
在此参照或引用的所有专利、专利申请和公开都通过引用的方式(在它们与本说明书的明确教导不会不一致的程度上)将其全部内容(包括所有的附图和表格)纳入本发明。
应当理解,文中所描述的例子和实施例仅出于说明性目的,并且鉴于此,本领域的技术人员将得到暗示来进行各种修改或改变,并且这些修改或改变将被包括在本申请的精神和范围之内。
Claims (18)
1.一种计算机可读介质,在其上存储有数据结构,所述数据结构包括:
用于表示Trie的前缀位图;
下一跳阵列;
子代指针的阵列;以及
非空子代数的计数;
其中所述前缀位图、所述下一跳阵列、所述子代指针的阵列以及所述非空子代数的计数表示了所述Trie的节点。
2.一种使用数据结构来实现数据分组的目的地址的最长前缀匹配的方法,所述数据结构包括:用于表示子Trie的前缀位图、下一跳阵列、子代指针的阵列,以及非空子代数的计数,其中所述前缀位图、所述下一跳阵列、所述子代指针的阵列以及所述非空子代数的计数表示了所述子Trie的节点,所述方法包括:
实现用于搜索Trie的查找。
3.根据权利要求3所述的方法,其中所述数据结构是动态树位图(DTBM)结构,其中每个节点存储了内部位图(IBM),并且其中实现查找包括:
通过标识子Trie中所存储的前缀,找到目的地址的最长前缀的长度来检索下一跳信息;使用所述目的地址来游走通过所述DTBM结构;以及使用在每个节点处存储的IBM来定位当前最长的匹配前缀。
4.一种使用步幅为s的动态树位图(DTBM)数据结构来插入前缀的方法,所述DTBM包括:用于表示子Trie的前缀位图、下一跳阵列、子代指针的阵列,以及非空子代数的计数,其中所述前缀位图、所述下一跳阵列、所述子代指针的阵列以及所述非空子代数的计数表示了所述子Trie的节点,其中每个节点存储了内部位图(IBM),所述方法包括:
游走通过所述DTBM每次一个节点,以便找到合适的节点来插入所述前缀,其中所述游走消耗所述前缀的s位;
如果在所述游走期间,所述前缀剩下少于s位,则少于s位的所述前缀的剩余位被用于将所述前缀插入所遇到的最后的节点;以及
如果不存在合适的节点,则将新的节点添加到所述DTBM,直到在所述前缀中剩下少于s位,其中少于s位的所述前缀的剩余位被用于将所述前缀插入所遇到的最后的节点。
5.一种使用动态树位图(DTBM)数据结构来删除前缀的方法,所述动态树位图(DTBM)数据结构包括:用于表示子Trie的前缀位图、下一跳阵列、子代指针的阵列,以及非空子代数的计数,其中所述前缀位图、所述下一跳阵列、所述子代指针的阵列以及所述非空子代数的计数表示了所述子Trie的节点,其中每个节点存储了内部位图(IBM),所述方法包括:
为了含有所述前缀的节点而搜索所述DTBM;以及
如果在所述DTBM中找到所述前缀,则将其从节点Z移除。
6.根据权利要求5所述的方法,其中如果节点Z的IBM是零并且节点Z没有子代,那么删除节点Z连同其连续先辈,所述连续先辈具有等于1的计数和等于零的IBM。
7.一种使用动态树位图(DTBM)数据结构来进行存储器管理的方法,所述动态树位图(DTBM)数据结构包括:用于表示子Trie的前缀位图、下一跳阵列、子代指针的阵列,以及非空子代数的计数,其中所述前缀位图、所述下一跳阵列、所述子代指针的阵列以及所述非空子代数的计数表示了所述子Trie的节点,其中每个节点存储了内部位图(IBM),所述方法包括:
使用自由节点的单链,其中所述单链上的每个节点都具有相同的大小;
通过移除在链上的第一节点来分配节点;以及
通过向链的前端添加被解除分配的节点来解除分配节点,其中,所有的存储器都被初始化为零,并且每当解除分配节点时,其所有的子代字段都为零。
8.根据权利要求7所述的方法,其中所述DTBM将步幅3用于所述DTBM的根,而将步幅6用于其余的DTBM节点,并且这些层级被从所述根处的0编号到5。
9.根据权利要求8所述的方法,其中所述DTBM的根具有7位的IBM、八个子代指针,以及七个nextHop字段。
10.根据权利要求9所述的方法,其进一步包括步骤:通过将DTBM根的IBM存储在寄存器中并且将所述DTBM根的nextHop字段存储在预定的存储位置中来表示所述DTBM根。
11.根据权利要求7所述的方法,其进一步包括以下步骤:查找最长匹配前缀,插入新的前缀,以及删除前缀。
12.一种使用动态树位图(DTBM)数据结构来进行存储器管理的方法,所述动态树位图(DTBM)数据结构包括:用于表示子Trie的前缀位图、下一跳阵列、子代指针的阵列,以及非空子代数的计数,其中所述前缀位图、所述下一跳阵列、所述子代指针的阵列以及所述非空子代数的计数表示了所述子Trie的节点,其中每个节点均是28字的节点,并且组装了若干叶,所述方法包括:
将所述28字的节点指定为所述DTBM的根;以及
通过将DTBM根的IBM存储在寄存器中并且将所述DTBM根的nextHop字段存储在预定的存储位置中来表示所述DTBM根,
其中所述28字的节点是类型A节点,并且其可以被分成类型B节点和类型C节点。
13.根据权利要求12所述的方法,其中所述DTBM将步幅4用于所述DTBM的根,而将步幅6用于其余的DTBM节点。
14.根据权利要求12所述的方法,其中所述类型A节点被指定为所述DTBM的根的子代。
15.根据权利要求12所述的方法,其进一步包括以下步骤:标识其中所有的28个字都可供使用的自由节点,以及在列表中维护所述自由节点。
16.根据权利要求15所述的方法,其中第一列表是链,并且其余的列表是双链接的,其中节点的控制字的位被用于指示节点处于哪个列表中。
17.根据权利要求16所述的方法,其中从第一列表链分配节点。
18.根据权利要求12所述的方法,其进一步包括以下步骤:查找最长匹配前缀,插入新的前缀,以及删除前缀。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US83372106P | 2006-07-27 | 2006-07-27 | |
US60/833,721 | 2006-07-27 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101491015A true CN101491015A (zh) | 2009-07-22 |
Family
ID=38981797
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007800276700A Pending CN101491015A (zh) | 2006-07-27 | 2007-07-20 | 用于ip查找和更新的动态树位图 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8284787B2 (zh) |
EP (1) | EP2055050A1 (zh) |
CN (1) | CN101491015A (zh) |
WO (1) | WO2008014188A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011127642A1 (zh) * | 2010-04-12 | 2011-10-20 | 华为技术有限公司 | 路由表建立方法和装置及路由表查找方法和装置 |
CN107659305A (zh) * | 2017-10-19 | 2018-02-02 | 郑州云海信息技术有限公司 | 一种基于cpld的时钟计数方法、装置及介质 |
CN108075979A (zh) * | 2017-12-20 | 2018-05-25 | 盛科网络(苏州)有限公司 | 实现最长掩码匹配的方法及系统 |
CN109743280A (zh) * | 2018-11-16 | 2019-05-10 | 江苏骏安信息测评认证有限公司 | 一种针对分布式synflood攻击可以快速防护的方法 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7930691B2 (en) * | 2006-04-27 | 2011-04-19 | Agere Systems Inc. | Methods and apparatus for updating data structures during in-service upgrade of software in network processor |
CN101577662B (zh) | 2008-05-05 | 2012-04-04 | 华为技术有限公司 | 一种基于树形数据结构的最长前缀匹配方法和装置 |
US9245382B2 (en) * | 2008-10-04 | 2016-01-26 | Microsoft Technology Licensing, Llc | User-guided surface reconstruction |
US8625604B2 (en) * | 2009-12-01 | 2014-01-07 | Polytechnic Institute Of New York University | Hash-based prefix-compressed trie for IP route lookup |
US8599853B2 (en) * | 2010-04-16 | 2013-12-03 | Wipro Limited | System and method for an exact match search using pointer based pipelined multibit trie traversal technique |
WO2011110003A1 (zh) | 2010-08-24 | 2011-09-15 | 华为技术有限公司 | 二叉树建立、压缩和查找的方法和装置 |
JP5794011B2 (ja) * | 2011-07-19 | 2015-10-14 | 富士通株式会社 | ネットワーク管理装置及びネットワーク管理方法 |
US10021026B2 (en) * | 2013-01-31 | 2018-07-10 | Hewlett Packard Enterprise Development Lp | Incremental update of a shape graph |
CN103249110B (zh) * | 2013-05-08 | 2015-10-28 | 南京大学 | 一种基于动态树的无线传感网目标跟踪方法 |
US9900222B2 (en) * | 2015-10-26 | 2018-02-20 | Microsoft Technology Licensing, Llc | Validating routing tables of routing devices |
US9906443B1 (en) | 2016-03-28 | 2018-02-27 | Amazon Technologies, Inc. | Forwarding table updates during live packet stream processing |
US10681417B2 (en) * | 2017-05-12 | 2020-06-09 | Google Llc | Enhanced multicast network communications |
CN112134805B (zh) * | 2020-09-23 | 2022-07-08 | 中国人民解放军陆军工程大学 | 基于硬件实现的快速路由更新电路结构及更新方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6560610B1 (en) * | 1999-08-10 | 2003-05-06 | Washington University | Data structure using a tree bitmap and method for rapid classification of data in a database |
US7031320B2 (en) * | 2000-12-22 | 2006-04-18 | Samsung Electronics Co., Ltd. | Apparatus and method for performing high-speed IP route lookup and managing routing/forwarding tables |
US20030026246A1 (en) * | 2001-06-06 | 2003-02-06 | Zarlink Semiconductor V.N. Inc. | Cached IP routing tree for longest prefix search |
US7007123B2 (en) * | 2002-03-28 | 2006-02-28 | Alcatel | Binary tree arbitration system and method using embedded logic structure for controlling flag direction in multi-level arbiter node |
US7899067B2 (en) * | 2002-05-31 | 2011-03-01 | Cisco Technology, Inc. | Method and apparatus for generating and using enhanced tree bitmap data structures in determining a longest prefix match |
US7930559B1 (en) * | 2006-06-30 | 2011-04-19 | Emc Corporation | Decoupled data stream and access structures |
-
2007
- 2007-07-20 US US12/307,064 patent/US8284787B2/en not_active Expired - Fee Related
- 2007-07-20 CN CNA2007800276700A patent/CN101491015A/zh active Pending
- 2007-07-20 WO PCT/US2007/073958 patent/WO2008014188A1/en active Application Filing
- 2007-07-20 EP EP07799736A patent/EP2055050A1/en not_active Withdrawn
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011127642A1 (zh) * | 2010-04-12 | 2011-10-20 | 华为技术有限公司 | 路由表建立方法和装置及路由表查找方法和装置 |
CN102484610A (zh) * | 2010-04-12 | 2012-05-30 | 华为技术有限公司 | 路由表建立方法和装置及路由表查找方法和装置 |
CN107659305A (zh) * | 2017-10-19 | 2018-02-02 | 郑州云海信息技术有限公司 | 一种基于cpld的时钟计数方法、装置及介质 |
CN108075979A (zh) * | 2017-12-20 | 2018-05-25 | 盛科网络(苏州)有限公司 | 实现最长掩码匹配的方法及系统 |
CN108075979B (zh) * | 2017-12-20 | 2020-10-13 | 盛科网络(苏州)有限公司 | 实现最长掩码匹配的方法及系统 |
CN109743280A (zh) * | 2018-11-16 | 2019-05-10 | 江苏骏安信息测评认证有限公司 | 一种针对分布式synflood攻击可以快速防护的方法 |
Also Published As
Publication number | Publication date |
---|---|
EP2055050A1 (en) | 2009-05-06 |
US20090327316A1 (en) | 2009-12-31 |
US8284787B2 (en) | 2012-10-09 |
WO2008014188A1 (en) | 2008-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101491015A (zh) | 用于ip查找和更新的动态树位图 | |
CN102307149B (zh) | Ip查找方法和装置以及路由更新方法和装置 | |
US7352739B1 (en) | Method and apparatus for storing tree data structures among and within multiple memory channels | |
US8089961B2 (en) | Low power ternary content-addressable memory (TCAMs) for very large forwarding tables | |
CN1316390C (zh) | 用树状分段改善树搜索性能和存储器带宽的方法和系统 | |
US6633548B2 (en) | Method and apparatus for ternary content addressable memory (TCAM) table management | |
CN102929936B (zh) | 日志记录方法、日志查询方法及系统 | |
CN1954560B (zh) | 固定长数据的检索装置及检索管理方法 | |
CN101507191A (zh) | 被递归地分割的静态ip路由表 | |
WO2005124577A2 (en) | Scalable distributed parallel access memory systems with internet routing applications | |
CN101388030A (zh) | 数据库和数据库处理方法 | |
CN108134739B (zh) | 一种基于索引特里树的路由查找方法及装置 | |
CN101335706B (zh) | 对路由表进行空间管理的方法、装置、交换机及路由器 | |
JP3570323B2 (ja) | アドレスに関するプレフィクスの格納方法 | |
Mishra et al. | PETCAM—A power efficient TCAM architecture for forwarding tables | |
Yang et al. | High throughput and large capacity pipelined dynamic search tree on fpga | |
CN100479436C (zh) | 静态多接口范围匹配表的管理维护方法 | |
Luo et al. | A hybrid IP lookup architecture with fast updates | |
Hsieh et al. | Multiprefix trie: A new data structure for designing dynamic router-tables | |
Kirsch et al. | Simple summaries for hashing with choices | |
CN102210128A (zh) | 路径计算顺序决定方法、程序以及计算装置 | |
CN102591958A (zh) | 基于tcam的确定性有穷状态自动机的匹配方法和装置 | |
Lu et al. | Succinct representation of static packet classifiers | |
Sahni et al. | Dynamic tree bitmap for IP lookup and update | |
KR100814077B1 (ko) | 우선순위 트라이를 이용한 ip 주소 검색 방법 및 이를제공하는 패킷 중계 장치 |
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 |
Open date: 20090722 |