网络技术是从1990年代中期发展起来的新技术 , 它把互联网上分散的资源融为有机整体 , 实现资源的全面共享和有机协作 , 使人们能够透明地使用资源的整体能力并按需获取信息 。资源包括高性能计算机、存储资源、数据资源、信息资源、知识资源、专家资源、大型数据库、网络、传感器等 。当前的互联网只限于信息共享 , 网络则被认为是互联网发展的第三阶段 。众所周知 , 要获得很高的网络永续性 , 需要使用具有热故障恢复功能和连接不同网络路径的主路由器和备用路由器 。但是仅仅这样并不够 。路由器本身——尤其是那些位于不安全的 WAN 边缘的路由器——应当配有内部冗余硬件组件 , 例如交换矩阵、线路卡、电源路由处理器( RP ) 。高可用性路由器还必须支持快速软件恢复技术 。利用可以隔离控制和转发面板 , 并使用平稳的重启机制——也被称为思科不间断转发( NSF )——的路由器 , 可以大幅度地延长网络和应用的正常运行时间 。这种软件恢复技术可以在 RP 流程发生中断时 , 保持分组的正常传输 , 从而控制中断对网络的影响 。
双RP和连续分组转发
RP 包含了路由器的“大脑” 。它负责存储最佳路径路由信息的数据库 , 保存与对等路由器的邻接关系 , 以及处理特定的管理职能 。冗余硬件可以提高网络组件在发生故障时的可用性 。思科的双 RP 设备包括 12000 、 10000 和 7600 系列高端路由器 , 以及 Cisco 7500 和 7300 系列路由器 。
两个 RP 的状态信息的同步程度在一定程度上将取决于路由器能够以多快的速度从进程重启或者从故障中恢复 。这需要在两个极端的备份形式之间进行平衡 。一种极端形式是 RP 的“冷”备份 , 即不包含任何关于第二层连接、邻接关系和最佳路径路由表的状态信息 。在这种情况下 , 所有这些信息都需要重新构建 , 因而可能会导致极长的恢复时间 。另外一种极端形式是在两个 RP 之间不间断地同步所有的信息 , 这可能会占用过多的处理资源 , 影响到网络的可扩展性和性能 。
通常采用的方式是在这两种极端的 RP 同步方式之间保持适当的平衡 , 即将大部分(但并非全部)恢复信息加载到备用 RP 中 。这种同步可以在切换 RP 和集中路由表的过程中 , 继续进行第三层分组转发 。
安装在上述路由器平台上的 Cisco IOS®软件 12.0(22)S 版本或者更高版本可以支持思科 NSF。它能在主 RP 进行预定维护或者 RP 发生意外故障时缩短路由器的停机时间 。在大多数情况下 , 要实现思科 NSF , 重启路由器和它的对等 路由器必须保存针对所有可以通过重启路由器到达的网络的转发信息 。在重启路由器上 , 在从主 RP 向备用 RP 切换的过程中 , 控制面板和转发面板必须互相隔离 , 以便让转发面板能继续转发数据流量 。
路由协议扩展
为了实现 NSF , 部分思科路由器可以采用常用路由协议——包括边界网关协议( BGP )、 IS-IS 和开放最短路径优先( OSPF )的新型平稳重启扩展 。这些扩展可以在判断主 RP 能否迅速恢复的同时 , 暂时继续转发分组和保持网络连接的稳定性 。
要让大部分思科 NSF/ 平稳重启部署可以发挥作用 , 重启路由器的对等路由器也必须支持这些扩展 。这主要是由于下面两点原因 。首先 , RP 切换并不代表拓扑变化 , 仅仅表示 RP 恢复 。对等路由器可以利用平稳重启扩展区别这两种情况 , 从而避免对外广播停用和启用重启路由器的信息 。这可以防止不必要的广播信息和路由变化 。其次 , 它让对等器能在恢复期间继续向重启路由器转发分组 , 从而提供 NSF。它还必须知道应当交换哪些消息和信息 , 以帮助主器迅速恢复 。
文章插图
screen.width-333)this.width=screen.width-333" >
图 1: 支持思科 NSF 的对等器可以帮助彼此从突发故障中迅速恢复 , 从而最大限度地缩短停机时间、继续转发分组和保持整个网络的稳定性 。
文章插图
screen.width-333)this.width=screen.width-333" >
图 2: 无论采用任何协议 , 用户数据分组都将在整个恢复步骤中不断地在对等器之间传输 。
平稳重启的基本步骤
所有协议的平稳重启步骤都是类似的(如图 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 相当类似 。
思科为可以利用命令行界面( CLI )进行设置配置的 IS-IS 提供了另一种方法 , 即将所有的邻接和 LSP 信息保存或者暂存到备用 RP 中 。在切换完毕之后 , 新的主 RP 将利用暂存的数据保持它的邻接关系 , 并可以迅速地重建它的路由表 。
RP 的切换过程只需要几秒钟时间 。IS-IS 可以在接下来的几秒钟内重建它的路由表 , 并与网络重新同步 。在这个时候 , IS-IS 会等待一段指定的间隔 , 随后尝试第二个思科 NSF 重启 。在此期间 , 新的备用 RP 将会启动 , 并将它的配置与主 RP 保持同步 。
在同步完成之后 , IS-IS 邻接关系和 LSP 数据会暂存到备用 RP ;但是 , 只有在间隔时间结束之后 , IS-IS 才会尝试新的思科 NSF 重启 。另外 , 重启路由器将会用第一个汇总列表验证它所缓存的 LSP 的有效性 , 从而保持 IS-IS协议的状态 。
OSPF 的工作方式
当某个支持 OSPF NSF 的路由器进行 RP 切换时 , 它会执行两项任务 , 以便与它的 OSPF 邻居重新同步它的连接状态数据库( LSDB ) 。首先 , 它必须在不重新设置邻接关系的情况下 , 重新学习网络上的可用 OSPF 邻居 。其次 , 它必须重新获得网络的 LSDB 的内容 。
在 RP 切换之后 , 重启路由器会以很短的间隔时间 , 向支持思科 NSF 的相邻设备发送一个 Hello 分组 , 并在其中的扩展选项类型长度值( TLV )中设置重启信号位 。对等路由器将意识到 , 与重启路由器的邻接关系不需要重新设置 。在重启路由器收到一个 Hello 响应(作为对它的 Hello 消息的回复)之后 , 它就会开始与它的对方路由器进行数据库同步 。
在数据库同步结束之后 , 重启路由器将会升级它的路由信息库( RIB )和转发信息库( FIB ) 。如果网络或者连接状态信息与重启路由器在数据库同步期间收到的信息不同 , 重启路由器将会把这些信息发送到对等路由器 。
高可用性网络必须在很多方面进行加固 , 包括采用冗余的网络拓扑设计 。此外 , 还需要部署配有冗余组件和软件智能的路由器 。这些软件智能可以进行故障恢复和减轻暂时中断对网络的影响 。
很多思科路由器都以路由协议扩展的形式支持内部设计和软件智能 , 因而可以帮助服务供应商和企业加固它们的网络 。
计算路由器的正常运行时间
【路由:迅速恢复】系统的可用性是通过路由器的平均故障间隔时间( MTBF )——即设备正常工作的总时间——和平均故障恢复时间( MTTR )衡量的 。MTTR 表示系统不能处理和转发分组的时间 。用 MTBF 除以 MTBF 和 MTTR 之和 , 再乘以 100 , 就得出某个特定系统的可用性百分比 。
推荐阅读
- 本机IP设置不当造成路由异常故障区分
- android基于开源网络框架asychhttpclient,二次封装为通用网络请求组件
- Android TV端的(RecyclerView)水平滚动焦点错乱问题
- Android线程池——ThreadPoolExecutor及其拒绝策略RejectedExecutionHandler使用演示样例
- android界面
- ORB-SLAM2学习3 MapPoint.h Map.h KeyFrame.h
- Android中TextUtils类
- Android 利用代码在屏幕中间位置显示ProgressDialog和ProgressBar
- 直接拿来用のandroid公共代码模块解析与分享の Notification和NotificationManager