IS-IS理论知识详解(五)

27、IS-IS GR

IS-IS GR(Graceful Restart)是一种支持GR能力的高可靠性技术,可以实现数据的不间断转发。

设备发生主备倒换后,由于没有保存任何重启前的邻居信息,因此一开始发送的Hello报文中不包含邻居列表。此时邻居设备收到后,执行两次握手机制邻居关系检查,发现在重启设备的Hello报文的邻居列表中没有自己,这样邻居关系将会断掉。

同时,邻居设备通过生成新的LSP报文,将拓扑变化的信息泛洪给区域内的其它设备。区域内的其他设备会基于新的链路状态数据库进行路由计算,从而造成路由中断或者路由环路。

IETF针对这种情况为IS-IS制定了GR规范(RFC3847),对保留FIB表和不保留FIB表的协议重启都进行了处理,避免协议重启带来的路由震荡和流量转发中断的现象。

1、IS-IS GR基本概念:

IS-IS GR过程由GR-Restarter和GR-Helper配合完成。

GR-Restarter:具备GR能力,且要进行GR的设备;GR-Helper:具备GR能力,辅助GR设备完成GR功能的设备。GR-Restarter一定具有GR-Helper的能力。

为了实现GR,IS-IS引入211号TLV(Restart TLV)和T1、T2、T3三个定时器。

2、IS-IS GR Restart TLV:

Restart TLV是包含在IIH(IS-to-IS Hello PDUs)报文中的扩展部分。支持IS-IS GR能力的设备的所有IIH报文都包含Restart TLV。Restart TLV中携带了协议重启的一些参数。其报文格式如下图1所示。

Restart TLV各字段的含义如下表1所示。

3、IS-IS GR定时器:

IS-IS的GR能力扩展中,引入了三个定时器,分别是T1、T2和T3。

3.1、T1定时器:

如果GR Restarter已发送RR置位的IIH报文,但直到T1定时器超时还没有收到GR Helper的包含Restart TLV且RA置位的IIH报文的确认消息时,会重置T1定时器并继续发送包含Restart TLV的IIH报文。当收到确认报文或者T1定时器已超时3次时,取消T1定时器。T1定时器缺省设置为3秒。

使能了IS-IS GR特性的进程,在每个接口都会维护一个T1定时器。在Level-1-2路由器上,广播网接口为每个Level维护一个T1定时器。

3.2、T2定时器:

GR Restarter从重启开始到本Level所有设备LSDB完成同步的时间。T2定时器是系统等待各层LSDB同步的最长时间,一般情况下为60秒。

Level-1和Level-2的LSDB各维护一个T2定时器。

3.3、T3定时器:

GR Restarter成功完成GR所允许的最大时间。T3定时器的初始值为65535秒,但在收到邻居回应的RA置位的IIH报文后,取值会变为各个IIH报文的Remaining time字段值中的最小者。T3定时器超时表示GR失败。

整个系统维护一个T3定时器。

4、IS-IS GR会话机制:

为了以示区别,主备倒换和重启IS-IS进程触发的GR过程称为Restarting,FIB表保持不变。设备重启触发的GR过程称为Starting,进行FIB表更新。

下面分Restarting和Starting两种情况说明IS-IS GR的详细过程。

图3 IS-IS Starting过程

对于Starting设备,因为没有保留FIB表项,所以一方面希望在Starting之前和自己的邻接关系为“Up”的邻居重置和自己的邻接关系,同时希望邻居能在一段时间内抑制和自己的邻接关系的发布。其处理过程和Restarting不同,具体如上图3所示。

1、GR Restarter Starting后,进行如下操作:

为每层LSDB的同步启动T2定时器。

从各个接口发送携带Restart TLV的IIH报文,其中RR位清除,SA位置位。

RR位清除表示是Starting完成。

SA位置位则表示希望邻居在收到SA位清除的IIH报文之前,一直抑制和自己的邻接关系的发布。

2、邻居收到携带Restart TLV的IIH报文,根据设备是否支持GR,进行如下处理。

2.1、支持GR

重新初始化邻接关系。在发送的LSP中取消和GR Restarter邻接关系的描述,进行SPF计算时也不考虑和GR Restarter相连的链路,直到收到SA位清除的IIH为止。

2.2、不支持GR

邻居忽略Restart TLV,重置和GR Restarter之间的邻接关系。

回应一个不含Restart TLV的IIH报文,转入正常的IS-IS处理流程。这时不会抑制和GR Restarter的邻接关系的发布。在点到点链路上,还会发送一个CSNP报文。

3、邻接关系重新初始化之后,在每个接口上GR Restarter都和邻居重建邻接关系。当有一个邻接关系到达Up状态后,GR Restarter为该接口启动T1定时器。

4、在T1定时器超时之后,GR Restarter发送RR置位、SA置位的IIH报文。

5、邻居收到RR置位和SA置位的IIH报文后,发送一个RR清除、RA置位的IIH报文作为确认报文,并发送CSNP报文。

6、GR Restarter收到邻居的IIH确认报文和CSNP报文以后,取消T1定时器。

如果没有收到IIH报文或者CSNP报文,就不停重置T1定时器,重发RR置位、SA置位的IIH报文。如果T1超时次数超过阈值,GR Restarter强制取消T1定时器,进入正常的IS-IS处理流程完成LSDB同步。

7、GR Restarter收到Helper端的CSNP以后,开始同步LSDB。

8、本Level的LSDB同步完成后,GR Restarter取消T2定时器。

9、所有的T2定时器都取消以后,启动SPF计算,重新生成LSP,并泛洪。

