ISIS收敛步骤
IGP的收敛可以总体描述为如下状态D+O+F+SPT+RIB+DD
RIB状态和DD状态一般与路由器的硬件有关,如主CPU、线卡CPU、内存、网络处理器有关,这两个状态人为无法对收敛时间做出很大的改变。所以本文基本上以讨论前四个状态为主。
链路故障检测
现有的故障检测方法主要包括:
- 硬件检测:例如通过SDH(Synchronous Digital Hierarchy,同步数字体系)告警检测链路故障。硬件检测的优点是可以很快发现故障,但并不是所有介质都能提供硬件检测。
- 慢Hello机制:通常是指路由协议的Hello机制。这种机制检测到故障所需时间为秒级。对于高速数据传输,例如G比特速率级,超过1秒的检测时间将导致大量数据丢失;对于时延敏感的业务,例如语音业务,超过1秒的延迟也是不能接受的。并且,这种机制依赖于路由协议。IS-IS协议一般通过IIH报文,用来做邻居发现和失效性检测,这个检测的速度是秒级的。
- 其他检测机制:不同的协议或设备制造商有时会提供专用的检测机制,但在系统间互联互通时,这样的专用检测机制通常难以部署,如BFD
生成LSP的间隔时间
在IS-IS协议中,当LSP生成定时器到期时,系统会根据当前拓扑重新生成一个自己的LSP。原有的实现机制是采用间隔时间定长的定时器,不能同时满足快速收敛和低CPU占用率的需要。
为了加快网络的收敛速度,同时又不影响系统性能,因此在产生LSP时使用了智能定时器,它可以根据路由信息的变化频率自动调整延迟时间。使其可以对于突发事件(如接口Up/Down)快速响应,加快网络的收敛速度。同时,当网络变化频繁时,智能定时器的间隔时间会自动延长,避免过度占用CPU资源。
加快泛洪LSP的时间
用户可以指定每次扩散的LSP数量,这个数量是针对所有接口的。如果需要发送的LSP的数量大于这个数,则就发送lsp-count个LSP。如果配置了定时器,在路由计算之前如果这个定时器未超时,则立即扩散;否则在该定时器超时时发送。
如果命令中没有指定级别,则缺省同时在Level-1和Level-2中使能此功能。
加快SPF的计算时间
通常情况下,一个正常运行的IS-IS网络是稳定的,发生大量的网络变动的几率很小,IS-IS路由器不会频繁的进行路由计算,所以第一次触发的时间可以设置的非常短(毫秒级)。如果拓扑变化比较频繁,智能定时器会随着计算次数的增加,间隔时间也会逐渐延长,避免占用大量的CPU资源。
改进SPF的计算方法
在ISO-10589中定义使用Dijkstra算法进行路由计算。当网络拓扑中有一个节点发生变化时,这种算法需要重新计算网络中的所有节点,计算时间长,占用过多的CPU资源,影响整个网络的收敛速度。
I-SPF改进了这个算法,除了第一次计算时需要计算全部节点外,每次只计算影响的节点,而最后生成的最短路径树SPT与原来的算法所计算的结果相同,大大降低了CPU的占用率,提高了网络收敛速度。
在路由计算中,路由代表叶子,路由器则代表节点。如果I-SPF计算后的SPT改变,PRC会只处理那个变化的节点上的所有叶子;如果经过I-SPF计算后的SPT并没有变化,则PRC只处理变化的叶子信息。
比如一个IS接口,则整个网络拓扑的SPT是不变的,这时PRC只更新这个节点的接口路由,从而节省CPU占用率。
PRC和I-SPF节点使能一个IS-配合使用可以将网络的收敛性能进一步提高,它是原始SPF算法的改进,所以已经代替了原有的算法。
默认情况下华为路由器采用I-SPF和PRC进行计算,不需要命令配置。
I-SPF
IS-IS快速收敛是为了提高路由的收敛速度而做的扩展特性,包括:I-SPF(Incremental SPF,增量最短路径优先算法)、PRC、智能定时器、LSP快速扩散。
同时,IS-IS支持故障恢复快速收敛,例如通过IS-IS Auto FRR实现备份链路的快速切换,也可以与BFD联动实现对故障的快速感知。
I-SPF的工作原理:当网络拓扑改变的时候,只对受影响的节点进行路由计算,而不是对全部节点重新进行路由计算,从而加快了路由的计算。
场景介绍:
某网络运行IS-IS,网络收敛后,左图是以R1为根的最短路径树。此时R1访问节点R5时,通过[R1下行链路的出接口,R3上行链路接口的IP地址]到达该目的地。
R5下游新增设备R6,R6开启IS-IS,即IS-IS网络内有新增网络节点。
I-SPF计算:
R5和R6全网泛洪LSP,包含新增邻居关系。
R1收到该LSP后会对变化的节点R5和R6进行I-SPF计算,生成新的最短路径树节点,而其他节点不变。
因此R1访问节点R5和R6时,通过[R1下行链路的出接口,R3上行链路接口的IP地址]到达该目的地。
使用SPF算法进行路由计算:当网络拓扑中有一个节点发生变化时,SPF算法需要重新计算网络中的所有节点,计算时间长,占用过多的CPU资源,影响整个网络的收敛速度。
I-SPF改进了SPF算法,除了第一次SPF计算时需要计算全部节点外,之后每次都通过I-SPF计算受到影响的节点,而最后生成的最短路径树与原来的算法所计算的结果相同,大大降低了CPU的占用率,提高了网络收敛速度。
在IS-IS网络中,I-SPF和PRC结合使用。
LSP快速扩散
LSP快速扩散:此特性可以加快LSP的扩散速度。
配置快速扩散
命令:[Huawei-isis-1] flash-flood [ lsp-count | max-timer-interval interval | [ level-1 | level-2 ] ]
ISIS 管理标记
管理标记特性允许在IS-IS域中通过管理标记对IP地址前缀进行控制,可以达到简化管理。其用途包括控制不同级别和不同区域间的路由引入,以及在同一路由器上运行的IS-IS多实例。
管理标记值与某些属性相关联。当cost-sytle为wide、wide-compatible或compatible时,如果发布可达的IP地址前缀具有该属性,IS-IS会将管理标记加入到该前缀的IP可达信息TLV中。这样,管理标记就会随着前缀发布到整个路由域。
工作原理(1)
工作原理(2)
LSP分片
当IS-IS要发布的PDU中信息量太大时,IS-IS路由器将会生成多个LSP分片,用来携带更多的IS-IS信息。
LSP的报文格式为:
IS-IS LSP分片由LSP ID中的分片号(LSP Number)字段进行标识,这个字段的长度是1Byte。因此,一个IS-IS进程最多可产生256个LSP分片,携带的信息量有限。
LSP分片扩展基本概念
IS-IS可以配置虚拟的系统ID ,并生成虚拟IS-IS的LSP报文来携带路由等信息。
初始系统(Originating System):初始系统是实际运行IS-IS的路由器。允许一个单独的IS-IS进程像多个虚拟路由器一样发布LSP,而“Originating System”指的是那个“真正”的IS-IS进程。
系统ID(Normal System-ID):初始系统的系统ID。
虚拟系统(Virtual System):由附加系统ID标识的系统,生成扩展LSP分片。这些分片在其LSP ID中携带附加系统ID。
附加系统ID(Additional System-ID):虚拟系统的系统ID,由网络管理器统一分配。每个附加系统ID都允许生成256个扩展的LSP分片。
24号TLV(IS Alias ID TLV):LSP分片携带该TLV信息,用来表示初始系统与虚拟系统的关系。
使能分片扩展功能之后,如果存在由于报文装满而丢失的信息,系统会提醒重启IS-IS。重启之后,初始系统会尽最大能力装载路由信息,装不下的信息将放入虚拟系统的LSP中发送出去,并通过24号TLV来告知其他路由器此虚拟系统和自己的关系。
Type=24 |
Length |
Value: Normal System-ID |
LSP分片扩展工作原理
在IS-IS中,每个系统ID都标识一个系统,每个系统都最多可生成256个LSP分片。通过增加附加系统ID,可以最多配置50个虚拟系统,从而使得IS-IS进程最多可生成13056个LSP分片。
IS-IS路由器可以在两种模式下运行LSP分片扩展特性:
Mode-1工作原理:
- 虚拟系统参与路由SPF计算,初始系统发布的LSP中携带了到每个虚拟系统的链路信息。类似地,虚拟系统发布的LSP也包含到初始系统的链路信息。这样,在网络中虚拟系统看起来与初始系统相连的真实路由器是一样的。
- 这种方式是为了兼容不支持分片扩展的老版本所做的一个过渡模式。在老版本中,IS-IS无法识别24号TLV,所以虚拟系统的LSP必须表现的像一个普通IS-IS发出的报文。
- 注意事项:
- 虚拟系统的LSP中包含和原LSP中相同的区域地址和过载标志位。如果还有其它特性的TLV,也必须保持一致。
- 虚拟系统的邻居信息指向初始系统,metric为最大值减1;初始系统的邻居信息指向虚拟系统,metric必须为0。这样就保证了其它路由器在进行路由计算的时候,虚拟系统一定会成为初始系统的下游节点。(R1-1和R2-2的邻居只有R1)
Mode-2工作原理:
- 虚拟系统不参与路由SPF计算,网络中所有路由器都知道虚拟系统生成的LSP实际属于初始系统。
- 在该模式下工作的IS-IS,可以识别24号TLV的内容,并作为计算树和路由的依据。
注意:无论在哪种方式下,初始系统和虚拟系统的LSP零分片中,都必须包含IS Alias ID TLV来表示初始系统是谁。
命令:[Huawei-isis-1] lsp-fragments-extend [ [ level-1 | level-2 | level-1-2 ] | [ mode-1 | mode-2 ] ]
命令:[Huawei-isis-1] virtual-system virtual-system-id
IS-IS路由控制概述
在实际应用中,IS-IS根据SPF算法计算出来的路由有时并不能满足网络所需,可能出现如下弊端:如路由表中条目过多降低路由查找的速度、网络中链路利用率不均衡等,这些都不能很好地满足网络规划和流量管理的需要。为了达到优化IS-IS网络和便于流量管理的目的,需要对网络中的路由进行更加精确的控制。IS-IS的路由控制包括:
调整IS-IS的优先级
调整IS-IS的接口开销
设置等价路由
IS-IS路由渗透
通告缺省路由
引入外部路由
Filter-Policy
一、IS-IS路由泄露
IS-IS 支持多区域分层设计的网络结构一Ll 区域和L2区域,其中,L2区域作为骨干区域,多个L1区域通过L2区域互连互通。而且在默认情况下,IS-IS,的L1区域类似OSPF的完全末梢区域,只有区域内的路由信息。每个L1区域的L1/2 路由器向区域内发送L1的LSP时,会将LSP中的ATT位置1以表明它连接了其他区域。
这样,L1路由器会在路由器中生成默认路由,该默认路由指向离它最近的L1/2路由器,也就是说L1路由器使用离它最近的L1/2路由器作为缺省网关来访问骨干和其他L1区域。
如下图所示的网络,R3 和R4是区域49.0001的L1/2路由器,它们连接到骨干区域,具有两张链路状态数据库; R1和R2是区域49.0001中的L1路由器,它们的链路状态数据中只有本区域内的路由信息。
此时,R3和R4都会在通告到区域49.0001的L1 LSP中设置ATT位,下图分别显示了R1和R2的链路状态数据库:
上面的输出内容显示了R1和R2都接收到了两个带ATT置位的LSP(分别由R3和R4发送)。这里需要注意的是,并不是所有的L1/2路由器发出的L1 LSP都会设置ATT位,设置ATT位的条件是:
1.L1/2路由器在L1区域中
2.L1/2路由器在区域L1中建立L1邻居,并与区域L2中的L2路由器建立L2邻居关系。
L1路由器接收到带ATT置位的LSP后,会根据距离最近的L1/2路由器产生一条默认路由,所有访问其他区域的数据包都会使用这台L1/2路由器作为缺省的网络出口。
查看R1的路由表,可以发现R1要访问7.7.7.7,要通过默认路由到达L1/2路由器,离R1最近的L1/2路由器为R3(到达R3的cost最小),R1的下一跳为192.168.2.2。
在R3查看路由表发现到达路由7.7.7.7的下一跳为R5。
在R1tracert 7.7.7.7的路径为 :R1->R3->R5->R7
结合拓扑图分析R1->R3->R5->R7路径的总开销为80,而另一条路径R1->R2->R4->R6->R7开销为40,故而出现次优路径。
要解决次优路径的问题,可以使用路由泄露的方法,将L2的明细路由泄露到L1区域中。
在R3、R4上配置路由泄露。
isis 1
import-route isis level-2 into level-1
R1中有7.7.7.7的明细路由,下一跳为R2
R1访问7.7.7.7的路径为R1->R2->R4->R6->R7,此时的路径是最优的。
通过上面的实验,我们可以知道,通过路由泄露使得L1区域能够收到其他区域的具体路径信息(网络前缀及开销值),这样可以避免次优路径的问题。考虑到网络中部署的某些业务可能只在L2区域内运行,则无需将这些路由渗透到L1区域中,可以通过配置策略仅将部分L2区域的路由渗透到L1区域。另外,这种方法也可以用于L1区域向L2区域进行路由泄露时的过滤,缺省情况下,L1区域中的所有路由都会泄露至L2区域。
二、IS-IS路由聚合
在网络中进行路由聚合有两个好处:一是可以减少通告的路由数目,减少路由表的规模,节省路由器的系统资源,提高数据包的转发效率;二是可以增强网络的稳定性, 因为聚合路由隐藏和隔离了明细网络的故障,当一条明细路由发生震荡时,不会对汇总的路由有影响。
跟OSPF协议一-样,IS-IS也支持区域间及外部路由的聚合,区域间通告路由须在L1/2路由器.上进行聚合,在边界设备将外部路由引入时也可以进行聚合。IS-IS 没有自动聚合能力,只能进行手工聚合。下面就让我们一起来了解一下怎么在网络中进行IS-IS路由聚合。
如图所示,网络中有两个IS-IS区域,区域49.0001被配置为L1区域,区域49.0002被配置为了L2区域,区域49.0002中所有路由器都是L2路由器,R3和R4是L1/2路由器。
在R3和R4上将L2区域中的10.10.1.1 24、10.10.2.1 24、10.10.3.1 24、10.10.4.1 24由通告进L1区域时进行路由聚合,减少通告路由的数量后,缩减了R1的路由表规模,降低了资源开销。下面的输出内容显示了R3和R4上的路由聚合配置方法:
isis 1
import-route isis level-2 into level-1
summary 10.10.0.0 255.255.0.0 level-1 #此时的泄露到区域L1的明细路由是level-1级别的
注意:要在R3和R4都汇总,不然R1路由表会出现一条汇总 路由和明细路由。在这里,汇总时不要忘了指定汇总类型为level-1,不然会汇总无效。
可以看到R1上只有一条10.10.0.0 /16的聚合路由,没有明细路由。
默认情况下,IS-IS在做完聚合路由后,本地路由表中不会自动生成一条指向黑洞接口(null0) 的聚合路由,这在一些情况下会带来路由环路的问题。
在上述网络中,R3和R4的都会收到对方发来的聚合路由,即R3和R4的路由表都会有一条聚合路由,当然也会有明细路由。如果此时,R7上的10.10.1.1路由出现故障,导致R3和R4的路由表的10.10.1.1的明细路由消失,当R1要访问10.10.1.1时,数据包传到R4时,R4会依据聚合路由,将数据传到R2上,此时会出现R1->R2->R4-R2的环路。
为避免上述问题,华为设备提供了以下三种方法:
1.在路由聚合命令之后配置avoid-feedback,避免从其他设备接收到该聚合路由,例如:summary 1.1.0.0 255.255.0.0 level-1 avoid-feedback
2.在路由聚合命令之后配置generate_ null0_ route,在本地路由表中生成一条指向null0的聚合路由条目,例如:summary 1.1 .0.0 255 255.0.0 level-1 generate null0 route
3.手工配置一条指向null0接口的聚合路由,例如:ip route-static 1.1.0.0 255.255.0.0 null0 preference 5
通过这三种方式,可以避免流量匹配到聚合的路由,防止的环路的产生。
IS-IS作为一种链路状态路由协议,做路由聚合时没有距离矢量路由协议的灵活性,像RIP协议,它可以在任意一个接口,上做路由聚合,而链路状态协议只能在区域边界或连接外部网络的边缘路由器上做路由聚合,在区域内通告路由是没有办法聚合的。
三、IS-IS路由通告和过滤
只有邻居之间使用相同的开销类型,才能正确计算学到的路由。如果一端配置是narrow,另一端配置为wide或者wide-compatible,则两端不能相互学习路由;如果一端配置是narrow-compatible,另一端配置为wide,则两端也不能相互学习路由。其他方式的开销类型组合都可以学习到路由。
使用filter-policy过滤路由
在R1使用filter-policy过滤,使其只允许10.10.1.1路由下发到ip路由表。
ip ip-prefix ww permit 10.10.1.1 24
isis 1
filter-policy ip-prefix ww import
可以看到除了直连路由,只有10.10.1.1/24网段的路由被下发到路由表中,但是filter-policy只会影响本地路由表,不会过滤LSP,故在R1再接一个路由器,这个路由器还是会有其他非直连路由的。
如果入方向的Filter-policy应用在区域的边界上会是什么样的情况呢?比如在R3上将区域49.0002中10.10.1.1 /24 的路由过滤掉,此时R3中的路由表中没有了10.10.1.1/24 网络中的路由,那么L1区域将不能接收到由R3通告的10.10.1.1/24的路由。
因为R3是一台L1/2路由器,它负责将L2区域的路由通告进L1区域,将L2区域的路由通告进L1区域必须满足一个条件,那就是该L1区域的路由必须存在于本地的路由表中(因为链路状态协议在区域之间通告路由是遵守距离矢量路由特性的)。所以,R3不会向骨干区域通告路由10.10.1.1/24.
四、IS-IS发布缺省路由
在具有外部路由的边界设备上配置IS-IS发布缺省路由可以使该设备在IS-IS路由域内发布一条0.0.0.0/0的缺省路由。在执行此配置后,IS-IS域内的其他设备在转发流量时,将所有去往外部路由域的流量首先转发到该设备,然后通过该设备去往外部路由域。
配置静态缺省路由虽然也可以实现该功能,但是当现网中有大量设备时,配置工作量巨大且不利于管理。
此外,采用IS-IS发布缺省路由的方式更加灵活。例如,如果存在多个边界设备,那么可以通过配置路由策略,使某台边界设备在满足条件时才发布缺省路由,从而避免造成路由黑洞。
在具有外部路由的边界设备上配置IS-IS发布缺省路由可以使该设备在IS-IS路由域内发布一条0.0.0.0/0的缺省路由。在执行此配置后,IS-IS域内的其他设备在转发流量时,将所有去往外部路由域的流量首先转发到该设备,然后通过该设备去往外部路由域。
通常,当网络中部署了IS-IS和其他路由协议时,为了实现IS-IS域内的流量可以到达IS-IS域外,通常有如下两种方式:
命令:[Huawei-isis-1] default-route-advertise [ always | match default | route-policy route-policy-name ] [ cost cost | tag tag | [ level-1 | level-1-2 | level-2 ] ] [ avoid-learning ]
level-1:指定发布的缺省路由级别为Level-1。如果不指定级别,则默认为生成Level-2级别的缺省路由。
level-2:指定发布的缺省路由级别为Level-2。如果不指定级别,则默认为生成Level-2级别的缺省路由。
level-1-2:指定发布的缺省路由级别为Level-1-2。如果不指定级别,则默认为生成Level-2级别的缺省路由。
avoid-learning:避免IS-IS进程学到其他路由协议或其它IS-IS进程生成的缺省路由并添加到路由表。如果路由表中已存在学到的缺省路由为活跃状态,则将此路由置为不活跃状态。
配置该命令后,IS-IS域内所有去往外部的流量将首先会被转发到该设备来进行转发。相比于在每台设备上配置静态缺省路由,使用该命令可以简化操作,即只需在边界设备配置即可。此外,该命令是动态发布缺省路由,使用更加灵活,有多种发布缺省路由的方式可供选择。
缺省路由配置举例
在IS-IS中,主要通过以下3种方式控制缺省路由的生成和发布。
- 在Level-1-2设备上,控制其产生的Level-1 LSP中ATT位的置位情况。
- 在Level-1设备上,通过配置使其即使收到ATT位置位的Level-1 LSP也不会自动产生缺省路由。
- 在IS-IS中发布缺省路由。
LSP的报文格式:
- ATT(Attachment):由Level-1-2路由器产生,用来指明始发路由器是否与其它区域相连。此字段有4bit,华为数通产品只使用了其中1bit。
通过设置ATT位控制缺省路由生成
命令:[Huawei-isis-1] attached-bit advertise { always | never }
- always:指定ATT位永远置位,收到该LSP的Level-1设备会生成缺省路由。
- never:指定ATT位永不置位,可以避免Level-1设备生成缺省路由,减小路由表的规模。
虽然ATT位同时在Level-1 LSP和Level-2 LSP中进行了定义,但是它只会在Level-1 LSP中被置位,并且只有Level-1-2设备会设置这个字段,因此,该命令仅对Level-1-2设备生效。
配置Level-1设备不将缺省路由下发到路由表,有以下两种方式可以实现:
- 在Level-1-2设备上配置attached-bit advertise never命令,使得其不会发布ATT位置位的LSP。
- 在与Level-1-2设备相连的Level-1设备上配置attached-bit avoid-learning命令。
其中,attached-bit avoid-learning命令适用于需要针对指定设备配置的情况。
五、IS-IS Overload
IS-IS OverLoad使用IS-IS过载标记位来标识过载状态。IS-IS过载标志位是指IS-IS LSP报文中的OL字段。对设备设置过载标志位后,其它设备在进行SPF计算时不会使用这台设备做转发,只计算该设备上的直连路由。
图1 IS-IS过载示意图
如图1所示,RouterA到10.1.1.0/24网段的报文由RouterB转发,但如果RouterB所发的LSP报文中过载标志位置1,RouterA会认为RouterB的LSDB不完整,于是将报文通过RouterD、RouterE转发到10.1.1.0/24网段,但转发到RouterB直连网段的报文则不受影响。
当系统因为各种原因无法保存新的LSP,以致无法维持正常的LSDB同步时,该系统计算出的路由信息将出现错误。在这种情况下,系统就可以自动进入过载状态,即通过该设备到达的路由不计算,但该设备的直连路由不会被忽略。
除了设备异常可导致自动进入过载状态,也可以通过手动配置使系统进入过载状态。当网络中的某些IS-IS设备需要升级或维护时,需要暂时将该设备从网络中隔离。此时可以给该设备设置过载标志位,这样就可以避免其他设备通过该节点来转发流量。
如果因为设备进入异常状态导致系统进入过载状态,此时系统将删除全部引入或渗透的路由信息。
如果因为用户配置导致系统进入过载状态,此时会根据用户的配置决定是否删除全部引入或渗透路由。
七、IS-IS Wide Metric
在早期的ISO10589中,使能IS-IS协议的接口下最大只能配置值为63的开销值,此时认为IS-IS开销类型为narrow。但是在大型网络设计中,较小的度量范围不能满足实际需求。所以在RFC3784中规定,使能IS-IS协议的接口开销值可以扩展到16777215,IS-IS路由开销值可以达到4261412864,此时IS-IS的开销类型为wide。
narrow类型下使用的TLV:
128号TLV(IP Internal Reachability TLV):用来携带路由域内的IS-IS路由信息。
130号TLV(IP External Reachability TLV):用来携带路由域外的IS-IS路由信息。
2号TLV(IS Neighbors TLV):用来携带邻居信息。
wide类型下使用的TLV:
135号TLV(Extended IP Reachability TLV):用来替换原有的IP reachability TLV,携带IS-IS路由信息,它扩展了路由开销值的范围,并可以携带sub TLV。
22号TLV(IS Extended Neighbors TLV):用来携带邻居信息。
如表1所示,不同开销类型接收和发送IS-IS信息的类型不同。
开销类型 | 接收 | 发送 |
narrow | narrow | narrow |
narrow-compatible | narrow&wide | narrow |
compatible | narrow&wide | narrow&wide |
wide-compatible | narrow&wide | wide |
wide | wide | wide |
当配置开销类型为compatible的时候,会按照narrow类型和wide类型分别发送一份信息。
wide类型下的IS-IS和narrow类型下的IS-IS不可实现互通。如果需要互通,就必须设置成一致的开销类型,让网络上所有路由器都可以接收其他路由器发的所有报文。
八、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联动检测机制。
图1 IS-IS BFD组网示意图
当主路径上的链路出现故障时,BFD能够快速检测到故障并通告给IS-IS协议,IS-IS Down掉故障链路的接口邻居并删除邻接对应的IP协议类型,从而触发拓扑计算,同时更新LSP使得其他邻居(如RouterC)及时收到RouterB的更新LSP,实现了网络拓扑的快速收敛。
静态联动实验:
环境:R1和R2之间有交换机隔开,通过BFD来检测非直连链路
在R1上配置:
ISIS部分:
isis 1 //进入ISIS进程
is-level level-1 //为level-1路由器
network-entity 49.0001.0000.0000.0001.00 //配置网络标识
interface eth0/0/0 //进入接口开启ISIS
ip address 192.168.1.1 255.255.255.0
isis enable 1
BFD部分:
Bfd //全局开启bfd
bfd 1to2 bind peer-ip 192.168.1.2 interface eth0/0/0 //将对方的接口的IP地址和自己的接口绑定
discriminator local 1 //本地标识
discriminator remote 2 //远端标识
commit 提交配置
R2上配置,然后通过命令查看静态BFD的邻居关系是否建立成功:成功
ISIS部分:
isis 1 //进入ISIS进程
is-level level-1 //为level-1路由器
network-entity 49.0001.0000.0000.0002.00 //配置网络标识
interface eth0/0/0 //进入接口开启ISIS
ip address 192.168.1.2 255.255.255.0
isis enable 1
BFD部分:
Bfd //全局开启bfd
bfd 2to1 bind peer-ip 192.168.1.1 interface eth0/0/0 //将对方的接口的IP地址和自己的接口绑定
discriminator local 1 //本地标识
discriminator remote 2 //远端标识
commit 提交配置
动态联动实验:
Bfd //全局开启bfd
isis 1 //进入isis进程
is-level level-1
bfd all-interfaces enable //将isis开启的所有接口开启bfd
network-entity 49.0001.0000.0000.0001.00
interface eth0/0/1 //在对应接口上开启isis即可
ip address 192.168.1.1 255.255.255.0
isis enable 1
R2配置略,查看BFD邻居关系:建立成功
ISIS NSR
在网络高速发展的今天,用户对数据、视频、语音等应用的需求日渐增多,运营商对IP网络的可靠性也提出了更高的需求。当网络中某个节点发生故障,或者维护过程中人为进行的主备倒换,都可能导致设备无法组建路由信息,导致流量丢失甚至网络瘫痪。部署NSR(Non-Stop Routing)能够解决上述问题,给用户的关键业务提供不间断转发的高可靠性保障。
IS-IS NSR特性通过IS-IS实时数据的主备间高度同步来保证主备倒换后备板能够快速接管原主控板的业务,使邻居不感知本设备故障。在主备倒换后,新主用主控板利用这些实时数据可以迅速地恢复协议,使邻居设备对主备倒换不感知。IS-IS NSR主要通过备份以下数据来实现:
• 配置数据:用户完成的所有配置,包括邻居信息,定时器参数信息及进程下的配置信息等。
• 动态数据:包括接口参数及状态、邻居、LSDB等信息。
等价路由
当IS-IS网络中有多条冗余链路时,可能会出现多条等价路由,此时可以采取两种方式:
- 配置负载分担。流量会被均匀的分配到每条链路上。
- 该方式可以提高网络中链路的利用率及减少某些链路负担过重造成阻塞发生的情况。但是由于对流量转发具有一定的随机性,因此可能不利于对业务流量的管理。
- 配置等价路由优先级。针对等价路由中的每一条路由,明确指定其优先级,优先级高的路由将被优选,优先级低的路由可以作为备用链路。
- 当IS-IS网络中有多条冗余链路时,可能会出现多条等价路由,即达到某一目的网段有多条等开销路径。配置等价路由优先级可以在不修改原有配置的基础上,指定某条路由被优选,便于业务的管理,同时提高网络的可靠性。
- 注意:配置等价路由优先级后,IS-IS设备在转发到达目的网段的流量时,将不采用负载分担方式,而是将流量转发到优先级最高的下一跳。
- 命令:[Huawei-isis-1] maximum load-balancing number
- number:指定在负载分担方式下等价路由的最大数量。不同设备型号取值不同。
- 命令:[Huawei-isis-1] nexthop ip-address weight value
- ip-address:指定下一跳的IP地址。点分十进制格式。
- weight value:指定下一跳权重。value越小则优先级越高。value是整数形式,取值范围是1~254。
等价路由配置举例 (1)
IS-IS多实例和多进程
IS-IS多实例是指在同一台路由器上,可以配置多个VPN实例与多个IS-IS进程相关联。
IS-IS多进程指在同一个VPN下(或者同在公网下)可以创建多个IS-IS进程,每个进程之间互不影响,彼此独立。不同进程之间的路由交互相当于不同路由协议之间的路由交互。
网络中可能需要同时承载不同的业务,为保证各业务的安全性,需要将业务进行隔离,此时,可以配置与VPN实例绑定。
IS-IS多实例和多进程的特点如下:
- IS-IS多进程共用同一个全局路由表。而IS-IS多实例使用VPN中的路由表,并且每个VPN都有自己单独的路由表。
- IS-IS多进程允许为一个指定的IS-IS进程关联一组接口,从而保证该进程进行的所有协议操作都仅限于这一组接口。这样,就可以实现一台路由器有多个IS-IS协议进程,每个进程负责唯一的一组接口。
- IS-IS进程在创建时可以选择绑定一个VPN实例,于是这个IS-IS进程就与此VPN实例相关联,并且只接收和处理此VPN实例内的事件。当VPN实例删除时,IS-IS进程也会跟着被删除。
命令:[Huawei] isis [ process-id ] [ vpn-instance vpn-instance-name ]
- process-id:指定IS-IS进程号。如果不指定进程,则启动进程号为1的IS-IS进程。整数形式,取值范围是1~65535。缺省值是1。
- vpn-instance vpn-instance-name:指定VPN实例名。如果不指定此参数,则就不会配置VPN实例与相应的IS-IS进程相关联。字符串形式,区分大小写,不支持空格,长度范围是1~31。当输入的字符串两端使用双引号时,可在字符串中输入空格。