(文章出自华三  网络高可用性技术白皮书)

单个设备上的硬件冗余,如双主控、单板热插拔、电源冗余、风扇冗余等;

l环网技术,如RPR、RRPP;

l、Smart Link、Flex Link等二层冗余技术;

lECMP不间断转发:NSF/SSO/GR;

l快速重路由;

l1主控冗余

在设备只有单主控的情况下,如果主控板故障,重起主控板需要加载映象文件、初始化配置、重新注册业务板,然后重建控制平面和转发平面表项,整个过程在5分钟左右,这个时间实在是太长了,特别对于网络中处于单点故障的节点来说更是如此,因为业务在这个过程中将完全中断。为了缩短这个时间,主控冗余应运而生。

主控冗余是指设备提供两块主控板,互为备份。因为主控冗余在控制和转发分离的架构下才能发挥最大的效用,这里先介绍一下控制和转发分离的概念。在控制和转发分离的架构中,控制平面负责各种协议,如路由协议(如RIP/OSPF/IS-IS/BGP)、标签分发协议(如LDP/RSVP-TE/BGP)等的处理,形成路由信息表(RIB)和标签信息表(LIB),从其中选择最优者,加上必要的二层信息,形成路由转发信息表(FIB)和标签转发信息表(LFIB),下发到转发平面,转发平面据此实现快速转发。控制平面的处理在主控板上进行,转发平面的处理既可以在主控板(集中式设备),也可以在业务板(分布式设备)。一旦实现了控制和转发分离,即使控制平面出现故障,转发平面的转发表项在短时间内可以认为仍然合理,继续转发数据而不会导致问题(如环路),当然,控制平面必须能快速恢复并重新和邻居建立协议会话,收敛后再对转发平面进行检查,对表项作必要更新,删除在新的会话环境下不再正确的转发表项。

