设计高可用系统需要在部件冗余度、软件可恢复性和故障恢复机制、服务级别期望以及系统成本和复杂性之间进行恰当的平衡,本文通过深入探讨路由时钟最优化、错误检测、硬件架构、软件切换和冗余度等问题,给出一条实现所需平衡的解决方案。
对高可用性路由系统的需求日益增长,特别是在网络边缘,由于电路被端接,通常无法通过改变路由来绕过故障设备,因此这一需求尤为突出。百万故障(DPM)数越低,路由器能用来处理和转发数据包的时间百分比就越高,同时与服务级协议冲突有关的运营成本和代价也就越低。此外,IP网络上的实时交互语音和视频应用只能容忍很小的性能下降。因此,构成网络基础的IP路由器必须具有适应部件和软件故障的弹性。
克服网络边缘路由器的内在脆弱性是构建可靠IP网络过程中最重要的一步。位于网络边缘的系统需要最大程度的高可用性保护。网络的这个部分通常最容易受到故障的影响,其原因有二。首先,边缘设备通常端接和集聚了大量的电路。例如,在服务提供商网络中,一个边缘设备可能端接数十万个连接,因此一个持续时间较长的网络故障的影响将会被放大。其次,由于冗余电路成本的问题,连接到服务提供商网络的许多用户仅有一条链路来接入网络边缘设备。在这种情况下,无法让用户的传输信息绕过一个故障设备。与之相比,在网络的核心部分,由冗余电路网络连接起来的冗余系统能够实现无缝的IP路由变更,从而绕过一个发生故障的网络部件。因此,利用冗余部件和快速恢复机制来加强边缘设备,把它们对网络故障的影响降到最低具有极其重要的意义。
可用性的度量
定义一个网络设备的可用性或正常运行时间的方法有几种。“可用性”是指一个路由器实际处理和转发数据包的时间百分比。因此,一个系统的可用性可以表达为设备的平均故障间隔时间(MTBF)和它的平均故障恢复时间(MTTR)。计算公式如下:
可用性=(MTBF×100)/(MTBF+MTTR)(%)
由于系统可能发生局部故障,可以用DPM数来表示可用性。局部故障难以表达为整个网络的可用性百分比。另一方面,DPM也是一种线性的量度(参见图1)。数据包转发中的任何延迟或中断都可能会影响一个应用的性能,实时会话时尤其如此。例如,如果在一个语音会话中数据包连续丢失3秒以上,语音通话质量的下降将使大部分用户泄气地挂掉话机。
为了防止数据会话中断,建议一个系统应能在故障发生后10秒钟内恢复,这里假设该系统支持各种Layer 3路由协议。所有路由协议都规定了最小时间间隔,会话断开之前,对方设备必须在这段时间内接收到一个确认信息。因此为了维持正常运行,路由器软件至少必须能够在此时间内得到恢复。
中间系统与中间系统之间的通信对故障恢复的要求最为严格。如果在6~15秒钟内没有得到对方的确认信息,某些地方的通信将会出现超时故障,而且这些间隔时间是不可配置的。开放最短路径优先(OSPF)的缺省超时为15秒左右,边界网关协议(BGP)的缺省值为120秒左右。不过需要注意的是,OSPF和BGP的超时时间间隔是可配置的。
设置路由协议时钟是设计高可用IP网络时必须作出的折中实例之一。如果超时间隔太长,路由器就不能迅速检测故障,这将延长系统失效时间。如果超时间隔太短,路由协议又可能会过于频繁地等待从对方接收确认信息,甚至可能检测出虚假故障,并导致网络不稳。同时,通信太频繁也会不必要地消耗系统的资源。
可用性部件
如果没有一个高可用性的底层硬件平台,讨论软件的可恢复性设计策略就没有实际的意义。换句话说,如果基础系统不上电运行,软件根本就不可能转发数据包。
因此,创建高可用性系统的第一步就是考虑应当在何种程度上将备份的硬件部件构建到系统中去。例如,冗余供电、线路板、风扇和机架都对降低MTTR具有关键意义。此外,将这些部件设计成能够热插拔可以极大地提高正常运行时间,而且使得工作中的系统不必关机就可以直接更换部件。
双路由处理器:对于一个高可用性架构而言,冗余路由处理器(RP)是必不可少的。RP是路由器的大脑。它计算路由和转发表,并将最佳路径信息发送给对等路由器。主从RP的信息同步进行到何种程度是软件设计的一个重要问题,因为它必须在恢复时间与系统资源的消耗之间作出某种平衡。
硬件系统架构选择:路由器的硬件架构选择将对系统的潜在可用性产生影响。最主要的路由器架构有集中式架构和分布式架构,这两种架构内部还有其他的设计选择。在所有的架构中,都需要处于工作状态的RP和备份RP来使整个系统维持较低的MTTR。
在集中式架构系统中,数据包处理和转发工作在一个中央共享RP中执行,各网络接口线路板相对简单(参见图2)。在这种结构中,每块线路板包含的部件相对较少。这降低了部件的故障概率,减少了系统的成本。另一方面,如果中央RP发生故障,对整个系统的影响更大,因为所有的路由和数据包转发都会停止。这就是为什么双RP设计变得非常关键的原因。
在一个分布式架构系统中,数据包转发能力被置于每块线路板中(参见图3)。将转发引擎从中央RP转移到每块线路板降低了RP故障的影响,因为在RP故障期间线路板仍可继续转发数据包。
在分布式系统中,单块线路板的故障概率大于集中式架构中的线路板。原因很简单,分布式系统中每块线路板更为复杂,其MTBF更低。
集中式系统和分布式系统都可以使用一种常规的线路板设置来进行设计,各自都包含Layer 2网络接口连接,在分布式系统中还包含了插入一组普通总线的转发引擎。另外一种架构是具有某些线路板保护功能的中间层机架架构。
中间层结构将每块线路板的功能分为两半,分别置于一块前端板和一块后端板中。这两块“半卡”都插入中间的一个中央机架中。通过在设计中融入某种程度的线路板冗余(一块后备半卡作为一块或多块主半卡的备份),网络操作员可以对一块半卡进行热插拔而不影响它的另一半。
在许多情况下,前端卡位于系统机箱中间层的远端,它对网络接口进行端接;后端卡则支持大部分电子电路,如数据包转发引擎。此时,对电缆的管理变得更加复杂了,因为带有电子电路的后端卡面向机箱,使得将路由器连接到其他设备成为一项挑战。
软件可靠性:如前所述,任何高可用性系统的基础是硬件冗余,特别是双重供电、总线、风扇和RP。不过,一旦冗余硬件平台具备之后,许多软件因素会影响到路由器有效处理和转发输入数据包的时间百分比。
在设计高可用性软件中有几个关键目标:
* 将软件故障的影响降到最低。
* 对软件故障进行迅速检测和恢复。
* 将系统恢复时新会话的阻塞间降到最短。
对实际硬件和软件故障的检测必须迅速进行以便使系统得以恢复。今天大多数系统中的故障检测需要100毫秒到3秒,具体时间长短取决于系统的设计。硬件和软件的相互作用和故障检测必须进行彻底测试,因为如果系统不精确检测故障,所有系统冗余都将是白费劲。对硬件进行故障插入测试、使用探针、在线插入和移动机器人测试可用来确保软件检测出所有问题,包括有缺陷的硬件和软件。
在RP发生故障(包括硬件故障或软件故障)的情况下,路由器的恢复将需要花费一些时间。包括将新的软件镜像加载到备份RP、加载配置、对其初始化、取得Layer 2连接和Layer 3路由协议以及重建路由表。当然,在这些工作中,许多都可以并行执行或提前执行以降低系统的MTTR。
降低软件故障影响的另一种方法是只重启发生故障的那个软件进程,而不是重启整个系统。这必须在保留路由、转发表和会话的情况下完成。这种方法的主要问题是想要覆盖系统中所有进程(例如:一个软件内核故障)比较困难,而且缺乏针对硬件故障的保护。从硬件故障恢复的唯一方法是在使用冗余处理器的同时采用一种有弹性的软件架构,而可重启进程并不是一种可选的方法。
意外故障
使一个系统能够快速有效地从故障中恢复过来可以防止故障对应用和网络服务的性能造成重大的影响。系统设计目标中有一项是要将软件故障的影响限制在路由器本身,防止对网络的其他部分产生更广泛的影响。其他主要目标包括确保物理链接在故障期间维持继续有效;相邻路由节点不在路由表中排除一个节点从而造成网络路由缺陷;ATM、帧中继、高级数据链路控制和点对点协议等Layer 2协议不发生超时故障并导致连接重启或中断;软件恢复时数据包继续转发。为了实现这些目标,路由器必须运行被激活RP和备份RP并让它们的信息保持同步。
RP和软件切换:在何种程度上让处于工作状态的RP和备份RP保持其全部信息,并及时同步是一个关键性的设计考虑。其决策反映了在系统恢复速度和成本之间的一个平衡折中。可供选择的方案有冷、暖和热待机备份系统。
在冷备份方案中,处于工作状态的RP和备份RP之间不共享任何状态信息,软件故障将导致完全的复位,备份RP自动接替发生故障的处于工作状态的RP,但是必须从头开始建立自己的路由表。此外,所有的线路板也将进行复位。这种方案下发生的是彻底的用户停机。不过,与没有备份RP时相比MTTR仍然较低,因为系统可以自动开始恢复,无需维修或更换路由器。
暖备份时,路由器配置和软件镜像都已经载入了备份RP。当备份RP必须重建其路由表信息时,由于跳过了配置和镜像重载步骤,因此降低了MTTR。
在热备份方案中,备份RP加载了路由器配置、软件镜像和网络状态信息,而且还由处于工作状态的RP对其进行连续更新。同步的状态信息对应于所用的协议,如帧中继的本地管理接口信息、简单网络管理协议(Simple Network Management Protocol)的SysUptime和特定协议的规定序列数。必须向备份处理器传输足够的状态信息,这样当处于工作状态的软件或硬件RP发生故障时,备份处理器就可以接替和恢复系统而不造成任何服务损失。
处于工作状态的RP和备份RP之间的同步率决定了备份处理器在任意时刻的更新程度,从而也决定了系统的恢复速度。在任意时刻,由于故障中断了两个处理器之间的通信信息流,备份RP的数据同步可能无法完成,这将导致信息失配。新的处于工作状态的RP和线路板之间的互动软件必须足够智能,以便从这种失配中恢复过来,确保系统的鲁棒性。
处理器同步次数越多,失配的可能性就越小。不过,频繁同步增加了系统资源的消耗。这可能会影响路由器的吞吐性能,或者需要在系统中增加额外的处理能力。
线路板备份:与处于工作状态的RP和备份RP之间的切换相似,线路板的冗余程度也会影响系统的可用性水平。一种可选的方案可称为1+1结构,其中每块线路板都有一个备份,在热备份模式中可供切换之用。与冗余RP设计中类似,1+1线路板结构保持备份线路板与Layer 2和配置信息进行同步。虽然这种方案比较昂贵,但它可以提供比N+1结构更高的可用性。在N+1结构的系统中,每N块线路板才配置有一块备份线路板。
选择N+1线路板冗余方案时,热备份切换可能更难于实现。因为如果故障线路板和需要加载的备份线路板之间没有1:1的互相关性,就难以保持工作的线路板和备份的线路板的同步。换句话说,单一备份线路板必须拥有所有N个处于工作状态的线路板的所有配置和状态信息。因此,备份线路板常常运行在冷模式。
N+1设计方案的另一个问题是可能需要一个外部开关,以便当一块处于工作状态的线路板发生故障时进行切换。
IETF扩展
首先,一个高可用性的系统设计需要一个硬件平台,这个硬件平台包含冗余的、可以热插拔的部件以便支持快速恢复软件技术。为了取得比采用冷备份设计时更快的MTTR,路由器软件必须具有将某些路由器配置和状态信息传递给备份部件的智能,或者具有从一些其他来源进行恢复的能力。例如,在第二部分探讨的各种内容中,将包括IETF为了尽可能降低故障的持续时间和定位时间而完成的对路由协议的扩展。
作者:Purnam A. Sheth
IOS软件工程主管
Email: pasheth@
思科系统公司