专利名称:一种改善域内路由ospf算法的ip快速重路由方法
技术领域:
本发明涉及互联网网络路由技术领域,尤其是涉及一种改善域内路由OSPF算法 的IP快速重路由的方法。
背景技术:
对互联网而言,网络故障是不可避免的。故障会导致网络连接中断,危害网络服 务,轻则导致分组丢失,重则使网络瘫痪。所以,现在的网络路由器要有对故障的自适应能 力,即当故障发生时能够动态地调整路由,适应新的网络拓扑。互联网设计之初就非常重视 网络故障对网络健壮性的影响,设计并使用了自适应的动态路由协议OSPF(Open Shortest Path First) 、 BGP (BorderGateway Protocol)等。这本质上也就是路由自愈能力,只是目 前的自愈能力不能够满足实际应用的需求。 一方面,随着互联网规模迅速扩大,网络故障数 量明显增加。另一方面,各种实时应用大量出现,VoIP(Voice over InternetProtocol)、 在线视频等实时应用广泛使用,人们对网络端到端性能的要求越来越高,而目前路由协议 的路由收敛时间难以完全满足用户的需求。传统的域内网关协议IGP(interior Gateway Protocols)中,RIP(Routing InformationProtocol)在故障发生后自愈所需时间在100秒 的数量级,且存在"无穷计算"问题;OSPF、 ISIS的路由收敛时间在几秒到几十秒。在收敛 过程中,网络路由可能是错误的,甚至会出现"路由黑洞",导致分组丢失,影响网络应用。
针对路由收敛慢、收敛过程中分组丢失或延迟等问题,越来越多的研究者开始重 新关注网络路由的自愈性,并提出了很多相关方案。在所有的方案中,只有NotVia(IPFRR with NotVia addresses)机制能够提供100%的单节点或单链路故障保护率。在NotVia 机制中,当网络中故障发生,导致故障上游节点无法转发IP数据包时,上游节点通过封装 的方式将该数据包定位到故障点的下一跳,从而绕过故障点实现保护。NotVia机制的优点 是它可以提供100%的单点或单链路保护,但是它也存在一些致命的问题
1.计算开销和存储开销太大。 一个自治域中可能出现的NotVia地址数量是链路 数量的两倍,每个路由器都必须计算并保存到这些NotVia地址的路由。首先计算开销是一 个问题,其次这些路由存在NotVia转发表中,给路由器带来巨大的存储负担。
2.路径回退问题。
3.解封瓶颈问题。
发明内容
本发明的目的是提供 一 种改善域内路由0SPF算法性能的IP快速重路由 的方法,该方法在保持No t V i a的10 0 %单点或者单链路故障保护的同时,提出了 ED-NotVia(Earlier Decapsulated NotVia)机制解决NotVia的上述问题。
为达到上述目的,本发明提供了如下所述的技术方案。 一种改善域内路由OSPF算 法的IP快速重路由的方法,该方法包括如下步骤 (a)所有路由器利用OSPF算法计算出正常的路由并且导出正常的路由表;
(b)所有路由器利用ED-NotVia算法找到必需的NotVia地址并计算到该NotVia 地址的备份路由,据此生成NotVia转发表,这样NotVia转发表中只有必须的NotVia前缀 入口 ; (c)当故障发生并且网络还没有根据此故障完成收敛时,由故障上游节点将原始
数据包用NotVia地址封装,重新定向到故障点下一跳,即正常路由的下下一挑; (d)当网络中的其他路由器收到NotVia包时,配合保护源点实现该包的转发; (e)当NotVia包到达故障点下一跳,由该下一跳路由器将其解封装,还原为原始
路由包,然后通过正常的路由将其转发到原始目的地址。 根据本发明的一个优选实施方案,上述步骤(d)还包括如下步骤 (dl)根据接收到的IP包,判断是NotVia包还是正常的IP包; (d2)如果判断是正常的IP包,那么就转到步骤(d3);如果判断是NotVia包,那么
就转到步骤(d4); (d3)在正常的转发表中查找目的前缀,找到下一跳,进行正常转发;如果下一跳 发生故障,那么就封装为NotVia包,然后转入步骤(d4); (d4)在NotVia转发表中查找目的地址前缀,如果该目的地址前缀存在,那么根据 该地址前缀信息提供的下一跳进行转发;如果该目的地址前缀不存在,就将NotVia包提前 解封装,还原为原来的IP包,转入步骤(d3)。 本发明结合现有的域内路由协议OSPF,提出一种ED-NotVia自愈方案,通过减少 NotVia转发表中的NotVia地址数量以及提前解封装,解决了 NotVia存在的诸多问题,提高 了路由自愈能力,保证了故障发生时数据包的正确转发。该方法具有以下特点提供100% 故障保护率、实现简单、计算及存储代价小、保护路径优、无解封瓶颈等特点。
图1是根据本发明的减少NotVia前缀入口数量的状态示意图; 图2是根据本发明的NotVia解封后回退和解封瓶颈问题的状态参考图; 图3是根据本发明的多次封装问题的状态参考图; 图4是根据本方明的改善域内路由0SPF算法的IP快速重路由的方法流程图;
图5是根据本发明的IP快速重路由的方法中步骤(d)的转发流程图。
具体实施例方式
下面将参照附图更加详细地描述根据本发明的改善域内路由0SPF算法的IP快速 重路由的方法的具体实施方式
。 该发明的主要目标是提出一种改善域内路由0SPF算法的IP快速重路由方法,如 图4所示,该方法包括如下步骤 (a)所有路由器利用OSPF算法计算出正常的路由并且导出正常的路由表;
(b)所有路由器利用ED-NotVia算法找到必需的NotVia地址并计算到该NotVia 地址的备份路由,据此生成NotVia转发表,这样NotVia转发表中只有必须的NotVia前缀 入口 ; (c)当故障发生并且网络还没有根据此故障完成收敛时,由故障上游节点将原始数据包用NotVia地址封装,重新定向到故障点下一跳,S卩,正常路由的下下一挑; (d)当网络中的其他路由器收到NotVia包时,配合保护源点实现该包的转发; (e)当NotVia包到达故障点下一跳,由该下一跳路由器将其解封装,还原为原始
路由包,然后通过正常的路由将其转发到原始目的地址。 另外,如图5所示,上述步骤(d)还包括如下情况 (dl)根据接收到的IP包,判断是NotVia包还是正常的IP包; (d2)如果判断是正常的IP包,那么就转到步骤(d3);如果判断是NotVia包,那么
就转到步骤(d4); (d3)在正常的转发表中查找目的前缀,找到下一跳,进行正常转发;如果下一跳 发生故障,那么就封装为NotVia包,然后转入步骤(d4); (d4)在NotVia转发表中查找目的地址前缀,如果该目的地址前缀存在,那么根据 该地址前缀信息提供的下一跳进行转发;如果该目的地址前缀不存在,就将NotVia包提前 解封装,还原为原来的IP包,转入步骤(d3)。
其中,ED-NotVia算法包括如下步骤 (11)路由器需要计算并且保存必需的NotVia地址,减少不需要的NotVia前缀,生 成NotVia转发表; (22)路由器接收到NotVia包时,如果在其NotVia转发表中能够查到相应前缀入 口 ,那么根据对应的路由转发该包;如果其NotVia转发表中没有对应的前缀入口 ,那么就 将其提前解封装。 本发明针对NotVia机制,提出了两个方面的改进, 一是NotVia保护路由计算优 化,另一个是NotVia包的转发流程,二者相互关联。NotVia保护路由计算优化主要包括如 何减少必需的NotVia地址,从而减小NotVia转发表。基于上述优化,我们在NotVia包的 转发流程中以几乎零代价引入提前解封装的方法,解决了路径回退和解封瓶颈的问题。上 述步骤中,其中(a)和(b)是对NotVia保护路由的计算,(c) 、 (d)和(e)是故障发生时的 保护过程。 这个方案需要满足以下几个特性 1)必须提供足够高的单点或者单链路故障保护率。 2)计算保护路径的算法开销必须足够小,这样保护路径才能够根据拓扑变化迅速 调整。 3)保护路径要尽量接近收敛后的最优路径,减少因故障带来的抖动和网络拥塞。 为了论述方便,我们做出如下说明 R :自治域内的任意路由器,R具有ED-NotVia功能; D :我们要提供保护的IP包的目的前缀; S :保护源点,也就是故障点F的上游节点; F :我们要讨论的故障点, 一般是S到D的下一跳; Q :NotVia隧道终点, 一般是S到D的下下一跳; QF :我们要讨论的NotVia地址,指到达Q不经过F ; 保护路径针对故障F,从S到D的路径; NotVia路径针对故障F, S到D的保护路径中S到Q的那一段,也就是NotVia隧
5道。 "Q/,表示一个地址,这个地址表示目的是Q节点,但是不要经过F节点。NotVia本 身的意思就是不经过的意思。在实际的实现中,NotVia转发表和正常的转发表是分开存储 的。 根据上述目标,本发明所提出的自愈方案ED-NotVia的基本方式如下
R首先完成正常的路由计算,得到正常的转发表。除此之外,R还需要为可能经 过它的NotVia保护包(以下简称NotVia包)提供路由。R通过相关性判断,得到必需 的NotVia地址,然后利用iSPF算法为这些地址前缀计算出NotVia路由,并导出相应的 NotVia转发表。为了保持说明的流畅性,本文将如何利用iSPF有效地找到NotVia地址并 计算相应NotVia路由表的算法,即ED-NotVia算法放在后面来说明。故假设网络中任意路 由器R已经如上所述计算出了 NotVia转发表。 在故障发生且路由协议尚未完成全网收敛时,网络路由器启动保护路由完成相关 转发任务。假设讨论的目的前缀为D。 D的转发树是以D为根的一棵树,在该树中直接可达 D的节点为D的孩子,通过其孩子可达D的为其孩子的孩子,以此类推。
首先,在D的转发树中,故障F的上游节点即F的孩子 一 我们称为保护源点S—检 测出F出现故障,然后会产生故障更新报文,广播出去,并针对新的拓扑计算路由,进而完 成收敛。在未完成收敛之前的这段时间,保护源点S将收到的到达D的IP包以特殊的 NotVia地址一 即Qp封装,重定向到正常路由下下一跳Q,并在IP报头中设置特定的标志 位表示这是一个NotVia包,根据已经计算好的NotVia路由表进行转发;R收到封装后的 NotVia包后,发现这是一个NotVia包,因此查NotVia转发表;如果在R的NotVia转发表 包含QF表项,那么根据该表项对应的下一跳继续转发该NotVia包;如果R的NotVia转发 表中没有QF表项,那么R可以将该包提前解封装,还原为到D的包;如果这个NotVia包在 到达Q之前没有被解封装,那么Q作为NotVia隧道终点,负责将其解封装,还原为到D的IP 包。NotVia包一旦被解封装还原为原来的目的地址,就意味着已经绕过故障点,然后通过正 常的转发表就可以到达目的地。 下面分别讨论如何减少NotVia前缀的数量和如何实现提前解封装,然后综合考
虑二者,提出实现它们的简单实用的方法。 1.减少NotVia前缀的数量 在这部分,我们将给出R需要QF前缀入口的充要条件。 定义QF对R是正常的R到QF的下一跳和到Q的下一跳是一致的,否则称QF对R 是异常的。 当QF对R是正常的,此时R不需要QF前缀入口 ,因为R直接根据Q前缀路由该包 就可以了。但是,QF对R是异常的并不意味着就需要QF前缀入口。如图l所示,虽然Qp对 R是异常的,但是唯一的保护源点S到QF的路径不经过R,也就是说R不会收到前缀为QF的 NotVia包,故R不需要QF前缀入口 。故需引入下一个定义来确定什么条件下R需要QF前 缀入口。其中图1中所标数字为链路权值。 定义如果R不可能收到前缀为QF的NotVia包,称R与QF是无关的;否则称R与 QF是相关的。更准确的说,无关意味着对任意一个保护源点S, S到QF的路径都不经过R ;否 则R与Qp是相关的。
如果R与QF是无关的,R必然不需要QF前缀入口 。但是R与QF相关并不意味着R 就需要QF前缀入口 ,比如图1中的A是与QF相关的,但是A就不需要QF前缀入口 ,因为QF 对A是正常的。 综上可知,R需要计算并保存QF前缀路由当且仅当R与QF相关且QF对R是异常 的。 2.提前解封装 NotVia存在两个问题影响路由的效率,其分别是解封装后回退和解封瓶颈问题。 如图2所示,S到D的保护路径是S-X-Y-Z-A-Q-A-D,解封后的回退虽然不会引起回路,但是 如果实际中A这样的点很多,那么路由效率将受到很大影响。此外,S、B和P封装产生的Qp 包会汇聚到Q点,所有的解封任务都由Q来完成,这需要很大的开销。当故障发生时,Q点 就会成为影响整体转发速度的瓶颈。因此我们提出提前解封的思想,并给出了提前解封的 判断依据。当R收到QF包时,可以提前解封的充要条件是R到D不经过F。其中图2中所 标数字为链路权值。 按照上述条件,图2中当S和P产生的前缀为QF的NotVia包分别到达Y和0点 时,因为Y和0到D的路径都不经过故障点F,故可以此NotVia包提前解封装还原为到D的 包,此时故障点已经不会再影响该包的路由。这样,只有B产生的Qp包需要Q来解封装。Q 的转发负担和解封装负担都得到有效缓解,而且还优化了路径,回退问题因此也不复存在。
但是这个条件不具有实用价值,因为D本身被封装在包内。所以我们提出一个提 前解封装的充分非必要条件R到Q的路由不经过F。可以证明如果R到Q不经过F,那么R 到D也不经过F。反证如下如果R到D经过F,由于F到D的下一跳是Q,故R到D也经过 Q。 3.综合考虑减少NotVia前缀入口数量和提前解封装问题 为了简化提前解封装的判断,我们提出以下方案如果R收到前缀为QF的NotVia 包,其在其NotVia转发表中没有QF前缀入口 ,那么QF对R是正常的,我们认为此时可以提 前解封装。 大多数情况下,这种简化方式可以工作得很好。因为QF对R是正常的意味着R到 Q的路由下一跳不受F的影B向,隐含着可以解封装的意思。 深入思考后发现存在一个问题就是多次封装问题。如图3所示,B发现到D的下 一跳不通,于是封装产生QF包交给R。 R没有QF前缀入口 ,故解封装,然后R按照目的D路 由到达S。 S发现F出故障,又将该包封装为QF包交给A,由A进行解封装,然后一直路由到 D。 这个问题有两种处理方式。第一种方式,将R不保存QF的条件改为R与QF无关或 者R到Q不经过F。这样虽然会多保存一些NotVia前缀入口 ,但是消除了多次封装问题。 另外一种方式就是不管它,因为它不影响路由结果的正确性。多次封装不会产生回路,因为 第二次封装的点比第一次更接近QF而不是Q。如果是B到F的链路出现故障的话,也不会 有多次封装问题,此时的路径会得到优化。而且,如图3所示,网络中像A这样的节点要远 远多于R这样的节点。所以实现过程中怎么选择这样的节点只是一个工程问题。其中图3 中所标数字为链路权值。 现在,网络中的任意路由器R接到一个Qp包的处理过程为查QF前缀,如果该前缀不存在,即将该包解封,然后通过正常路由转发;如果存在,那么直接转发。此处我们可以看 到,R并不需要Q和F地址。 接下来一个关键的问题是如何有效地找到对R来说必要的NotVia地址并计算这 些地址的NotVia路由表,这也是我们下面要讨论的内容。 关于ED-NotVia的部署,需要在网络中的任意路由器R中实现我们的NotVia路由 计算及转发算法。这样, 一方面保证NotVia路由表及转发表的建立,另一方面确保当故障 发生时能够顺利切换到NotVia转发处理流程。 首先,我们给出实现ED-NotVia功能的路由器R的路由计算框架,包括正常路由表 的计算和NotVia路由表的计算。然后我们给出实现ED-NotVia功能的路由器R对IP包的 具体转发流程。从而,通过这两个步骤搭建起具有ED-NotVia自愈功能的域内路由体系。
1.具有ED-NotVia功能的路由器R的路由计算 R首先通过OSPF—最短路径算法,计算出正常的路由并导出正常的转发表。由于 ED-NotVia的需要,此处的转发表中应该有下下一跳的信息,这只要对SPF算法稍加修改即 可。然后在正常计算得到的最短路径树的基础上,运用iSPF算法,计算出相关的NotVia地 址前缀路由信息,并导出NotVia转发表。此处路由计算过程已经实现了上述的优化,过滤 掉了对R来说不必要的NotVia前缀路由,这样为提前解封装的实现提供了判断依据。
下面给出网络中的任意路由器R如何计算其需要的NotVia前缀路由的算法,此算 法建立在以R为根的正常最短路径树(SPT-R)计算基础之上,采用iSPF算法为每个需要的 前缀计算相应路由。
算法ED-NotVia〃R计算需要的NotVia前缀路由的算法
输入R的正常最短路径树SPT-R
输出所有R需要保存的QF前缀的路由集合Routes
1. 根据SPT-R将R的每个孩子压入堆栈S
2. do
3. pop (S, F)
4. forF的每个孩子Q
5. push(S, Q)
6. 用iSPF算法计算R到QF的路由r 2.具有ED-NotVia功能的路由器R的IP包转发
R收到一个IP包的转发过程如图4所示。 R首先判断该IP包是否为NotVia包如果是NotVia包,进入ED-NotVia转发过 程。查NotVia转发表,如果存在相应的NotVia地址前缀,那么根据该前缀信息提供的下一 跳转发。否则,即此NotVia前缀在R的NotVia转发表中不存在,R就将该NotVia包解封 装,还原为原来的IP包,并切换到正常的路由转发流程。如果在NotVia保护路径中再次出 现故障,那么根据ED-NotVia不提供二重保护的原则即不为NoVia包提供第二次保护,因此 丢弃该包。 如果是正常包,进入正常转发过程。如果正常的下一跳出现故障,根据下下一跳封装将该包封装,转到ED-NotVia转发过程。 以上所揭露的仅为本发明的优选实施例而已,当然不能以此来限定本发明之权利 范围,因此依本发明申请专利范围所作的等同变化,仍属本发明所涵盖的范围。
权利要求
一种改善域内路由OSPF算法的IP快速重路由方法,该方法包括如下步骤(a)所有路由器利用OSPF算法计算出正常的路由并且导出正常的路由表;(b)所有路由器利用ED-NotVia算法找到必需的NotVia地址并计算到所述NotVia地址的备份路由,据此生成NotVia转发表,这样所述NotVia转发表中只有必须的NotVia前缀入口;(c)当故障发生并且网络还没有根据此故障完成收敛时,由故障上游节点将原始数据包用所述NotVia地址进行封装,重新定向到故障点下一跳,即正常路由的下下一挑;(d)当网络中的其他路由器收到NotVia包时,配合保护源点实现所述NotVia包的转发;(e)当所述NotVia包到达所述故障点下一跳时,由所述故障点下一跳路由器将其提前解封装,还原为原始路由包,然后通过正常的路由将其转发到原始目的地址。
2. 如权利要求1所述的IP快速重路由的方法,其特征在于,所述步骤(d)还包括如下步骤(dl)根据接收到的IP包,判断是NotVia包还是正常的IP包;(d2)如果判断是正常的IP包,那么就转到步骤(d3);如果判断是所述NotVia包,那么就转到步骤(d4);(d3)在所述正常的转发表中查找目的前缀,找到下一跳,进行正常转发;如果所述下一跳发生故障,那么就封装为所述NotVia包,然后转入步骤(d4);(d4)在所述NotVia转发表中查找目的地址前缀,如果该目的地址前缀存在,那么根据该地址前缀信息提供的下一跳进行转发;如果该目的地址前缀不存在,就将所述NotVia包提前解封装,还原为原来的IP包,转入步骤(d3)。
3. 如权利要求1所述的IP快速重路由的方法,其特征在于,所述ED-NotVia算法包括如下步骤(11)路由器需要计算并且保存必需的NotVia地址,减少不需要的NotVia前缀,生成NotVia转发表;(22)路由器接收到NotVia包时,如果在其NotVia转发表中能够查到相应前缀入口 ,那么根据对应的路由转发该包;如果其NotVia转发表中没有对应的前缀入口 ,那么就将其提前解封装。
4. 如权利要求1所述的IP快速重路由的方法,其特征在于,所述NotVia包是指在未完成收敛之前的这段时间,保护源点将收到的目的前缀的IP包以特殊的NotVia地址封装,重新定向到正常路由下下一跳,通过在IP报头中设置特定的标志位来表示的。
全文摘要
一种改善域内路由OSPF算法的IP快速重路由的方法,该方法包括如下步骤(a)利用OSPF算法计算出正常路由且导出正常路由表;(b)利用ED-NotVia算法找到NotVia地址,据此生成NotVia转发表;(c)当故障发生且未完成收敛时,由故障上游节点将原始数据包用NotVia地址封装,重新定向到故障点下一跳;(d)当其他路由器收到NotVia包时,配合保护源点实现该包的转发;(e)当NotVia包到达故障点下一跳时,将其解封装,还原为原始路由包,通过正常的路由将其转发到原始目的地址。其中,ED-NotVia首次提出了将“去除无用的NotVia地址”和“提前解封装”结合到一起。该方法具有实现简单、代价小、保护路径优、无解封瓶颈等特点。适用于对较大规模自治域系统在故障下的域内路由性能改善。
文档编号H04L12/56GK101695053SQ200910235309
公开日2010年4月14日 申请日期2009年9月30日 优先权日2009年9月30日
发明者彭艳海, 徐明伟, 李清, 李琦 申请人:清华大学;