IS-IS GR技术白皮书
Copyright © 2019 新华三技术有限公司 版权所有,保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。
除新华三技术有限公司的商标外,本手册中出现的其它公司的商标、产品标识及商品名称,由各自权利人拥有。
本文中的内容为通用性技术信息,某些信息可能不适用于您所购买的产品。
GR(Graceful Restart,平滑重启)是一种在主备切换或协议重启时保证转发业务不中断的机制。其核心在于:设备进行协议重启时,能够通知其周边设备,使到该设备的邻居关系和路由在一定时间内保持稳定。在协议重启完毕后,周边设备协助其进行信息(包括支持GR的相关协议所维护的各种拓扑、路由和会话信息)同步,在尽量短的时间内恢复到重启前的状态。在协议重启过程中不会产生路由震荡,报文转发路径也没有任何改变,整个系统可以实现不间断运行。
IS-IS GR可以保证运行IS-IS协议的路由器在进行主备切换或IS-IS协议重启时,转发业务正常进行。
一台路由器的IS-IS协议重启之后,会发送Hello报文以发现邻居,而邻居路由器因为之前已经和该路由器建立了邻居关系,因此收到该Hello报文之后就会把该路由器从邻居列表中删除,断开与该路由器的邻居关系,并通知其他路由器。当该路由器与邻居路由器重新建立IS-IS邻居关系后,会重新同步所有的路由信息数据,而周边路由器也需要重新进行路由计算,这样就会引起网络的路由震荡以及转发中断,这对于一个可靠性要求较高的网络来说是不可接受的。
如何能使协议重启而不引起网络震荡和转发中断呢?由于分布式设备的控制与转发是分开的,主控板负责整个设备的控制与管理,包括协议运行和路由计算,而接口板则负责数据转发。这样当发生主备倒换或协议重启时,数据转发仍然可以不中断进行。
同时,如果在重启期间周边设备能维持邻居关系不变并保持路由稳定,并且在设备重启后能协助设备进行路由信息同步,在尽量短的时间内使得本设备的路由信息恢复到重启前的状态,那么就可以保持网络拓扑稳定,不引起网络路由震荡。
为了实现这个目的,IETF针对IS-IS路由协议提出了增强协议,即IS-IS GR。通过此协议,可以避免网络的路由震荡及转发中断。
· 保证协议重启或主备切换过程中转发业务不中断
· 减少协议重启或主备切换时路由震荡对全网的影响
IS-IS GR的基本术语:
· GR Restarter:发生协议重启事件且具有GR能力的设备。
· GR Helper:和GR Restarter具有邻居关系,协助完成GR流程的设备。
· GR Session:IS-IS邻居建立时进行关于GR能力的协商,一般把GR能力协商过程称为GR Session。协商的内容包括双方是否都具备GR能力等。一旦GR能力协商通过,当协议重启时就可以进入GR流程。
分布式设备可以充当GR Restarter和GR Helper;而集中式设备只能充当GR Helper,协助GR Restarter完成GR流程。
为了能够在GR Restarter重启时顺利通知GR Helper,IS-IS GR增加了一个Type为211的Restart TLV。Length根据TLV填写的具体情况而定,但必须在1到3+ID Length的范围内,Value的具体内容如图1所示。
Flags记录了一些必要的状态标志位,长度为1字节,具体格式如图2所示。
图2 Restart TLV中Flags字段结构图
目前只使用了最后三位作为相应标志位,具体含义如下:
· RR/RA
¡ RR:Restart请求标志位,当RR位为1时表示该路由器刚刚发生了重启。
¡ RA:Restart确认标志位,当RA位为1时表示是对重启路由器的应答。
当GR Restarter重启后,在每个接口上发的第一个Hello报文中将RR标志位置1,通知GR Helper本设备正在重启;当GR Helper收到GR Restarter发来带有RR标志位的Hello报文时,立即回复一个将RA标志位置1的Hello报文作为对对方请求的确认。
· SA
SA表示抑制邻接标志位,是一个可选项,其主要目的是为了避免出现路由黑洞。例如,在GR Restarter重启时,如果GR Helper将报文发送到GR Restarter来进行转发,将产生黑洞,造成严重的丢包现象。在这种情况下,GR Restarter发送的Hello报文中必须将SA位置1,而GR Helper接收到这种SA位被置1的Hello报文后就不会将发送该Hello报文的GR Restarter放入LSP扩散出去,即GR Restarter将在网络上被屏蔽一段时间,所有设备都不会将报文送到GR Restarter上来进行转发,这样就可以有效地避免路由黑洞问题。
Remaining Time表示邻居老化的剩余时间,即邻居设备进入GR Helper处理流程的最长保持时间。如果超出这个时间,则GR Restarter和GR Helper的邻居关系结束。当GR Helper收到GR Restarter发送的带有RR标志位的Hello报文后,会立即回复一个将RA标志位置1的Hello报文作为确认,在这个确认报文中,需要将对应邻居(GR Restarter)距离老化时间的剩余秒数填入Remaining Time字段。
Restarting Neighbor ID的内容是GR Restarter的System ID。当GR Helper收到带有RR标志位的Hello报文时,将报文中的System ID字段值填入Hello确认报文的Restarting Neighbor ID字段中,并发送此确认报文。这样就严格指定了该Hello确认报文的目的设备。当多个GR Restarter同时收到该Hello确认报文时,比较该报文中的Restarting Neighbor ID与本设备的System ID,只有Restarting Neighbor ID与本设备的System ID相同时,GR Restarter才会处理收到的Hello确认报文。
IS-IS GR定义了T1、T2和T3三种定时器:
· T1定时器类似于IS-IS协议中的IIH定时器,每个接口都有一个,它定义了发送带RR标志位的Hello报文的重传时间。当设备重启时在每一个接口上都会创建T1定时器,并周期性地发送带RR标志位的Hello报文,直到在对应接口上收到带RA标志位的Hello确认报文以及全部CSNP报文后,该接口上的T1定时器才会被取消。当接口上没有邻居或者没有支持GR特性的邻居时,该接口就一直无法收到带RA标志位的Hello确认报文,因此T1定时器就会永远得不到撤销。为了避免这种情况发生,IS-IS GR限制了T1定时器的最大超时次数,当T1定时器超时次数超过这个最大值时就自动撤销该T1定时器。
· T2定时器定义了设备重启后LSDB同步的最大等待时间。每个LSDB数据库都有一个定时器,例如对于Level-1-2路由器来说,就需要有两个T2定时器,一个为Level-1 LSDB同步的最大等待时间,另外一个为Level-2 LSDB同步的最大等待时间。当某个Level的LSDB同步完成之后,相应Level的T2定时器就会被取消。如果T2定时器超时后LSDB还没有同步完成,则撤销T2定时器,GR失败。
· T3定时器定义了设备重启过程的最大持续时间。整个IS-IS路由器只有一个T3定时器。T3定时器初始化为65535秒,但是在各个接口上收到带RA标志位的Hello确认报文后会根据这些报文中的Remaining Time的最小值来重新设定T3定时器的超时时间。如果T3定时器超时后LSDB同步还没有结束,T3定时器被撤销,GR失败。
下面以一个简单的组网模型来介绍IS-IS GR的运行过程。如图3所示,Device A和Device B通过接口Interface A和Interface B相连,两台路由器在接口Interface A和Interface B都使能了IS-IS并正常运行。
图3 IS-IS组网图
假设Device A和Device B原来有稳定的IS-IS邻居关系,并且Device A使能了GR能力。Device A重启后,Device A和Device B将按照如图4所示的流程进行路由信息交互。
图4 IS-IS GR协议流程图
具体工作流程如下:
(1) 当Device A的IS-IS协议被重新全局使能时,启动T2和T3定时器。当Device A的接口Interface A重新使能协议时,在接口Interface A上启动T1定时器,并且将接口Interface A上发出的Hello报文Restart TLV中Flags字段的RR标志位置为1。
(2) 当Device B收到Device A发出的带有RR标志位的Hello报文后,保持与Device A的邻居状态不变,并立即回复一个带有RA标志位的Hello报文。之后,Device B发送CSNP报文和LSP报文给Device A以协助其进行LSDB同步。
(3) 当Device A在接口Interface A上收到了带有RA标志位的Hello报文并接收到全部CSNP报文后就可以取消T1定时器。否则,Device A周期性发送带有RR标志位的Hello报文,直到收到带有RA标志位的Hello报文和全部CSNP报文或者T1定时器达到最大超时次数才取消该接口的T1定时器。
(4) 当LSDB同步完成之后,Device A取消T2定时器。
(5) 当所有T2定时器都取消之后就可以取消T3定时器,GR流程结束,进入IS-IS的正常流程。此时需要在所有接口上启动IIH定时器,以后就周期性地发送正常的Hello报文(Restart TLV中所有字段为0的Hello报文)。
(6) Device A在恢复所有路由信息后重新进行路由计算,重新刷新FIB表。
如图5所示,Device A~Device K均运行IS-IS协议,分支节点Device F~Device K通过核心节点Device C、Device D、Device E与骨干节点Device A、Device B相连,通过骨干节点连接到骨干网上。骨干节点和核心节点作为GR Restarter(同时缺省也作为GR Helper),分支节点作为GR Helper。当骨干节点发生主备切换或重启IS-IS进程时,核心节点可以作为GR Helper协助其进行LSDB重同步,并且保持转发不中断;当核心节点发生主备切换或重启IS-IS进程时,骨干节点和分支节点都可以作为GR Helper协助其进行LSDB重同步,并且保持转发不中断。
图5 IS-IS GR典型应用组网图
· ISO 10589:ISO IS-IS Routing Protocol
· RFC 1195:Use of OSI IS-IS for Routing in TCP/IP and Dual Environments
· RFC 3847:Restart Signaling for Intermediate System to Intermediate System (IS-IS)