一、IS-IS 基本概念
1、IS-IS的拓扑结构
IS-IS的整体拓扑
为了支持大规模的路由网络, IS-IS在自治系统内采用骨干区域与非骨干区域两级的分层结构。
一般来说,将 Level-1 路由器部署在非骨干区域,Level-2 路由器和 Level-1-2路由器部署在骨干区域。每一个非骨干区域都通过 Level-1-2路由器与骨干区域相连。
如图所示为一个运行 IS-IS 协议的网络,它与OSPF 的多区域网络拓扑结构非常相似。整个骨干区域不仅包括Area1 中的所有路由器,还包括其它区域的 Level-1-2路由器。
如图所示是 IS-IS 的另外一种拓扑结构图。在这个拓扑中,Level-2 级别的路由器没有在同一个区域,而是分别属于不同的区域。此时所有物理连续的Level-1-2 和 Level-2路由器就构成了 IS-IS 的骨干区域。
通过以上两种拓扑结构图可以体现IS-IS与OSPF的不同点:
·在 IS-IS 中,每个路由器都只属于一个区域;而在OSPF 中,一个路由器的不同接口可以属于不同的区域。
·在 IS-IS 中,单个区域没有骨干与非骨干区域的概念;而在OSPF 中, Area0被定义为骨干区域。
·在 IS-IS 中,Level-1 和 Level-2级别的路由都采用 SPF 算法,分别生成最短路径树SPT(ShortestPath Tree);而在OSPF 中,只有在同一个区域内才使用 SPF算法,区域之间的路由需要通过骨干区域来转发。
IS-IS路由器的分类
·Level-1 路由器
Level-1 路由器负责区域内的路由,它只与属于同一区域的Level-1 和 Level-1-2路由器形成邻居关系,属于不同区域的 Level-1 路由器不能形成邻居关系。Level-1路由器只负责维护 Level-1的链路状态数据库LSDB(LinkState Database),该 LSDB 包含本区域的路由信息,到本区域外的报文转发给最近的Level-1-2 路由器。
·Level-2 路由器
Level-2 路由器负责区域间的路由,它可以与同一或者不同区域的Level-2 路由器或者其它区域的 Level-1-2路由器形成邻居关系。Level-2 路由器维护一个Level-2 的 LSDB,该LSDB 包含区域间的路由信息。
所有 Level-2 级别(即形成Level-2 邻居关系)的路由器组成路由域的骨干网,负责在不同区域间通信。路由域中Level-2 级别的路由器必须是物理连续的,以保证骨干网的连续性。只有Level-2级别的路由器才能直接与区域外的路由器交换数据报文或路由信息
·Level-1-2 路由器
同时属于 Level-1 和Level-2 的路由器称为 Level-1-2路由器,它可以与同一区域的 Level-1 和Level-1-2路由器形成 Level-1 邻居关系,也可以与其他区域的Level-2 和 Level-1-2路由器形成 Level-2 的邻居关系。Level-1 路由器必须通过 Level-1-2路由器才能连接至其他区域。
Level-1-2 路由器维护两个LSDB, Level-1的 LSDB 用于区域内路由,Level-2 的 LSDB用于区域间路由。
IS-IS的网络类型
IS-IS 只支持两种类型的网络,根据物理链路不同可分为:
·广播链路:如 Ethernet、Token-Ring 等。
·点到点链路:如 PPP、HDLC 等。
说明:
对于NBMA(Non-BroadcastMulti-Access)网络,如ATM,需对其配置子接口,并注意子接口类型应配置为P2P。
IS-IS不能在点到多点链路P2MP(Pointto MultiPoint)上运行。
DIS和伪节点
在广播网络中, IS-IS 需要在所有的路由器中选举一个路由器作为DIS(DesignatedIntermediateSystem)。DIS 用来创建和更新伪节点(Pseudonodes),并负责生成伪节点的链路状态协议数据单元 LSP(Linkstate Protocol Data Unit),用来描述这个网络上有哪些网络设备。
伪节点是用来模拟广播网络的一个虚拟节点,并非真实的路由器。在 IS-IS中,伪节点用 DIS 的SystemID 和一个字节的 Circuit ID(非0 值)标识。
伪节点示意图
如图所示,使用伪节点可以简化网络拓扑,使路由器产生的 LSP长度较小。另外,当网络发生变化时,需要产生的 LSP数量也会较少,减少 SPF 的资源消耗。
Level-1 和Level-2 的 DIS是分别选举的,用户可以为不同级别的 DIS 选举设置不同的优先级。DIS优先级数值最大的被选为 DIS。如果优先级数值最大的路由器有多台,则其中MAC 地址最大的路由器会被选中。不同级别的 DIS可以是同一台路由器,也可以是不同的路由器。
IS-IS协议中DIS与OSPF协议中DR(DesignatedRouter)的区别:
·在 IS-IS 广播网中,优先级为0 的路由器也参与 DIS的选举,而在 OSPF 中优先级为0 的路由器则不参与 DR的选举。
·在 IS-IS 广播网中,当有新的路由器加入,并符合成为DIS 的条件时,这个路由器会被选中成为新的 DIS,原有的伪节点被删除。此更改会引起一组新的LSP 泛洪。而在 OSPF中,当一台新路由器加入后,即使它的 DR 优先级值最大,也不会立即成为该网段中的DR。
·在 IS-IS 广播网中,同一网段上的同一级别的路由器之间都会形成邻接关系,包括所有的非DIS路由器之间也会形成邻接关系。而在 OSPF 中,路由器只与DR 和 BDR建立邻接关系。
说明:
IS-IS广播网上所有的路由器之间都形成邻接关系,但LSDB的同步仍然依靠DIS来保证。
2、IS-IS的地址结构
网络服务访问点NSAP(NetworkService Access Point)是OSI协议中用于定位资源的地址。
NSAP的地址结构如图所示,它由IDP(InitialDomain Part)和DSP(DomainSpecific Part)组成。IDP和DSP的长度都是可变的,NSAP总长最多是20个字节,最少8个字节。
·IDP 相当于 IP地址中的主网络号。它是由 ISO 规定,并由AFI (Authorityand Format Identifier)与 IDI(InitialDomain Identifier)两部分组成。AFI表示地址分配机构和地址格式, IDI 用来标识域。
·DSP 相当于 IP地址中的子网号和主机地址。它由 High Order DSP、System ID 和 SEL三个部分组成。High Order DSP用来分割区域, System ID 用来区分主机,SEL(NSAPSelector)用来指示服务类型。
IS-IS协议的地址结构示意图
·Area Address
IDP 和 DSP中的 High Order DSP 一起,既能够标识路由域,也能够标识路由域中的区域,因此,它们一起被称为区域地址(AreaAddress),相当于 OSPF 中的区域编号。同一Level-1区域内的所有路由器必须具有相同的区域地址, Level-2区域内的路由器可以具有不同的区域地址。
一般情况下,一个路由器只需要配置一个区域地址,且同一区域中所有节点的区域地址都要相同。为了支持区域的平滑合并、分割及转换,在设备的实现中,一个IS-IS 进程下最多可配置 3个区域地址。
·System ID
System ID 用来在区域内唯一标识主机或路由器。在设备的实现中,它的长度固定为48bit(6字节)。
在实际应用中,一般使用RouterID与System ID进行对应。假设一台路由器使用接口Loopback0的IP地址168.10.1.1作为RouterID,则它在IS-IS中使用的SystemID可通过如下方法转换得到:
§将 IP 地址168.10.1.1 的每个十进制数都扩展为3 位,不足 3位的在前面补 0,得到168.010.001.001。
§将扩展后的地址分为 3 部分,每部分由4 位数字组成,得到 1680.1000.1001。重新组合的1680.1000.1001 就是System ID。
实际System ID 的指定可以有不同的方法,但要保证能够唯一标识主机或路由器。
·SEL
SEL 的作用类似 IP中的“协议标识符”,不同的传输协议对应不同的SEL。在 IP上 SEL 均为00。
网络实体名称 NET(NetworkEntity Title)指的是设备本身的网络层信息,可以看作是一类特殊的NSAP(SEL=00)。NET 的长度与 NSAP的相同,最多为 20 个字节,最少为8 个字节。在路由器上配置 IS-IS时,只需要考虑 NET 即可,NSAP 可不必去关注。
例如有 NET 为:ab.cdef.1234.5678.9abc.00,则其中Area Address 为ab.cdef, SystemID 为1234.5678.9abc,SEL 为 00。
3、IS-IS的报文类型
IS-IS 报文有以下几种类型:HELLO PDU(ProtocolData Unit)、 LSP PDU 和SNP PDU。
·Hello PDU
Hello 报文用于建立和维持邻居关系,也称为IIH(IS-to-ISHello PDUs)。
其中,广播网中的Level-1 IS-IS 使用Level-1 LAN IIH;广播网中的Level-2 IS-IS 使用Level-2 LAN IIH;非广播网络中则使用P2P IIH。它们的报文格式有所不同。 P2PIIH 中相对于 LAN IIH 来说,多了一个表示本地链路ID 的 LocalCircuit ID 字段,缺少了表示广播网中 DIS的优先级的 Priority 字段以及表示DIS 和伪节点 SystemID 的 LAN ID 字段。
·LSP PDU
链路状态报文 LSP(LinkState PDUs)用于交换链路状态信息。
LSP分为两种:Level-1 LSP和Level-2 LSP。
Level-1LSP 由 Level-1 IS-IS 传送,Level-2 LSP 由Level-2 IS-IS 传送,Level-1-2 IS-IS则可传送以上两种 LSP。
LSP 报文中主要字段的解释如下:
ATT 字段:当 Level-1-2IS-IS 在 Level-1 区域内传送Level-1 LSP 时,如果Level-1 LSP中设置了ATT 位,则表示该区域中的Level-1 IS-IS 可以通过此Level-1-2 IS-IS 通往外部区域。
OL(LSDBOverload)字段:过载标志位。设置了过载标志位的LSP 虽然还会在网络中扩散,但是在计算通过过载路由器的路由时不会被采用。即对路由器设置过载位后,其它路由器在进行SPF 计算时不会使用这台路由器做转发,只计算该节点上的直连路由。
IS Type 字段:用来指明生成此 LSP的 IS-IS 类型是Level-1 还是 Level-2IS-IS(01 表示Level-1,11 表示Level-2)。
·SNP PDU
序列号报文 SNP(SequenceNumber PDUs)通过描述全部或部分数据库中的 LSP来同步各LSDB(Link-StateDataBase),从而维护 LSDB 的完整与同步。
SNP 包括全序列号报文 CSNP(CompleteSNP)和部分序列号报文 PSNP(PartialSNP),进一步又可分为 Level-1 CSNP、Level-2 CSNP、Level-1 PSNP 和Level-2 PSNP。
CSNP 包括LSDB 中所有 LSP的摘要信息,从而可以在相邻路由器间保持 LSDB 的同步。在广播网络上,CSNP 由 DIS定期发送(缺省的发送周期为 10 秒);在点到点链路上,CSNP只在第一次建立邻接关系时发送。
PSNP 只列举最近收到的一个或多个LSP 的序号,它能够一次对多个 LSP进行确认,当发现LSDB 不同步时,也用PSNP 来请求邻居发送新的 LSP。
IS-IS 报文中的变长字段部分是多个TLV(Type-Length-Value)三元组。其格式如图所示。TLV也称为CLV(Code-Length-Value)。
TLV格式
不同 PDU 类型所包含的TLV 是不同的。
其中, Type 值从1 到 10的 TLV 在ISO10589 中定义,其他几种 TLV在 RFC1195 中定义。
二、IS-IS 基本原理
IS-IS 是一种链路状态路由协议,每一台路由器都会生成一个LSP,它包含了该路由器所有使能 IS-IS协议接口的链路状态信息。通过跟相邻设备建立IS-IS 邻接关系,互相更新本地设备的 LSDB,可以使得LSDB 与整个 IS-IS网络的其他设备的 LSDB 实现同步。然后根据LSDB 运用 SPF算法计算出 IS-IS 路由。如果此IS-IS 路由是到目的地址的最优路由,则此路由会下发的 IP路由表中,并指导报文的转发。
1、IS-IS邻居关系的建立
两台运行 IS-IS 的路由器在交互协议报文实现路由功能之前必须首先建立邻居关系。在不同类型的网络上,IS-IS 的邻居建立方式并不相同。
广播链路邻居关系的建立
图以 Level-2 路由器为例,描述了广播链路中建立邻居关系的过程。Level-1 路由器之间建立邻居与此相同。
广播链路邻居关系建立过程
-
RouterA 广播发送Level-2 LAN IIH,此报文中无邻居标识。
-
RouterB 收到此报文后,将自己和RouterA 的邻居状态标识为 Initial。然后,RouterB再向 RouterA回复 Level-2 LAN IIH,此报文中标识RouterA 为 RouterB的邻居。
-
RouterA 收到此报文后,将自己与RouterB 的邻居状态标识为 Up。然后RouterA 再向RouterB发送一个标识 RouterB 为RouterA 邻居的 Level-2LAN IIH。
-
RouterB 收到此报文后,将自己与RouterA 的邻居状态标识为 Up。这样,两个路由器成功建立了邻居关系。
因为是广播网络,需要选举 DIS,所以在邻居关系建立后,路由器会等待两个Hello 报文间隔,再进行 DIS的选举。Hello 报文中包含Priority 字段, Priority值最大的将被选举为该广播网的DIS。若优先级相同,接口MAC 地址较大的被选举为 DIS。
P2P 链路邻居关系的建立
在 P2P 链路上,邻居关系的建立不同于广播链路。分为两次握手机制和三次握手机制。
§两次握手机制
只要路由器收到对端发来的 Hello报文,就单方面宣布邻居为 Up 状态,建立邻居关系。
§三次握手机制
此方式通过三次发送 P2P 的IS-IS Hello PDU 最终建立起邻居关系,类似广播邻居关系的建立。
两次握手机制存在明显的缺陷。当路由器间存在两条及以上的链路时,如果某条链路上到达对端的单向状态为Down,而另一条链路同方向的状态为 Up,路由器之间还是能建立起邻接关系。SPF 在计算时会使用状态为 UP的链路上的参数,这就导致没有检测到故障的路由器在转发报文时仍然试图通过状态为 Down的链路。
三次握手机制解决了上述不可靠点到点链路中存在的问题。这种方式下,路由器只有在知道邻居路由器也接收到它的报文时,才宣布邻居路由器处于Up 状态,从而建立邻居关系。
IS-IS按如下原则建立邻居关系:
·只有同一层次的相邻路由器才有可能成为邻居。
·对于 Level-1 路由器来说,区域号必须一致。
·链路两端 IS-IS 接口的网络类型必须一致。
说明:
通过将以太网接口模拟成P2P接口,可以建立P2P链路邻居关系。
·链路两端 IS-IS 接口的地址必须处于同一网段。
由于 IS-IS 是直接运行在数据链路层上的协议,并且最早设计是给CLNP 使用的, IS-IS邻居关系的形成与 IP 地址无关。但在实际的实现中,由于只在IP 上运行 IS-IS,所以是要检查对方的IP 地址的。如果接口配置了从 IP,那么只要双方有某个IP(主 IP或者从 IP)在同一网段,就能建立邻居,不一定要主IP 相同。
说明:
当链路两端IS-IS接口的地址不在同一网段时,如果配置接口对接收的Hello报文不作IP地址检查,也可以建立邻居关系。对于P2P接口,可以配置接口忽略IP地址检查;对于以太网接口,需要将以太网接口模拟成P2P接口,然后才可以配置接口忽略IP地址检查。
2、IS-IS的LSP交互过程
LSP产生的原因
IS-IS 路由域内的所有路由器都会产生LSP,以下事件会触发一个新的 LSP:
·邻居 Up 或Down
·IS-IS 相关接口 Up或 Down
·引入的 IP 路由发生变化
·区域间的 IP 路由发生变化
·接口被赋了新的 metric 值
·周期性更新
收到邻居新的LSP的处理过程
-
将接收的新的 LSP合入到自己的 LSDB 数据库中,并标记为flooding。
-
发送新的 LSP到除了收到该 LSP 的接口之外的接口。
-
邻居再扩散到其他邻居。
LSP的“泛洪”
LSP 报文的“泛洪”(flooding)是指当一个路由器向相邻路由器通告自己的LSP 后,相邻路由器再将同样的 LSP报文传送到除发送该 LSP 的路由器外的其它邻居,并这样逐级将LSP 传送到整个层次内所有路由器的一种方式。通过这种“泛洪”,整个层次内的每一个路由器就都可以拥有相同的 LSP信息,并保持 LSDB 的同步。
每一个 LSP 都拥有一个标识自己的4 字节的序列号。在路由器启动时所发送的第一个 LSP报文中的序列号为 1,以后当需要生成新的LSP 时,新 LSP的序列号在前一个 LSP 序列号的基础上加1。更高的序列号意味着更新的 LSP。
广播链路中新加入路由器与DIS同步LSDB数据库的过程
广播链路数据库更新过程
-
如图所示,新加入的路由器 RouterC首先发送 Hello 报文,与该广播域中的路由器建立邻居关系。
-
建立邻居关系之后, RouterC等待 LSP 刷新定时器超时,然后将自己的LSP 发往组播地址(Level-1:01-80-C2-00-00-14;Level-2:01-80-C2-00-00-15)。这样网络上所有的邻居都将收到该LSP。
-
该网段中的 DIS会把收到 RouterC 的LSP 加入到 LSDB中,并等待 CSNP 报文定时器超时并发送CSNP 报文,进行该网络内的 LSDB同步。
-
RouterC 收到DIS 发来的 CSNP报文,对比自己的 LSDB 数据库,然后向DIS 发送 PSNP报文请求自己没有的 LSP。
-
DIS收到该 PSNP 报文请求后向RouterC 发送对应的 LSP 进行 LSDB的同步。
在上述过程中DIS的LSDB更新过程如下:
-
DIS 接收到LSP,在数据库中搜索对应的记录。若没有该 LSP,则将其加入数据库,并广播新数据库内容。
-
若收到的 LSP序列号大于本地 LSP 的序列号,就替换为新报文,并广播新数据库内容;若收到的LSP 序列号小本地 LSP的序列号,就向入端接口发送本地 LSP 报文。
-
若两个序列号相等,则比较 RemainingLifetime。若收到的 LSP 的Remaining Lifetime 小于本地LSP 的 RemainingLifetime,就替换为新报文,并广播新数据库内容;若收到的 LSP的Remaining Lifetime 大于本地LSP 的 RemainingLifetime,就向入端接口发送本地 LSP报文。
-
若两个序列号和 RemainingLifetime 都相等,则比较 Checksum。若收到的LSP 的 Checksum大于本地LSP 的 Checksum,就替换为新报文,并广播新数据库内容;若收到的LSP 的Checksum 小于本地LSP 的 Checksum,就向入端接口发送本地LSP 报文。
-
若两个序列号、 RemainingLifetime 和 Checksum 都相等,则不转发该报文。
P2P链路上LSDB数据库的同步过程
图P2P链路数据库更新过程
-
RouterA 先与RouterB 建立邻居关系。
-
建立邻居关系之后, RouterA与 RouterB 会先发送CSNP 给对端设备。如果对端的 LSDB与CSNP 没有同步,则发送PSNP 请求索取相应的 LSP。
-
如图 3所示假定 RouterB 向RouterA 索取相应的 LSP。RouterA 发送 RouterB请求的 LSP 的同时启动LSP 重传定时器,并等待 RouterB发送的 PSNP 作为收到LSP 的确认。
-
如果在接口 LSP重传定时器超时后, RouterA 还没有收到RouterB 发送的 PSNP报文作为应答,则重新发送该 LSP 直至收到PSNP 报文。
说明:
在P2P链路上PSNP有两种作用:
·作为 Ack 应答以确认收到的LSP。
·用来请求所需的 LSP。
在P2P链路中设备的LSDB更新过程如下:
-
若收到的 LSP比本地的序列号更小,则直接给对方发送本地的 LSP,然后等待对方给自己一个PSNP 报文作为确认;若收到的 LSP比本地的序列号更大,则将这个新的 LSP 存入自己的LSDB,再通过一个 PSNP报文来确认收到此 LSP,最后再将这个新LSP 发送给除了发送该 LSP的邻居以外的邻居。
-
若收到的 LSP序列号和本地相同,则比较 RemainingLifetime,若收到 LSP 的RemainingLifetime 小于本地LSP 的 RemainingLifetime,则将收到的 LSP 存入LSDB 中并发送 PSNP报文来确认收到此LSP,然后将该 LSP发送给除了发送该 LSP 的邻居以外的邻居;若收到LSP的 Remaining Lifetime 大于本地LSP 的 RemainingLifetime,则直接给对方发送本地的LSP,然后等待对方给自己一个PSNP 报文作为确认。
-
若收到的 LSP和本地 LSP 的序列号和Remaining Lifetime 都相同,则比较Checksum,若收到 LSP的 Checksum 大于本地LSP 的 RemainingLifetime,则将收到的 LSP 存入LSDB 中并发送 PSNP报文来确认收到此 LSP,然后将该LSP 发送给除了发送该 LSP的邻居以外的邻居;若收到 LSP 的Checksum 小于本地 LSP的 Remaining Lifetime,则直接给对方发送本地的LSP,然后等待对方给自己一个 PSNP报文作为确认。
-
若收到的 LSP和本地 LSP 的序列号、Remaining Lifetime 和Checksum 都相同,则不转发该报文。
三、IS-IS 认证
IS-IS 认证是基于网络安全性的要求而实现的一种认证手段,通过在IS-IS 报文中增加认证字段对报文进行认证。当本地路由器接收到远端路由器发送过来的IS-IS 报文,如果发现认证密码不匹配,则将收到的报文进行丢弃,达到自我保护的目的。
认证的分类
根据报文的种类,认证可以分为以下三类:
1、接口认证:是指使能IS-IS 协议的接口以指定方式和密码对 Level-1和 Level-2 的Hello 报文进行认证。
说明:
对于接口认证,有以下两种设置:
§发送带认证 TLV 的认证报文,本地对收到的报文也进行认证检查。
§发送带认证 TLV 的认证报文,但是本地对收到的报文不进行认证检查。
2、区域认证:是指运行IS-IS 的区域以指定方式和密码对 Level-1的 SNP 和LSP 报文进行认证。
3、路由域认证:是指运行IS-IS 的路由域以指定方式和密码对 Level-2的 SNP 和LSP 报文进行认证。
说明:
对于区域和路由域认证,可以设置为SNP和LSP分开认证。
§本地发送的 LSP 报文和SNP 报文都携带认证 TLV,对收到的LSP 报文和 SNP报文都进行认证检查。
§本地发送的 LSP 报文携带认证TLV,对收到的 LSP报文进行认证检查;发送的 SNP 报文携带认证TLV,但不对收到的 SNP报文进行检查。
§本地发送的 LSP 报文携带认证TLV,对收到的 LSP报文进行认证检查;发送的 SNP 报文不携带认证TLV,也不对收到的 SNP报文进行认证检查。
§本地发送的 LSP 报文和SNP 报文都携带认证 TLV,对收到的LSP 报文和 SNP报文都不进行认证检查。
根据报文的认证方式,可以分为以下三类:
·明文认证:一种简单的认证方式,将配置的密码直接加入报文中,这种认证方式安全性不够。
·MD5 认证:通过将配置的密码进行 MD5算法之后再加入报文中,这样提高了密码的安全性。
·Keychian 认证:通过配置随时间变化的密码链表来进一步提升网络的安全性。
认证信息的携带形式
IS-IS 通过TLV 的形式携带认证信息,认证 TLV的类型为 10,具体格式如下:
·Type:ISO定义认证报文的类型值为 10,长度为1 字节。
·Length:指定认证 TLV值的长度,长度 1 字节。
·Value:指定认证的具体内容,其中包括了认证的类型和认证的密码,长度为1~254字节。
其中认证的类型为 1 字节,具体定义如下:
§0:保留的类型
§1:明文认证
§54:MD5认证
§255:路由域私有认证方式
四、IS-IS 路由渗透
通常情况下, Level-1 区域内的路由通过Level-1 路由器进行管理。所有的 Level-2和 Level-1-2 路由器构成一个连续的骨干区域。Level-1 区域必须且只能与骨干区域相连,不同的 Level-1区域之间并不相连。
Level-1-2 路由器将学习到的Level-1 路由信息装进 Level-2LSP,再泛洪 LSP 给其他Level-2 和Level-1-2路由器。因此, Level-1-2 和Level-2 路由器知道整个 IS-IS路由域的路由信息。但是,为了有效减小路由表的规模,在缺省情况下, Level-1-2路由器并不将自己知道的其他 Level-1 区域以及骨干区域的路由信息通报给它所在的Level-1 区域。这样, Level-1路由器将不了解本区域以外的路由信息,可能导致与本区域之外的目的地址通信时无法选择最佳的路由。
为解决上述问题, IS-IS 提供了路由渗透功能。通过在Level-1-2 路由器上定义 ACL(AccessControl List)、路由策略、Tag 标记等方式,将符合条件的路由筛选出来,实现将其他 Level-1区域和骨干区域的部分路由信息通报给自己所在的 Level-1区域。
路由渗透示例
如图所示, RouterA 发送报文给RouterF,选择的最佳路径应该是RouterA->RouterB->RouterD->RouterE->RouterF。因为这条链路上的cost 值为 10+10+10+10=40,但在RouterA 上查看发送到 RouterF的报文选择的路径是:RouterA->RouterC->RouterE->RouterF,其cost 值为 10+50+10=70,不是RouterA 到 RouterF的最优路由。
RouterA 作为Level-1 路由器并不知道本区域外部的路由,那么发往区域外的报文都会选择由最近的Level-1-2 路由器产生的缺省路由发送出去,所以会出现 RouterA选择次最优路由转发报文的情况。
如果分别在Level-1-2 路由器 RouterC和 RouterD 上使能路由渗透功能,Aera10 中的 Level-1路由器就会拥有经这两个 Level-1-2 路由器通向区域外的路由信息。经过路由计算,选择的转发路径为RouterA->RouterB->RouterD->RouterE->RouterF,即 RouterA到 RouterF 的最优路由。
五、IS-IS Overload
IS-IS OverLoad 使用IS-IS 过载标记位来标识过载状态。IS-IS过载标志位是指 IS-IS LSP 报文中的OL字段。对设备设置过载标志位后,其它设备在进行 SPF计算时不会使用这台设备做转发,只计算该设备上的直连路由。
如图所示, RouterA 到1.1.1.0/24 网段的报文由RouterB 转发,但如果 RouterB所发的 LSP 报文中过载标志位置1, RouterA会认为 RouterB 的LSDB 不完整,于是将报文通过 RouterD、RouterE转发到 1.1.1.0/24网段,但转发到 RouterB 直连网段的报文则不受影响。
当系统因为各种原因无法保存新的 LSP,以致无法维持正常的LSDB 同步时,该系统计算出的路由信息将出现错误。在这种情况下,系统就可以自动进入过载状态,即通过该设备到达的路由不计算,但该设备的直连路由不会被忽略。
除了设备异常可导致自动进入过载状态,也可以通过手动配置使系统进入过载状态。当网络中的某些IS-IS设备需要升级或维护时,需要暂时将该设备从网络中隔离。此时可以给该设备设置过载标志位,这样就可以避免其他设备通过该节点来转发流量。
说明:
·如果因为设备进入异常状态导致系统进入过载状态,此时系统将删除全部引入或渗透的路由信息。
·如果因为用户配置导致系统进入过载状态,此时会根据用户的配置决定是否删除全部引入或渗透路由。
六、IS-IS 网络收敛
为了提高 IS-IS 网络的收敛,有快速收敛和按优先级收敛两种方式。快速收敛侧重于从路由的计算角度加快收敛速度;按优先级收敛侧重于从路由优先级角度提高网络性能。
快速收敛
IS-IS 快速收敛是为了提高路由的收敛速度而做的扩展特性。它包括以下几个功能:
·增量最短路径优先算法 I-SPF(Incremental SPF):是指当网络拓扑改变的时候,只对受影响的节点进行路由计算,而不是对全部节点重新进行路由计算,从而加快了路由的计算。
在 ISO10589 中定义使用SPF 算法进行路由计算。当网络拓扑中有一个节点发生变化时,这种算法需要重新计算网络中的所有节点,计算时间长,占用过多的CPU 资源,影响整个网络的收敛速度。
I-SPF 改进了这个算法,除了第一次计算时需要计算全部节点外,每次只计算受到影响的节点,而最后生成的最短路径树SPT 与原来的算法所计算的结果相同,大大降低了 CPU的占用率,提高了网络收敛速度。
·部分路由计算 PRC(Partial Route Calculation):是指当网络上路由发生变化的时候,只对发生变化的路由进行重新计算。
PRC 的原理与 I-SPF相同,都是只对发生变化的路由进行重新计算。不同的是, PRC不需要计算节点路径,而是根据 I-SPF 算出来的SPT 来更新路由。
在路由计算中,叶子代表路由,节点则代表路由器。如果 I-SPF计算后的 SPT 改变,PRC 会只处理那个变化的节点上的所有叶子;如果经过 I-SPF计算后的 SPT 并没有变化,则PRC 只处理变化的叶子信息。比如一个节点使能一个 IS-IS接口,则整个网络拓扑的 SPT 是不变的,这时PRC 只更新这个节点的接口路由,从而节省 CPU占用率。PRC 和I-SPF 配合使用可以将网络的收敛性能进一步提高,它是原始 SPF算法的改进,已经代替了原有的算法。
·智能定时器:在进行SPF 计算和产生 LSP的时候用到的一种智能定时器。该定时器首次超时时间是一个固定的时间。如果在定时器超时前,又有触发定时器的事件发生,则该定时器下一次的超时时间会增加。
改进了路由算法后,如果触发路由计算的时间间隔较长,同样会影响网络的收敛速度。使用毫秒级定时器可以缩短这个间隔时间,但如果网络变化比较频繁,又会造成过度占用CPU 资源。SPF智能定时器既可以对少量的外界突发事件进行快速响应,又可以避免过度的占用 CPU。通常情况下,一个正常运行的IS-IS 网络是稳定的,发生大量的网络变动的几率很小, IS-IS不会频繁的进行路由计算,所以第一次触发的时间可以设置的非常短(毫秒级)。如果拓扑变化比较频繁,智能定时器会随着计算次数的增加,间隔时间也会逐渐延长,从而避免占用大量的CPU 资源。
与 SPF 智能定时器类似的还有LSP 生成智能定时器。在 IS-IS协议中,当 LSP 生成定时器到期时,系统会根据当前拓扑重新生成一个自己的LSP。原有的实现机制是采用间隔时间固定的定时器,这样就不能同时满足快速收敛和低CPU 占用率的需要。为此将 LSP生成定时器也设计成智能定时器,使其可以对于突发事件(如接口 Up/Down)快速响应,加快网络的收敛速度。同时,当网络变化频繁时,智能定时器的间隔时间会自动延长,避免过度占用CPU资源。
·LSP 快速扩散:此特性可以加快LSP 的扩散速度。
正常情况下,当 IS-IS 收到其它路由器发来的LSP 时,如果此 LSP比本地 LSDB 中相应的LSP要新,则更新 LSDB中的 LSP,并用一个定时器定期将LSDB 内已更新的 LSP扩散出去。
LSP 快速扩散特性改进了这种方式,使能了此特性的设备收到一个或多个较新的LSP 时,在路由计算之前,先将小于指定数目的 LSP扩散出去,加快 LSDB 的同步过程。这种方式在很大程度上可以提高整个网络的收敛速度。
按优先级收敛
IS-IS 按优先级收敛是指在大量路由情况下,能够让某些特定的路由(例如匹配指定IP 前缀的路由)优先收敛的一种技术。因此用户可以把和关键业务相关的路由配置成相对较高的优先级,使这些路由更快的收敛,从而使关键的业务收到的影响减小。通过对不同的路由配置不同的收敛优先级,达到重要的路由先收敛的目的,提高网络的可靠性。