在主控冗余的设备上,配备了两块主控板,一块实际起作用,称为Master,另一块备用,称为Slave。只有Master进行控制平面的处理,并生成转发表项。Slave上的映像文件虽然也充分启动,配置也从Master实时备份,但Slave不参与控制平面的处理。不过,Master转发平面的各种表项(如L2/L3转发表项、IRF

IRF配置同步

当配置不相同的设备堆叠在一起时,会选取unit编号最小的设备作为master,其他的堆叠设备作为slave。与选举相关的因素有三个:UnitID、UnitRole、RunMode。UnitID是堆叠设备在fabric中的编号,1~8;UnitRole是指该unit的角色,分为master和slave,宏对应值为0和1;RunMode是指该unit的运行模式,分为L3和L2,宏对应值分别是0和1。选举master的考虑顺序是:UnitRole > RunMode > UnitID,“>”表示左边比右边优先考虑,比较的时候值小的为优先级高。

堆叠时,slave设备先获取到master设备的当前配置,与自己当前的全局配置比较,如果相同,直接堆叠起来。如果不相同,slave会用master的全局配置和自己的局部配置组成临时配置文件,自动重启后用这个配置文件配置设备,完成配置同步过程,从而使堆叠组内所有unit的全局配置保持一致。

2.设备的热插拔

当一台设备通过堆叠线加入到一个正在运行的fabric内,原有的fabric就会检测到新设备,同时验证新设备是否可以加入到fabric,如果验证通过,新加入设备会得到原有的全局配置信息和转发信息,同时将自己的局部配置和转发信息广播到fabric内每台unit,经过短暂的信息交互,新加入设备就可以参与转发了。这个过程不会影响原有fabric内业务的转发,也可以支持两个fabric合并。

当一台设备从fabric分离出去,可能会形成一个新的fabric,由于fabric内所有unit全局配置都是相同的,分离出去的fabric和原fabric具有完全相同的全局配置,这样可能会产生冲突,如三层接口ip地址冲突。IRF提供了Resilient ARP技术,当检测到分离出去的unit与原fabric存在ip地址冲突,则会把其中之一的设备降为二层设备使用,避免冲突而引起网络路由的震荡。

通过支持热插拔特性,当设备扩容的时候只需更多的交换机堆叠在一起,就可以简单实现扩容端口和交换容量的目的;单台设备故障,可认为是fabric减少了一台堆叠设备,对fabric内其他设备流量转发不会产生影响,通过本设备的业务流也会快速切换到其他设备上。

4.2交换机支持的多数协议,如:RSTP、IGMP-SNOOPING、LACP等,都是分布运行在fabric内各个设备上的,每个设备独立运行协议,与外部协议实体进行交互;同时,为了保持IRF作为一个整体运行,unit之间完成必要的信息交互。

下面以三层转发为例说明IRF如何实现分布式路由功能的,fabric内的任意一个unit都有完整的三层转发能力,当它收到待转发的三层报文时,可以通过查询本unit的三层转发表得到报文的出接口以及下一跳,然后将报文从正确的出接口送出去,这个出接口可以在本unit上,也可以在其它unit上,因为fabric始终是作为一台设备进行工作的,任何一个unit上的接口都是fabric上的接口,将报文从一个unit送到另外一个unit是一个纯内部实现,对外界是完全屏蔽的,即对于三层报文来说不管它在fabric内部穿过了多少unit,在跳数上只增加1,即表现为只经过了一个网络设备,在fabric内部的报文传递是不会改变报文的三层属性的。

分布式链路聚合(DLA)

DLA环网技术

环网技术通过把设备环形相连,在提供一定链路冗余的情况下避免了复杂的Mesh组网,环网有很强的单点故障自愈能力。环网技术分单环和双环两种结构。通信技术的发展过程中,出现了不少的环网技术,如Token Ring、FDDI、SDH等。

环网也因其固有拓扑而导致一些缺点,首先,对于多点故障难以提供故障保护,故障保护手段比较单一;其次,只要有一个区段出现带宽不足,需要环网的所有区段都扩容;另外,环网的每个节点只有两个纬度,资源利用效率相对较低。

这里简单介绍一下两种相对较新的环网技术:RPR(Resilent Packet Ring,弹性分组环)、RRPP(Rapid Ring Protection Protocol ,快速环保护协议),其中RPR为双环、RRPP为单环。

5.1(Resilient Packet Rings,弹性分组环)工作在OSI协议模型第二层的MAC层,和物理层无关,可运行于Ethernet 、SONET/SDH和DWDM之上。 RPR技术吸收了以太网的经济性、灵活性和可扩展性以及SDH对延时和抖动的严格保障、可靠的时钟和50ms环网保护特性,RPR不仅支持IP业务,也能很好的支持传统的TDM业务。

RPR有两种故障自愈方式:绕回(wrap)方式和抄近路(Steering)方式。绕回方式是数据在故障链路两端节点的0环和1环环回,优点是收敛快,缺点是绕回路径长,占用带宽较多。抄近路方式是直接走另外一个环,抄近路方式因为走另外一个环需要重新收敛,因此收敛速度稍慢,不过路径短,占用带宽少。下图列出了在正常情况下报文的转发路径,以及出现故障后,Wrap方式和Steering方式时报文的转发路径。

图6 的两种故障自愈方式

在两种故障自愈方式下,收敛时间都在50ms以内。

5.2RRPPRRPP域由整数表示的ID来标识,一组配置了相同的域ID和控制VLAN,并且相互连通的交换机群体构成一个RRPP域。一个RRPP域具有如下的组成要素。

b)环:

一个RRPP环物理上对应一个环形连接的以太网拓扑,一个RRPP域由彼此相交的多个RRPP环构成,其中有一个为主环,其他环为子环。相切环情况下可以都配置为一个主环;一个RRPP域也可以只包含一个RRPP环。RRPP环的角色由用户通过配置决定。

c)控制VLAN:

每个RRPP域可以具有两个控制VLAN,分别叫做主控制VLAN和子控制VLAN。主环的协议报文在主控制VLAN中传播,子环的协议报文在子控制VLAN中传播。

d)传输节点:

环上除主节点之外的其它节点都可以称为传输节点(边缘节点和辅助边缘节点实际上是特殊的传输节点)。一个RRPP环上可以有多个传输节点。

主端口和从端口:

