网络高可用性概述
文/陈旭盛
引言
随着互联网的爆炸式发展,越来越多行业的核心业务严重依赖网络开展。作为网络应用发源地的ICT行业自不消说,证券、金融行业现在离了网络几乎寸步难行,零售行业更是通过网络引发了电商革命。互联网大潮之下,几乎没有哪个行业不被波及,触网成了不得不面对的选择。
大量事关行业生死的业务在网络的广泛部署,同时网络带宽也在呈指数级增长,这使得基础网络的短时间中断就会影响大量业务,造成重大损失。据媒体报道,亚马逊13年2月1日网络故障50分钟,直接导致了500万美金的经济损失;而加拿大安大略市社会援助网络04年7月份的一次持续16天的故障,则导致了政府接近5亿美金的损失。
在这种背景下,高可用性(High Availability,HA)日益成为构建网络的关键目标。上至运营商,下到大中型企业客户,构建基础网络时,5个9(99.999%)的网络可用性成为必然的选择,这相当于一年中,各种原因造成的网络中断大约为5.256分钟。同样,对于网络设备厂商而言,能否提供完善的高可用产品和解决方案,直接关系到核心竞争力,关系到在未来激烈的竞争中能否生存。
可用性度量
在讨论网络高可用性之前,我们有必要先搞清楚到底什么是网络可用性。所谓网络可用性,顾名思义,就是网络的可用程度, 网络无故障运营的时间占总运营时间的百分比可以用来比较好的反映网络的可用性。如果要以数学方式严谨定义,需要引入两个统计指标:
l 平均无故障时间(Mean Time Between Failures,MTBF)。 即两次故障之间正常运行的平均时间。MTBF越大,表明越不容易出故障,可用性自然高。MTBF反映的是网络的可靠性(reliability)。
l 平均修复时间(Mean Time To Repair,MTTR)。即出现故障后修复故障的平均时间。MTTR越小,表示故障时间越短,可用性也就越高。MTTR反映的是网络的容错能力(fault-tolerant capability)。
有了这两个指标,可用性可以如下计算:
(1)
我们看一个例子可以更好的理解这个定义:一个网络在一年365天中,出现了4次故障,故障总时间是1个小时,计算这个网络的可用性。
首先,计算网络的1年中的可用时间,即总的时间减去故障时间,为:365x24 - 1 = 8759个小时。
接下来计算MTBF和MTTR:
平均无故障时间,就是总的可用时间除以故障次数:
MTBF = 8759/4 = 2189.75 小时;
平均修复时间,就是故障时间除以故障次数:
MTTR = 1/4 = 0.25 小时
最后,Availability =MTBF/(MTBF+MTTR)= 99.988%
即这个网络的可用性为99.988%,接近4个9的水平。
下面这个表格揭示了n个9的可用性的情况下,对应到一年中中断服务的时间:
表1 n个9的可用性对应的1年中中断服务时间
The nines | Off-service time |
90% | 36.5天 |
99% | 3.65天 |
99.9% | 8.76小时 |
99.99% | 52.56分钟 |
99.999% | 5.256分钟 |
99.9999% | 31.536秒 |
你会发现,和主观想象不一样,99%的可用性,其实很差,一年有3.65天网络不可用。即使是4个9的水平,其可用性也并不高,一年中断服务的时间达到了53分钟。只有到5个9的水平,一年只中断服务5分钟,可用性可以接受。这也是为什么很多网络建设的可用性目标定为5个9的原因。
提高网络可用性
我们对公式(1)作一下变化:
(2)
从(2)可以直观的看出,提高MTBF,降低MTTR,都可以提高网络的可用性。
先说提高MTBF,也就是避免网络发生故障。在实践中,导致网络故障的因素很多,大致可以分为不可控因素和可控因素。不可控因素主要指战争,自然灾害,大范围停电,人为破坏等,我们不予讨论。可控因素则大致可以归纳如下:
l 设备软硬件故障
l DOS/DDOS攻击
l 线路故障
l 网络拥塞
l 维护升级
l 操作失误
一个很自然的想法,就是把上述各种可控因素对网络可用性的影响降到最小,有针对性的对上述因素一一采取措施:加大测试投入,提高设备软件版本的质量;构建安全网络避免DoS/DDoS攻击;提高线路质量,减少线路故障;优化网络设计或升级网络,避免拥塞;尽量使用在线升级技术或避开用户高峰进行网络升级,减少维护带来的网络中断;加大对客户网管人员的培训,避免误操作等。通过这些措施,使网络尽量不出故障,事实上就延长了MTBF,可以达到提高网络可用性的目的。
但是,延长MTBF的方法都有其局限。以加大测试投入以提高软硬件版本的质量为例:确实,高质量的软硬件版本可以提高MTBF,是构建高可用网络的基础,也是包括H3C在内的设备商一贯追求的目标,设备的硬件部件的MTBF通常已经在30年以上。但是,对于软件来说,几十年的软件工程实践已经给出答案,再严格的测试也不能穷尽所有问题,软件测试只能尽可能多的暴露问题,避免遗留对客户应用有重大影响的问题。
其他技术,如在线升级技术,比如ISSU(In-Service Software Upgrade)也只能在特定条件下才能保证对业务没有影响。而线路故障,网络拥塞,维护升级,操作失误,虽然可以尽量减少,但难以完全避免。
毫不夸张的说,在实际的网络运营中,出现技术或非技术因素导致的故障是必然的。这是客观事实,我们必须面对,因此,开发能使网络从故障中快速恢复的技术,对提高网络可用性就显得尤其重要。这对应的就是缩小MTTR。事实上,如果网络总是能在不中断(绝大部分)业务的情况下恢复,对多数用户,就其业务体验来说,甚至可以认为是无故障的。
网络高可用性技术
当前的高可用性技术,绝大部分聚焦于如何使网络从故障中快速恢复。这些技术也是本次期刊的重点。
首先,要想让网络从故障中快速恢复,必须能快速自动发现故障。如果出现故障不能尽快发现,或者还需要手工干预,怎么都说不上高可用。快速检测节点及链路的故障,可以通过硬件心跳,也可以通过软件协议,或者协议以专有硬件方式实现。BFD就是很典型的快速故障检测协议,独立于上层协议,但和上层协议联动,一旦检测到故障立即上报促成上层协议的快速收敛。虽然上层协议本身一般都有保活机制,可以通过调整保活报文发送频率来加快故障检测,但上层协议的保活报文一般除了保活之外,还兼其他功能,不够简洁,处理效率不高,所以用于快速故障检测会有很多负面作用(比如路由协议的快速hello等)。专有的BFD要简洁高效得多,也便于通过专有芯片实现。
其次,应该有备用的网络部件,一旦发现故障,备份部件能迅速接替工作。在设备层面,备用的网络部件可以是链路、单板以及整个设备。在网络层面,则需要考虑转发路径的备份,一旦先前的转发路径出现故障,可以把业务流量快速切换到备份路径。
对于备份路径,可以是故障前已经事先构建好的,也可以是在故障后通过计算获得,当然,前者的故障恢复时间要短得多。链路聚合、Smart Link、RRPP、RPR、ECMP等技术可以认为是在局部(一跳范围内)建立了备份链路;而MPLS TE/FRR则是在网络全局建立好了备用转发路径;路由快速收敛、STP/RSTP等技术则是在出现故障后,在全局范围内重新计算选路。
并不是所有故障,都需要备份路径或链路。事实上,在主控冗余的情况下,借助于控制与转发分离,如果只是控制平面出现故障,转发平面正常的情况下,可以通过一些技术处理在业务几乎不中断的情况下,恢复网络。主用控制平面出现故障时,转发平面保持不变,备用控制平面接替工作并重新构建控制平面的各种状态,然后启动平滑进程,使控制和转发平面数据一致,从而完成网络的完全恢复。在这期间,数据转发没有间断,客户业务没有感知,网络始终是可用的。NSR/NSF/SSO/GR就是这类技术,一些4-7层的备份技术也可以归入这类。 当然,不同的技术,重新构建控制平面状态的过程不同,比如NSR(Non-Stop Routing)较为完全的备份了路由协议的状态,重新构建控制平面状态这个步骤基本可免,不会引起控制平面的震荡,实现了网络可用性的最大化。而NSF(Non-Stop Forwarding)备份的协议状态则很有限,需要协议重新收敛以构建控制平面状态。
对目前常用的高可用性技术,根据前面的描述,可以作一个简单的归类:
l 快速故障检测技术:BFD,CFD
l 链路捆绑技术:如以太网链路聚合、MP、MFR、HDLC捆绑等;
l 环网技术:RPR、RRPP;
l 其他二层冗余技术:STP、Smart Link;
l 网关冗余:VRRP(E)、HSRP、GLBP;
l 不间断转发技术:NSR/NSF/SSO/GR;
l 综合性HA技术:IRF、IP FRR、MPLS FRR、MPLS-TP;
在本期刊物接下来的文章中,我们会按照链路级HA和网络级HA两个维度,选取相关重要技术,一一详细介绍。
构建高可用网络
虽然高可用性技术的使用可以较大的提高网络的可用性,但构建高可用性网络,从来不是一个单纯的技术问题,而是一个系统工程,需要通盘考虑。
l 在网络规划设计阶段,需要细致分析客户业务模型,确定基础网络拓扑,对影响网络可用性的关键节点和链路必须做充分的冗余设计,并根据网络结构,在各个层次、各个节点部署合适的高可用性技术。
l 持续进行网络维护和优化。合理的网络维护和优化,可以避免90%以上的网络故障。对全网的业务流量需要利用高效的网管工具持续监控、分析、预测、优化,最大限度的规避网络拥塞。在进行软硬件版本升级或新设备,新业务上线时,需要事先详细规划,制定应急预案。
l 高度关注网络安全问题。网络安全问题已经成为影响网络可用性的重要因素,定期对主机系统和网络系统进行安全评估,构建一个多层次的安全防御和预警系统对高可用性网络非常有必要。
l 做好业务系统和网络系统的协调。业务和网络的关系,类似于车和路。同样宽的路,控制得当的话,可以跑更多的车流。不合理的业务处理模型,会人为造成网络拥塞点。积极分析业务模型,并适当的进行调整,可以让网络更通畅。