原理概述:
一般情况下,路由器使用LSP来描述它所有的链路状态信息。如果链路状态信息过于庞大,路由器就得生成多个LSP分片,用来携带全部的链路状态信息。由前文内容可知,每个LSP的LSPID由产生该LSP的源路由器的System-ID和伪节点的ID(普通LSP中该值为0,伪节点LSP中该值为非0)、LSPNumber (LSP分片号)组合起来唯一标识,由于LSPNumber字段的长度是1Byte,因此,IS-IS 路由器可产生的分片数最大为256,携带的信息量有限。在RFC3786中规定,IS-IS 可以配置虚拟的System-ID,并生成虚拟IS-IS的LSP报文来携带路由等信息。
IS-IS LSP分片扩展特性可使IS-IS路由器生成更多的LSP分片,通过为路由器配置附加的虚拟系统,每个虚拟系统都可生成256个LSP分片(最多可配置50个虚拟系统),使得IS-IS路由器可最多生成13056个LSP分片。
基本概念:
LSP分片方式一:
如果网络中存在不支持LSP分片扩展特性的路由器,使用Mode-1的分片扩展方式。
这种方式是在初始系统发布的LSP中携带了到每个虚拟系统的链路信息;同时,虚拟系.统发布的LSP也包含了到初始系统的链路信息,并且虚拟系统也参与路由SPF计算。这样,虚拟系统看起来就像是跟初始系统相连的真实路由器是一样的。
虚拟系统的LSP中包含和原LSP中相同的区域地址和Overload Bit。如果还有其他特性的TLV,也必须保持一致。
虚拟系统所携带的邻居信息指向初始系统,metric为最大值(窄度量情况下最大值为64)减1;初始系统所携带的邻居信息指向虚拟系统,metric必须为0。这样就保证了其他路由器在进行路由计算的时候,虚拟系统一定会成为初始系统的下游节点。
如图所示,R2是不支持分片扩展的路由器,R1设置为mode-1的分片扩展,R1-1和R1-2是R1的虚拟系统,R1将一部分路由信息放入R1-1和R1-2的LSP报文中向外发送。R2收到R1、R1-1和R1-2的报文时,认为对端有三台独立的路由器,并进行正常的路由计算。同时,R1到R1-1和R1-2的开销都是0,所以,R2到R1的路由开销值与R2到R1-1路由开销值都相等。
LSP分片方式二:
Mode-2的方式用于网络中所有路由器都支持LSP分片扩展特性的情况。在该模式下,虚拟系统不参与路由SPF计算,网络中所有路由器都知道虚拟系统生成的LSP实际属于初始系统。
如果R2支持分片扩展,并将R1设置为Mode-2的分片扩展后,R1将一部分路由信息放入到R1-1和R1-2的LSP报文中向外发送(R1-1 和R1-2是内部虚拟节点)。当R2收到R1-1和R1-2的LSP时,通过IS Alias ID TLV知道它们的初始系统是R1,则把R1-1、R1-2所发布的信息都视为R1的信息,所以在R2计算的拓扑中是不会存在R1-1和R1-2的,如下图所示:
ISO 10589为IS-IS协议定义了以下四种度量:
目前华为VRP系统只支持默认度量,延迟、开销和差错度量主要用于支持QoS路由选择的场景。根据平时的使用和叫法,下文指的度量或开销值如果没有作特别说明,都是指默认度量。缺省情况下,华为设备的IS-IS接口默认开销值都是10, 也可以根据接口带宽自动计算开销值,一条路径的开销值是指路由由源到目标经过的所有链路开销总和,ISO 10589 规定一条路径的总开销为1023, 所以在网络中要合理规划开销值。下图显示了在一个LSP的IP内部可达性TLV (类型128)中携带的路由前缀及其度量值的情况:
在最初的ISO 10589定义中,默认度量字段只有8bit长,其中,第8bit是保留位并被设置为0;第7bit用来表示路由是来自内部还是来自路由域外部,设置为0表示内部路由,设置为1表示外部路由。这样下来,就只剩下6bit用于表示度量值,大小范围为0~63,这种度量也叫窄度量(Narrow Metric)。在后来的RFC1195定义中,也直接借用
了ISO 10589 的度量定义方法。该RFC规定了集成IS-IS的IP可达性TLV中携带的度量。窄度量可以被使用到以下几种TLV中:
随着网络规模的扩大及新型应用对网络的需求,太小的度量范围已经无法满足实际的需求。因此,在RFC3784中定义更长的度量字段,这个新的度量被用在以下两种新定义的TLV中:
与之前6bit长的度量值字段相比,类型135的TLV使用了32bit 的度量值字段,所以一条路由最大的度量值可以达到4261412864;类型22的TLV中使用了24bit 的度量值字段,所以一个IS-IS接口最大的度量值可以扩展到16777215. 这种度量类型我们把它叫作宽度量(Wide-metric)。
华为VRP系统默认使用的是窄度量,可以使用命令cost-style 修改度量类型,根据具体情况可将度量配置为以下几种类型的一种 :
如上图所示,RouterA需要与处于其他Level-1区域的的RouterB、RouterC、RouterD相互通信,且为了保证信息安全,其他Level-1区域内的路由器不能收到RouterA发送的报文信息。
首先,可以给RouterB、RouterC、RouterD使能了IS-IS的接口配置相同的管理标记值tag。然后在Area4的Level-1-2路由器做从Level-2到Level-1区域的路由渗透时,应用匹配指定的tag。这样就可以满足RouterA在与其他Level-1区域通信时,仅与RouterB、RouterC、RouterD进行通信。此时,在RouterA上形成的拓扑结构如下图所示:
管理标记值与某些属性相关联。当cost-sytle为wide、wide-compatible或compatible时,如果发布可达的IP地址前缀具有该属性,IS-IS会将管理标记加入到该前缀的IP可达信息TLV中。这样,管理标记就会随着前缀发布到整个路由域。
产生原因:
如果承载IS-IS业务的接口状态在Up和Down之间切换,就会引起邻居状态的频繁震荡。此时,IS-IS会快速发送Hello报文重新建立邻居,同步数据库LSDB,触发路由计算,会造成大量报文交互,影响现有邻居的稳定性,对IS-IS业务造成较大影响,同时也会影响依赖IS-IS的其他业务(如:LDP、BGP)的正常运行。为了解决这个问题,IS-IS实现了邻居震荡抑制功能,即在邻居频繁震荡时,启动震荡抑制,实现邻居延迟建立,或实现业务流量延迟经过频繁震荡的链路,达到抑制震荡的目的。
基础概念:
flapping_event:震荡事件,接口上最后一次邻居状态由Up切换为Init或Down,称之为flapping_event。flapping_event作为震荡源输入,用来触发震荡检测机制启动工作。
flapping_count:当前震荡次数。
detect-interval:震荡检测间隔,用于判断是否触发一次有效震荡事件。
threshold:震荡抑制阈值,有效震荡事件触发累计超过该值时,进入震荡抑制阶段。
resume-interval:恢复间隔,连续两次有效震荡事件超过该值时,退出震荡抑制阶段。
实现原理:
IS-IS接口启动一个flapping_count计数器,相邻两次flapping_event产生时间的间隔在detect-interval之内,记为一次有效震荡事件。flapping_count计数加1,当flapping_count计数大于threshold时,系统判定震荡发生,需要进入震荡抑制阶段。进入震荡抑制阶段后,flapping_count清0。在flapping_count大于threshold之前,如果两次flapping_event的间隔大于resume-interval,则flapping_count清0。邻居震荡抑制从最后一次邻居状态变为Init或Down开始计时。
用户可以通过命令行配置detect-interval,threshold,resume-interval三个震荡检测的关键参数。
震荡抑制分为Hold-down和Hold-max-cost两种模式:
Hold-down模式和Hold-max-cost模式可以叠加使用,同时生效时,先进入Hold-down模式,待Hold-down模式退出后,再进入Hold-max-cost模式。
缺省情况下,IS-IS使能Hold-max-cost模式,用户可以通过命令行修改震荡抑制方案和震荡抑制周期。接口进入震荡抑制阶段后,接口下的全部邻居都会进入震荡抑制阶段。
概述:
通常情况下,IS-IS设定发送Hello报文的时间间隔为10秒,一般将宣告邻居Down掉的时间(即邻居的保持时间)配置为Hello报文间隔的3倍。若在相邻路由器失效时间内没有收到邻居发来的Hello报文,将会删除邻居。由此可见路由器能感知到邻居故障的时间最小为秒级。这样可能会出现在高速的网络环境中大量报文丢失的问题。
双向转发检测BFD(Bidirectional Forwarding Detection)能够提供轻负荷、快速(毫秒级)的通道故障检测,解决了IS-IS现有检测机制的不足的问题。使用BFD并不是代替IS-IS协议本身的Hello机制,而是配合IS-IS协议更快的发现邻接方面出现的故障,并及时通知IS-IS重新计算相关路由以便正确指导报文的转发。
当主路径上的链路出现故障时,BFD能够快速检测到故障并通告给IS-IS协议,IS-IS Down掉故障链路的接口邻居并删除邻接对应的IP协议类型,从而触发拓扑计算,同时更新LSP使得其他邻居(如RouterC)及时收到RouterB的更新LSP,实现了网络拓扑的快速收敛。
IS-IS与BFD联动包括IS-IS与静态BFD联动和IS-IS与动态BFD联动:
静态联动实验:
环境:R4和R5之间有交换机隔开,通过BFD来检测非直连链路
在R4上配置:
ISIS部分:
isis 1 //进入ISIS进程
is-level level-1 //为level-1路由器
network-entity 49.0001.0000.0000.0004.00 //配置网络标识
interface GigabitEthernet0/0/0 //进入接口开启ISIS
ip address 172.16.0.1 255.255.255.0
isis enable 1
BFD部分:
Bfd //全局开启bfd
bfd 4to5 bind peer-ip 172.16.0.2 interface GigabitEthernet0/0/0 //将对方的接口的IP地址和自己的接口绑定
discriminator local 1 //本地标识
discriminator remote 2 //远端标识
commit 提交配置
R5上配置略,和R4镜像关系,然后通过命令查看静态BFD的邻居关系是否建立成功:成功
动态联动实验:
三个设备之间互相建立BFD会话连接,以R2上的配置为例子:
Bfd //全局开启bfd
isis 1 //进入isis进程
is-level level-1
bfd all-interfaces enable //将isis开启的所有接口开启bfd
network-entity 49.0001.0000.0000.0001.00
interface GigabitEthernet0/0/1 //在对应接口上开启isis即可
ip address 10.13.13.1 255.255.255.0
isis enable 1
interface GigabitEthernet0/0/1
ip address 10.13.13.1 255.255.255.0
isis enable 1
在网络高速发展的今天,用户对数据、视频、语音等应用的需求日渐增多,运营商对IP网络的可靠性也提出了更高的需求。当网络中某个节点发生故障,或者维护过程中人为进行的主备倒换,都可能导致设备无法组建路由信息,导致流量丢失甚至网络瘫痪。部署NSR(Non-Stop Routing)能够解决上述问题,给用户的关键业务提供不间断转发的高可靠性保障。
IS-IS NSR特性通过IS-IS实时数据的主备间高度同步来保证主备倒换后备板能够快速接管原主控板的业务,使邻居不感知本设备故障。在主备倒换后,新主用主控板利用这些实时数据可以迅速地恢复协议,使邻居设备对主备倒换不感知。IS-IS NSR主要通过备份以下数据来实现:
• 配置数据:用户完成的所有配置,包括邻居信息,定时器参数信息及进程下的配置信息等。
• 动态数据:包括接口参数及状态、邻居、LSDB等信息。
IS-IS Auto FRR利用LFA(Loop-Free Alternates)算法预先计算好备份链路,并与主链路一起加入转发表。当网络出现故障时,IS-IS Auto FRR可以在控制平面路由收敛前将流量快速切换到备份链路上,保证流量不中断,从而达到保护流量的目的,因此极大的提高了IS-IS网络的可靠性。
LFA计算备份链路的基本思路是:以可提供备份链路的邻居为根节点,利用SPF算法计算出到目的节点的最短距离。然后,计算出无环的备份链路。
IS-IS Auto FRR支持对需要加入IP路由表的备份路由进行过滤,通过过滤策略的备份路由才会加入到IP路由表,因此,用户可以更灵活的控制加入IP路由表的IS-IS备份路由。
整理资料来自:《HCIE路由交换学习指南》、华为hedex文档