被递归地分割的静态ip路由表的制作方法

文档序号:7678676阅读:149来源:国知局

专利名称::被递归地分割的静态ip路由表的制作方法
技术领域
:本发明一般涉及IP路由表;更具体地,涉及一种用于将大型静态路由表分割成较小的表的方法。
背景技术
:通常,通过路由器使用信息,例如位于进入的分组的分组才艮头中的目的地址的前缀和路由表,从若干不同网络i^的分组被转发到它们的目的地。用于每个路由器的路由表包含以连接到路由器的设备的地址为形式的到达各种网络目的地的最佳路径记录。为了分组到达其最终目的地,路由器将要将进入的分组定向到的与该路由器连接的下一个设备的地址,被称为下一跳。通过确定路由表中与分组的目的地址匹配的最长前缀,来计算进入的分组的下一跳;随后分组被路由到由与最长前缀关联的下一跳指定的目的地。通常路由表以两种模式之一来操作静态(离线)或动态(在线)。在静态模式中,使用后台处理器离线执行更新请求。经过一些周期,新的并且更新后的转发表被创建。在动态模式中,查找和更新请求被按照它们出现的顺序来处理。因此,不能完成查找,直到完成之前的更新。为路由表的表示开发的很多数据结构都是基于基本的二进制前缀树(binarytrie)结构。对于二进制前缀树结构,基于搜索关键字(searchkey)中的位来完成分支。通过使用该前缀作为关键字进行的搜索来确定其中将要存储前缀的节点。将节点N定义为二进制前缀树中的节点。Q(N)被定义为由从根到N的路径定义的位串。特别地,Q(N)是对应于N的前缀。如果Q(N)是路由表中的前缀之一,则对应于Q(N)的下一跳被存储在N.data中。对于任何目的地址d,通过沿着开始于前缀树根并由d指示的路径,可以找到最长的匹配前缀。该路径上遇到的最后的前缀是与d匹配的最长的前缀。提出了若干策略来提高二进制前缀树的查找性能。例如,已经使用了LC前缀树(S.Nilsson和G.Karlsson的Fastaddresslook-upforInternetrouters,IEEEBroadbandCommunications,1998)、Lulea(M.Degermark,A.Brodnik,S.Carlsson和S.Pink.的Smallforwardingtablesforfastroutinglookups,ProceedingsofSIGCOMM,3-14,1997)、树位图(W.Eatherton,G.Varghese,Z.Dittia的Treebitmap:hardware/softwareIPlookupswithincrementalupdates,ComputerCommunicationReview,34(2):97-122,2004)、多位前缀树(V.Srinivasan和G.Varghese的FasterIPlookupsusingcontrolledprefixexpansion,ACMTransactionsonComputerSystems,Feb:l-40,1999)、形移(shapeshifting)前缀树(H.Song,J.Turner和J.Lockwood的ShapeshiftingtriesforfasterIProutelookup,Proceedingsof13thIEEEInternationalConferenceonNetworkProtocols,2005)和混合形移前缀树(W.Lu和S.Sahni的Succinctrepresentationofstaticpacketclassifiers,UniversityofFlorida,2006)。其他早期的分割方案都局限于一个前端数组和一个级别的(one-level)前缀分割。当前分割的表的跨距(stride)通常是固定的并且不依赖数据。而且,早期的分割方案使用相同的库结构(basestructure)来表示所有的分割。尽管现有的方案被设计为将更新所需要的存储器访问的数量保持在可接受的水平,但是它们可能增加最差情况下查找所需要的存储器访问数量,并且还增加存储该结构所需要的总存储量。(参见M.Ruiz-Sanchez,E.Biersack和W.Dabbous的SurveyandtaxonomyofIPaddresslookupalgorithms,IEEENetwork,2001,8-23以及S.Sahni,K.Kim和H.Lu的Datastructuresforone-dimensionalpacketclassificationusingmost-specific-rulematching,InternationalSymposiumonParallelArchitectures,Algorithms,andNetworks(ISPAN),2002,3-14)因此,需要一种对查找提供更少的存储器访问,及更少的存储需求总量的方法。
发明内容本发明主要涉及一种用于分割表的方法,所述方法解决了和/或显著消除了现有"a术中的一个或更多问题、限制和/或缺点。本发明的目的是提供一种分割机制,其可以对查找提供更少的存储器访问,以及更少的存储需求总量。本发明的其他优点、目的和特性,部分将在接下来的描述中陈述,部分对于本领域技术人员基于下面的分析将是明显的,或者可以从本发明的实践中得到。可以通过所述结构,特别是书面的说明书和权利要求以及附图指明的结构来实现并获得本发明的目的和其他优点。为达到这些目的和其他优点,并且依照此处所概括的和广泛描述的本发明的目的,提供了一种用于递归地分割静态ip路由表的分割机制,包括二进制前缀树T,其表示用于路由分组的所有可能的目的地址的前缀集,所述前缀树T包括第一级别分割和下一级别分割,其中所述第一级别分割包括子前缀树和辅助前缀树(auxiliarytrie),其中通过选择跨距s来形成所述子前缀树,其中所述子前缀树节点包括1)从T的根R到所述子前缀树的根N的路径Q(N),2)用于下一级别分割的跨距s,3)具有下一级别完全散列函数特征的掩码,及4)用于所述下一级别分割的关于哈希表的指针;并且其中所述辅助前缀树表示具有比所述第一级别分割的跨距s小的级别l的前缀,其中所述辅助前缀树的节点包括所述才艮R;其中第一级别分割的数量是IDs(R)l+1,其中D"R)表示根R的所述1级别后代,其中l=s。随后,通过对每个ID"R)I+1分割递归地重复所述第一级别分割的子前缀树的构成,来形成所述下一级别分割。本发明的另一个方面,提供了一种使用所述数据结构来执行查找的方法,包括由哈希表的条目的第一位或前三位来标识分割的哈希表条目类型,所述条目类型包括类型1,其表示被进一步分割为下一级别分割的分割,类型001,其表示叶子分割,类型010,其表示由库结构表示的分割,以及类型000,其表示未使用的哈希表条目;从目的地址d剥去前s位,其中s是从前缀树的根R到所述子前缀树分割的根N的跨距,其中所述前s位定义了用于索引到所述哈希表的关键字;并且1)如果所述条目类型是所述类型000或者如果所述前s位与所述哈希表中的关键字不匹配,则执行辅助分割的搜索,2)如果所述条目类型是所述类型001,则执行所述叶子的搜索,3)如果所述条目类型是所述类型010,则执行所述库结构的搜索,或者4)如果所述条目类型是所述类型1,则通过重复所述用于执行查找的方法来执行所述下一级别分割的搜索。本发明的另一方面,提供了011条目类型,其表示被进一步分割到下一级别分割的分割,其中当所述分割跨距为1时,通过带有2'个条目的前端数组来表示所述分割。可以理解,本发明的前述概括描述和接下来的具体描述都是示例的和解释性,并且意在如请求保护的那样提供本发明的进一步解释。图1A和lB示出分割二进制前缀树T的跨距s的表示;图1A示出前缀树T,而图1B示出哈希^^示。图2是^^希表的条目类型的表示。图3是用于以基本策略进行搜索的算法。图4是用于以叶子推进版本A进行搜索的算法。图5示出IPv4表中查找所需要的存储器访问的图^示。图6示出IPv4表所需要的总存储量的图表表示。图7示出IPv6表中查找所需要的存储器访问的图^示。图8示出IPv6表所需要的总存储量的图表表示。应该理解,在某些情况下由于计算效率或维护方便的原因,示例性流程图的框的顺序和关系可由本领域4支术人员重新安排或重新关联。M实施方式如图中所示和接下来描述的本发明提供了一种用于递归地将大型静态路由表分割成更小的表的方法。可以使用已知的静态路由表结构来表示更小的表。在一个实施实例中,可以使用多位前缀树(MBT,multi-bit-trie)来表示更小的表,如V.Srinivasan和G.Varghese的FasterIPlookupsusingcontrolledprefixexpansion,ACMTransactionsonComputerSystems,二月1-40,1999中所教导的。在另一实施实例中,可以使用混合形移前缀树(HSST,hybridshapeshiftingtrie)来表示更小的表,如W.Lu和S.Sahni的Succinctrepresentationofstaticpacketclassifiers,UniversityofFlorida,2006中所教导的。本发明的实施例可以允许多级别分割。在进一步的实施例中,可以选择库结构的异构集合(heterogenouscollection)来优化存储的使用。在实施例中,不同的方法,例如前端数组方法和带有辅助分割的哈希表方法,可以用于记录(keeptrackof)前缀集的分割。在这种实施例中,可以通过动态编写的使用来选择用于每个分割的最佳方法。在一个使用前端数组来记录分割的实施例中,其中库结构是多位节点,递归的分割可以被减少至跨距可变的前缀树(variable-stridetries)。在一个实施例中,可以^^下文描述的那样来实现递归分割。参考图1A,可以通过二进制前缀树T来表示给出的前缀集。可以选择跨距s用于将该二进制前缀树分割成子前缀树。T的根R的级别1后代可以由D,(R)表示,其中根处于级别1=0。因此,Do(R)是R并且D,(R)是R的孩子。当以跨距s分割前缀树时,以节点N6Ds(R)为根的每个子前缀树ST(N)定义了路由表的分割。这里0〈s〈T.height+l,其中T.height是存在R的后代的最大级别(level)。因此当s=T.height+1时,DS(R)=0。除了由Ds(R)定义的分割,可以有辅助分割L(R),其通过那些长度小于9所选的跨距s的前缀来定义。L(R)中的前缀可以是那些存储在Di(R)中的前缀,其中0<i<s,从而分割的总数目是IDs(R)l+l。这些分割被称为T的第一级别分割。为了记录T的第一级别分割,可以构造带有完全散列函数(perfecthashingfunction)的哈希表,用于由NGDs(R)定义的分割。在本发明的一个实施例中,当s=T.height+l时,所述哈希表是空的并且L(R)二T。这里,T可以由诸如MBT或HSST的库结构来表示。在进一步的实施例中,当s<T.height+1时,上述分割才几制可以;故递归地应用到每个ID"R)I+1分割,以得到更低级别的(或下一级别)分割。然而,当NGDs(R)是叶子时,与相应的前缀相关的下一跳可以被直接存储于哈希表中。图1B示出哈希表的表示。参考图1B,用于L(R)的数据结构的根可以^皮放置到存储器中与哈希表临近的位置。位字符串(bitstrings)Q(N),NeDs(R)定义了用于索引到(indexinto)哈希表的关键字。在一个实施例中,完4^列函数可以由J.Lunteren的出版于ProceedingsICCCN,2001年的"SearchingverylargeroutingtablesinfastSRAM",以及出版于ProceedingsGlobecom,2001年的"Searchingverylargeroutingtablesinwideembedded111611107''来定义。因此,在优选实施例中,哈希表中的每个条目都可以表示四种消息类型之一类型l:^L进一步分割为更低级别分割的分割类型001:叶子分割类型010:由库结构表示的分割类型000:未使用的哈希表条目参考图2,对于类型l的条目,可以使用一位来标识条目类型。此夕卜,从根R到分割的根N的路径Q(N)、下一级别分割的跨距、表示下一级别完全軟列函数特征的掩码(mask)、以及对于用于下一级别分割的哈希表的指针,可以存储于存储器中。对于剩余的三种类型,可以使用三位来标识条目类型。对于条目类型-001,可以存储Q(N)和与存储在节点N中的前10缀相关联的下一跳。对于类型-010,可以存储Q(N)和对于用于分割的库结构的指针。类型-000条目可以被保留为未使用,并不存储附加的信息。由于相同第一级别分割中的前缀对它们的前1位达成一致,所以在进行更低级别的分割之前,可以将这些1位从相同的第一级别分割的前缀中移除。因此,在一个实施例中,可以通过长度为0的前缀来替换长度为1的前缀。可以在被依照本发明的实施例进行分割的路由表中执行查找功能。图3示出一种用于在路由表中执行查找的算法,所述路由表已经被按照上述实施例进行分割并且具有至少一个级别的分割。初始调用指定了第一级别分割、跨距s、第一哈希表条目ht的地址、完全散列函数h(由其掩码来指定)、以及目的地d。在另一个实施例中,可以使用受控叶子推进(controlledleafpushing)来减少查找所需要的最坏情况的存储器访问数量。可以与未分割路由表中使用的标准叶子推进(standardleafpushing)类似地执行受控叶子推进,如V.Srinivasan和G.Varghese在FasterIPlookupsusingcontrolledprefixexpansion,SIGMETRICS,1998中所述。在受控叶子推进中,没有"被剥去"或"被移除"的长度为0的前缀的每个库结构,可以被给予长度为0、其下一跳与最长前缀的相同的前缀,所述最长前缀与从该分割中的所有前缀剥去的位相匹配。在实施实例中,库结构可以具有被剥去的前缀00,01,101和110。所有这四种前缀可以是已经具有相同数量的从它们的左侧剥去的位。被剥去的位对于所有四种前缀都是相同的。假设被剥去的位是OIO,那么由于该分割没有长度为0的前缀,所以该分割继承长度为o的前缀,该前缀的下一跳对应于前缀的初始集中*、0、oi和oio中的最长的。假i殳所述初始前缀集包括缺省的前缀,上述长度为o的前缀的继承确保分割中的每个搜索都找到匹配的前缀从而找到下一跳。本方法的实施例与查找算法lookupA在图4中示出。在本发明的优选实施例中,可以为每个完成的分割选择合适的跨距。在一个实施例中,可以通过建立动态编写的递归来选则跨距。令B(N,l,r)为所需的最小存储量,以通过库结构表示级别0到以N为根的T的子前缀树的l。在一个特定的实施例中,库结构可以是MBT或HSST。在特定的实施例中,库结构可以是MBT或HSST。在该形式的库结构中的查找可使用不超过r的存储器访问。令H(N,l)为跨距l哈希表所需的存储量,所述哈希表用于从T的节点N到D1(N)中的节点的路径。令C(N,1,r)为通过级别0直到ST(N)的1定义的子前缀树的递归分割表示所需的最小存储量。由递归分割的定义,对于C(N,1,r)中的1的选择在1和N.height十1的范围之间,其中N.height是节点N的高。当1等于比N.height多一时,ST(N)由库结构来表示。因此,其符合<formula>formulaseeoriginaldocumentpage12</formula>上述递归假设不需要存储器访问来确定整个路由表是否已被存储为库结构。而且,如果路由表已经被分割,则不需要存储器访问来确定用于第一级别分割的跨距和掩码,以及辅助分割的结构。如果该信息存储在存储寄存器中,则决定跨距和掩码是可行的。然而,随着穿过分割层级进行搜索,需要从每个哈希表提取该信息。因此,每个类型1哈希表条目可以存储该信息,或者该递归可以被改变以说明在分割的每级需要的附加的存储器访问,以得到该信息。在前一种情况中,增加了每个哈希表条目的大小。在后一种情况中,递归变为<formula>formulaseeoriginaldocumentpage12</formula>(3)<formula>formulaseeoriginaldocumentpage12</formula>(4)对于现实中的路由表的实验表明,当辅助分割被限制为通过库结构来表示时,存储量需求减少。在该限制下,动态编写的递归变为min{//(#,/)+翠,/—l,r-1)+y"C必,妙"r—l)n,r〉0(5)C(7V,/,0)=ooC(N,l,r)的第二个参数l通常是节点的高N.height,因此可以丢弃该第二个参数。在本发明的另一个实施例中,通过允许用于记录分割的方法是哈希表附加辅助结构用于其长度小于所述跨距的前缀,或者当所述分割跨距为1时是带有2'条目的简单数组,优化是可能的。包括该增加的灵活性,但保持辅助分割祐束示为库结构的限制,该动态编写的递归变为min+翠,/-1,,'—1)+yY'(Q,g/^妙,,/l)Lmin{2'c+7"C(Q,0如一,r-1)}}(7)C(W,/,0)=oo(8)其中c是前端数组的每个位置需要的存储量。再者,可以丢弃C中的第二个参数。包括前端数组作为记录分割的机制需要额外的第五条目类型(Oll)用于哈希表条目。指示使用前端数组表示的分割的该第五类型,包括用于关键字Q(N)的字段,用于下一级别分割的跨距的另一字段,以及关于下一级别前端数组的指针。该第五条目类型(011)与第一类型(1)相似。两者都表示被进一步分割为下一级别分割的分割,并且包括用于关键字Q(N)和下一级别跨距的字段。然而,类型(1)条目包括指向下一级别哈希表的指针和用于该哈希表的掩码,而类型(011)条目包括指向下一级别前端数组的指针。尽管优选的是在递归分割的路由表中所有库结构都是相同类型的(即全部是MBT或全部是HSST),在本发明的另一实施例中,解决动态编写递归允许库结构的混合是可能的。下面是本发明的一个实施例的实现的实例。实例1-36位i殳计在一个实施实例中,对每个哈希条目分配36位。对于IPv4,使用了8位用于Q(N),2位用于下一级别分割的跨距,8位用于掩码,以及17位用于指针。尽管对Q(N)分配了8位,跨距被限制为从五到八。因此,两位足够用来表示下一级别跨距。17位指针的使用使得能够索引达到9Mbits(217x72)的SRAM。对于IPv6,相应的位的分酉己分另'J为7、2、7和19。对于IPv6,跨距被限制为从四到七。因此七位足够用于Q(N)并,且二位足够用于下一级别跨距。19位指针能够索引36MbitSRAM。对于下一跳字段,为IPv4和IPv6两者都分配12位。对于库结构,加强的库被与HSST的端节点优化(EBO,end-nodeoptimization)版本一起4吏用,因为示出它们是用于静态路由表的最有效的路由表结构。非叶子EBO节点具有孩子指针,并且一些EBO叶子节点具有关于下一跳数组的指针。10位被分配给孩子指4十。这允许索引1024个节点。可以对W.Lu和S.Sahni在Succinctrepresentationofstaticpacketclassifiers,UniversityofFlorida,2006,中开发的动态编写的方程进行修改,用于最优EBO的构建,使得拒绝了需要多于1024个节点的EBO。对于下一跳数组指针,分配了22位。因为下一跳数组指针的数目是通过路由表中前缀的数目来限制的,并且下一跳数组存储在与存储其余的EBO数据结构不同的存储部分,对于下一跳数组指针分配的22位足够用于222>4百万前缀。对于下一跳本身,分配了12位。实例2-72位设计在另一个实施实例中,对每个哈希表条目分配72位。对于IPv4和IPv6两者,使用了17位用于Q(N),五位用于下一级别分割的跨距,17位用于掩码,以及19位用于指针。跨距被限制在1和17之间。而且,用于L(R)中的被剥去的前缀*(如果有)的下一跳被存储在每个哈希表条目中。实现分割使得在每个节点N,在使用被表示为EBO的L(R)分割以及用于剩余分割的(完全)散列表,和执行L(R)-(^中被剥去的前缀的前缀扩展之间做出选择,将这些扩展的前缀分布到剩余的分割中,然后构造哈希表用于修改的分割集。类型l节点使用指定的位,用以在它们可能指向的不同的哈希表类型之间进行区分。实验结果为了评估递归分割机制的效果,使用MicrosoftVisualC十+编译器以02优化级别编译了用于所描述的实例的C十+代码,并在3.06GHz的Pentium4PC上运4亍。为了基准目的,路由表驻留在QDRIISRAM(双脉冲),其支持一次存储器访问72位的数据搜索。所述递归分割机制与下列相比较1)一个级别的分割机制OLP,其是Lampsonetal中使用的前端数组的归纳(Lampson,Srinivasan和Varghese,IPlookupusingmulti-wayandmulticolumnsearch,IEEEINFOCOM,1998);以及2)非分割的EBO。OLP仅仅进行一个级别的分割并使用EBO作为库结构。然而,不像Lampsonetal将前端数组的大小固定为216,OLP选择最优的、依赖于数据的大小用于前端数组。注意使用大小为0的前端数组等于没有使用前端数组。在给定的数据集上,发现OLP比限制本发明的递归分割机制使得仅在根级别进行分割要好。编写所有的程序,以便构造最小化最差情况下查找所需的存储器访问,以及最小化用以存储构造的数据结构所需的总存储量的查找结构。使用了六个IPv4路由表Aads、MaeWest、RRCOl、RRC04、AS4637和AS1221。这些路由表中前缀的数目分别是17486、29608、103555、109600、173501和215487。表1示出用于测试的查找结构的存储器访问数目和存储量需求。RP(k)(K=4,5)表示空间最优递归分割结构,其每个搜索最多需要k存储器访问。图5和6绘出此数据。表1:IPv4表所需的存储器访问和总存储量(K字节)15数据库36位条目72位条目OUPEBORP(4)RP(5)RP(4)RP(5)访问存储量访问存储量Aads77599061414168MaeWest124981431004186113RRC0139230044230945076335RRC04417318474327426876354AS463759147366948547176530AS12218616111080634530416664对于存储器访问计数,RP(4)在所有六项数据集上优于EBO—个或两个访问。OLP在给定数据集中的三项上优于EBO—个访问,并在剩余的3项数据集上优于两个访问。对于存储器访问计数,RP(5)在六项数据集中的四项上优于EBO—个访问。在最大数据集(AS1221)上,OLP需要比RP(4)多一个访问,并在剩余的五项上与RP(4)持平。在所有的测试集上,36位实现比相应的72位实现需要更少的存储量。实际上,36位实现所需的在72位实现所需存储量的80%到98%之间,平均值为92%,带有6%的标准偏差。表2给出通过使用36位条目的RP(4)的存储量需求进行归一化(normalized)的查找结构的存储量需求。比起带有36位条目的RP(4),OLP需要更多的存储量,从21%到544%,而EBO需要更少的存储量,在9%到25%之间。在所有六种表示中,使用36位条目的RP(5)是存储效率最高的。比起EBO,RP(5)的该实现使用更少的存储量,在5%到13%之间;平均降低是,存储量需求为10%,标准偏差为3%。表2:对于由使用36位条目的RP(4)的存储量需求归一化的IPv4存储量需求的统计算法最小值最大值平均值标准偏差4吏用36位条目的RP(5)0.710.800.770.03使用72位条目的RP(4)1.131.251.160.0516<table>tableseeoriginaldocumentpage17</column></row><table>总的来"i兌,RP(4)的36位实现在最差情况的存储器访问和总存储量需求上均优于OLP,结果是在最差情况的存储器访问上比EBO有25%到50%的降低。该降低的出现以所需存储量的增加为代价,在10%和37%之间。RP(5)的36位实现改进了查找时间,相对于库EBO结构高达20%,并且平均减少了10%的总存储量。对于IPv6实验,使用了833前缀的AS1221-Telstra路由表以及六个综合IPv6表。由于目前IPv6地址分配机制最多使用64位,因而长于64的前缀被从AS1221-Telstra表移除(参见M.Wang,S.Deering,T.Hain和LDunn,Non-randomGeneratorforIPv6Tables,12thAnnualIEEESymposiumonHighPerformanceInterconnects,2004)。对于综合表,包括001及(51^的13随机位的16位字符串被预留(prepend)^:个IPv4前缀(参见IPv6AddressAllocationandAssignmentPolicy(APN1C))。如果该预留没有使前缀长度至少加一倍,则增补足够数目的随机位,使得前缀的长度翻倍。在该预留和可能的增补之后,最后的位被从前缀的四分之一丢弃,以维持偶数长度前缀与真实路由表中观测的奇数长度的3:l的比例。给予每个综合表与IPv4表相同的名称,所述综合表被从该IPv4表合成。AS1221-TelstraIPv6表被命名为AS1221*,以与从IPv4AS1221表合成的IPv6表区分。表3给出对于IPv6数据集的存储器访问的数量和存储量需求。图7和8绘出此数据。表3:IPv6表所需要的存储器访问和总存储量(K字节)<table>tableseeoriginaldocumentpage17</column></row><table><table>tableseeoriginaldocumentpage18</column></row><table>对于IPv4实验的情况,在查找复杂度方面RP(4)是最优的。尤其是,对于查找,RP(4)较EBO需要一到三个更少的存储器访问。RP(4)和OLP在七项数据集中的五项上持平。在一项数据集上,RP(4)需要3个更少的存储器访问,在另一项,其需要一个更少的访问。RP(5)在五项数据集上优于EBO—或两个访问并在剩余的两项上持平。对比IPv4表的实验,递归分割的72位实现较36位实现普遍需要更少的存储量。在递归分割的14项测试(RP(4)和RP(5))的11项中,72位实现比36位实现所需要的存储量少,而在剩余的三项测试中多。由使用72位条目所需的存储量进行归一化的使用36位哈希条目的递归分割结构的存储量范围为0.9到49.9。数据集AS122P遇到最大的不同。当排除AS122P时,用于剩余六项数据集的归一化的数量在0.卯和1.15之间,并且平均值和标准偏差为1.00和0.00。对于数据集AS1221*,PR(4)的72位实现将EBO的存储器访问降低了三,但是需要17倍的存储量。RP(5)的相同实现比库EBO结构需要24%的更多的存储量。另一方面,RP(6)需要3.8K字节,因此,17%的存储量降低伴随一个存储器访问的降低。对于该数据集,OLP较EBO没有带来改进,因此,OLP结果使用大小为0的前端表。对于剩余的六项数据集,RP(5)需要比EBO略少的存储量。在六项数据集的五项中,OLP比RP(4)需要更多的存储量。在第六项数据集AS1221上,OLP使用更少的存储量。然而,当对于最差情况的存储器访问使用相同预算时,使用72位条目的RP(5)在AS1221上比OLP需要9%的更少的存储量。表4:由使用72位条目的RP(4)所需的存储量进行归一化的IPv6数据。这里数据集AS122P被排除算法最小值最大值平均值标准偏差使用36位条目的RP(4)O.卯1.151.000.114吏用72位条目的RP(5)0.740.980.860.10使用72位条目的RP(5)0.730.970.850.10OUP0.811.671.230.31EBO0.761.000.870.11表4表示对于剩余的六项数据集,由使用72位条目的RP(4)所需的存储量进行归一化的统计。如所看到的,由使用72位条目的RP(4)归一化的EBO的存储量范围为0.76到1.00,平均值和标准偏差为0.87和0.11。对于OLP相应的归一化数字为0.81、1.67、1.23和0.31。虽然OLP和递归分割都能够提高EBO的查找性能,但是OLP以大得多的存储量开销来实现。实验表明递归分割超过标准前端数组方法的甚至归纳版本的优越性。对于IPv4表,带有36位条目的递归分割优于使用更大的哈希表条目(例如72位),而对IPv6表,72位条目通常产生降低的存储量需求。使用甚至更大的哈希表条目(例如144位)没有产生关于IPv4和IPv6测试数据的RP(4)或RP(5)所需的存储量上的降低。基于前述描述,本发明可以使用计算机程序或包括计算机软件、固件、硬件或它们的任何组合或子集的工程技术来实现。任何如此产生的有计算机可读代码装置的程序,跟据本发明,可以在一个或更多计算机可读介质内实施或提供,从而做出计算机程序产品,即一种产品。计算机可读介质可以是,例如,固定的(硬)盘、软盘、光盘、磁带、可编程逻辑设备、诸如只读存储器(ROM)的半导体存储器等等,或诸如因特网或其他通信网或链路的任何发送/接收介质。可以通过从一种介质直接执行代码、通过从一种介质将代码拷贝到另一种介质、或通过在网络上传送该代码来制作和/或使用包括计算机代码的产品。计算机科学领域的技术人员将能够容易地将如所描述的那样创建的软19件与适合的通用或专用计算机硬件,包括可编程逻辑设备相结合,以创建实施本发明的方法的计算机系统或计算机子系统。用于制作,使用或出售本发明的设备可以是一个或更多处理系统,包括但不限于,中央处理单元(CPU)、存储器、存储设备、通信链路和设备、服务器、I/O设备或一个或更多处理系统的任何子部件,包括实施本发明的软件、固件、硬件或它们的任何组合或子集。可以从键盘、鼠标、笔、语音、触摸屏或人类可以将数据输入到计算机中的任何其他装置来接收用户输入,包括通过诸如应用程序的其他程序。此处参考或者引用的所有专利、专利申请和出版物,都通过引用,在它们与本说明书的明确教导一致的p艮度内,将它们完全并入,包括所有的图和表。应该理解,此处描述的实例和实施例仅用于说明的目的,并且将对本领域技术人员带来各种修改或改变的暗示,并且应该包括在本发明的精神和4又利范围内。权利要求1.一种其上具有存储的数据结构的计算机可读介质,所述数据结构包括二进制前缀树T,表示用于路由分组的所有可能目的地址的前缀集,所述T包括第一级别分割,其中所述第一级别分割包括通过选择用于所述第一级别分割的跨距s形成的子前缀树,其中0<s≤T.height+1,其中T.height是其上具有根R的后代的最大级别1,其中所述子前缀树的节点包括从T的所述根R到子前缀树的根N的路径Q(N),用于下一级别分割的跨距s,表示下一级别完全散列函数特征的掩码,以及关于用于所述下一级别分割的哈希表的指针;辅助前缀树,表示具有小于所述第一级别分割的跨距s的级别l的前缀,其中所述辅助前缀树的节点包括所述根R;其中,第一级别分割的数量是|Ds(R)|+1,其中Ds(R)表示根R的级别l后代,其中l=s,通过对每个所述|Ds(R)|+1分割递归地重复所述第一级别分割的子前缀树构成,来形成所述下一级别分割。2.如权利要求1所述的数据结构,其中,通过从包括MBT和HSST的组选择的库结构来表示所述前缀树T、所述第一级别分割、所述辅助前缀树以及所述下一级别分割中的至少一个。3.如权利要求2所述的数据结构,其中所述库结构是HSST的端节点优化版本。4.如权利要求1所述的数据结构,其中每个节点被分配36位,8位用于所述掩码,8位用于具有被限制为从5到8的跨距的所述路径Q(N),2位用于所述下一级别分割的跨距,以及17位用于所述指针。5.如权利要求1所述的数据结构,其中每个节点被分配36位,7位用于所述掩码,7位用于所述路径Q(N),2位用于所述下一级别分割的跨距,以及19位用于所述指针。6.如权利要求1所述的数据结构,其中每个节点被分配72位,17位用于所述掩码,17位用于所述路径Q(N),5位用于所述下一级别分割的跨距,以及19位用于所述指针。7.—种用于使用数据结构执行查找的方法,所述数据结构包括含有辅助分割和子前缀树分割的前缀树T的第一级别分割,以及具有一个或更多用于记录T的所述第一级别分割的条目类型的哈希表,所述方法包括由所述哈希表的条目的第一位或前三位标识分割的所述条目类型,其中类型1条目类型表示被进一步分割为下一级别分割的分割,其中类型001条目类型表示叶子分割,其中类型010条目类型表示由库结构表示的分割,以及其中类型OOO条目类型表示未使用的哈希表条目;从目的地址d剥去前s位,其中s是从所述前缀树的根R到所述子前缀树分割的根N的跨距,其中所述前s位定义了用于索引到所述p合希表的关键字;以及如果所述条目类型是所述类型000,或者如果所述前s位与所述,合希表中的关键字不匹配,则执行所述辅助分割的搜索,以及返回所述目的地址d;如果所述条目类型是所述类型001,贝'J执行叶子的搜索,以及返回用于所述目的地址d的下一跳;如果所述条目类型是所述类型010,则执行所述库结构的搜索,以及返回关于所述目的地址d的指针;如果所述条目类型是所述类型1,则通过重复该用于执行查找的方法来执行所述下一级别分割的搜索。8.如权利要求7所述的方法,其中所述数据结构还包括类型011条目类型,其中所述类型011条目类型表示用于记录分割的前端数组分割,其中所述前端数组分割的节点包括关键字Q(N)、用于下一级别分割的跨距s以及关于所述下一级别前端数组的指针,所述方法还包括使用所述前端数组分割来记录所述分割。9.如权利要求8所述的方法,还包括用于具有级别1的前缀的跨距1,所述级别1小于用于所述下一级别分割的s,其中当所述分割跨距是1时,所述前端数组分割具有2'个条目。全文摘要一种被递归分割的静态路由表,所述数据结构包括含有子前缀树的第一级别分割和辅助前缀树。所述子前缀树的节点包括从前缀树T的根R到子前缀树的根N的路径Q(N)、用于下一级别分割的跨距s、表示下一级别完全散列函数特征的掩码以及关于用于所述下一级别分割的哈希表的指针。通过从包括MBT和HSST的组选出的库结构表示前缀树T、第一级别分割、辅助前缀树及下一级别分割中的至少一个。文档编号H04L12/28GK101507191SQ200780031667公开日2009年8月12日申请日期2007年8月24日优先权日2006年8月25日发明者S·K·萨尼,卢文成申请人:佛罗里达大学研究基金公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1