并行ip路由查找的路由表分区和放置方法

文档序号:7711135阅读:211来源:国知局

专利名称::并行ip路由查找的路由表分区和放置方法
技术领域
:本发明涉及高速互联网数据通信技术,特别是涉及一种用于并行IP路由査找的路由表分区和放置方法。
背景技术
:互联网的飞速发展和各种通信技术的不断涌现,对互联网的核心设备——骨干路由器的性能提出了越来越高的要求。传统的路由器缓慢的转发速度已经成为制约网络发展的瓶颈。由于因特网速度不断提高、网络流量不断增加、路由表的规模不断扩大,导致IP路由查找已经成为制约路由器性能的重要因素,因而路由査找技术的发展受到广泛关注。目前IP路由査找技术面临巨大挑战,主要表现在(l)算法设计困难;路由查找需要在前缀值和长度的两个维度进行查找以实现最长前缀匹配(LPM,LongestPrefixMatching);(2)路由表庞大;目前已经超过26万条,且每年还以约5万条的速度增长;(3)路由更新频繁;最高每秒更新数千条;(4)接口速率越来越高;如,OC-768(40Gbps)作为同步光纤网络(SONET)宽带综合业务数字网的光纤数据传输标准之一,已经商用;而速率100Gbps的以太网标准基于软件的路由查找方法,如Unibk-Trie、Multibit-Trie、Tree-Bitmap等算法需要进行多次内存操作才能完成路由查找,无法满足路由器高速接口按端口速率转发的要求。基于三态内容寻址存储器(TCAM,TenaryCotentAddressableMemory)的路由查找可以在一个时钟周期内完成关键字(IP地址)查找和所有前缀表项的匹配,并且能从多个匹配的结果中选择最长匹配前缀输出。目前TCAM时钟周期可达4ns。这里,所述最长匹配前缀是指存放地址最低部分的前缀。但是TCAM路由查找方式却存在功耗高、前缀排序存放复杂会导致更新困难等不足。虽然集成电路(IC)的晶体管集成度按照摩尔(Moore)定律递增,但是支撑查找功能的存储器存取时间每年却只减少(即速率增加)约7%,而接口速率却呈指数级增长,因此存取技术的发展无法与高速接口线速转发达到同步提高的要求。基于TCAM的并行IP路由查找方式将路由表分配到K个并行的TCAM芯片中,并不单独釆用减少每次查找所需时间来解决路由查找瓶颈,而是通过并行的体系结构来突破存储器访问速度的限制,一方面单次查找无须和所有的表项作匹配,可以大大降低每次查找的平均功耗,另一方面可以获得远高于以往算法的吞吐能力。现有商用TCAM提供的分区禁用(PartitionDisable)机制,比如一个512K大小36比特宽度的TCAM芯片被分成64个块(Block),每个Block的大小为8K,TCAM查询不对整个芯片进行而是根据查找关键字的特征选择对某些Block进行查询,这样可以大大降低每次查询的平均功耗。图1为现有基于TCAM的并行IP路由查找的通用体系结构,各种不同的并行路由查找方法的关键在于路由表的分区方法即第一阶段的选择器、并行路由查找的负载均衡即如何根据第一阶段选择器的匹配结果启动第二阶段的査找,以及是否支持路由前缀的增量更新。基于比特特征(Bit-Selection)的算法(KaiZheng,ChengchenHu,HongbinLiu,BinLiu,"Anultra-highthroughputandpowerefficientTCAM-basedIPlookupengine",INFOCOM2004,HongKong,China)选择10比特-13比特将路由表分成16个组(group),采用分区负载统计和冗余存放进行负载均衡,该算法无法保证分区的均句,需要对8比特、9比特前缀进行扩展(PrefixExpansion),不支持增量更新,特别是在分区溢出时需要重新选择比特位进行路由表重构。基于IP地址范围(Range-based)分区算法(D.Lin,Y.Zhang,C.Hu,B.Liu,X.Zhang,andD.Pao.RoutetablepartitioningandloadbalancingforparallelsearchingwithTCAMs.InProc.IPDPS'07,P1-10;M.Akhbarizadeh,M.Nourani,R.Panigrahy,andS.Sharma,"ATCAM-BasedParallelArchitectureforHigh-SpeedPacketForwarding,"IEEETrans.Computers,vol.56,no.l,P58-72,Jan.2007),将所有路由前缀分配到若干个不重叠的地址范围里,判断前缀P+是否只属于某个范围[a,b],检查如下的条件是否成立(a<P0...0)AND(Pl,..l<b)(1)某些前缀可能属于多个范围,比如前缀P^属于所有地址的范围,则需要在多个地方冗余存放,为确定分区点需要釆用Unibit-Trie辅助结构,从分区分界点到根路径上的所有前缀都需要在相邻的分区内冗余存放,理论上需要冗余存放32(K-l)个前缀;Range-based分区算法无须进行前缀扩展,可以进行均匀分区。另外,上述两个Range-based分区算法还可采用基于TCAM的前缀缓存提高负载均衡和查找性能,不同的是前一种方法将前缀缓存分布在各并行TCAM芯片的某个块(Block)里,无须额外的TCAM芯片,但缺点是在缓存不命中的情况下会导致报文乱序;而后一种方法需要K个额外的位于第一阶段的小的TCAM芯片支持才能实现,其实现方法复杂且成本较高。同时,为了保证基于TCAM的前缀缓存的正确性,内部节点又不能进行缓存,因此存在不公平性的问题。在更新方面,由于Range-based分区算法支持增量更新,但在分区溢出的情况下,一个前缀的更新需要移动的最大前缀的个数为K(同时还需要保证TCAM的前缀长度排序),因此需要付出较大的系统开销代价,同样的问题还会发生在其它分区也溢出的情形下。
发明内容有鉴于此,本发明的主要目的在于提供一种用于并行IP路由查找的路由表分区和放置方法,以解决基于TCAM的并行IP路由查找系统中通过路由表分区以及分配路由子表,使之达到负载均衡和满足动态增量更新路由的目的。为达到上述目的,本发明的技术方案是这样实现的一种并行IP路由查找的路由表分区和放置方法,该方法包括A、对路由表进行分区,形成分区子表D[i],并计算所述各分区子表D[i]的负载L[i]、记录所述分区的分界点;B、将所述路由分区子表按照其是否为叶子节点分区或内部节点分区进行分别存放,并连同各自的负载特征信息一起放置在并行的三态内容寻址存储器TCAM芯片中;C、执行路由查找操作,根据所述路由表分区子表分界点的不同,将所述查找请求按照负载量大小分发给个并行的TCAM芯片进行均衡排队。所述方法进一步包括D、更新路由前缀,若所在的节点为叶子节点,则采用随机插入和删除TCAM表项的方式进行更新;若所在节点为内部节点,则采用基于前缀长度约東的PLO—OPT算法或者基于前缀链约東的CAO_OPT算法进行更新。其中,所述步骤A中,包括前缀j的负载比例系数为su」,并且还根据所述前缀j是否为叶子节点或者内部节点的不同,分别放置在不同的分区子表D[i]中;其中,ie[l,最大分区个数];所述最大分区的个数等于前缀节点的个数除以所述分区大小。其中,所述分区子表D[i]按照其负载L[i]的大小进行降序排列,得到分区子表D、[i],并将所述分区子表D'LD依次放入负载最小的TCAM芯片中,若所述子表为内部节点子表,则将所述分区子表放置在TCAM的高地址区,并根据其前缀长度进行排序;若所述分区为叶子节点子表,则放置在TCAM的低地址区,无须排序。步骤C所述路由查找过程,具体包括Cl、将-到达路由分组的目的IP地址作为査找键KEY值,在第一阶段根据各分区子表的分界点进行地址范围匹配;'C2、将在地址范围匹配中得到的相应路由前缀所存放的TCAM芯片号和该芯片内的块Block号;C3、查找KEY值和相应的Block号,送到与所述TCAM芯片号对应的队列进行排队;C4、然后从所述队列中取出所找到的KEY值和Block号,并根据该Block号和非叶子节点内部前缀所在的Block号生成TCAM查找掩码;C5、将查找到的结果返回路由器的转发引擎进行转发处理。其中,所述TCAM查找掩码,为用于使能所述TCAM芯片的相应块Block。本发明所提供的用于并行IP路由查找的路由表分区和放置方法,具有以下本发明方法中,釆用简单的树遍历算法进行分区,分区简单且均匀,叶子节点之间不存在相互重叠和包含关系,无须冗余存放叶子节点,在TCAMBlock中的放置也没有排序要求;根据分区的负载大小在K片TCAM芯片中进行均衡放置,在进行并行查找IP路由时,可获得的加速因子为K-l;另外,在路由更新过程中,由于无须进行前缀扩展,支持增量更新,在通常情况下分区溢出时也只需要进行一次表项的移动搡作。因此,能够达到负载均衡和满足动态增量更新路由的效果,同时,由于避免了路由更新过程中路由前缀的大量移动,因此降低了路由器的系统开销,降低了功耗。图1为现有基于TCAM的并行IP路由查找的通用体系结构;图2为现有路由器体系结构示意图3为本发明实施例并行IP路由查找的原理示意图4为本发明实施例路由表分区流程示意图5为本发明实施例路由分区子表放置流程示意图6为本发明实施例并行IP路由查找流程图。具体实施例方式下面结合附图及本发明的实施例对本发明的方法作进一步详细的说明本发明的主要思路是采用辅助的Trie树结构,对Trie进行先序遍历,基于叶子节点进行路由表分区,并计算分区子表的负载统计被计算;将分区子表按照负载大小进行降序排序,将排序后的分区子表依次放入负载最小的TCAM芯片;叶子节点的更新可以采用随机增量更新,内部节点的更新釆用基于前缀长度约束的PLO—OPT或者基于前缀链约東的CAO—OPT算法更新。图2为现有路由器体系结构示意图,普通路由器通常都具有输入端口、输出端口、交换结构和路由处理器,路由器通常用于完成IP分组的交换,其处理过程通常应包括分组报头处理、路由查表、流量控制、缓存、队列调度、交换、输出缓存等过程。图3为本发明实施例并行IP路由查找的原理示意图,如图3所示,先采用辅助的Trie树结构,对Trie树进行先序遍历,基于叶子节点进行路由表分区,并计算分区子表的负载统计,即第一阶段。这里,所述路由表分区,可采用简单的树遍历算法进行,分区简单且均匀,能够使各叶子节点之间消除相互重叠和包含关系,同时也无须冗余存放叶子节点,反映在TCAMBlock中的放置也无须排序。为了实现负载均衡,可根据所述分区的负载大小在K片TCAM芯片中进行均衡放置,将分区子表按照负载大小进行降序排序,将排序后的分区子表依次放入负载最小的TCAM芯片,即第二阶段。最后,采用随机增量的方式对叶子节点进行IP路由的更新,内部节点的更新釆用基于前缀长度约束的PLO一OPT或者基于前缀链约束的CAO一OPT算法更新,外部叶子节点可以釆用随机更新。采用本发明的路由更新策略,无须进行前缀扩展,且支持增量更新,通常情况下分区溢出时只需要进行一次表项的移动操作。为了进行路由表的有效分区,我们先分析以下三个典型的骨干路由表APNIC、Oregon-IX和RouteView,其他路由表具类似的特性,如表1所示。现有技术中釆用无类别域间路由(CIDR)的路由聚合技术,采用该技术虽然减缓了骨干网路由表的增长速率,但是随着连接的主机和网络的数量急剧增长,运营商独立地址(ProviderIndependentAddresses)禾口多穴(Multihoming)站点的增多,骨干网路由表依然呈现高速增长态势,每年约增长5万条路由条目,目前已经超过26万条。这里,所述CIDR,是一种用于缓解IP地址耗尽和路由选择表增大问题的机制,其基本思想是,可将多个地址块合并或聚合起来,组成一个更大的无类IP地址集,以支持更大的主机。CIDR机制可用于A类,B类和C类地址块。位置路由条目叶子节点非叶子节点叶子节点比例APNIC2546262322102241691.19%Oregon-IX2617622380972366590.9504RouteView2619302382692366190.96%表1从表l可以看出,路由表卯%以上的节点为叶子节点,如果将10%的内部节点在K片TCAM芯片进行冗余存放,路由表分区只考虑叶子节点即可。为了进行路由表更新,我们也对现有技术进行简单分析链路状态和配置的改变,会促发路由更新消息,无状态BGP实现、配置错误和路由更新自同步特性会触发更多的路由更新消息,路由更新消息会引起路由转发表的重新计算,导致TCAM表项的添加或者删除,和每秒数百万次路由查找相比,前缀更新频率要小得多,均值为每秒2.35次,但是峰值达每秒5千次,由于TCAM表项的更新将导致路由査找被缓存,缓存会增加报文处理时延,缓存溢出还会导致丟包。这里,所述BGP是一种自治系统间的动态路由发现协议,主要负责本自治区域和外部的自治区域间的路由可达信息的交换。覆盖大范围网络的短前缀(内部节点)会相对稳定,覆盖小范围网络的长前缀(叶子节点)更新会相对频繁,经分析,路由更新主要由非知名前缀构成,4.5%的非知名前缀占据了50%的路由更新消息,而其流量仅占1.4%;我们对50个更新最频繁的前缀进行了分析,发现只有2个前缀为内部节点,96%的更新为叶子节点[J.Rexford,J.Wang,Z.Xiao,andY.Zhang,"Bgproutingstabilityofpopulardestinations",inProc.InternetMeasurementWorkshop,November2002]。采用基于叶子节点的路由表分区,90%的叶子节点的存放无需排序,超过卯%的更新可以直接釆用随机更新,对于小于10。/。内部节点更新可以可以采用[D.ShahandP.Gupta,"Fastincrementalupdatesontemary-CAMsforroutinglookupsandpacketclassification,"inProc.HotInterconnects8,Aug.2000,P145-153]中的PLO—OPT或者CAO—OPT算法。图4为本发明实施例路由表分区流程示意图,如图4所示,该过程包括步骤401:釆用先序遍历辅助路由表Trie树结构;步骤402:判断本次遍历的节点j是否为叶子节点,若是,则执行步骤403;否则,执行步骤404;这里,所述判断本次遍历的节点j是否为叶子节点,具体为判断该前缀节点是否有孩子节点,若该节点无孩子节点,即为叶子节点;反之,则该节点为内部节点,即非叶子节点。步骤403:若j为叶子节点,则将叶子节点j放入叶子节点分区子表D[i];L[i]+=S[j],然后执行步骤405;步骤404:若j为内部节点,则将内部节点j放入另外的非叶子节点分区子表D[i];L[i]+=SLJ],然后执行步骤405;步骤405:遍历下一个前缀节点j;步骤406:判断本次遍历是否结束,若结東,则返回步骤402;否则,执行步骤407;步骤407:结東路由表的分区搡作。图5为本发明实施例路由分区子表放置流程示意图,如图5所示,接上述图4所述的步骤401~步骤407之后,对所述路由分区表进行进一步操作即放置路由分区子表,所述过程包括步骤501:对分区子表D[i]按照L[i]进行降序排列,得到D、[i];步骤502:依次取分区子表D、[i];步骤503:判断分区子表D、[i]是否为空,若是,则执行步骤508;否则,执行步骤504;这里,所述分区子表为空,是指路由子表已放置完成。步骤504:判断D、[i]是否为叶子节点分区子表,若是叶子节点分区子表,则执行步骤506;若不是叶子节点分区子表,则执行步骤505;步骤505:将非叶子内部节点分区的子表D、[i]放入所有TCAM芯片的高地址区,并且需要按照前缀长度进行排序,然后执行步骤507;步骤506:将叶子节点分区的子表D、[i]放入负载最小的TCAM芯片低地址区,没有排序要求,然后执行步骤507;步骤507:取下一个分区子表D'[i],并判断是否为空,若为空,则执行步骤508;否则执行步骤503;步骤508:结東放置路由分区子表的操作。图6为本发明实施例并行IP路由查找流程图,如图6所示,该过程包括步骤601:将到达路由分组的目的IP地址作为查找键(KEY)值,在第一阶段进行地址范围匹配;步骤602:将在地址范围匹配中得到的相应路由前缀所存放的TCAM芯片号和该芯片内的块(Block)号;步骤603:查找KEY值和相应的Block号,送到与所述TCAM芯片号对应的队列进行排队;步骤604:然后从所述队列中取出所找到的KEY值和Block号,并根据该Block号和非叶子节点内部前缀所在的Block号(全局)生成TCAM查找掩码;这里,所述TCAM查找掩码,用于使能所述TCAM芯片的相应Block。步骤605:将查找到的结果返回给图2所述路由器的转发引擎进行转发处理。(1)对路由表进行分区,形成分区子表D[i]的同时,计算各分区子表D[i]的负载L[i]、并记录分区分界点;(2)路由分区子表按照其是否为叶子节点分区或者按照是否为内部节点分区,该分区及其所计算得到的负载特征均被放置在并行的TCAM芯片内;(3)路由查找操作开始前,首先进行分区判断,然后查找请求被分发给各个并行TCAM芯片进行排队;(4)更新路由前缀时,对于叶子节点,则采用随机插入和删除TCAM表项的方式进行更新;对于内部节点,则采用PLO一OPT或CAO一OPT算法更新[D.ShahandP.Gupta,"Fastincrementalupdatesonternary-CAMsforroutinglookupsandpacketclassification",inProc.HotInterconnects8,Aug.2000,P145-153]。这里,在所述第(1)点特点中,前缀j的负载比例系数为S[j],要根据前缀j是否为叶子节点或者非叶子内部节点分别放置在不同的分区子表D[i]中,i£(l,最大分区个数),最大分区个数可以用前缀节点个数除以分区大小得到;前缀j被放入分区子表D[i]的同时,分区子表D[i]的负载L[i]需要增加S[]]。在所述第(2)点特点中,分区子表D[i]首先按照其负载L[i]大小进行降序排列,得到D'[i],所述D'[i]依次被放入负载最小的TCAM芯片。对于内部节点子表,则分区放置在TCAM的高地址区,同时还要根据其前缀长度进行排序;若是叶子节点子表,则放置在TCAM的低地址区,不需要进行排序。下面结合本发明特征和实际须'J试过程对本发明进行进一步说明。这里,采用K个服务时间固定的M/D/1排队系统模型来分析系统的性能。假设分组到达时间服从泊松分布,单位时间业务强度为X,TCAM查找服务速率为p,查找服务时间K4i,单片TCAM査找单元单位时间内内査找量P=V(^K)(2)每个缓存里面排队等候的分组个数lq=p2/(2*(l-p))(3)分组在系统内的平均逗留时间Ws,*Ts/(2*(l-p))+TS(4)假设N为路由表前缀个数,d)为叶子节点比例系数,K为并行TCAM芯片个数,每个TCAM的Block大小为b,每个TCAM可被分成n个Block,S[j]为前缀j的负载比例系数,要求满足的先决条件为(K*b*n)>N+(K-l)*(l-cH*N(5)条件(5)可以确保K个并行的TCAM芯片可以容纳N个路由前缀。下面以本发明在实际测试中所获得的实验结果为例进行说明设A/)i=K-l,p=(K-l)/K,当K等于4时,p=3/4,则加速因子T=K*p=3,缓存队列长度lcT9/8,Ws=5Ts/2,系统获得的加速因子T为3。缓存队列长度lq很短,需要增加少量等待时延。采用4片4ns商用TCAM芯片,Ws=5Ts/2=10ns,整个系统的包转发率为3OOMPPS。由于每次TCAM的路由查找功耗和需要匹配的TCAM条目成正比,假设路由总条目N=260K,块Block大小为8K,每次只需要匹配一个Block的叶子节点,则每次查找的功耗和单片TCAM功耗之比Pe:Pe=(0.1*260K+8K)/260K=0.12,每次查找的平均约为单片方案的0.12,因此,能够大大降低路由查找的功耗。以上所述实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。本
技术领域
的技术人员在本发明基础上所作的等同替代或变换,均在本发明的保护范围之内。本发明的保护范围以权利要求书为准。权利要求1、一种并行IP路由查找的路由表分区和放置方法,其特征在于该方法包括A、对路由表进行分区,形成分区子表D[i],并计算所述各分区子表D[i]的负载L[i]、记录所述分区的分界点;B、将所述路由分区子表按照其是否为叶子节点分区或内部节点分区进行分别存放,并连同各自的负载特征信息一起放置在并行的三态内容寻址存储器TCAM芯片中;C、执行路由查找操作,根据所述路由表分区子表分界点的不同,将所述查找请求按照负载量大小分发给个并行的TCAM芯片进行均衡排队。2、根据权利要求l所述的路由表分区和放置方法,其特征在于,所述方法进一步包括D、更新路由前缀,若所在的节点为叶子节点,则釆用随机插入和删除TCAM表项的方式进行更新;若所在节点为内部节点,则釆用基于前缀长度约束的PLO一OPT算法或者基于前缀链约東的CAO—OPT算法进行更新。3、根据权利要求1所述的路由表分区和放置方法,其特征在于,所述步骤A中,包括前缀j的负载比例系数为S[j],并且还根据所述前缀j是否为叶子节点或者内部节点的不同,分别放置在不同的分区子表DH中;其中,iG[l,最大分区个数];所述最大分区的个数等于前缀节点的个数除以所述分区大小。4、根据权利要求l或3所述的路由表分区和放置方法,其特征在于,所述分区子表D[i]按照其负载L[i]的大小进行降序排列,得到分区子表D'[i],并将所述分区子表D'[i]依次放入负载最小的TCAM芯片中,若所述子表为内部节点子表,则将所述分区子表放置在TCAM的高地址区,并根据其前缀长度进行排序;若所迷分区为叶子节点子表,则放置在TCAM的低地址区,无须排序。5、根据权利要求1所述的路由表分区和放置方法,其特征在于,步骤C所述路由查找过程,具体包括Cl、将到达路由分组的目的IP地址作为查找键KEY值,在第一阶段根据各分区子表的分界点进行地址范围匹配;C2、将在地址范围匹配中得到的相应路由前缀所存放的TCAM芯片号和该芯片内的块Block号;C3、查找KEY值和相应的Block号,送到与所述TCAM芯片号对应的队列进行排队;C4、然后从所述队列中取出所找到的KEY值和Block号,并根据该Block号和非叶子节点内部前缀所在的Block号生成TCAM査找掩码;C5、将查找到的结果返回路由器的转发引擎进行转发处理。6、根据权利要求5所述的路由表分区和放置方法,其特征在于,所述TCAM查找掩码,为用于使能所述TCAM芯片的相应块Block。全文摘要本发明公开了一种用于并行IP路由查找的路由表分区和放置方法,该方法基于路由表前缀分布特征和前缀更新特征分析,对相互之间不存在重叠关系的叶子节点进行路由表分区,分区子表按照流量特征在若干个TCAM芯片中进行均衡分布放置,并且无须进行路由地址前缀扩展,就能够实现90%以上的路由表项无需排序及随机更新。采用该发明方法的路由器具有分区均匀、分区溢出代价小、吞吐量高、功耗小等特点。文档编号H04L12/56GK101631086SQ20091016205公开日2010年1月20日申请日期2009年8月10日优先权日2009年8月10日发明者朱国胜申请人:武汉烽火网络有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1