主节点和传输节点接入以太网环的两个端口中,一个为主端口,另一个为从端口,端口的角色由用户的配置决定。主节点的主端口和从端口在功能上是有区别的。主节点从其主端口发送环路状态探测报文即Hello报文,如果能够从从端口收到该报文,说明本节点所在RRPP环网完整,因此需要阻塞从端口以防止数据环路;相反如果在规定时间内收不到探测报文,说明环网故障,此时需要放开从端口以保证环上所有节点的正常通信。传输节点的主端口和从端口在功能上没有区别。端口的角色同样由用户的配置决定。

2.基本原理

a)协议基础

l协议报文在控制VLAN中传播

b)环主要由一个主节点、多个传输节点和控制VLAN构成,主节点配置主端口和从端口,正常工作时主节点周期性地从主端口发送Hello报文,从端口一旦接收到自己发送Hello报文,立刻阻塞从端口。控制VLAN主要传输RRPP的控制报文,有效保护控制报文。

Polling机制是RRPP环的主节点主动检测环网健康状态的机制,主节点周期性地从其主端口发送Hello报文,依次经过各传输节点在环上传播。如果主节点的从端口能收到自己发送的Hello报文,说明环网链路完整;否则如果在规定时间内收不到Hello报文,就认为环网发生链路故障。

处于故障状态的主节点从端口收到自己发送的Hello报文,立即迁移到环恢复状态,阻塞从端口并刷新转发表,而且主端口发送刷新转发表的报文通知所有传输节点放开临时阻塞端口和刷新转发表。

d)

图9 故障处理过程示意图

e)STP和Smart Link技术都可以解决由于链路冗余而产生的二层环路问题,其中STP可以应用于各种拓扑,Smart Link则可以认为是对特定组网情况下对STP的替代技术。

解决二层环路技术而提出的技术很多,前面的RRPP也可以认为是这种技术。另外一种值得一提的技术是分布式链路聚合技术,通过跨设备的链路聚合,可以避免环路,不用使用STP,并做到链路负载分担。有些分布式链路聚合技术只能在同一个堆叠组的设备间跨设备聚合,另一些分布式链路聚合技术则可以跨任意设备聚合。

这里只介绍STP和Smart Link。

6.1(Spanning Tree Protocol,生成树协议)是IEEE为了避免二层链路环路而提出来的技术,在解决二层环路的同时能提供链路冗余,STP适用于任何拓扑,环形拓扑和Mesh拓扑都能胜任。不过,STP的收敛时间较慢,通常是30秒,特殊情况下要到50秒,难以适应当前数据网络中业务的需要。

为了提高STP的收敛速度,IEEE提出了RSTP标准,即快速STP。RSTP相对于STP的改进有:

1RSTP更精细的划分了端口角色:root端口、designed端口的定义和STP一样;但对于处于discarding状态的端口,细分为alternate端口和backup端口,分别是对根端口和指定端口的备份;另外,引入了一类特殊的Designed端口——edge端口,即和主机或其他终端设备相连的端口。

3基于对端口角色的精确划分,RSTP引入了各种端口的快速迁移机制:

1)端口的快速迁移机制,在P2P链路上,如果designed端口处于discarding状态,立即启动proposal和同步过程,快速收敛网络。

2)端口可以立即forwarding。这在CISCO中称为portfast。

3)相对于STP,大大加快了收敛时间,链路up/down的情况下可以达到几百毫秒的收敛速度。下面对RSTP和RRPP作一个比较:

1适用的拓扑:RSTP可以适用于任何拓扑,RRPP只能适用于环形拓扑。

2收敛时间,假设都是环形组网,并且是P2P链路相连。虽然链路up/down或节点的故障检测时间,RRPP和RSTP差不多,但整网收敛时间RRPP相比RSTP收敛时间要快,主要的原因是,RRPP报文的转发在传输节点上是硬件转发并拷贝上CPU,而RSTP报文需要逐跳由CPU处理后再转发,这导致拓扑变化在RSTP下传播比RRPP慢,整网收敛也就慢。

3节点个数限制问题:RRPP报文的轮询报文绕环一周,轮询报文的延迟随着环上节点个数的增多而增大,但只是亚毫秒级的影响,对RRPP的收敛性能影响有限,因此和RSTP相比,可以认为RRPP环上的节点的规模没有限制。RSTP因为报文的Max age,环上节点个数也受影响,虽然可调整Max age的大小作出应对,但因为RSTP报文是逐跳送CPU处理的,报文延迟较大,节点个数太多对收敛性能影响较大。