10、至此,GR Restarter的IS-IS Starting过程完成。

28、IS-IS与BFD联动

通常情况下,IS-IS设定发送Hello报文的时间间隔为10秒,一般将宣告邻居Down掉的时间(即邻居的保持时间)配置为Hello报文间隔的3倍。若在相邻路由器失效时间内没有收到邻居发来的Hello报文,将会删除邻居。

由此可见路由器能感知到邻居故障的时间最小为秒级。这样可能会出现在高速的网络环境中大量报文丢失的问题。

双向转发检测BFD(Bidirectional Forwarding Detection)能够提供轻负荷、快速(毫秒级)的通道故障检测,解决了IS-IS现有检测机制的不足的问题。使用BFD并不是代替IS-IS协议本身的Hello机制,而是配合IS-IS协议更快的发现邻接方面出现的故障,并及时通知IS-IS重新计算相关路由以便正确指导报文的转发。

如上图1所示,各路由器上使能IS-IS基本功能。在RouterA和RouterB上使能IS-IS与BFD联动检测机制。

当主路径上的链路出现故障时,BFD能够快速检测到故障并通告给IS-IS协议,IS-IS Down掉故障链路的接口邻居并删除邻接对应的IP协议类型,从而触发拓扑计算,同时更新LSP使得其他邻居(如RouterC)及时收到RouterB的更新LSP,实现了网络拓扑的快速收敛。

1、IS-IS与BFD联动的分类

IS-IS与BFD联动包括IS-IS与静态BFD联动和IS-IS与动态BFD联动。

1.1、IS-IS与静态BFD联动

通过命令行手工配置BFD会话参数,包括了配置本地标识符和远端标识符等,然后手工下发BFD会话建立请求。

静态BFD的优点是可以人为控制,部署比较灵活,为了节省内存,同时又保证关键链路的可靠性,可以在某些指定链路部署BFD,而其他链路不部署。

静态BFD的缺点在于建立和删除BFD会话时都需要手工触发,配置时缺乏灵活性。而且有可能造成人为的配置错误。例如,如果配置了错误的本地标识符或者远端标识符时,BFD会话将不能正常工作。

1.2、IS-IS与动态BFD联动

通过IS-IS动态创建BFD的会话,不再依靠手工配置。当BFD检测到故障的时候,通过路由管理通知IS-IS。IS-IS进行相应邻居Down处理,快速发布变化的LSP信息和进行增量路由计算,从而实现路由的快速收敛。

动态BFD比静态BFD更具有灵活性。动态BFD由路由协议动态触发BFD会话建立,避免了人为控制可能导致的配置错误,且配置比较简单,适用在全网需要配置BFD的情况。

BFD使用本地标识符(Local Discriminator)和远端标识符(Remote Discriminator)区分同一对系统之间的多个BFD会话。

由于IS-IS只能建立单跳邻居,IS-IS与BFD联动只对IS-IS邻居间的单跳链路进行检测。

2、BFD会话的创建与删除

路由管理模块RM(Routing Management Module)为IS-IS提供与BFD模块交互的相关服务。IS-IS通过RM通知BFD来动态创建或删除BFD会话,同时BFD的事件消息也通过RM传递给IS-IS。

3、创建BFD会话的条件

各路由器配置了IS-IS基本功能并且在接口下使能了IS-IS。

各路由器配置了全局BFD功能并且使能了接口或者进程的BFD特性。

使能了接口或者进程的BFD特性,且相邻路由器的邻居状态为Up(广播网中须等到DIS选举出来)。

4、创建BFD会话的过程

4.1、P2P网络

满足创建BFD会话的条件后,IS-IS将通过RM模块通知BFD模块直接在邻居间创建BFD会话。

4.2、广播网络

满足创建BFD会话的条件且DIS已经选举出来后,IS-IS将通过RM模块通知BFD模块,DIS与每台路由器之间都自动创建BFD会话。都不是DIS的两台路由器之间不建立BFD会话。

虽然广播网中IS-IS同一网段上的同一级别的路由器之间都会形成邻接关系,即包括所有的非DIS路由器之间也会形成邻接关系,但在IS-IS与BFD联动的实现上,只在DIS和非DIS之间建立BFD会话,非DIS之间不启动BFD会话,而P2P网络直接在邻居间创建会话。

如果同一链路上的同一对路由器形成的是Level-1-2的类型的邻居,在广播网中IS-IS会针对这两个Level分别创建两个BFD会话,但在P2P网络中IS-IS只会创建一个BFD会话。

5、删除BFD会话的条件

5.1、P2P网络

当IS-IS在P2P网络接口类型上建立的邻接关系断开(非Up状态)或者邻居对应的IP协议类型删除时,删除对应的BFD会话。

5.2、广播网络

当IS-IS在广播网络接口类型上建立的邻接关系断开(非Up状态),邻居对应的IP协议类型删除或者广播网络DIS发生变化时,删除对应的BFD会话。

在IS-IS进程下去使能全局动态BFD后,该进程下的所有接口的BFD会话都被删除。

6、IS-IS响应BFD会话Down事件

当BFD检测到链路发生故障并产生Down事件时,会通知RM。RM通知IS-IS删除此邻接。IS-IS响应这个事件并重新进行路由计算,实现网络迅速收敛。

当本地路由器与邻居路由器均为Level-1-2路由器时,二者之间会针对不同的Level分别创建两个邻居,此时IS-IS也会创建两个不同Level的会话。在这种情况下,当BFD检测到链路发生故障并产生Down事件时,RM会通知IS-IS分别删除相应Level的邻接关系。

今日热门