IPv6路由表的查找方法

文档序号:7589591阅读:5822来源:国知局
专利名称:IPv6路由表的查找方法
技术领域
本发明涉及下一代互连网络协议,更具体地,涉及一种IPv6路由表的查找方法,能够快速有效地对核心网络的IPv6路由表进行查找。
背景技术
Internet用户的不断增长以及多媒体应用的日益普及,使得Internet网络中的数据流量成指数级增加。物理链路和连接节点是构成Internet网络的两个基本要素。光传输技术研究的突破,使得物理链路的传输速率可以满足Internet网络数据流量的增长。而作为Internet网络连接节点的路由器,由于内部需要进行复杂的数据处理,难以跟上Internet网络流量增长的速度。如何设计和实现高性能路由器成为Internet领域的研究热点。
路由器在网络中负责对分组进行路由转发。转发分组时,路由器需要基于每个分组头部的目的IP地址,在路由表中进行路由查找,找到分组正确的下一跳出口。在高性能路由器中,接口速率越来越高,所以相应的内部转发处理也必须越来越快,才能与之匹配。而快速路由查找技术是提高路由器转发性能的关键。
在IP路由表中,路由地址被称为前缀,用符号P/L来表示,其中P代表路由前缀或网络地址,L代表该网络地址的长度。路由查找的过程是一个最长匹配查找的过程,即地址前缀查找不仅需要与前缀的比特位进行匹配查找,而且还需要考虑地址前缀的长度,选择所有匹配项中最长匹配的那一个。最长匹配查找使得路由查找变得非常复杂,成为提高路由器性能的一个关键因素。尤其是随着核心路由器接口速率的不断攀升,以及所支持转发表项数目的不断增加,路由表查找技术已经严重制约了路由器性能的进一步提高。
下一代互联网络协议(IPv6)的出现使得快速路由查找变得更加困难。与采用32位地址的IPv4比,IPv6采用128位地址,查找一个IPv6地址前缀需要花费更长的时间。虽然IPv6协议为了在设计之初就考虑到这个问题,提出了采用层次结构的地址分配策略,通过路由汇聚来缩小路由表等手段,但以下因素导致IPv6路由查找不能完全利用这种层次分配机制来优化(1)路由汇聚时要求地址分配和拓朴空间保持一致,而IPv6地址分配是基于提供商的,并不能保证这种一致性,所以汇聚的效果难以保证。(2)例如源路由和任意播(AnyCast)等新业务需要主机路由,增加了IPv6路由表的复杂性。(3)未来可能出现的新业务的增加会导致IPv6地址需求的极大增加,IPv6路由表也会变得复杂。
目前存在许多IP查表技术,绝大多数是针对IPv4查表技术提出的,没有充分利用IPv6前缀分布的特点,这使得它们不能扩展到128位的IPv6长地址空间,所以就无法直接应用到IPv6路由查找中。主要有如下问题(1)不能实现IPv6路由表的高速查找;(2)采用复杂的数据结构和计算手段,导致路由表更新的时间非常长,不能实现增量更新;(3)需要较大的存储空间。TCAM技术虽然合适于IPv6路由查找,但TCAM的成本高,功耗大,集成度低,其技术还不成熟。且TCAM的IPv6查找速度还受限于系统总线带宽,不能真正提供0(1)的查找速度,这是因为IPv6路由表目的宽度远远超过了现有系统的总线宽度。
IP路由查找中最重要的是路由转发表结构的设计,转发表的结构决定了路由查找方式和路由更新方式。表1显示了路由转发表的逻辑结构,按路由表的存放形式可把路由查找方法分为两类一种是基于通用存储器的查找方法,一种是基于专用存储器的查找方法。
表1路由转发表的逻辑结构

