首页> 中国专利> 并行IP路由查找的路由表分区和放置方法

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

摘要

本发明公开了一种用于并行IP路由查找的路由表分区和放置方法,该方法基于路由表前缀分布特征和前缀更新特征分析,对相互之间不存在重叠关系的叶子节点进行路由表分区,分区子表按照流量特征在若干个TCAM芯片中进行均衡分布放置,并且无须进行路由地址前缀扩展,就能够实现90%以上的路由表项无需排序及随机更新。采用该发明方法的路由器具有分区均匀、分区溢出代价小、吞吐量高、功耗小等特点。

著录项

  • 公开/公告号CN101631086A

    专利类型发明专利

  • 公开/公告日2010-01-20

    原文格式PDF

  • 申请/专利权人 武汉烽火网络有限责任公司;

    申请/专利号CN200910162055.1

  • 发明设计人 朱国胜;

    申请日2009-08-10

  • 分类号H04L12/56(20060101);

  • 代理机构11228 北京汇泽知识产权代理有限公司;

  • 代理人黄挺

  • 地址 430074 湖北省武汉市东湖高新开发区东信路5号关东光通信产业大楼3楼

  • 入库时间 2023-12-17 23:22:53

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-07-19

    未缴年费专利权终止 IPC(主分类):H04L12/56 专利号:ZL2009101620551 申请日:20090810 授权公告日:20120926

    专利权的终止

  • 2017-04-19

    专利权的转移 IPC(主分类):H04L12/56 登记生效日:20170330 变更前: 变更后: 申请日:20090810

    专利申请权、专利权的转移

  • 2012-09-26

    授权

    授权

  • 2010-03-24

    实质审查的生效

    实质审查的生效

  • 2010-01-20

    公开

    公开

说明书

技术领域

本发明涉及高速互联网数据通信技术,特别是涉及一种用于并行IP路由查找的路由表分区和放置方法。

背景技术

互联网的飞速发展和各种通信技术的不断涌现,对互联网的核心设备——骨干路由器的性能提出了越来越高的要求。传统的路由器缓慢的转发速度已经成为制约网络发展的瓶颈。由于因特网速度不断提高、网络流量不断增加、路由表的规模不断扩大,导致IP路由查找已经成为制约路由器性能的重要因素,因而路由查找技术的发展受到广泛关注。

目前IP路由查找技术面临巨大挑战,主要表现在:(1)算法设计困难;路由查找需要在前缀值和长度的两个维度进行查找以实现最长前缀匹配(LPM,Longest Prefix Matching);(2)路由表庞大;目前已经超过26万条,且每年还以约5万条的速度增长;(3)路由更新频繁;最高每秒更新数千条;(4)接口速率越来越高;如,OC-768(40Gbps)作为同步光纤网络(SONET)宽带综合业务数字网的光纤数据传输标准之一,已经商用;而速率100Gbps的以太网标准又将在2010年发布。

基于软件的路由查找方法,如:Unibit-Trie、Multibit-Trie、Tree-Bitmap等算法需要进行多次内存操作才能完成路由查找,无法满足路由器高速接口按端口速率转发的要求。基于三态内容寻址存储器(TCAM,Tenary CotentAddressable Memory)的路由查找可以在一个时钟周期内完成关键字(IP地址)查找和所有前缀表项的匹配,并且能从多个匹配的结果中选择最长匹配前缀输出。目前TCAM时钟周期可达4ns。这里,所述最长匹配前缀是指存放地址最低部分的前缀。但是TCAM路由查找方式却存在功耗高、前缀排序存放复杂会导致更新困难等不足。

虽然集成电路(IC)的晶体管集成度按照摩尔(Moore)定律递增,但是支撑查找功能的存储器存取时间每年却只减少(即速率增加)约7%,而接口速率却呈指数级增长,因此存取技术的发展无法与高速接口线速转发达到同步提高的要求。基于TCAM的并行IP路由查找方式将路由表分配到K个并行的TCAM芯片中,并不单独采用减少每次查找所需时间来解决路由查找瓶颈,而是通过并行的体系结构来突破存储器访问速度的限制,一方面单次查找无须和所有的表项作匹配,可以大大降低每次查找的平均功耗,另一方面可以获得远高于以往算法的吞吐能力。现有商用TCAM提供的分区禁用(Partition Disable)机制,比如一个512K大小36比特宽度的TCAM芯片被分成64个块(Block),每个Block的大小为8K,TCAM查询不对整个芯片进行而是根据查找关键字的特征选择对某些Block进行查询,这样可以大大降低每次查询的平均功耗。