4安全性问题,RRPP使用独立的VLAN传播信令,可以认为安全性较RSTP为高。

总体来说,RRPP因为是针对环网开发的,在环网拓扑情况下,相对RSTP这种为适应任意拓扑开发的协议有一定的性能优势。

RSTP,即多实例STP的出现解决冗余链路利用率低的问题。MSTP中,一组VLAN使用一个STP实例,每个STP实例使用和RSTP相同的处理规则。在MSTP中,端口的阻塞是逻辑上的,只对某些STP实例进行阻塞,一个端口可能对一个STP实例阻塞,但对另一个STP实例是可以转发的。合理的使用MSTP,可以做到链路的负载分担。而且,因为映射到一个MSTP实例的VLAN可以灵活控制,并且引入了域的概念,使得MSTP在部署时有很好的扩展性。

6.2和CISCO针对这种常用组网,分别提出了Smart Link和Flex Link技术,作为STP的替代。这里只简单介绍Smart Link的实现机制。

如图10 Smart Link组网图所示,设备30上端口31上的链路是主用链路,端口32上的链路是备用链路,正常情况端口31处于转发状态,端口32处于阻塞状态。当端口31的链路出现故障时,端口31将切换到阻塞状态,端口32将切换到转发状态,切换时间小于200毫秒。这里的链路故障包括端口UP/DOWN,光纤的错纤故障,单纤故障等,此类故障需要响应DLDP的事件。主备链路可以是聚合链路,只有聚合组内所有链路都出现故障时才认为该聚合链路故障。目前我们只支持手工和静态聚合,不支持动态聚合。

网关冗余技术

网关冗余技术是为了解决局域网内主机静态配置缺省网关时,存在单点故障问题而提出的技术。基本的设想是,让多个物理网关虚拟出一个或多个虚拟网关,局域网内主机的缺省网关静态配置成这些虚拟网关,虚拟网关的转发任务由选举出来的某个物理网关承担,只要不是所有物理网关同时故障,总能选举出一个物理网关承担虚拟网关的转发任务。通过把局域网内主机的缺省网关配置成不同的虚拟网关,网关冗余技术还可实现流量的负载分担。

目前的虚拟网关技术有VRRP、HSRP和GLBP,其中HSRP和GLBP是CISCO的私有技术。HSRP(Hot Standby Router Protocol)完成和VRRP类似的功能,这里不作介绍,GLBP相对于VRRP做了优化,所有主机配置同一个网关地址就可实现负载分担,简化了管理。

7.1,即Virtual Router Redundancy Protocol。VRRP协议把局域网内的多个物理网关组织成一个或多个虚拟网关,局域网内的主机把缺省网关静态配置为这些虚拟网关的IP,主机和外部网络之间的通信流量由虚拟网关进行转发。参与构建一个虚拟网关的多个物理网关称为一个VRRP虚拟组。

虚拟网关的报文转发功能由虚拟组中某个物理网关实际承担,这个网关被称为Master,Master由VRRP虚拟组中的成员根据VRRP协议规则选举产生,竞争Mater失败的其他成员称为Backup。一旦选定的Master因为故障不能承担虚拟网关任务,VRRP协议会快速从其他Backup设备中选择出一个Master继续承担局域网和外部通信的任务,保证局域网和外部网络之间的通信快速恢复。

MasterVRRP

GLBP和收敛相关的有两个定时器,Hellotimer和Holdtimer。Hellotimer为虚拟组成员发送Hello报文的时间间隔。Holdtimer是GLBP组成员认为AVG和AVF有效的时间间隔,超过这个时间没有收到Hello报文,就会重新选举AVG和AVF。

GLBPHoldtimer>3*Hellotimer路由快速收敛

在实际网络中,通过冗余路由来提高网络可用性是普遍的做法,当其中一条路径发生故障时,流量可以切换到其他冗余路径。冗余路由可以分为两种情况,一种是等价路由,一种是非等价路由。等价路由即等价多路径(Equal Cost Multi Path,ECMP),ECMP的各条路径在互为备份的同时实现了负载分担。非等价路径情况下,只有最优路径被启用作报文转发,次优路径只有当最优路径失效时才会被启用。

