思科路由:迅速恢复平稳重启交换( 二 )


所有路由协议的平稳重启步骤都是类似的(如图 1 所示) 。下面列出了基本的步骤:
? 确定对等路由器“支持 NSF ” 。
? 发送 / 接收重启位 , 以便对等路由器知道正在进行恢复 。
? 暂时保存邻接信息 , 以便分组可以继续使用最后知道的路由继续转发 。
? 在恢复完成之后交换新的路由数据库信息
但是 , 因为每种路由协议都使用不同的机制来建立路由器的邻接关系或者对等关系 , 以及交换路由信息 , 所以每种协议的平稳重启步骤和消息都有所不同(如图 2 所示) 。
例如 , BGP 利用底层 TCP 协议来建立对等关系 , 而 OSPF 和 IS-IS 使用 Hello 消息来建立邻接关系 。这两种路由协议的另外一个区别是:在发现重启路由器无法恢复和决定重新利用完全网络融合进行传统恢复之前 , 持续转发分组的时间 。
BGP 平稳重启
因为 BGP 重启的影响可能会非常深远 , 所以 BGP 是进行高可用性改进的重要对象 。BGP 可以承载大量的路由 , 所以在某个 BGP 软件发生故障后进行网络融合的时间通常长于其他支持较少路由的路由协议 。此外 , 因为 BGP 是一种域间路由协议 , 所以一个发生故障的 BGP 流程可能会传播到多个网络 , 而不是局限于某一个域 。
在 BGP 网络进行重启时 , 协议改进会在初始 BGP 连接建立之后开始 。重启路由器及其对等路由器会通过在建立进程的初始 BGP OPEN 消息中交换 BGP 功能代码 64 , 表明对思科 NSF 的支持 。
在通常情况下 , 当路由器重启它的 BGP 进程时 , 与对等路由器的 TCP 连接将被清除 , 从而导致对等路由器清除所有与重启路由器有关的路由 。但是 , 在进行 BGP 平稳重启时将不会进行这样的操作 。相反 , 对等路由器会将这些路由标为“过期” , 并根据对重启路由器将会迅速重新建立 BGP 进程的预期 , 继续用这些路由转发分组 。同样 , 重启路由器还将在 BGP 协议进行重新融合时继续转发分组 。
当重启路由器建立新的 BGP 进程时 , 它将会再次向它的对等路由器发送 BGP 功能代码 64。但是在这一次 , 平稳重启功能交换中的标记位设置将让对等路由器知道 BGP 流程已经重启 。
在继续转发分组的同时 , 对等路由器将向重启路由器发送一个初始路由升级 。对等路由器将通过一个 end-of-RIB ( EOR )标记表明它已经将升级发送完毕 。这个标记实际上是一个空的 BGP UPDATE 消息 。在重启路由器从所有对等路由器收到 EOR 以后 , 它就知道它可以利用新的路由信息再次开始选择最佳路径 。
同样 , 重启路由器也会向它的对等路由器发送所有升级 , 再利用 EOR 标记表示发送完成 。这将让对等路由器可以用从重启路由器接收到的升级取代过期的路由 。
IS-IS 的特性
互联网工程任务小组 ( IETF )正在以互联网草案的形式 , 为 IS-IS 连接状态、单域路由协议设计一个类似的平稳重启流程 。IS-IS 扩展的设计者、来自思科的 Mike Shand 指出 , 在本期 Packet? 出版时 , IETF 将会公布这个草案的最后一个版本 。如前所述 , IS-IS 利用 Hello 协议发现相邻的路由器 , 以及建立和保持邻接关系 。当路由器重启时 , 它会通过 Hello 协议数据单元中的一个重启请求( RR )位向其对等路由器发送信号 。在一个 IS-IS 网络中 , 对等路由器可以直接向重启路由器发送数据库信息 , 而无需等待确认消息 。
在路由器重启之后 , 它会发送一个带有非凡的 RR 位设置的 Hello 分组 , 从而让对等路由器知道它已经重启 。对等路由器会通过在它自己的 Hello 消息中设置一个非凡的重启确认( RA )位 , 确认这个重启信号 。在对等路由器知道另外一个路由器已经重启(因而没有任何路由信息)之后 , 它会发送一个所有连接状态分组( LSP )的汇总列表 , 随后再发送该列表中指明的 LSP。另外 , 一旦汇总列表符合 , 重启路由器就会升级它的数据库 。从这个角度上来说 , 这种功能与 BGP 平稳重启流程中的 EOR 相当类似 。

推荐阅读