图1为现有基于TCAM的并行IP路由查找的通用体系结构,各种不同的并行路由查找方法的关键在于路由表的分区方法即第一阶段的选择器、并行路由查找的负载均衡即如何根据第一阶段选择器的匹配结果启动第二阶段的查找,以及是否支持路由前缀的增量更新。

基于比特特征(Bit-Selection)的算法(Kai Zheng,Chengchen Hu,HongbinLiu,Bin Liu,“An ultra-high throughput and power efficient TCAM-based IP lookupengine”,INFOCOM2004,Hong Kong,China)选择10比特-13比特将路由表分成16个组(group),采用分区负载统计和冗余存放进行负载均衡,该算法无法保证分区的均匀,需要对8比特、9比特前缀进行扩展(Prefix Expansion),不支持增量更新,特别是在分区溢出时需要重新选择比特位进行路由表重构。

基于IP地址范围(Range-based)分区算法(D.Lin,Y.Zhang,C.Hu,B.Liu,X.Zhang,and D.Pao.Route table partitioning and load balancing for parallelsearching with TCAMs.In Proc.IPDPS’07,P 1-10;M.Akhbarizadeh,M.Nourani,R.Panigrahy,and S.Sharma,“A TCAM-Based Parallel Architecture for High-SpeedPacket Forwarding,”IEEE Trans.Computers,vol.56,no.1,P58-72,Jan.2007),将所有路由前缀分配到若干个不重叠的地址范围里,判断前缀P*是否只属于某个范围[a,b],检查如下的条件是否成立:

(a<P0...0)AND(P1...1<b)            (1)

某些前缀可能属于多个范围,比如前缀P*属于所有地址的范围,则需要在多个地方冗余存放,为确定分区点需要采用Unibit-Trie辅助结构,从分区分界点到根路径上的所有前缀都需要在相邻的分区内冗余存放,理论上需要冗余存放32(K-1)个前缀;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的负载比例系数为S[j],并且还根据所述前缀j是否为叶子节点或者内部节点的不同,分别放置在不同的分区子表D[i]中;其中,i∈[1,最大分区个数];所述最大分区的个数等于前缀节点的个数除以所述分区大小。

其中,所述分区子表D[i]按照其负载L[i]的大小进行降序排列,得到分区子表D`[i],并将所述分区子表D`[i]依次放入负载最小的TCAM芯片中,若所述子表为内部节点子表,则将所述分区子表放置在TCAM的高地址区,并根据其前缀长度进行排序;若所述分区为叶子节点子表,则放置在TCAM的低地址区,无须排序。

步骤C所述路由查找过程,具体包括:

C1、将到达路由分组的目的IP地址作为查找键KEY值,在第一阶段根据各分区子表的分界点进行地址范围匹配;

C2、将在地址范围匹配中得到的相应路由前缀所存放的TCAM芯片号和该芯片内的块Block号;

C3、查找KEY值和相应的Block号,送到与所述TCAM芯片号对应的队列进行排队;

C4、然后从所述队列中取出所找到的KEY值和Block号,并根据该Block号和非叶子节点内部前缀所在的Block号生成TCAM查找掩码;

C5、将查找到的结果返回路由器的转发引擎进行转发处理。

其中,所述TCAM查找掩码,为用于使能所述TCAM芯片的相应块Block。

本发明所提供的用于并行IP路由查找的路由表分区和放置方法,具有以下优点:

本发明方法中,采用简单的树遍历算法进行分区,分区简单且均匀,叶子节点之间不存在相互重叠和包含关系,无须冗余存放叶子节点,在TCAM Block中的放置也没有排序要求;根据分区的负载大小在K片TCAM芯片中进行均衡放置,在进行并行查找IP路由时,可获得的加速因子为K-1;另外,在路由更新过程中,由于无须进行前缀扩展,支持增量更新,在通常情况下分区溢出时也只需要进行一次表项的移动操作。因此,能够达到负载均衡和满足动态增量更新路由的效果,同时,由于避免了路由更新过程中路由前缀的大量移动,因此降低了路由器的系统开销,降低了功耗。

附图说明

图1为现有基于TCAM的并行IP路由查找的通用体系结构;

图2为现有路由器体系结构示意图;

图3为本发明实施例并行IP路由查找的原理示意图;

图4为本发明实施例路由表分区流程示意图;

图5为本发明实施例路由分区子表放置流程示意图;

图6为本发明实施例并行IP路由查找流程图。

具体实施方式

下面结合附图及本发明的实施例对本发明的方法作进一步详细的说明

本发明的主要思路是:采用辅助的Trie树结构,对Trie进行先序遍历,基于叶子节点进行路由表分区,并计算分区子表的负载统计被计算;将分区子表按照负载大小进行降序排序,将排序后的分区子表依次放入负载最小的TCAM芯片;叶子节点的更新可以采用随机增量更新,内部节点的更新采用基于前缀长度约束的PLO_OPT或者基于前缀链约束的CAO_OPT算法更新。

图2为现有路由器体系结构示意图,普通路由器通常都具有输入端口、输出端口、交换结构和路由处理器,路由器通常用于完成IP分组的交换,其处理过程通常应包括分组报头处理、路由查表、流量控制、缓存、队列调度、交换、输出缓存等过程。

图3为本发明实施例并行IP路由查找的原理示意图,如图3所示,先采用辅助的Trie树结构,对Trie树进行先序遍历,基于叶子节点进行路由表分区,并计算分区子表的负载统计,即第一阶段。

这里,所述路由表分区,可采用简单的树遍历算法进行,分区简单且均匀,能够使各叶子节点之间消除相互重叠和包含关系,同时也无须冗余存放叶子节点,反映在TCAM Block中的放置也无须排序。

为了实现负载均衡,可根据所述分区的负载大小在K片TCAM芯片中进行均衡放置,将分区子表按照负载大小进行降序排序,将排序后的分区子表依次放入负载最小的TCAM芯片,即第二阶段。

最后,采用随机增量的方式对叶子节点进行IP路由的更新,内部节点的更新采用基于前缀长度约束的PLO_OPT或者基于前缀链约束的CAO_OPT算法更新,外部叶子节点可以采用随机更新。采用本发明的路由更新策略,无须进行前缀扩展,且支持增量更新,通常情况下分区溢出时只需要进行一次表项的移动操作。

为了进行路由表的有效分区,我们先分析以下三个典型的骨干路由表:APNIC、Oregon-IX和Route View,其他路由表具类似的特性,如表1所示。

现有技术中采用无类别域间路由(CIDR)的路由聚合技术,采用该技术虽然减缓了骨干网路由表的增长速率,但是随着连接的主机和网络的数量急剧增长,运营商独立地址(Provider Independent Addresses)和多穴(Multihoming)站点的增多,骨干网路由表依然呈现高速增长态势,每年约增长5万条路由条目,目前已经超过26万条。这里,所述CIDR,是一种用于缓解IP地址耗尽和路由选择表增大问题的机制,其基本思想是,可将多个地址块合并或聚合起来,组成一个更大的无类IP地址集,以支持更大的主机。CIDR机制可用于A类,B类和C类地址块。

表1

从表1可以看出,路由表90%以上的节点为叶子节点,如果将10%的内部节点在K片TCAM芯片进行冗余存放,路由表分区只考虑叶子节点即可。

为了进行路由表更新,我们也对现有技术进行简单分析:

链路状态和配置的改变,会促发路由更新消息,无状态BGP实现、配置错误和路由更新自同步特性会触发更多的路由更新消息,路由更新消息会引起路由转发表的重新计算,导致TCAM表项的添加或者删除,和每秒数百万次路由查找相比,前缀更新频率要小得多,均值为每秒2.35次,但是峰值达每秒5千次,由于TCAM表项的更新将导致路由查找被缓存,缓存会增加报文处理时延,缓存溢出还会导致丢包。这里,所述BGP是一种自治系统间的动态路由发现协议,主要负责本自治区域和外部的自治区域间的路由可达信息的交换。