等价多路径有较好的收敛性能,经常被用于提高网络可用性,在下面会分析一下其收敛性能。浮动静态路由也比较常用,也会简单介绍一下。最后本节会介绍目前普遍采用的提高IGP收敛性能的两种方法:快速Hello和iSPF。

8.1浮动静态路由

所谓浮动静态路由(floating static route)是指对同一个目的网络,配置下一跳不同,且优先级不同的多条静态路由。正常情况下,只有优先级最高的静态路由起作用。当优先级最高的静态路由失效时,次优静态路由被启用….,以此保障目的网络总是可达,提高网络可用性。

在转发路径故障的情况下,浮动静态路由收敛过程大致是:路径故障上报,路由模块删除软件FIB,如果存在硬件FIB,还要删除硬件FIB,路由模块启用次优路由,路由模块下设软件FIB,如果存在,下设硬件FIB。所以浮动静态路由的收敛时间为:

故障检测时间+路径故障上报时间+软硬件FIB删除时间+软硬件FIB下设时间

后面三个因素消耗的时间大致在10ms到100ms量级。故障检测时间需要具体情况具体分析,链路UP/DOWN的情况故障检测时间在ms级,可以忽略不计,其他故障在静态浮动路由的情况下还不好检测。

路径恢复时,其收敛过程和收敛时间跟路径故障时类似。

8.3快速收敛

目前常用的标准路由协议为RIP、OSPF、IS-IS、BGP。其中,收敛速度不是BGP协议的设计目标,所以本文不予讨论。RIP由于其周期性的非可靠路由发布机制,不适合用在高可用性网络,也不讨论。这里主要讲OSPF、IS-IS如何达到快速收敛,两者都是链路状态类型的IGP。

对于IGP,收敛速度是衡量其优劣的一个重要指标。具体到OSPF和IS-IS这两中链路状态路由协议,提高收敛速度,可以从下述几个方面着手:

1.提高协议会话建立速度

3.提高SPF计算效率

5.和IS-IS都使用hello报文来检测邻居状态,缩短hello报文的发送时间间隔,即常说的快速Hello可以有效加快故障检测速度。另外一种加快故障检测速度的机制是BFD,将在后面的章节讲到。

快速hello的另一个作用是可以提高OSPF和IS-IS邻居关系的建立,即上面提到的第2点,加快协议会话的建立速度。不过,存在冗余路径的情况,因为协议会话在冗余路径上是已经建立了的,这时快速Hello对于提高协议会话建立速度意义不大。不过,在没有冗余路径的情况下,快速Hello是可以提高会话建立速度的。

第三点,提高SPF计算效率,目前普遍采用iSPF,即增量SPF算法。

第四点,提高链路状态的同步速度,需要对链路变化快速反应,迅速生成新LSA并泛洪。

第五点,减少LSDB同步到SPF计算开始之间的时间间隔,可以通过适当调整SPF timer来实现。

下面介绍快速Hello和iSPF。

8.3.1和IS-IS均支持快速Hello,快速Hello的设计目标是用于多路访问网络,比如以太网,ATM网络,当多个路由器通过一个二层以太网交换机或者ATM交换机相连时,链路的UP/Down被二层交换机隔离,邻居感知不到,这导致邻居丢失需要靠协议的软Hello机制来检测。以OSPF为例,缺省的Hello interval为10秒,路由器缺省情况在4个Hello interval内收不到对端的Hello报文,才认为邻居丢失,这导致40秒之后才会引发SPF计算,重新选路。

对于一个高可用性网络来说,40多秒的收敛时间显然难以接受的。为此,各个设备厂商都设计了快速Hello特性,通过允许把Hello Interval设到最小50ms,来提高邻居丢失检查速度。

以CISCO的OSPF快速Hello为例,其配置命令为:

ip ospf dead-interval 其中如果使用Seconds参数,就是正常OSPF情况,缺省是4倍的Hello interval,但允许用户自己配置,单位为秒。

liSPF

在通常的OSPF、IS-IS协议实现中,如果链路状态发生了变化,那么整个最短路径树都会重新计算。但是在实际情况中,链路状态发生变化时,以发起计算的路由器为源点的最短路径树的绝大部分事实上是不需要重新计算的,只需要对受链路状态变化影响的部分,比如,只需对这条路径树的某些子树作增量计算即可。对链路状态改变引起的变化,充分利用先前的计算结果,只作增量计算,这就是iSPF(incremental SPF,增量最短路径优先)的目标,也是其名字的由来。