(1)基于通用存储器的查找方法在基于通用存储器件的路由查找方案中,一般是把路由表表示为一种精心设计的数据结构,然后把这个用于搜索的数据结构放到SRAM(Static Random Access Memory)或SDRAM(Synchronous DynamicRandom Access Memory)中。路由搜索过程由微处理器执行软件来实现,或者由硬件控制逻辑实现的IP查表专用电路来实现。软件实现方式比较灵活,而硬件实现方案可以通过流水线等方式来提高路由查找的吞吐率。路由搜索结构有多种形式,其中,一种多分支Trie(Multi-bit trie)结构因其简单灵活的特点而应用最为广泛,下面对其进行介绍。
Trie是一种树状数据结构。图1(a)示出了用二进制trie结构(树中每一个内部结点最多包含两个子结点)来表示的地址前缀表,图1(b)显示了其对应的4分支Trie树。在多分支Trie中,一个路由前缀地址被从头开始分割成若干比特位组,这些比特位组的值被依次用来决定继续搜索树的哪一个分支。将每一次查找中需要检查的比特数称为查找步宽(stride)。二分支trie树实际上就是查找步宽为1的trie树。查找步宽大于1的trie树被称为多分支trie树(multibit trie),对于查找步宽为k的多分支trie树来说,每一个结点的最大分支数为2k。查找步宽可以是固定的,也可以是可变的。如32比特的IP查表可以依次采用10-10-8-4bit的查找步宽。
图1显示的是Trie的逻辑结构,而多分支trie的物理结构可以用图2表示,整个trie结构由一些通过指针链在一起的Trie节点组成,而每个trie节点由一组Trie表目数组(201)构成,其中的每一个条目包含两个指针指向下一个Trie节点的指针(nt,203)和指向下一跳转发信息表目的指针(nh,202)。nt和nh可以同时有效,也可能只有一个有效。当二者同时有效时,表示该表目对应着一个前缀,同时该前缀下还有更长的子前缀。当nt有效而nh无效时,表示该表目是一个内部过渡节点;反之则表示一个从Trie的根到当前条目路径上的最长前缀。
IP查表过程如下所述由trie的顶节点出发,按照设定的步宽,依次提取目的IP地址的比特位组在表示trie节点的数组中索引,确定下一步需要搜索的trie节点,搜索过程一直持续到最末端的节点或者目的地址的所有比特用完为止。在搜索过程中,记下最后一次经过的路由前缀节点的下一跳输出端口指针(pn),搜索结束后,该值即为IP查表的结果。
采用这种结构,如果最长的前缀长度为W,查找步宽为k,最坏情况下一次查找需要W/k次存储器访问。多分支trie树查找过程的每一步需要检查多个比特,因此它不能支持任意长度的地址前缀。对于前缀长度恰为k的整数倍的IP前缀,无需进行任何改变,但是对于前缀长度不是k的整数倍的IP前缀,则需要对该前缀进行扩展,使扩展之后的路由前缀的长度为k的整数倍,此时一个路由前缀要复制到多个存储表项中,这会造成存储空间利用率下降。步宽的选择对于多分支trie树的整体性能起到了决定性的作用,较大的步宽可以提高查找的速度,但是trie树的存储需求也相应增大了;较小的步宽虽然可以降低存储空间的使用,但是查找速度会有相应的下降。一种较合适的方案就是根据实际地址前缀的分布特点来选择合适的步宽,从而达到优化算法存储空间的目的。其它一些基于多分支trie的查找方法也就是如何在路由查找速度、算法消耗的存储空间和路由更新复杂度等尺度上进行折衷。
(2)基于专用存储器的路由查找方案基于专用存储器的路由查找方案是将原始路由列表直接存放起来,然后利用硬件控制逻辑并行查找整个路由表,以达到高速查找的目的,这方面的代表是TCAM(Ternary Content Addressable Memory)。TCAM是在CAM的基础上发展而来的。与CAM不同,TCAM通过保存关键字掩码的方式使得它可以保存任意长度的关键字表项。这种改进克服了CAM仅仅能够进行精确匹配查表的缺点,使得TCAM非常适合进行最长前缀路由的查找。
在基于SDRAM或SRAM结构的IP查表方法中,每次IP查表都需要进行多次存储器读操作,因而限制了IP查表性能的提高,且对于IPv6的扩展性较差。而TCAM使用并行技术,具有0(1)查找复杂度。所以TCAM是超高速IP查表的最佳解决方案,但它还不成熟,具有如下不足之处第一、与一般的随机存储器RAM相比,单位比特的TCAM更为昂贵,而且存储芯片的容量相对要小一些;第二、由于TCAM使用的是并行匹配比较方式,所以TCAM芯片的功耗较大。查找过程所有关键字表项都进行了比较,但是实际能够匹配上的关键字只是几项,因此大部分的比较操作都被浪费了;第三、TCAM需要保证前缀较长的路由保存在前缀较短的路由之前,这种顺序关系使得TCAM的路由更新工作变得相对复杂。目前TCAM技术还处于发展阶段。

