1. IS-IS链路级别
我们之前说了路由器的级别,现在又来链路级别。
这个功能只针对L1-2的路由器,单纯的L1或L2级别的路由器,只会建立其中一种L1或者L2级别的邻居关系。
我们可以通过限制链路级别,只建立一种级别的邻居关系
L1路由器在广播链路发送L1的HELLO报文,与链路级别无关,始终发送L1的hello报文。L2路由器在广播链路发送L2的HELLO报文,与链路级别无关,始终发送L2的hello报文。L1-2路由器在广播链路发送L1与L2的HELLO报文,与链路级别有关,取交集发送
我们可以通过
sh
isis circuit-level Level-2
控制链路级别
1.1 为什么我们需要配置链路级别?
当然是我们的实际需要了,我们需要控制骨干区域不能出现L1的邻居关系,可以修改链路级别为L2,这样就只会建立L2的邻居关系。
比如说下面这样一个拓扑图:
R2 R3 R4路由器构成了骨干区域,而R1 R2 R3 构成非骨干区域,
这时我们需要R2 R3骨干区域之间只建立L2邻居,因此我们可以
进行配置,我们分别进入到R2 R3的接口下,设置级别
sh
isis circuit-level Level-2
设置之后,R2和R3之间不发L1的HELLO包,因此就不会建立L1的邻居关系了。

2. IS-IS邻居建立
2.1 IS-IS邻居状态
只有三种,比OSPF的状态少一些。
分别是: down,init,up。
建立过程其实跟OSPF的邻居关系建立差不多,都是在确认收到对方知道自己为邻居的包后,邻居关系就建立。

DOWN状态:当接口宣告到IS-IS中,没收到其他路由器发来的HELLO报文。
INIT状态:当路由器收到其他路由器发来的HELLO报文,但报文中不包含自身的neighbor信息
UP状态:当路由器收到其他路由器发来的HELLO报文,且报文中包含自身的neighbor信息(自身接口的MAC地址)
IS-IS按如下原则建立邻居关系:
-
只有同一层次的相邻路由器才有可能成为邻居。
-
对于Level-1路由器来说,区域号必须一致。
-
链路两端IS-IS接口的网络类型必须一致。
-
链路两端IS-IS接口的地址必须处于同一网段。
2.2 链路状态交互
- 广播网络上的链路状态信息更新
广播上的链路状态上的更新是周期性的。

-
如图7-7所示,新加入的路由器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的作用:周期性的发送CSNP报文,保证MA网络中的LSDB同步。
- P2P链路上的更新
P2P上的链路状态更新是一次性的

-
RouterA先与RouterB建立邻居关系。
-
建立邻居关系之后,RouterA与RouterB会先发送CSNP给对端设备。如果对端的LSDB与CSNP没有同步,则发送PSNP请求索取相应的LSP。
-
如图7-8所示假定RouterB向RouterA索取相应的LSP。RouterA发送RouterB请求的LSP的同时启动LSP重传定时器,并等待RouterB发送的PSNP作为收到LSP的确认。
-
如果在接口LSP重传定时器超时后,RouterA还没有收到RouterB发送的PSNP报文作为应答,则重新发送该LSP直至收到PSNP报文。
3. LSDB

每台IS-IS路由器根据路由器级别维护不同级别的LSDB。
L1级别的路由器只会维护L1级别的LSDB。
L2级别的路由器只会维护L2级别的LSDB。
L1-2级别的路由器既会维护L1级别的路由器,又会维护L2级别的路由器。
我们可以通过
sh
dis isis lsdb
查看is-is数据库

4. LSP
我们可以对LSP进行分类。
- 从级别上可分为
L1级别和L2级别 - 从用途上可分为实节点LSP各伪节点LSP
- 实节点LSP--描述路由器自身的链路状态,相当于OSPF中的1类LSA(router-LSA)。
- 伪节点LSP--描述广播网络上的链路信息,相当于OSPF中的2类LSA(network-LSA)。对于OSPF使用的是DR接口地址,ISIS使用路由器的
system id
4.1 如何识别唯一一条LSP?
OSPF的LSA通过三要素来标识:ls id、type、adv-rtr
而IS-IS中通过LSPID来标识
比如说0000.0000.0003.00-00*这个LSPID来说,总共分为三个部分
前十二个数字0000.0000.0003是system-id,紧跟着两位00表示不是伪节点,非00表明是一个伪节点;最后两位00表示没有分片,如果分片了就是非00。
这个*号表示是不是自己产生的。

