路由转发及路由转发的下一跳表存储方法技术

技术编号:3507140 阅读:269 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开一种路由转发的下一跳表存储方法,该方法包括:指定各个下一跳表的二级索引;指定各个前缀对应的下一跳维护表的一级索引;确定各个前缀对应的下一跳维护表中维护的下一跳表的二级索引;按照所述前缀及所述前缀对应的下一跳维护表的一级索引、下一跳维护表的一级索引指向的记录所述前缀对应的下一跳表组的各个下一跳表的二级索引的下一跳维护表以及各个下一跳维护表中下一跳表的二级索引指向的对应下一跳表存储路由转发的下一跳表。相应的,本发明专利技术还公开一种路由转发方法,本发明专利技术可减少存储路由转发的下一跳表占用的存储空间、提高下一跳表项更新速度并进一步提高路由转发效率。

【技术实现步骤摘要】

本专利技术涉及路由转发技术,更具体的说,本专利技术涉及一种。
技术介绍
数据通信中经常涉及路由转发的问题,通常,在数据通信设备(比如路由器)的控制平面负责路由信息收集、路由计算、设备管理、网管代理等功能。而数据通信设备(比如路由器)的数据平面(也叫业务平面、转发平面)负责实际网络流量的接收、找路、发送和特殊业务处理等工作。在进行路由转发时,控制层面负责通过协议包从其它设备收集路由信息,形成最优的路径信息库(类似于一张世界地图),然后将这些最优的信息形成一个快速转发表(FIB,Forwarding Information Base),FIB被下发到数据平面,相当于一个快速查找的地图,所有的网上的IP业务,都是通过查找FIB得到去往目的地的下一站信息。通常,FIB使用需要转发的IP包的目的IP地址进行查找下一跳表,下一跳表包括下一跳设备的信息,如下一跳IP地址,出接口等等。FIB有效存储下一跳表直接影响了数据平面的转发效率和设计复杂度,是影响设备性能和可靠性的关键点。传统的FIB结构采用统一表模型(Unified table model),如图1所示,统一表模型中,一个前缀对应一个下一跳数组,下一跳数组中可能包括多个等值路由,等值路由之间是负载分担的关系,查找到这一条路由的流量被这几条路分担。前缀通常指一个包括了掩码的IP地址,例如1.1.1.1/24,即地址为1.1.1.1掩码为24,如果只有这一条路由,那么目的IP地址为1.1.1.*的都会查找到这一项,FIB查找按照最长前缀匹配(LPM,Longest Profix Match)进行。上述传统FIB模型的特点是每个前缀对应一个下一跳数组,如果一个下一跳在多个前缀的下一跳数组中都有,则同时存在多份下一跳表被存储在FIB中,例如图1中的NextHop1和NextHop3。上述现有技术在路由转发时只要匹配到前缀,就可以得到该前缀对应的所有下一跳数组,不用再查找更多的表,但还存在如下的缺点1、占用空间较大。对于一个路由器来讲,下一跳通常有几十个就不少了,最多也不超过1、2百个,但是对于前缀,目前的骨干路由器却可以达到20万个以上,这样会造成同样一个下一跳表的内容,可能要在FIB表中被复制上万次。2、更新慢。由于同一个下一跳被复制了很多份,当这个下一跳表的链路出现故障时,路由协议会删除所有对应的下一跳表信息,这样就需要删除很多次,从而导致控制平面和数据平面之间通信量大增,影响其它数据的上送下发。同时路由的更新速度也是衡量通信设备的一个关键指标,它反映了设备从发现故障到修正路由表(修改地图)花费的时间,在这段时间内,所有走这条路的报文都可能由于路由没有被刷新而继续走错误的路,被丢弃。由于同一个下一跳表被删除上万次,也会导致这个指标低下,带来丢包数量增加。在链路从故障回复到正常时,同样也会出现类似问题,所有相关下一跳表项要被添加一遍,流量恢复时间会增加。为了解决上述传统FIB的问题,网络处理(器)论坛(NPF,NetworkProcessing Forum)在2003~2004年期间提出了新的模型,即分散表模型。参考图2,分散表模型中,对于下一跳数组一样的前缀,仅仅在内存中保留一份下一跳组。同时在每个前缀中对应的表项中,增加一个下一跳标识ID的结构,这个结构仅仅是一个指针,所占空间很少。由于前缀和下一跳数组之间是多对一的关系。采用该种模型,所需内存的存储空间耗费大大减少。另外,由于下一跳数组存储一份,所以在更新时,更新速度会大大加快,仅仅需要更新下一跳组即可,不用一个一个的删除或者增加多份。但是该种方法仍然存在如下的缺点对于不同下一跳组中,虽然存在相同下一跳,也会在不同下一跳组中保留多份,即不同下一跳组存储一份,没有真正做到公共下一跳只存储一份,内存的存储空间有待进一步节省。
技术实现思路
本专利技术解决的技术问题是提供一种,以减少存储路由转发的下一跳表占用的存储空间、提高下一跳表项更新速度并进一步提高路由转发效率。为解决上述问题,本专利技术的路由转发的下一跳表存储方法,包括预设前缀及前缀对应的下一跳表组的下一跳维护表的一级索引、该一级索引指向的下一跳表组的下一跳维护表中各个下一跳表的二级索引、该二级索引指向的下一跳表的两级索引存储结构;按照所述两级索引存储结构存储路由转发的下一跳表。具体的,按照两级索引存储结构存储路由转发的下一跳表包括如下步骤指定各个下一跳表的二级索引;指定各个前缀对应的下一跳维护表的一级索引;确定各个前缀对应的下一跳维护表中维护的下一跳表的二级索引;按照所述前缀及所述前缀对应的下一跳维护表的一级索引、下一跳维护表的一级索引指向的记录所述前缀对应的下一跳表组的各个下一跳表二级索引的下一跳维护表以及各个下一跳维护表中下一跳表二级索引指向的对应下一跳表存储路由转发的下一跳表。优选地,还包括对应下一跳表存储引用该下一跳表的下一跳维护表的一级索引,更新路由转发的下一跳表时,根据对应该下一跳表存储的引用该下一跳表的下一跳维护表的一级索引更新该下一跳表及引用该下一跳表的下一跳维护表。其中,所述的下一跳维护表的一级索引可为指向对应下一跳维护表的指针。其中,所述的下一跳表的二级索引可为指向对应下一跳表的指针。相应地,本专利技术的路由转发方法,包括根据与路由转发匹配的前缀查找对应的下一跳维护表的一级索引;根据所述下一跳维护表的一级索引查找该下一跳维护表的一级索引指向的下一跳维护表;根据所述下一跳维护表中各个下一跳表的二级索引查找对应的下一跳表;根据所述查找到的对应的下一跳表进行路由转发。优选地,对应下一跳表存储有引用该下一跳表的下一跳维护表的一级索引,还包括更新路由转发的下一跳表时,根据对应该下一跳表存储的引用该下一跳表的下一跳维护表的一级索引更新该下一跳表及引用该下一跳表的下一跳维护表。其中,所述的下一跳维护表一级索引为指向对应下一跳维护表的指针。其中,所述的下一跳表二级索引为指向对应下一跳表的指针。与现有技术相比,本专利技术具有以下优点本专利技术通过指定各个下一跳表的二级索引以及指定各个前缀对应的下一跳维护表的一级索引,在各个前缀对应的下一跳维护表中仅设置维护的下一跳表的一级索引,存储下一跳表项时按照所述前缀及所述前缀对应的下一跳维护表的一级索引、下一跳维护表的一级索引指向的记录所述前缀对应的下一跳表组的各个下一跳表的二级索引的下一跳维护表以及各个下一跳维护表中下一跳表二级索引指向的对应下一跳表进行存储。由于下一跳表只存储一份,所以存储空间的耗费大大减少。另外,在本专利技术的优选实施例中对应下一跳表还存储引用该下一跳表的下一跳维护表的一级索引,更新路由转发的下一跳表时,根据对应下一跳表存储的引用该下一跳表的下一跳维护表的一级索引更新下一跳表及引用该下一跳表的下一跳维护表。由于可以在下一跳中保留引用该下一跳的下一跳维护表的一级索引,所以在更新时,更新速度会大大加快,仅仅需要更新下一跳及该引用该下一跳的下一跳维护表即可,不用一个一个的删除或者增加多份。附图说明图1是现有技术FIB模型进行下一跳表存储的示意图;图2是现有技术统一表模型进行下一跳表存储的示意图;图3是本专利技术进行下一跳表存储的示意图;图4是本专利技术实现路由转发的流程图。具体实施例方式参考图3,该图是本专利技术进行路由转发的下本文档来自技高网
...

【技术保护点】
一种路由转发的下一跳表存储方法,其特征在于,包括:预设前缀及前缀对应的下一跳表组的下一跳维护表的一级索引、该一级索引指向的下一跳表组的下一跳维护表中各个下一跳表的二级索引、该二级索引指向的下一跳表的两级索引存储结构;按照所述 两级索引存储结构存储路由转发的下一跳表。

【技术特征摘要】

【专利技术属性】
技术研发人员:李贺军
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1