事实上,在标准的OSPF V2文本(RFC2328)的16.5/16.6已经提到一些只需要增量计算的情况,比如,当收到了变化的summary-LSAs和AS-external-LSAs时,不一定需要重新计算整棵树,可能只需要更新以ABR和ASBR为根的子树。

还有一些很明显的情况也只需要作增量计算,如下图,考虑以A为源节点的最短路径树,因为C-D之间的链路在最短路径树中没有使用,如果这条链路down,对整棵最短路径树事实上没有任何影响,根本就不需要进行SPF计算。再比如,路由器G增加了一个邻居H,那么对于以A为源的最短路径树来说,只需要计算以G为根的最短路径子树。

One-to-One backup Facility Backup

Facility Backup

图17 方式下,备份路径可以保护多条LSP,这也导致一个问题:在流量切换到备份路径之后,比如上图中,在R4节点收到从备份路径过来的流量,如何判断流量是属于LSP1还是LSP2?Facility Backup方式使用标签栈来解决这个问题,外层标签是备份路径的标签,内层标签则是切换前R4分配给主LSP上其邻节点R3的标签,比如,如果切换前R4在LSP1上分配给R3的标签为L1,那么切换后,R2在把LSP1的流量发给R6之前,先打上内层标签L1,再打上外层备份路径的标签。这样,只要在切换后R4的RSVP-TE信令能维持原来状态,标签转发表就不会改变,R4收到备份路径中过来的流量后根据内层标签就能正确判断流量属于LSP1,从LSP1的转发路径转发。至于R2如何知道LSP1上R4分配给R3的标签,和RSVP-TE中的一个称为RECORD_REROUTE对象相关,这个对象包含在RSVP-TE的RESV消息中,会沿LSP逆向累积纪录各个LSR分配给他的上游邻节点的标签,上游节点通过RESV消息中包含的这个对象能知道下游各个节点的标签分配情况。

下图是Facility Backup方式下,倒换前后的标签交换情况,这里只描述了LSP1的情况:

Facility Backupone-to-one backupone-to-one backupFacility Backup两种本地保护技术的优劣

Facility Backup方式的本地保护,最为人诟病的是其可扩展性不好。CISCO***Juniper常用的一个例子是,如果一个MPLS TE网络中有5000条需要保护的LSP,每条LSP平均的跳数为6,那么总共需要25000条Detour,光维护这些Detour的状态,就可能使各LSR的CPU不堪重负。不过事实上,通过对Detour的PATH消息进行归并,实际情况可能并没有那么可怕,大量的Detour可以被归并,归并后相当于多条Detour在MP或DMP点之后变成了一条。

4.,Shared Risk Link Group,风险共享链路组,指一组共享相同风险的链路,如果其中一条链路故障,其他链路可能都会失效。比如使用同一条光缆、同一个管道的光纤链路,如果光缆和管道被砍短,所有光纤链路都可能失效,再比如使用同一根光纤的子链路,如果光纤失效,所有子链路也失效。SRLG在传输网部署中被广泛考虑,在MPLS TE中引入SRLG,可以使备份路径在选路时,避免和被保护的链路在同一个SRLG,提供更好保护有效性。

MPLS TE路径保护

路径保护指为MPLS TE LSP提供端到端的保护。主路径生成后,可以为它静态配置或动态生成多条备份路径,一旦主路径检测到故障,主路径的头节点会立即把流量切换到其中一条备份路径,如果主路径故障恢复,又把流量切换回主路径。为了避免主路径和备份路径同时发生故障,备份路径应该尽量避开主路径途经的节点和链路。在主路径故障之前,备份路径不转发流量。

路径保护相对于本地保护,可扩展性较差。而且收敛时间也要慢一个数量级,大约在几百毫秒,这是因为主路径中途的LSR检测到节点或链路故障后,还需要生成PATH ERROR消息发送给头节点,期间,生成消息以及转发过程中的延迟,将消耗较多时间。

一般在只有少量LSP需要保护,而且对收敛时间要求相对较低的情况下才使用路径保护。