发明内容
因此,本发明提出了一种可用于核心网络的快速有效的IPv6路由表地址查找方法,包括以下步骤a)将整个IPv6路由表分割成至少两个前缀子集;b)对前缀数目较多或前缀长度较长的前缀子集采用索引表进行检索,对前缀数目较少且前缀长度较短的前缀子集,利用多分支Trie树进行查找;以及c)在全局范围内利用至少两个微处理器模块来对每一部分前缀子集进行并行查找,在局部范围内利用路由预计算进行查找。
此外,当对每个部分采用多分支Trie树表示时,采用相应的查找步宽进行查找,以在保证查找速度的同时提高路由表的存储空间使用效率。
本发明方法充分考虑了IPv6地址前缀的分布模型特点,并采用了基于哈希表的快速索引、路由表分割和并行查找等技术来达到提高速度和实现路由表增量更新的目的。本方法能够十分有效地支持IPv6路由查找,不依赖于TCAM,可以在通用硬件平台上实现。


图1是现有技术的Trie结构示意图。
图2是多分支Trie的数据结构。
图3是根据本发明方法的IPv6前缀划分方案示意图。
图4是根据本发明方法的IPv6路由查找引擎结构示意图。
图5是路由器数据转发结构。
图6是网络处理器基本结构。
图7是IPv6路由查找引擎在网络处理器中的实现。
具体实施例方式
接下来,将参考附图,对本发明的实施例进行说明。
(1)基本思想和数据结构本发明中提到的方法采用多分支Trie树作为基本的查找结构。但考虑到IPv6地址比较长和IPv6前缀分布的特点,先把所有前缀按长度分成几个部分,例如,可以将前缀长度高于预定阈值的部分定义为长度较长部分,还可以将其中前缀数目多于预定阈值的部分定义为数目较多部分,而分别将剩余部分定义为长度较短部分或数目较少部分。然后对每个部分用多分支Trie树表示,并且结合其前缀分布特点来实施不同的查找策略。还对主要部分的前缀采用哈希表来快速索引和并行查找,以提高查找速度。
在对现有Ipv4路由表和Ipv6地址分配策略的分析的基础上,可以得到IPv6前缀分布的一些特点(1.1)IPv6前缀主要集中分别在某些长度上,在其它长度上,则很少存在IPv6前缀;(1.2)在长IPv6前缀中,中间很长一段比特位连续为0或1的前缀占很大比例。
在前缀划分和查找过程中,充分利用了IPv6前缀分布的这些特点,把整个IPv6前缀表分成n(为一个大于一的正整数)个前缀子集,如图3所示,这些前缀子集的特点可以分成若干类,说明如下306长度为1到n1位的前缀。这一部分前缀的数量会极少,甚至没有。如果存在,将其存放到查找引擎的内部缓存(Cache)里。307长度为n1+1到n2位的前缀。用一棵多分支Trie树表示(以下称之为Trie1,301)。这一部分的前缀分布比较稀疏,所以在查找速度允许的情况下尽量采用小步宽来查找,以提高存储空间的利用率。
308长度为n2+1到n3位的前缀。用一个快速索引表(以下称之位Hash1,302)和多个多分支Trie树表示(以下称之为Trie2,303)。这一部分是IPv6路由前缀的主要部分,前缀分布会比较密集,所以采用稍大一些的查找步宽来提高查找速度,同时也不会使存储空间利用率下降许多。快速索引表可以是哈希表,其每一个表目包含路由前缀前n2位所对应的Trie2的根地址以及前n2位地址在P1中的最长前缀匹配信息(以下称之为bmp),bmp用于缩短查找时间。
309长度为n3+1到n4位的前缀。这一部分的前缀分布会比较稀疏,且集中在Trie树的底部,但考虑到查找速度的需要,所以选择较大的查找步宽。用一个快速索引表(以下称之位Hash2,304)和多个多分支Trie树表示(以下称之为Trie3,305)。快速索引表是哈希表,每一个表目包含路由前缀前n3位所对应的Trie3的根地址。
在容易更新的快速索引表中保存一个最长前缀预计算信息域,其内容是在路由前缀更新时写入路由表的,这个域可以迅速缩小查找范围。但路由前缀关联多的索引表中不设置这个域,以免造成路由表更新困难,表目访问周期增加。
(2)查找引擎结构和路由查找过程图4示出了本发明的基本结构。整个查找引擎由m个微处理器模块(401),m个路由转发表(402)组成。微处理器内部提供缓存,哈希资源(403),存储单元访问接口,以及和控制处理器的接(405)等。此外还有微处理器之间的同步寄存器(406)和查找结果选择器(407)。m个处理器并行查找,每个微处理器模块负责若干个前缀子集的查找。和各个微处理器模块相连的转发表存储器存放其负责查找的前缀子集对应的路由转发表。控制处理器运行路由表管理软件来负责路由转发表的更新。
路由查找的基本过程描述如下
(2.1)目的IP地址被送到所有微处理器模块;(2.2)所有微处理器模块并行执行查找,将查找结果送到选择器。每个微处理器模块先执行快速索引操作,找到Trie树的根指针,然后在其指向的Trie树中查找。在查找的过程中,有的微处理器模块利用路由预计算来迅速缩小需要查找的路由前缀子集范围。同步寄存器负责各处理器模块之间的同步操作。
(2.3)结果选择器从多个查找结果中,选出最长匹配前缀。
(2.4)根据结果选择器输出的结果,访问下一跳转发信息表(408),得到最终的下一跳转发表信息。
(3)路由表更新Internet网络中,拓扑是动态变化的,路由也是动态改变的。路由器为了保证分组的转发正确,必须快速的对路由改变做出反映,及时的把新路由加入到路由表,并把过期路由从路由表中删除。路由更新的处理速度成为路由查找方案的重要评价指标。基于Trie的查找方法都具有“路由更新过程和路由查找过程类似“这个特点。而与基本的多分支Trie查找方法相比,本方法只是多了哈希表访问的过程,依然可以实现路由表的增量更新。本发明还通过以下特有手段来降低路由更新的复杂度,以确保在高速路由查找的同时实现快速路由更新的目的。
(3.1)前缀分割成多个部分,长前缀利用快速索引表来索引,缩短了在Trie树中更新的时间;(3.2)采取特定前缀长度来作为分割点,以确保各种存储单元空间大小的一致性,简化了存储空间分配管理;(3.3)只在局部范围内对最长前缀进行预计算,不会对路由更新时间有很大影响;(3.4)对于非常少的超短路由前缀只存放在处理器缓存中,不影响外部路由转发表的更新。
如图5所示,本发明中给出的IPv6路由表查找方法可用于高速IPv6路由器的转发引擎设计中。由于网络处理器的灵活性,新型的路由器通常使用网络处理器作为转发引擎。下面描述在网络处理器中如何实现本方法。
网络处理器是现代综合业务数据网络不断发展更新的产物,是一种基于可编程专用集成电路(Application-Specific IntegratedCircuit)结构的新一代片上系统(System on Chip)芯片,专门用于网络通信设备的开发。在网络处理器中实现本发明中给出的方法时,只要求网络处理器具有如下基本特点(1)在单个芯片上集成实现了基于多个微引擎和控制处理器核的高性能并行处理体系结构。
(2)支持多路存储器接口,包括SRAM和SDRAM。
如图6所示,现有的各种网络处理器基本都具备上面的特点,如Intel公司的IXP2400和IXP2800均可满足上述要求。可以采用如下的路由划分和查找过程首先,把整个IPv6前缀表分成四个部分(S0-S3),其中S0长度为1到F位的前缀,F是一个在16到24之间可以调节的参数。这一部分前缀的数量会极少,甚至没有。如果存在,将其存放到查找引擎的内部缓存(Cache)里。
S1长度为F+1到31位的前缀。从前缀的第1比特起开始查找,其查找步宽依次为6-6-6-6-7bit。
S2长度为32到64位的前缀。用一个快速索引表(以下称之位Hash32)和多个多分支Trie树表示(以下称之为Trie64)。Hash32中包含最长前缀预计算信息,Trie64的查找步宽依次为8-8-8-9bit。
S3长度为65到128位的前缀。用一个快速索引表(以下称之位Hash64)和多个多分支Trie树表示(以下称之为Trie128)。Trie128的查找步宽依次为9-9-9-9-9-9-10bit。
在对P1和P2进行划分时,采用31位而不是32位分界的原因是让Trie32和Trie64的步宽分配策略配合对trie结构的改进措施来保证trie结构的内部节点和叶子节点占用的存储空间相等,有利于存储空间的分配和管理。还可以将最坏情况(Worst Case)下更新hash32表的时间缩短一半。
Hash32中有一个最长前缀预计算域,而Hash64中没有。这是考虑到路由表更新和处理器的数据总线宽度问题而作的取舍。最长前缀预计算域是在路由前缀更新是写入路由表的,可以迅速缩小查找范围,只要找到这个域,就不必在S1中查找了。但如果在Hash64中增加这个域,会导致Hash64表表目太宽,处理器需要额外增加一个周期来访问一个hash表目。同时由于任何一个在32到64位之间的路由前缀信息的修改都可能导致多个Hash64表目中的最长前缀预计算信息的修改,这使得路由表的更新也非常困难。而Hash32中由于表目宽度比较小,且更新时将长度短于F的前缀放到微处理器的缓存了,所以就没有上述问题。
如图7所示,本发明可以利用网络处理器的两个微引擎来实现。路由转发表分别存放在两路片外SRAM(703,704)中,微引擎内部提供缓存,网络处理器内还具有同步寄存器和哈希单元等机制也恰好被本方法所利用。查找算法通过对微引擎编程实现。微处理器Ma(701)负责IPv6地址的前64位查找,Mb(702)负责在65到128位查找,两个处理器并行查找。和Ma相连的路由转发表存储这个整个路由前缀中长度短于64位的前缀;和Mb相连的路由转发表存储这个整个路由前缀中长度超过64位的前缀。网络处理器内的控制处理器运行路由表管理软件来负责路由转发表的更新。
各部分路由前缀的查找性能如表2所示表2


