什么是优雅重启?
优雅重启(Graceful Restart,GR)又称为平滑重启,是一种有序的、可控的控制平面协议重启的技术,被广泛地应用在设备主备切换和系统升级等场景。优雅重启在协议层面协助数据不间断转发(None Stop Forwarding,NSF)的实现,保证当设备的控制层面协议重启时,数据转发仍然正常进行,从而保护网络上关键业务不受影响。
为什么需要优雅重启?
当前,各种增值业务(如IPTV、视频会议等)得到了广泛部署,网络中断可能影响大量业务、造成重大损失。因此,承载业务的基础网络可靠性备受关注。为了提高网络设备的可靠性,实现数据的不间断转发,现代高性能网络设备在硬件、软件和协议方面需要满足一定的要求。
现代高性能网络设备的框架模型
硬件方面的要求如下:
双主控冗余:双主控冗余配置,即一块做主用主控板(Active Main Board,AMB),处于工作状态;一块做备用主控板(Standby Main Board,SMB),处于备份状态。当主用主控板故障时,通过主备切换,备用主控板接管失效主控板的工作,重新启动控制平面的工作。
分布式结构:控制面和转发面分配在不同的组件内,都有相应的内存和处理器。控制面的处理器一般位于主控板,负责路由学习、路由计算等工作;而转发面的处理器则位于接口板,负责数据报文转发,如IP报文转发,MPLS(Multiprotocol Label Switching,多协议标签交换)报文交换等工作。分布式结构保证了主控板主备切换时,接口板不重启,转发表(上图中的FIB表)不撤销,还会按照其原来从主控板获得的转发表进行正常的数据转发。
软件方面的要求如下:
主用主控板正常运行的过程中,会把配置信息、接口状态信息等备份到备用主控板。
协议方面的要求如下:
控制面协议重启时,邻居关系不震荡。以路由协议为例,通常情况下,路由器故障后,其路由协议层面的邻居会检测到它们之间的邻居关系Down掉,然后过段时间再次Up,这个过程被称为邻居关系震荡。这种邻居关系的震荡会造成整网设备重新进行路由计算,导致路由震荡,使得重启设备在一段时间内会出现路由黑洞或者导致邻居将数据业务从重启设备处切换到其他设备上,使得网络的可靠性大大降低。
因此,为了解决控制面协议重启时因邻居关系震荡导致的整网协议震荡问题,优雅重启技术应运而生。
优雅重启是一种有序的、可控的控制平面协议重启的技术,是在协议层面协助数据不间断转发的实现,能够最小化协议重启影响,被广泛地应用在设备主备切换和系统升级等场景。它带来以下几点好处:
- 协议重启过程中维持邻居关系,保证转发业务不中断。
- 协议震荡仅限于和重启设备相连的邻居,不会扩散到整网。
- 通过周边设备的配合来帮助协议快速收敛,恢复本地转发信息。
优雅重启有哪些角色?
优雅重启技术中(下文统一使用GR),包含以下角色:
- GR Restarter:GR重启设备,指由管理员触发或故障触发主备倒换的设备,必须具备GR能力,能够在主备倒换的时候通知邻居设备,请求邻居设备保持与自己的邻居关系。
- GR Helper:GR Restarter的邻居设备,协助GR Restarter重启。GR Helper至少能够识别GR信令,在GR Restarter进行主备倒换期间保持和GR Restarter的邻接关系不变;在GR Restarter主备倒换完成之后,协助GR Restarter进行网络拓扑关系的恢复。
- GR Session:GR会话,GR Restarter和GR Helper之间的协商过程,包括协议重启通告,协议重启过程中的信息交互等。通过该会话,GR Restarter和GR Helper可以掌握彼此的GR能力。
- GR Timer:GR定时器。当GR Helper发现对端的GR Restarter处于Down状态时,在一定时间内仍保留从GR Restarter得到的拓扑信息或路由,不删除这些信息。这个时间间隔就叫作GR Timer。
优雅重启是如何工作的?
目前,为了具备GR能力,控制平面的各种网络协议进行了扩展,主要包括以下三种类型:
- 路由协议的GR:包括BGP(Border Gateway Protocol,边界网关协议)、OSPF(Open Shortest Path First,开放式最短路径优先)协议、IS-IS(Intermediate System to Intermediate System,中间系统到中间系统)协议等。
- MPLS相关协议的GR:包括LDP(Label Distribution Protocol,标签分发协议)、RSVP(Resource Reservation Protocol,资源预留协议)。
- VPN GR:VPN GR是BGP GR、IGP GR、LDP GR等技术在VPN场景中的综合应用。
以BGP为例,介绍BGP GR的具体工作过程。
BGP GR扩展
为了实现GR,BGP在RFC4724中进行了如下扩展。
- 在BGP的OPEN消息中,增加了一种表示GR的能力,称为“Graceful Restart Capability ”(BGP-CAP)。BGP Speaker可以应用该功能来向对等体指示其在BGP重启期间保留其转发状态的能力。BGP-CAP长度可变,由“Restart Flags”域,“Restart Time”域和0到63个<Address Family Identifier,Subsequent Address Family Identifier,Flags for address family>三元组构成。
具体格式如下所示:
+--------------------------------------------------+ | Restart Flags (4 bit) | +--------------------------------------------------+ | Restart Time in seconds (12 bit) | +--------------------------------------------------+ | Address Family Identifier (16 bit) | +--------------------------------------------------+ | Subsequent Address Family Identifier (8 bit) | +--------------------------------------------------+ | Flags for Address Family (8 bit) | +--------------------------------------------------+ | ... | +--------------------------------------------------+ | Address Family Identifier (16 bit) | +--------------------------------------------------+ | Subsequent Address Family Identifier (8 bit) | +--------------------------------------------------+ | Flags for Address Family (8 bit) | +--------------------------------------------------+
各字段解释如下表所示。
表1-1 BGP-CAP各字段含义字段名称
含义
Restart Flags
最高位定义为重启状态位(简称R标记位),表明是否该BGP Speaker发生了重启。如果重启了,则对等体应先向该BGP Speaker发送路由更新,而不是等待它先发送End-of-RIB(简称EOR)消息。
Restart Time in seconds
重启后重新建立BGP会话的最长时间。
<Address Family Identifier,Subsequent Address Family Identifier,Flags for address family>
Address Family Identifier:
简称AFI,地址族标识符,用于标识支持GR的地址族。
Subsequent Address Family Identifier:
简称SAFI,后续地址族标识符,和AFI一起用于标识支持GR的地址族。
Flags for address family:
最高位定义为转发状态位(简称F标记位),用来表明在上一次BGP重启期间,使用给定AFI和SAFI通过的路由的转发状态是否确实在接口板已保留。这个标志很重要,因为如果没有系统配合重启的时候保留住在接口板的路由转发项,即使BGP协议具备GR能力,也不能实现不间断转发。
- 新增一种UPDATE消息,称为EOR(End-of-RIB,路由更新结束)消息,用来通知对端BGP会话建立后的初次路由更新过程已经完成。
- 定义了两个重要的定时器,用于辅助实现BGP GR。
Restart Timer:当GR Helper发现对端的GR Restarter处于Down状态时,在一定时间内仍保留从GR Restarter得到的拓扑信息或路由,不删除这些信息。这个时间间隔就叫做Restart Timer。
EOR Timer:GR Restarter和GR Helper等待对方向自己发送EOR信息的最长时间,换言之,是允许邻居发送路由更新,进行路由同步的最大时间。
对于GR Restarter,如果在EOR Timer时间内GR Restarter没有收到GR Helper的EOR消息,则GR Restarter将在现有路由基础上进行BGP路由计算。
对于GR Helper,如果在EOR Timer时间内GR Helper没有收到GR Restarter的EOR消息,则老化和GR Restarter相关的路由。
工作过程
如下图所示,DeviceA与DeviceB建立BGP邻居,并都支持BGP GR能力;当DeviceA以GR方式重启时,DeviceB协助DeviceA完成GR,DeviceA称作GR Restarter,DeviceB称作GR Helper。
BGP GR过程
BGP GR的工作过程具体如下:
- 在初始建立BGP邻居关系的过程中,DeviceA和DeviceB互相向对方通告本端支持的GR能力,并且进行GR能力协商。
- DeviceA发生主备倒换后,接口板不重启,路由表和转发表没有任何变化,仍然继续正常指导转发。当DeviceB检查到和DeviceA的TCP连接中断后,DeviceB在重启期间会保存与DeviceA相关的路由和转发表项,并且打上stale老化标志,让其它设备感知不到DeviceA的倒换,启动Restart Timer,等待重建连接。
- DeviceA重启后,DeviceB和DeviceA重新建立了TCP连接。DeviceA在BGP OPEN消息中将R标记置为1,表明刚刚发生了重启,F标记置为1,表示当前AFI和SAFI标识的地址族保持了转发状态。DeviceB删除Restart Timer,启动EOR Timer。
- DeviceA和DeviceB重新建立BGP邻居关系,DeviceB向DeviceA重新发送路由信息更新,更新完毕,发送EOR消息。DeviceA接收邻居发来的路由更新信息并处理,启动EOR Timer。
- 在满足如下两个条件之一时,DeviceA开始进行BGP路由计算。
- 收到所有邻居的EOR消息,EOR Timer被删除。
- 没有收到所有邻居的EOR消息,但是EOR Timer超时。
DeviceA选路完成后,向各邻居发送路由更新;更新完毕后,向邻居发送EOR消息。
- 在满足如下条件之一时,DeviceB退出GR Helper,并老化和DeviceA相关的路由。
- DeviceB收到DeviceA的EOR消息,EOR Timer被删除。
- DeviceB没有收到DeviceA的EOR消息,但是EOR Timer超时。
DeviceB退出GR后,被保持的DeviceA的stale路由被清除,后续按照正常BGP流程执行。
- 作者: 王静
- 最近更新: 2024-10-30
- 浏览次数: 7642
- 平均得分:
导出PDF