4.2 如何判断一条LSP的新旧?
- 序列号:越大越新
- 剩余时间
hold time: 一条LSP出生时hold time是1200s,每隔1s时间减去,直到减为0为止。(如果一台设备收到一条LSP中hold time为0的LSP,那么代表需要删除这个LSP)。 - 校验和
checksum: 越大越优
4.3 IS-IS更新方式
- 周期更新: 每隔900s周期向邻居更新自己产生的
LSP。每1200s老化。 - 触发更新:
5. IS-IS路由计算
IS-IS也是基于DIJSTRA来计算最短路由的,这里就不提及怎么算了,可能之后IE的阶段再去补吧!下面的什么伪节点,实节点我也没怎么搞懂怎么回事。
5.1 实节点
我们可以通过
sh
dis isis lsdb <LSPID> verbose
来查看实节点信息

SOURCE: system-id + 伪节点标识符
NLPID: 网络层协议
AREA ID: 区域id
INTF ADDR: 产生这条LSP路由器宣告到IS-IS中所有接口的IP地址
NBR-ID: 描述P2P邻居
IP-Internal:用来描述直连的路由信息,到达这个路由的开销。
5.2 伪节点
伪节点查看的方法一样,只是LSPID中对对应的两位是非00。
sh
dis isis lsdb 0000.0000.0002.01-00 verbose

这里的NBR ID 描述的就是伪节点连接的所有的实节点信息了。
5.3 开销值
cost 固定为0。
IS-IS路径cost=链路总和开销。
当然我们可以通过命令来更改开销值。
is-is开销值类型分为两种:
narrow: 1~63 , wide: 1~16777215
可以在is-is进程下修改开销值类型。
sh
isis cost-style wide
修改的方式有三种:
1.单个接口下
sh
isis cost 10
- 修改全局 cost
sh
circuit-cost 30
- 根据接口带宽自动计算开销
注意需要cost类型为宽类型下修改
sh
auto-cost enable
6. 多区域通信

6.1 骨干区域到非骨干区域
默认情况下L1-2级别的路由器会把L1级别的LSDB中的叶子信息,作为自己在L2级别中的实节点中的叶子信息添加到L2级别的数据库中。
6.2 非骨干区域到骨干区域
默认情况下L1-2路由器不会把L2的任何叶子信息添加到L1区域。
所以L1区域不会学习到L2区域的任何明细路由。
所以对上面的图来说,R5不会学习到任何骨干区域的路由。
但我们观察到,它有两条缺省路由。然而这两条缺省路由产生也是有条件的。

比如说对下面这样一个图,左边R6无法访问右边的100.100.100.100/32的路由。查看路由表也会发现,没有缺省路由出现了。


为了让非骨干区域能够访问骨干区域:
当L1-2路由器在骨干区域存在不同区域ID的L2级别的邻居关系时,会把自己L1级别的LSP中的ATT置位为1。
ATT置位为1: LSDB中有去往其他区域的L2路由。
非骨干区域的路由器在收到ATT=1的LSP时,会自动产生一条IS-IS缺省路由,指向这个L1-2路由器。
ATT
- 产生条件: ATT置位必须由
L1-2路由器产生;L1-2设备从L2学习到的LSP所携带的区域id,必须有L1不存在的区域ID - 作用:用于表明这个
L1-2路由器和骨干区域直连,帮助非骨干区域访问骨干区域。
7. 路由泄露
很显然如果有两条缺省路由出现分担的情况,那么就很有可能出现次优路径的风险。

比如说上面这个图,从R1到R5的路由就有可能出现次优路径风险。
我们可以通过下面的命令来将L1-2路由器上所有L2的LSP叶子信息添加到L1级别的LSDB中去。
sh
import-route is-is level-2 into level-1
再查看R5路由表就会发现路由表中有了100.100.100.100/32的路由了。

我们在R5上查看R1上泄露过来的路由时,会在看到有个星号,这个星号是什么意思呢?

星号表示DU置位,DU表示down up
当骨干区域的叶子信息手动泄露给非骨干区域时,将du置位为1。
作用:防止次优路径,防止环路。
为什么要特殊标记泄露过来的路由?
当一台路由器同时存在L1和L2相同目的网络的路由时,L1优于L2的,防止其他的L1-2路由器产生次优路径和环路,加一个星号。
L1 > L2 > L1*
8. IS-IS认证
8.1 接口认证
在接口视图下,对L1和L2的HELLO报文进行认证
sh
isis authentication_mode md5 cipher 123
8.2 区域认证
在is-is进程视图下配置,对L1的CSNP PSNP和LSP报文进行认证,区域内的每一台L1路由器必须使用相同的认证模式
sh
area-authentication-mode md5 cipher 123
8.3 路由域认证
在is-is进程视图下配置,对L2的CSNP PSNP和LSP报文进行认证,区域内的每一台L1-2和L2路由器必须使用相同的认证模式
sh
domain-authentication-mode md5 cipher 123