SRAM可以选用两片16兆字节的QDRAM,就可以支持上百万条路由。假设其一次读写访问时间为5ns(这是常规速度,还有更快的),数据总线的宽度是32位,一次哈希查找需要三次SRAM访问,那么在本方法中,一次路由查找最多只需要10次SRAM访问,即每秒钟可以处理20兆个报文查找,而在10G线速IPv6报文只要求每秒钟能处理12.5兆个报文(假设报文的大小为100个字节),本发明方法可以满足报文的10G线速转发要求。在本方案中,1次路由更新最多需要约1000次储存器访问,所以如果每秒发生1000次路由更新,只需要5ms来处理,路由查找性能也只下降0.5%。
本发明给出了一种快速有效的IPv6路由表查找方法,其优点在于(1)该方法充分考虑了IPv6地址前缀的分布模型特点,能有效支持大容量IPv6路由表查找。
(2)该方法支持路由表增量更新,不需要额外的硬件资源就可实现路由表的快速更新,节省了系统成本。
(3)该方法不依赖于专用存储器件来实现,增强了实现的灵活性。
(4)在现有硬件条件下利用该方法,就可以经济有效的实现IPv6报文在OC-192级别的线速转发。
(5)该方法适于在各种网络处理器中实现,可以用于灵活有效地构造IPv6核心路由器。
权利要求
1.一种IPv6路由表查找方法,包括以下步骤a)将整个IPv6路由表分割成至少两个前缀子集;b)对前缀数目较多或前缀长度较长的前缀子集采用索引表进行检索,对前缀数目较少且前缀长度较短的前缀子集,利用多分支Trie树进行查找;以及c)在全局范围内利用至少两个微处理器模块来对每一部分前缀子集进行并行查找,在局部范围内利用路由预计算进行查找。
2.根据权利要求1所述的方法,其特征在于在所述步骤a中,将所述路由前缀子集分别存放在不同的存储器内。
3.根据权利要求1所述的方法,其特征在于在所述步骤b中,当对每个部分采用多分支Trie树表示时,采用相应的查找步宽进行查找。
4.根据权利要求1所述的方法,其特征在于所述步骤c中,只在前缀子集长度较短的索引表中包含路由预计算信息,查找的同时实现路由表增量更新。
5.根据权利要求1所述的方法,其特征在于在所述步骤c中,在对分布密集的前缀子集进行查找时,利用路由预计算信息将查找范围缩小到该子集的局部区域,以减少并行处理单元数目。
6.根据权利要求1或4所述的方法,其特征在于所述索引表是哈希表。
7.根据权利要求1或5所述的方法,其特征在于利用网络处理器的多引擎机制实现并行查找。
全文摘要
一种IPv6路由表查找方法,包括以下步骤a)将整个IPv6路由表分割成至少两个前缀子集;b)对前缀数目较多或前缀长度较长的前缀子集采用索引表进行检索,对前缀数目较少且前缀长度较短的前缀子集,利用多分支Trie树进行查找;以及c)在全局范围内利用至少两个微处理器模块来对每一部分前缀子集进行并行查找,在局部范围内利用路由预计算进行查找。该方法能十分有效地支持IPv6路由查找,不依赖于TCAM,可以在通用硬件平台上实现。
文档编号H04L12/56GK1787477SQ20041000999
公开日2006年6月14日 申请日期2004年12月9日 优先权日2004年12月9日
发明者谭敏强, 张育斌 申请人:北京三星通信技术研究有限公司, 三星电子株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1