覆盖大范围网络的短前缀(内部节点)会相对稳定,覆盖小范围网络的长前缀(叶子节点)更新会相对频繁,经分析,路由更新主要由非知名前缀构成,4.5%的非知名前缀占据了50%的路由更新消息,而其流量仅占1.4%;我们对50个更新最频繁的前缀进行了分析,发现只有2个前缀为内部节点,96%的更新为叶子节点[J.Rexford,J.Wang,Z.Xiao,and Y.Zhang,“Bgp routing stability ofpopular destinations”,in Proc.Internet Measurement Workshop,November 2002]。采用基于叶子节点的路由表分区,90%的叶子节点的存放无需排序,超过90%的更新可以直接采用随机更新,对于小于10%内部节点更新可以可以采用[D.Shah and P.Gupta,“Fast incremental updates on ternary-CAMs for routing lookupsand packet classification,”in Proc.Hot Interconnects 8,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]+=S[j],然后执行步骤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.Shah and P.Gupta,“Fast incremental updates on ternary-CAMs for routinglookups and packet classification”,in Proc.Hot Interconnects 8,Aug.2000,P145-153]。

这里,在所述第(1)点特点中,前缀j的负载比例系数为S[j],要根据前缀j是否为叶子节点或者非叶子内部节点分别放置在不同的分区子表D[i]中,i∈(1,最大分区个数),最大分区个数可以用前缀节点个数除以分区大小得到;前缀j被放入分区子表D[i]的同时,分区子表D[i]的负载L[i]需要增加S[j]。

在所述第(2)点特点中,分区子表D[i]首先按照其负载L[i]大小进行降序排列,得到D`[i],所述D`[i]依次被放入负载最小的TCAM芯片。对于内部节点子表,则分区放置在TCAM的高地址区,同时还要根据其前缀长度进行排序;若是叶子节点子表,则放置在TCAM的低地址区,不需要进行排序。

下面结合本发明特征和实际测试过程对本发明进行进一步说明。

这里,采用K个服务时间固定的M/D/1排队系统模型来分析系统的性能。假设分组到达时间服从泊松分布,单位时间业务强度为λ,TCAM查找服务速率为μ,查找服务时间Ts=1/μ,单片TCAM查找单元单位时间内内查找量:

ρ=λ/(μ*K)                         (2)

每个缓存里面排队等候的分组个数:

lq=ρ2/(2*(1-ρ))                    (3)

分组在系统内的平均逗留时间:

Ws=ρ*Ts/(2*(1-ρ))+TS               (4)

假设N为路由表前缀个数,φ为叶子节点比例系数,K为并行TCAM芯片个数,每个TCAM的Block大小为b,每个TCAM可被分成n个Block,S[j]为前缀j的负载比例系数,要求满足的先决条件为:

(K*b*n)>N+(K-1)*(1-φ)*N             (5)

条件(5)可以确保K个并行的TCAM芯片可以容纳N个路由前缀。

下面以本发明在实际测试中所获得的实验结果为例进行说明:

设:λ/μ=K-1,ρ=(K-1)/K,当K等于4时,ρ=3/4,则加速因子T=K*ρ=3,缓存队列长度lq=9/8,Ws=5Ts/2,系统获得的加速因子T为3。缓存队列长度lq很短,需要增加少量等待时延。

采用4片4ns商用TCAM芯片,Ws=5Ts/2=10ns,整个系统的包转发率为300MPPS。由于每次TCAM的路由查找功耗和需要匹配的TCAM条目成正比,假设路由总条目N=260K,块Block大小为8K,每次只需要匹配一个Block的叶子节点,则每次查找的功耗和单片TCAM功耗之比Pe∶Pe=(0.1*260K+8K)/260K=0.12,每次查找的平均约为单片方案的0.12,因此,能够大大降低路由查找的功耗。

以上所述实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。本技术领域的技术人员在本发明基础上所作的等同替代或变换,均在本发明的保护范围之内。本发明的保护范围以权利要求书为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号