ISIS协议详解
ISIS协议
概述
IS-IS(Intermediate System-to-Intermediate System,中间系统到中间系统)路由协议最初是ISO(国际标准化组织)为CLNP(Connection Less Network Protocol,无连接网络协议)设计的一种动态路由协议,也是一种基于链路状态并使用最短路径优先算法(SPF)进行路由计算的一种IGP协议。
掌握IS-IS协议基本配置- 协议优先级:15 metric(度量值) : cost
原理
IS-IS是一种链路状态路由协议,每一台路由器都会生成一个LSP,它是该路由器所有使能IS-IS协议接口的链路状态信息的集合。
通过跟相邻设备建立IS-IS邻接关系,互相更新本地的LSDB,使LSDB与整个IS-IS网络其他设备的LSDB同步,然后根据LSDB运用SPF算法计算出IS-IS路由。如果此IS-IS路由是到目的地址的最优路由,则此路由会记录到IP路由表中,并指导报文的转发。
网络类型
点对点(P2P)网络类型
广播型(MA)网络类型
拓扑结构
IS-IS在自治系统内采用骨干区域与非骨干区域两级的分层结构。
一般来说,将Level-1路由器部署在非骨干区域,将Level-2路由器部署在骨干区域,每一个非骨干区域都通过Level-1-2路由器与骨干区域相连- *IS-IS 的一个路由器的所有接口肯定在同一个区域,如图
九种报文
- Hello:用于建立和维持邻居关系,也称为IIH(IS-to-IS Hello PDUs)hello时间为10s,hold时间 为30s,DIS路由器发送hello时间为3.3s,hold时间依然为30s
Broadcast L1-Hello 用于建立Level-1 的邻居关系 ,使用组播方式发送,地址:0180.C200.0014
Broadcast L2-Hello 用于建立Level-2 的邻居关系 ,使用组播方式发送,地址:0180.C200.0015
P2P Hello:点到点网络的hello报文
- LSP(链路状态PDU)类似于OSPF的LSU,分为Level-1、Level-2,用于交换链路状态信息,触发更新或 15分钟周期更新
- CSNP(完全序列号数据包)类似于OSPF的DD报文,分为Level-1、Level-2,包括LSDB中所有LSP的摘要信息,从而可以在相邻路由器间保持LSDB的同步。在广播网络上,CSNP由DIS定期发送(缺省的发送周期为10秒);在点到点链路上,CSNP只在第一次建立邻接关系时发送。
- PSNP(部分序列号数据包)类似于OSPF的LSRequest或LSAck报文,分为Level-1、Level-2,只列举最近收到的一个或多个LSP的序号,它能够一次对多个LSP进行确认,当发现LSDB不同步时,也用PSNP来请求邻居发送新的LSP
路由器类型
Level-1路由器
Level-1路由器负责区域内的路由,它只与属于同一区域的Level-1和Level-1-2路由器形成邻居关系,
属于不同区域的Level-1路由器不能形成邻居关系。Level-1路由器只负责维护Level-1的链路状态数据库LSDB(Link State 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用于区域间路由。
邻居关系建立
广播网络:
- 采用的是可靠的邻接建立过程,如果在接收的IIH报文中看到了自己接口的MAC地址,说明邻接已经收到并确认了自己发送的IIH报文。那么本地维护邻居的状态变为UP状态。
点到点网络:
-
2Way是属于两次握手,没有可靠性保证。只要收到邻接发送的IIH报文,并检测通过,维护邻居的状态为UP状态。
-
3Way是属于三次握手,在点到点网络中使用3way的方式保证邻接建立的可靠性。新增一种TLV,点到点邻居状态TLV。
-
两次握手机制存在明显的缺陷。当路由器间存在两条及以上的链路时,如果某条链路上到达对端的单向状态为Down,而另一条链路同方向的状态为Up,路由器之间还是能建立起邻接关系注:在华为中默认是3way的建立过程。
建立条件:
- 只有同一层次的相邻路由器才有可能成为邻居。
- 对于Level-1路由器来说,区域号必须一致。
- 链路两端IS-IS接口的网络类型必须一致。
- 链路两端IS-IS接口的地址必须处于同一网段。
DIS(Designated Intermediate System)
在广播网络中,IS-IS需要在所有的路由器中选举一个路由器作为DIS,在邻居关系建立后,路由器会等待两个Hello报文间隔,再进行DIS的选举。
作用
周期性10s发送CSNP报文,CSNP相当于DBD 接收PSNP请求,回复LSP应答(同时担当ACK确认)- 创建和更新伪节点(Pseudonodes)
- 负责生成伪节点的LSP(Link state Protocol Data Unit),用来描述这个网络上有哪些网络设备。
选举规则
- 优先级(选大)>MAC地址(选大)
- Level-1和Level-2的DIS是分别选举的
- 可手动配置优先级,默认为64
- 优先级为0也参与选举(区别于ospf)
特点
- 没有备份(所有的路由器之间都形成邻接关系,都可以互相交互LSP信息,DIS只是负责同步LSDB)
- 会抢占(当有新的路由器加入,并符合成为DIS的条件时,这个路由器会被选中成为新的DIS)
- 不同级别的DIS可以是同一台路由器,也可以是不同的路由器。
LSP的交互过程
广播网络:
- 建立邻接关系。
- 向组播地址通告自己的LSP,Level-1的组播地址01-80-C2-00-00-14,level-2的组播地址:01-80-C2-00-00-15。
- 由DIS收集LSP,并每隔10s发送一次CSNP,在CSNP报文中通告DIS设备中LSDB中所有LSP的摘要信息(LSP头部信息)
- 其他设备收到DIS发送的CNSP报文后,需要查看在CNSP报文中是否包含自己的LSP,如果包含说明DIS收到了自己发送的LSP。如果没有需要重传。同时,还需要将CSNP中的摘要信息和本地的LSDB做对比,查看本地去缺少哪些LSP,后续通过PSNP报文向DIS请求自己缺少的LSP。
- DIS收到PSNP报文后回复PSNP报文中请求的LSP。
- *上述过程中所有的报文都是以组播方式交互。
点对点网络:
- 首先建立邻接关系。
- 开始互相发送CSNP,在CSNP报文中包含本地LSBD中所有LSP的摘要信息。
- 收到邻居发送的CSNP报文,需要将CSNP报文中的LSP摘要信息和自己的LSDB做对比,查看缺少的LSP,并通过PSNP报文请求缺少的LSP。
- 收到PSNP请求后,回复LSP报文。
- 收到LSP报文后回复PSNP确认接收到的LSP。
常用命令
$ isis 100 //配置isis进程号
$ network-entity 49.0001.0010.0100.1001.00 //配置NET值
$ is-level level-1 //配置路由器类别,默认是level-1-2,即使配了也不会显示
$ int g0/0/1 //进接口使能isis进程
$ isis enable 100
$ isis cost 50 //配置花销
$ import-route isis level-2 into level-1 //配置路由渗透
$ dis isis peer //查看邻居信息
$ dis isis int g0/0/0 //查看接口的isis信息,可查看是否为DIS
$ dis isis lsdb //查看isis的链路状态数据库信息
实验拓扑
- 掌握IS-IS协议DIS优先级修改方式
- 掌握IS-IS协议网络类型修改方式
- 掌握IS-IS协议外部路由引入
- 掌握IS-IS接口cost修改方式
- 掌握IS-IS路由渗透配置方式
配置IP地址(已省略)
配置ISIS
配置R1
[R1]isis 1
[R1-isis-1]network-entity 49.0002.0000.0000.0001.00
[R1-isis-1]is-level level-2
Info: IS Level Changed, Resetting ISIS...
[R1]interface LoopBack0
[R1-LoopBack0]isis enable
[R1-Ethernet0/0/0]isis enable
[R1]interface Eth0/0/1
[R1-Ethernet0/0/1]isis enable
[R1]interface GigabitEthernet0/0/0
[R1-GigabitEthernet0/0/0]isis enable
[R1]display isis interface
Interface information for ISIS(1)
---------------------------------
Interface Id IPV4.State IPV6.State MTU Type DIS
Loop0 001 Up Down 1500 L1/L2 --
Eth0/0/0 001 Up Down 1497 L1/L2 No/No
Eth0/0/1 002 Up Down 1497 L1/L2 No/No
GE0/0/0 003 Up Down 1497 L1/L2 No/No
配置R2
[R2]isis 1
[R2-isis-1]network-entity 49.0001.0000.0000.0002.00
[R2]interface LoopBack 0
[R2-LoopBack0]isis enable
[R2]interface Eth0/0/0
[R2-Ethernet0/0/0]isis enable
[R2]interface Eth0/0/1
[R2-Ethernet0/0/1]isis enable
[R2]display isis interface
Interface information for ISIS(1)
---------------------------------
Interface Id IPV4.State IPV6.State MTU Type DIS
Loop0 001 Up Down 1500 L1/L2 --
Eth0/0/0 001 Up Down 1497 L1/L2 No/No
Eth0/0/1 002 Up Down 1497 L1/L2 No/No
配置R3
[R3]isis 1
[R3-isis-1]network-entity 49.0001.0000.0000.0003.00
[R3]interface LoopBack0
[R3-LoopBack0]isis enable
[R3]interface Eth0/0/0
[R3-Ethernet0/0/0]isis enable
[R3]interface Eth0/0/1
[R3-Ethernet0/0/1]isis enable
配置R4
[R4]isis 1
[R4-isis-1]network-entity 49.0001.0000.0000.0004.00
[R4-isis-1]is-level level-1
[R4]interface LoopBack0
[R4-LoopBack0]isis enable
[R4]interface Eth0/0/0
[R4-Ethernet0/0/0]isis enable
配置R5
[R5]isis 1
[R5-isis-1]network-entity 49.0002.0000.0000.0005.00
[R5-isis-1]is-level level-2
Info: IS Level Changed, Resetting ISIS...
[R5]interface LoopBack0
[R5-LoopBack0]isis enable
[R5]interface Eth0/0/0
[R5-Ethernet0/0/0]isis enable
修改DIS的优先级
R2、R3和R4在一个广播网络下建立邻居,因此需要选举DIS,默认情况下,DIS优先级都为64,如果优先级相同MAC地址大的接口将成为DIS,我们希望选举更为清晰,因此通过修改R4的DIS优先级来保证其成为DIS。
修改R4的DIS
[R4]interface Eth0/0/0
[R4-Ethernet0/0/0]isis dis-priority 120
[R4]display isis interface
Interface information for ISIS(1)
---------------------------------
Interface Id IPV4.State IPV6.State MTU Type DIS
Loop0 001 Up Down 1500 L1/L2 --
Eth0/0/0 001 Up Down 1497 L1/L2 Yes/No
# 在R2 R3查看发现R4的优先值发生改变
# [R3]display isis peer
Peer information for ISIS(1)
System Id Interface Circuit Id State HoldTime Type PRI
-------------------------------------------------------------------------------
0000.0000.0002 Eth0/0/0 0000.0000.0004.01 Up 27s L1(L1L2) 64
0000.0000.0004 Eth0/0/0 0000.0000.0004.01 Up 8s L1 120
0000.0000.0002 Eth0/0/0 0000.0000.0003.01 Up 22s L2(L1L2) 64
0000.0000.0001 Eth0/0/1 0000.0000.0003.02 Up 26s L2 64
# [R2]display isis peer
Peer information for ISIS(1)
System Id Interface Circuit Id State HoldTime Type PRI
-------------------------------------------------------------------------------
0000.0000.0002 Eth0/0/0 0000.0000.0004.01 Up 27s L1(L1L2) 64
0000.0000.0004 Eth0/0/0 0000.0000.0004.01 Up 8s L1 120
0000.0000.0002 Eth0/0/0 0000.0000.0003.01 Up 22s L2(L1L2) 64
0000.0000.0001 Eth0/0/1 0000.0000.0003.02 Up 26s L2 64
配置ISIS的网络类型
在广播网络中,IS-IS默认会将接口的circuit-type设置为广播模式,并参与DIS的选举。但在拓扑中R1和R5之间的以太网只有两台路由器,我们可以将这两台路由器之间的互联接口设置为点到点模式,进行优化。
修改R1和R5
[R1]interface GigabitEthernet0/0/0
[R1-GigabitEthernet0/0/0]isis circuit-type p2p
[R5]interface Eth0/0/0
[R5-Ethernet0/0/0]isis circuit-type p2p
# 查看结果.
[R1]display isis peer
Peer information for ISIS(1)
System Id Interface Circuit Id State HoldTime Type PRI
-------------------------------------------------------------------------------
0000.0000.0003 Eth0/0/0 0000.0000.0003.02 Up 9s L2 64
0000.0000.0002 Eth0/0/1 0000.0000.0002.02 Up 8s L2 64
0000.0000.0005 GE0/0/0 0000000002 Up 22s L2 --
[R5]display isis peer
Peer information for ISIS(1)
System Id Interface Circuit Id State HoldTime Type PRI
-------------------------------------------------------------------------------
0000.0000.0001 Eth0/0/0 0000000002 Up 21s L2 --
Total Peer(s): 1
配置ISIS外部路由引入
在引入路由之前,先检查当前所有路由的学习情况,R1去往R4的路由呈现负载均衡的状态,数据包将会e0/0/0和e0/0/1之间均匀分布:
因为R2是LEVEL-1-2路由器,因此在两个level生成不同的路由,注意在level1会有默认路由的条目,指向空接口,R3和R2的情况相同:
由于R4是L1路由器,只能和同区域的L1或者LEVEL-1-2路由器建立邻居,并且默认情况下L1路由器无法学到L2的路由信息,只能够通过默认路由访问外部,R4可以看到两条默认路由指向R2和R3,呈现负载均衡。
在R5上创建新的Lookback接口,引入到isis进程:
[R5]interface LoopBack 1
[R5-LoopBack1]ip address 192.168.1.1 24
[R5]interface LoopBack2
[R5-LoopBack2]ip address 192.168.2.1 24
[R5]interface LoopBack3
[R5-LoopBack3]ip address 192.168.3.1 24
[R5-isis-1]import-route direct level-2
此时在R4上再次查看路由表,发现并没有变化,原因是在默认情况下,L2路由不会渗透进入L1路由器,但通过默认路由,R4可访问 192.168.1.0/24、192.168.2.0/24和192.168.3.0/24。
[R4]display ip routing-table protocol isis
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Public routing table : ISIS
Destinations : 5 Routes : 6
ISIS routing table status : <Active>
Destinations : 5 Routes : 6
Destination/Mask Proto Pre Cost Flags NextHop Interface
0.0.0.0/0 ISIS-L1 15 10 D 10.0.234.2 Ethernet0/0/0
ISIS-L1 15 10 D 10.0.234.3 Ethernet0/0/0
10.0.2.2/32 ISIS-L1 15 10 D 10.0.234.2 Ethernet0/0/0
10.0.3.3/32 ISIS-L1 15 10 D 10.0.234.3 Ethernet0/0/0
10.0.12.0/24 ISIS-L1 15 20 D 10.0.234.2 Ethernet0/0/0
10.0.13.0/24 ISIS-L1 15 20 D 10.0.234.3 Ethernet0/0/0
ISIS routing table status : <Inactive>
Destinations : 0 Routes : 0
[R4]ping 192.168.1.1
PING 192.168.1.1: 56 data bytes, press CTRL_C to break
Reply from 192.168.1.1: bytes=56 Sequence=1 ttl=253 time=90 ms
Reply from 192.168.1.1: bytes=56 Sequence=2 ttl=253 time=110 ms
Reply from 192.168.1.1: bytes=56 Sequence=3 ttl=253 time=90 ms
--- 192.168.1.1 ping statistics ---
3 packet(s) transmitted
3 packet(s) received
0.00% packet loss
round-trip min/avg/max = 90/96/110 ms
修改ISIS接口的Cost值
默认情况下,IS-IS接口cost值为10,不会基于带宽自动计算,对于R1来说,去往R4的流量会在R2和R3上负载均衡,但由于R1和R2之间使用Series接口,带宽较小,容易出现瓶颈,因此可以通过修改相应的cost值来控制R1的选路。
增大出口的cost值:
[R1]interface Eth0/0/1
[R1-Ethernet0/0/1]isis cost 15
[R1]display isis route
Route information for ISIS(1)
-----------------------------
ISIS(1) Level-2 Forwarding Table
--------------------------------
IPV4 Destination IntCost ExtCost ExitInterface NextHop Flags
-------------------------------------------------------------------------------
192.168.2.0/24 10 0 GE0/0/0 10.0.15.5 A/-/-/-
10.0.3.3/32 10 NULL Eth0/0/0 10.0.13.3 A/-/-/-
192.168.1.0/24 10 0 GE0/0/0 10.0.15.5 A/-/-/-
10.0.13.0/24 10 NULL Eth0/0/0 Direct D/-/L/-
10.0.2.2/32 15 NULL Eth0/0/1 10.0.12.2 A/-/-/-
10.0.5.5/32 10 NULL GE0/0/0 10.0.15.5 A/-/-/-
10.0.234.0/24 20 NULL Eth0/0/0 10.0.13.3 A/-/-/-
10.0.12.0/24 15 NULL Eth0/0/1 Direct D/-/L/-
10.0.1.1/32 0 NULL Loop0 Direct D/-/L/-
10.0.4.4/32 20 NULL Eth0/0/0 10.0.13.3 A/-/-/-
192.168.3.0/24 10 0 GE0/0/0 10.0.15.5 A/-/-/-
10.0.15.0/24 10 NULL GE0/0/0 Direct D/-/L/-
Flags: D-Direct, A-Added to URT, L-Advertised in LSPs, S-IGP Shortcut,
U-Up/Down Bit Set
配置ISIS路由渗透
观察R4的数据转发,由于R4对Level-2网络状况一无所知,因此使用负载均衡转发数据到R2和R3,如果我们希望R4不使用R2到R1之间的链路,可以通过路由渗透将Level-2的路由引入到Level-1中,通过路由最长匹配选路,从R3转发去往R5的数据包。
测试tracert之前,需要在R5上开启端口不可达的响应,默认是关闭的,如果不开启,则最后一跳会超时。
在开启前:
[R4]tracert 192.168.1.1
traceroute to 192.168.1.1(192.168.1.1), max hops: 30 ,packet length: 40,press
CTRL_C to break
1 10.0.234.2 60 ms 70 ms 60 ms
2 10.0.13.1 90 ms 80 ms 110 ms
3 10.0.15.5 110 ms 60 ms 140 ms
在R5上开启后:
[R5]icmp port-unreachable send
[R4]tracert 192.168.1.1
traceroute to 192.168.1.1(192.168.1.1), max hops: 30 ,packet length: 40,press
CTRL_C to break
1 10.0.234.2 30 ms 80 ms 30 ms
2 10.0.13.1 110 ms 90 ms 70 ms
3 10.0.15.5 110 ms 110 ms 100 ms
可以看到每次发出的tracert包会在两个下一跳地址负载均衡到达R5,此时我们在R3开启路由渗透,使得R3为更优的下一跳:
[R3]isis 1
[R3-isis-1]import-route isis level-2 into level-1
[R4]display isis route
Route information for ISIS(1)
-----------------------------
ISIS(1) Level-1 Forwarding Table
--------------------------------
IPV4 Destination IntCost ExtCost ExitInterface NextHop Flags
-------------------------------------------------------------------------------
0.0.0.0/0 10 NULL Eth0/0/0 10.0.234.2 A/-/-/-
Eth0/0/0 10.0.234.3
192.168.2.0/24 10 20 Eth0/0/0 10.0.234.3 A/-/-/U
10.0.3.3/32 10 NULL Eth0/0/0 10.0.234.3 A/-/-/-
192.168.1.0/24 10 20 Eth0/0/0 10.0.234.3 A/-/-/U
10.0.13.0/24 20 NULL Eth0/0/0 10.0.234.3 A/-/-/-
10.0.2.2/32 10 NULL Eth0/0/0 10.0.234.2 A/-/-/-
10.0.5.5/32 30 NULL Eth0/0/0 10.0.234.3 A/-/-/U
10.0.234.0/24 10 NULL Eth0/0/0 Direct D/-/L/-
10.0.12.0/24 20 NULL Eth0/0/0 10.0.234.2 A/-/-/-
10.0.1.1/32 20 NULL Eth0/0/0 10.0.234.3 A/-/-/U
10.0.4.4/32 0 NULL Loop0 Direct D/-/L/-
192.168.3.0/24 10 20 Eth0/0/0 10.0.234.3 A/-/-/U
10.0.15.0/24 30 NULL Eth0/0/0 10.0.234.3 A/-/-/U
Flags: D-Direct, A-Added to URT, L-Advertised in LSPs, S-IGP Shortcut,
U-Up/Down Bit Set
[R4]display ip routing-table protocol isis
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Public routing table : ISIS
Destinations : 11 Routes : 12
ISIS routing table status : <Active>
Destinations : 11 Routes : 12
Destination/Mask Proto Pre Cost Flags NextHop Interface
0.0.0.0/0 ISIS-L1 15 10 D 10.0.234.2 Ethernet0/0/0
ISIS-L1 15 10 D 10.0.234.3 Ethernet0/0/0
10.0.1.1/32 ISIS-L1 15 20 D 10.0.234.3 Ethernet0/0/0
10.0.2.2/32 ISIS-L1 15 10 D 10.0.234.2 Ethernet0/0/0
10.0.3.3/32 ISIS-L1 15 10 D 10.0.234.3 Ethernet0/0/0
10.0.5.5/32 ISIS-L1 15 30 D 10.0.234.3 Ethernet0/0/0
10.0.12.0/24 ISIS-L1 15 20 D 10.0.234.2 Ethernet0/0/0
10.0.13.0/24 ISIS-L1 15 20 D 10.0.234.3 Ethernet0/0/0
10.0.15.0/24 ISIS-L1 15 30 D 10.0.234.3 Ethernet0/0/0
192.168.1.0/24 ISIS-L1 15 94 D 10.0.234.3 Ethernet0/0/0
192.168.2.0/24 ISIS-L1 15 94 D 10.0.234.3 Ethernet0/0/0
192.168.3.0/24 ISIS-L1 15 94 D 10.0.234.3 Ethernet0/0/0
ISIS routing table status : <Inactive>
Destinations : 0 Routes : 0