IPv6路由查找方法及装置的制造方法

文档序号:9420250阅读:385来源:国知局
IPv6路由查找方法及装置的制造方法
【技术领域】
[0001]本申请涉及路由查找技术领域,尤其涉及IPv6路由查找方法及装置。
【背景技术】
[0002]网络之间进行通信就要实现数据的传递转发,所以网络设备的主要职能之一就是进行高效率的数据转发,而其在因特网协议的基本数据平面的功能是路由查找,即根据路由表中的前缀信息,对每一个到来的数据包决定它的下一跳及出端口。由于路由表中通配符以及 CIDR(Classless Inter-Domain Routing,基于无类域间路由)的 LPM(LongestPrefix Matching,最长前缀匹配)问题使得路由查找变得非常复杂。基于LPM的路由查找算法除了需要高性能外,还要满足如下几个需求:
[0003]一、IPv4 和 IPv6 双栈
[0004]现有解决LPM的算法大都针对IPv4的32位地址设计,不能直接移植或者扩展到IPv6,这就需要根据IPv6的特点,设计出适合128位IP地址的高效的路由查找算法。
[0005]二、多 VPN(Virtual Private Network,虚拟专网)实例支持
[0006]当前网络设备需要支持VRF(VPN Routing Forwarding Instance,VPN路由转发实例),VRF是指在一台路由器上需要同时支持多个路由转发表实例,各路由转发表间独立。使用VRF可以用路由隔离不同的VPN用户。
[0007]当前中、高端路由器已经普遍支持4K或8K VPN,也就是说设备内部需要同时支持4K或81(个VRF转发表,支持多VPN实例对路由算法的整体架构具有很大的影响。
[0008]三、大规格路由数量
[0009]对于IP路由来说,网络设备需要支持远大于当前现网路由的规格。图1所示为2002?2009年Internet IPv4路由分布示意图,从图1中可以看到8年间IPv4路由数量增加了一倍以上;图2所示为Internet IPv6路由分布示意图。
[0010]另外由于网络设备需要支持多VPN实例,每个VPN实例都需要维护一套独立的路由表,当网络设备支持较多VPN实例时,网络设备整体路由表条目会很大。例如8K个VPN实例,每个VPN实例有512条路由,则整个网络设备需要支持4M条路由。
[0011]当前中、高端路由器设备,IPv4普遍要求大于4M条路由,IPv6普遍要求大于IM条路由,大规格的路由表数量对路由算法的整体架构具有很大的影响,尤其对算法所选择的内存类型具有决定作用。
[0012]四、快速更新
[0013]路由更新性能是网络设备一个非常关键的指标,路由更新速度慢会严重影响整网路由收敛的速度,导致整网不停地路由震荡;随着现网路由数量的增加、以及整网VPN和VPN路由数量的增加,对路由更新性能提出了更高的要求。

【发明内容】

[0014]本申请提供IPv6路由查找方法及装置,以提高IPv6路由查找效率。
[0015]本申请的技术方案是这样实现的:
[0016]—种IPv6路由查找方法,该方法包括:
[0017]分别针对每个VPN中的IPv6前缀的路由分布,构建一棵Multibit Trie ;
[0018]将每棵Multibit Trie划分为n+1个Level:Level O?η,η为大于I的整数;
[0019]采用前缀扩展的方法将Multibit Trie的I?m级IPv6前缀上的路由扩展到m+1级IPv6前缀上,m为大于I的整数;
[0020]将第m+Ι级IPv6前缀的每一个分支作为一个Branch_Tree,保存每个Branch_Tree的数据结构信息;
[0021]针对Level p?η中的每个第一级Sub_Trie节点,以当前VPN标识和本Sub_Trie节点的IPv6前缀的IPv6地址在本Level之前的所有bit作为输入Key,采用预设的本Level的Hash函数对输入Key进行计算,将Hash计算结果映射到本Sub_Trie节点的数据结构信息指针上,P为整数且0〈ρ〈η ;
[0022]当对一 VPN内的一 IPv6地址进行路由查找时,先根据VPN标识和该IPv6地址在每个Level之前的所有bit分别构造针对每个Level的输入Key,分别采用每个Level的Hash函数对针对每个Level的输入Key进行计算,若有Hash计算结果命中,则采用最长的Hash命中结果对应的Subjrie节点的数据结构信息指针查找路由;否则,根据该IPv6地址的高m+lbit查找到对应的Branch_Tree,在该Branch_Tree的Level I?p_l中查找路由。
[0023]—种IPv6路由查找装置,该装置包括:
[0024]Multibit Trie建立及划分模块:分别针对每个VPN中的IPv6前缀的路由分布,构建一棵 Multibit Trie ;将每棵 Multibit Trie 划分为 n+1 个 Level:LevelO ?η,η 为大于I的整数;采用前缀扩展的方法将Multibit Trie的I?m级IPv6前缀上的路由扩展到m+1级IPv6前缀上,m为大于I的整数;将第m+Ι级IPv6前缀的每一个分支作为一个Branch_Tree,保存每个Branch_Tree的数据结构信息;
[0025]Hash映射模块:针对Level p?η中的每个第一级Sub_Trie节点,以当前VPN标识和本Sub_Trie节点的IPv6前缀的IPv6地址在本Level之前的所有bit作为输入Key,采用预设的本Level的Hash函数对输入Key进行计算,将Hash计算结果映射到本Sub_Trie节点的数据结构信息指针上,P为整数且0〈ρ〈η ;
[0026]路由查找模块:当对一 VPN内的一 IPv6地址进行路由查找时,先根据VPN标识和该IPv6地址在每个Level之前的所有bit分别构造针对每个Level的输入Key,分别采用每个Level的Hash函数对针对每个Level的输入Key进行计算,若有Hash计算结果命中,则采用最长的Hash命中结果对应的Subjrie节点的数据结构信息指针查找路由;否则,根据该IPv6地址的高m+lbit查找到对应的Branch_Tree,在该Branch_Tree的Level I?P-1中查找路由。
[0027]可见,本申请支持多VPN实例的IPv6路由;且,通过将Multibit-Trie划分为多个Branch_Tree,提高了 IPv6路由查找效率;且,通过对Level p?η中的第一级Sub_Trie节点的指针进行Hash映射,使得在进行IPv6地址的路由查找时,可在Level p?η中进行并行查找,并根据最长的Hash命中结果查找到路由,进一步提高了 IPv6路由查找效率;
[0028]且,本申请实施例中,将默认路由单独存储,而不扩展到Level 1,减少了Multibit-Trie的冗余节点,进一步提高了路由查找速度;
[0029]且,本申请实施例中,通过为Level p?η中的每个Level设置多个Hash函数,减少了 Hash冲突,提高了路由查找精度;
[0030]且,本申请实施例中,对Sub_Trie节点内部进行前缀扩展后划分为8个SegmentedSub_Trie节点,进一步提高了路由查找速度;
[0031]且,本申请实施例中,简化最后一级Level的Sub_Trie节点的数据结构,进一步提高了路由查找速度。
【附图说明】
[0032]图1为2002?2009年Internet IPv4路由分布示意图;
[0033]图2为现有的Internet IPv6路由分布示意图;
[0034]图3 为 Unibit Trie 示例图;
[0035]图4为Unibit Trie到Multibit Trie的转换过程不例图;
[0036]图5为图4中的Level I的结构;
[0037]图6为本申请一实施例提供的基于Multibit Trie的IPv6路由查找方法流程图;
[0038]图7为本申请另一实施例提供的Multibit Trie的建立及划分方法流程图;
[0039]图8为本申请实施例针对一个VPN(VPN m)中的IPv6前缀的路由分布建立的Multibit Trie的结构不例图;
[0040]图9-1为本申请实施例提供的以图3所示的Unibit Trie为例,将/0级IPv6前缀的路由扩展到/I级IPv6如缀上的不例图;
[0041]图9-2为本申请实施例提供的以图3所示的Unibit Trie为例,将/I级IPv6前缀的路由扩展到/2级IPv6如缀上的不例图;
[0042]图9-3为本申请实施例提供的以图3所示的Unibit Trie为例,将/2级IPv6前缀的路由扩展到/3级IPv6如缀上的不例图;
[0043]图10为本申请另一实施例提供的基于Multibit Trie的IPv6路由查找方法流程图;
[0044]图11为本申请实施例提供的将Sub_Trie节点划分为8个Segmented Sub_Trie节点的示例图;
[0045]图12为本申请实施例提供的基于Multibit Trie的IPv6路由查找装置的组成示意图;
[0046]图13为本申请实施例提供的包含IPv6路由查找装置的设备的硬件架构示意图。
【具体实施方式】
[0047]Tree Bitmap (树位图)是基于Multibit Trie (多位字典树)的经典路由查找算法,该算法应用于CRS系列高端路由器上。为了深入了解Tree Bitmap,首先介绍UnibitTrie (单位字典树)和 Multibit Trie0
[0048]图3为Unibit Trie示例图,如图3所示,共有9条IPv4前缀Pl?P9分布。其中,Unibit Trie的最尚如缀节点Pl代表如缀*,之后,Pl的下一级的左分支表不的如缀Ql为0*,Pl的下一级的右分支表示的前缀P2为1*,Ql的下一级的左分支表示的前缀P3为00*,P2的下一级的左分支表示的前缀Q2为01*,P2的下一级的右分支表示的前缀Q3为11*,依此类推;也就是说,对于Unibit Trie中的任一节点P,该节点P的下一级的左分支表示的前缀0P,该节点P的下一级的右分支表示的前缀P ,为1P。
[0049]在Unibit Trie结构中,?节点代表有路由分布,〇表示没有路由分布。如图3中,Pl?P9代表有路由分布,Ql?Q8代表没有路由分布。
[0050]Unibit Trie中基于LPM的路由查找过程如下:
[0051]对于一个待查找LPM路由的IPv4前缀,以该IPv4前缀的从高到低bit的顺序,每次在Unibit Trie中查找该IPv4前缀的lbit,如果该bit为“0”,则进入Unibit Trie的下一级的左分支,如果该bit为“1”,则进入Unibit Trie的下一级的右分支;依此类推,一直查找到Unibit Trie的树底,最后经过的?节点的路由为该IPv4前缀的LPM路由。
[0052]例如:要在图3所示的Unibit Trie中查找IPv4前缀:10000110的LPM路由,则具体过程如下:
[0053]步骤01:先找出该IPv4前缀:10000110的最高的bit,即“ I ”,则从Unibit Trie的Pl进入下一级的右分支P2,表示为P1->P2 ;
[0054]步骤02:再找出IPv4前缀:10000110的次高bit,即“0”,则从Unibit Trie的P2进入下一级的左分支Q2,表示为:P2->Q2 ;
[0055]步骤03:再找出IPv4前缀:10000110的第三高bit,即“0”,则从Unibit Trie的Q2进入下一级的左分支Q4,表示为:Q2->Q4 ;
[0056]步骤04:再找出IPv4前缀:10000110的第四高bit,即“0”,则从Unibit Trie的Q4进入下一级的左分支P6,表不为:Q4->P6 ;
[0057]步骤05:再找出IPv4前缀:10000110的第五高bit,即“0”,则从Unibit Trie的P6进入下一级的左分支Q6,表不为:P6_>Q6 ;
[0058]步骤06:再找出IPv4前缀:10000110的第六高bit,即“ I ”,则从Unibit Trie的Q6进入下一级的右分支Q8,表示为:Q6->Q8 ;
[0059]步骤07:再找出IPv4前缀:10000110的第七高,即次低bit,即“1”,则从UnibitTrie的Q8进入下一级的右分支P9,表示为:Q8_>P9,此时,已经到达Unitbit Trie的树底,则查找结束,P9的路由为IPv4前缀:10000110的LPM路由。
[0060]也就是说,采用Unibit Trie查找IPv4前缀“10000110”的LPM路由,需要通过P1->P2->Q2->Q4->P6->Q6->Q8->P9,共七次节点查找。
[0061]Multibit Trie是在Unibit Trie的基础上,每次LPM路由查找时,查找多个bit。图4所示为Unibit Trie到Multibit Trie的转换过程,图4中每次LPM路由查找要查找3个bit,即LPM路由查找步长为3。
[0062]Tree Bitmap是在Multibit Trie基础上,对节点数据结构进行优化,使之更适合基于 SRAM (Static Random Access Memory,静态随机存取存储器)和 DRAM (Dynamic RandomAccess Memory,动态随机存取存储器)的大访问粒度架构的硬件流水线实现。MultibitTrie可根据预设LPM路由查找步长划分为多个Level,如图4所示的Multibit Trie以LPM路由查找步长3划分为3个Level:Level 1、Level 2和Level3。
[0063]图5给出了图3中的Level I的结构。
[0064]在Multibit Trie中,对于每个Level,将该Level划分为多个Tree Bitmap节点,每个Tree Bitmap节点为该Level的最高一级的一个前缀及其该前缀的子孙前缀构成的sub_Trie0
[0065]其中,设Multibit Trie以LPM路由查找步长S划分为N个Level,分别为LevelI?N,则Level I中包含一个Tree Bitmap节点,Level 2的最高一级前缀最多有2s个,则该2s个前缀中的每个前缀与其子孙前缀分别构成一棵sub—Trie,则Level 2中最后包含25个 Tree Bitmap 节点,通用地,Level m(l ^ m ^ N)中最多包含 2 (m 1)5个 Tree Bitmap 节点。
[0066]以图4为例,Level I中包含一个Tree Bitmap节点,Level 2中包含3个TreeBitmap 节点,Level 3 中包含 2 个 Tree Bitmap 节点。
[0067]在描述Tree Bitmap节点时,每个Tree Bitmap节点可采用如下四个参数来描述:
[0068]I) Internal Tree Bitmap (内部树位图)
[0069]Internal Tree Bitmap表示Tree Bitmap节点内部的前缀的路由分布,假设LPM路由查找步长为S,则该Tree Bitmap节点内部最多有(2S_1)个前缀,从而Internal TreeBitmap为(2S-1)位,每一位代表该Tree Bitmap节点内部的一个前缀上是否有路由分布,若该前缀上有路由分布,则该位取值为“ 1”,否则,该位取值为“O”。
[0070]例如:图5所示的Leve I中的Tree Bitmap节点,由于LPM路由查找步长S = 3,则Level I 中的Tree Bitmap节点的 Internal Tree Bitmap为23_1 = 7位,表不为 I—01—1000,其中,“I”表示对应前缀上有路由分布,“O”表示对应前缀上没有路由分布。
[0071]2) Extending Paths Bitmap (扩展路径位图)
[0072]Extending Paths Bitmap 表不 Tree Bitmap 节点的下一级 Tree Bitmap 节点的分布,假设LPM路由查找步长为S,则一个Tree Bitmap节点最多有23个分支,即该TreeB
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1