ISIS介绍

拓扑

image-20200322100508528

配置IP地址,注意每台设备上都配置一个lo0,过程省略

配置ISIS协议

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
R1(config)#router isis
R1(config)#log-adjacency-changes # 邻居状态变化显示
R1(config-router)#net 49.0001.0000.0000.0001.00
R1(config-if)#int range e0/0 , lo0
R1(config-if-range)#ip router isis
=============================================
R2(config)#router isis
R2(config)#log-adjacency-changes
R2(config-router)#net 49.0001.0000.0000.0002.00
R2(config-router)#int range e0/0 -1 , lo0
R2(config-if-range)#ip router isis
=============================================
R3(config)#router isis
R3(config)#log-adjacency-changes
R3(config-router)#net 49.0001.0000.0000.0003.00
R3(config-router)#int range e0/0 -1 , lo0
R3(config-if-range)#ip router isis
=============================================
R4(config)#router isis
R4(config)#log-adjacency-changes
R4(config-router)#net 49.0002.0000.0000.0004.00
R4(config-router)#int range e0/0 -2 , lo0
R4(config-if-range)#ip router isis
=============================================
R5(config)#router isis
R5(config)#log-adjacency-changes
R5(config-router)#net 49.0003.0000.0000.0005.00
R5(config-router)#int range e0/0 , lo0
R5(config-if-range)#ip router isis

检查路由条目,以及是否可以全网互联

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
R5#sh ip route   
1.0.0.0/24 is subnetted, 1 subnets
i L2 1.1.1.0 [115/40] via 192.168.45.4, 00:00:28, Ethernet0/0
2.0.0.0/24 is subnetted, 1 subnets
i L2 2.2.2.0 [115/30] via 192.168.45.4, 00:00:28, Ethernet0/0
3.0.0.0/24 is subnetted, 1 subnets
i L2 3.3.3.0 [115/30] via 192.168.45.4, 00:00:28, Ethernet0/0
4.0.0.0/24 is subnetted, 1 subnets
i L2 4.4.4.0 [115/20] via 192.168.45.4, 00:00:28, Ethernet0/0
5.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C 5.5.5.0/24 is directly connected, Loopback0
L 5.5.5.5/32 is directly connected, Loopback0
i L2 192.168.24.0/24 [115/20] via 192.168.45.4, 00:00:28, Ethernet0/0
i L2 192.168.34.0/24 [115/20] via 192.168.45.4, 00:00:28, Ethernet0/0
192.168.45.0/24 is variably subnetted, 2 subnets, 2 masks
C 192.168.45.0/24 is directly connected, Ethernet0/0
L 192.168.45.5/32 is directly connected, Ethernet0/0
i L2 192.168.123.0/24 [115/30] via 192.168.45.4, 00:00:28, Ethernet0/0
R5#ping 1.1.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms

ISIS基础概念

  • 链路状态协议
  • 在cisco设备上ISIS的管理距离为115
  • 最早的时候对通信的过程理解,出现了两大阵营,一个是面向连接,一个是无连接
    • 面向连接认为通信前必须要建立连接,然后针对这个连接操作数据。代表协议栈:TCP/IP
    • 无连接认为通信前无需建立连接,可以做到低延迟,减少网络资源消耗。代表协议栈:CLNS/CLNP
  • ISIS在设计的时候,是针对CLNS/CLNP协议栈的,但是ISIS并没有非常依赖CLNP地址,所以后期开发团队稍微修改了ISIS的代码,变成了集成版本ISIS(DUAL ISIS)。相比较OSPF非常依赖IP地址,ISIS更加的灵活。
  • ISIS

三个表

邻居表

1
2
3
4
5
6
7
8
R2#show isis neighbors 

System Id Type Interface IP Address State Holdtime Circuit Id
R1 L1 Et0/0 192.168.123.1 UP 21 R3.01
R1 L2 Et0/0 192.168.123.1 UP 26 R3.01
R3 L1 Et0/0 192.168.123.3 UP 7 R3.01
R3 L2 Et0/0 192.168.123.3 UP 9 R3.01
R4 L2 Et0/1 192.168.24.4 UP 9 R4.01
  • System ID
    • 是系统ID,类似于OSPF中的Router-ID,不过这个system-id会和主机名做对应
1
2
3
4
5
6
7
R2#show isis hostname 	# 这个命令可以看到主机名和系统ID的对应关系
Level System ID Dynamic Hostname (notag)
2 0000.0000.0001 R1
* 0000.0000.0002 R2
2 0000.0000.0003 R3
2 0000.0000.0004 R4
2 0000.0000.0005 R5
  • Type
    • 是用来标识当前邻居的一个类型
    • 目前有两种类型
      • L1:level-1的邻居关系
      • L2:level-2的邻居关系
  • state
    • init
    • down
    • up
  • Holdtime
    • ISIS每隔10秒发送一次hello,用于维护邻居关系
    • 当30s没收到hello消息,那么判定邻居失效
  • Circuit ID
    • 术语电路地址,其实就是主机名.接口编号
1
2
3
4
5
R2#show clns neighbors 
System Id Interface SNPA State Holdtime Type Protocol
R1 Et0/0 aabb.cc00.1000 Up 23 L1 IS-IS
R3 Et0/0 aabb.cc00.3000 Up 8 L1 IS-IS
R4 Et0/1 aabb.cc00.4000 Up 9 L2 IS-IS

查看clns邻居关系

  • SNPA
    • 在以太网中就是MAC地址
    • 在其他类型的网络中,是数据链路层的地址

链路状态数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
R2#show isis database 

IS-IS Level-1 Link State Database:
LSPID LSP Seq Num LSP Checksum LSP Holdtime/Rcvd ATT/P/OL
R1.00-00 0x00000022 0x9555 1185/1199 0/0/0
R2.00-00 * 0x0000001D 0x01CA 1186/* 0/0/0
R2.01-00 * 0x00000008 0x70D9 1182/* 0/0/0
R3.00-00 0x00000015 0x4870 1190/593 1/0/0
R3.01-00 0x0000001B 0x4363 1190/846 0/0/0
IS-IS Level-2 Link State Database:
LSPID LSP Seq Num LSP Checksum LSP Holdtime/Rcvd ATT/P/OL
R1.00-00 0x00000024 0x8DB6 1190/244 0/0/0
R2.00-00 * 0x0000002B 0x310F 1197/* 0/0/0
R3.00-00 0x00000030 0x59DA 1185/1198 0/0/0
R4.00-00 0x00000019 0x2789 1190/931 0/0/0
R4.01-00 0x00000008 0x25A8 1190/692 0/0/0
R4.02-00 0x00000008 0x3794 1190/770 0/0/0
R5.00-00 0x0000000D 0x4FD4 1190/619 0/0/0
R5.01-00 0x00000008 0x5D6C 1190/718 0/0/0
  • LSPID
    • LSP接收的主机名.伪节点ID-分片ID
  • Seq Num
    • 每收到一个更新就加一,初始位0x00000001最大为0xffffffff,当最大值之后,再次加一,就回变成0x00000000,然后就回停止isis,直到再次更新的到来。
  • LSP Holdtime/Rcvd
    • ISIS的LSP消息寿命为1200s,当路由器更新这个消息之后,就回开始倒数计时,当更新了900s之后,就回再次更新消息,其他路由器收到了之后就回刷新倒计时。
  • ATT/P/OL
    • ATT:默认路由器标记
    • P:区域修复,类似于OSPF中的虚链路
    • OL:overload,意思是路由器超载了,流量如果有别的路线,就尽量绕开这个路由器

路由表

1
2
3
4
5
6
7
8
9
10
11
12
R5#sh ip route isis
1.0.0.0/24 is subnetted, 1 subnets
i L2 1.1.1.0 [115/40] via 192.168.45.4, 00:00:28, Ethernet0/0
2.0.0.0/24 is subnetted, 1 subnets
i L2 2.2.2.0 [115/30] via 192.168.45.4, 00:10:28, Ethernet0/0
3.0.0.0/24 is subnetted, 1 subnets
i L2 3.3.3.0 [115/30] via 192.168.45.4, 00:00:28, Ethernet0/0
4.0.0.0/24 is subnetted, 1 subnets
i L2 4.4.4.0 [115/20] via 192.168.45.4, 00:54:30, Ethernet0/0
i L2 192.168.24.0/24 [115/20] via 192.168.45.4, 00:54:30, Ethernet0/0
i L2 192.168.34.0/24 [115/20] via 192.168.45.4, 00:54:30, Ethernet0/0
i L2 192.168.123.0/24 [115/30] via 192.168.45.4, 00:00:28, Ethernet0/0

名词解释

OSI术语 OSI术语解释 IP中“类似”
IS 中间系统 路由器
ES 终端系统 PC主机,手机等等
PDU 数据单元 数据包
NSAP 用来标识一个服务的地址 IP+端口号
NET 不区分服务的NSAP地址,只能标识哪个节点 IP
SNPA 数据链路层用的地址 MAC地址
SysID 上面中间系统的ID OSPF中的Router-ID
LSP 链路状态数据单元 OSPF中的LSA
LSPDB 链路状态数据库 OSPF中的LSDB
伪节点 OSPF中的DR

ISO编址

NSAP地址

一台路由器多个接口需要多个IP地址来标识

一个路由器只需要一个NSAP就可以标识了,不同的接口使用术语电路(circuit)来标识

image-20200322104652587

  • AFI
    • 1字节的授权和格式标识符
    • 可以确定这个地址的功能和格式,在TCP/IP中几乎无用
    • 当时规定了49为私有地址,所以现在TCP/IP中配置ISIS,我们习惯性都以49开头
  • IDI
    • 可变长的初始域标识符
    • 用于表示子域,在TCP/IP中不写
  • Area
    • 大致类同IP中的子网
    • 2字节,现在用来表示ISIS设备所属的区域
  • SystemID
    • 6直接系统ID
    • 一台设备可以配置多个NSAP地址,但是系统ID必须一样
  • NSEL
    • 用于识别流量应该被系统哪个进程使用
    • 在TCP/IP中,都是0

image-20200322105558441

将IP地址变成systemID的做法是这样的,比如:

  1. 192.168.12.1
  2. 192168012001
  3. 1921.6801.2001

多区域划分

  • ISIS路由器必须一整台都属于同一个区域
  • 规定不同区域的路由器只能建立L2的邻居关系,也就是L2是用来连接区域间的
  • L1是区域内部的路由器
  • L1和L2是指路由器的角色,L1和L2邻居关系是指接口的邻居类型
  • 默认情况下ISIS路由器是同时具备L1和L2功能的,被称为L1/L2路由器

image-20200322112000430

推荐如上图这样,在一个区域边界的路由器上开启L2功能,这样就可以变为L1/L2路由器,负责区域内外链路状态的传递。

ISIS区域内的路由学习情况,类似于OSPF的T-stub区域的情况,也就是L1路由器不能学习到其他区域的路由以及ISIS的外部路由。并且会产生一条默认路由指向最近的L1/L2路由器。

下面查看R1的路由表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
R1#sh ip route isis
2.0.0.0/24 is subnetted, 1 subnets
i L1 2.2.2.0 [115/20] via 192.168.123.2, 00:00:03, Ethernet0/0
3.0.0.0/24 is subnetted, 1 subnets
i L1 3.3.3.0 [115/20] via 192.168.123.3, 00:00:03, Ethernet0/0
4.0.0.0/24 is subnetted, 1 subnets
i L2 4.4.4.0 [115/30] via 192.168.123.3, 00:19:03, Ethernet0/0
[115/30] via 192.168.123.2, 00:19:03, Ethernet0/0
5.0.0.0/24 is subnetted, 1 subnets
i L2 5.5.5.0 [115/40] via 192.168.123.3, 00:19:03, Ethernet0/0
[115/40] via 192.168.123.2, 00:19:03, Ethernet0/0
i L1 192.168.24.0/24 [115/20] via 192.168.123.2, 00:00:03, Ethernet0/0
i L1 192.168.34.0/24 [115/20] via 192.168.123.3, 00:00:03, Ethernet0/0
i L2 192.168.45.0/24 [115/30] via 192.168.123.3, 00:19:03, Ethernet0/0
[115/30] via 192.168.123.2, 00:19:03, Ethernet0/0

我们发现R1依旧可以学习其他区域的路由,这个是因为默认情况下所有路由器在开启ISIS的时候都是L1/L2路由器,这样的话R1就会和R2和R3建立两种邻居状态,一个是L1还有一个是L2的,维持多个邻居状态会更加消耗系统的资源,所以我们不应该这样做。

1
2
3
router isis
is-type level-1
# 把R1改成Level-1的路由器

检查R1的邻居状态

1
2
3
4
5
R1#show isis neighbors 

System Id Type Interface IP Address State Holdtime Circuit Id
R2 L1 Et0/0 192.168.123.2 UP 22 R3.01
R3 L1 Et0/0 192.168.123.3 UP 7 R3.01

检查R1的路由表

1
2
3
4
5
6
7
8
9
R1#show ip route isis
i*L1 0.0.0.0/0 [115/10] via 192.168.123.3, 00:00:36, Ethernet0/0
[115/10] via 192.168.123.2, 00:00:36, Ethernet0/0
2.0.0.0/24 is subnetted, 1 subnets
i L1 2.2.2.0 [115/20] via 192.168.123.2, 00:00:36, Ethernet0/0
3.0.0.0/24 is subnetted, 1 subnets
i L1 3.3.3.0 [115/20] via 192.168.123.3, 00:00:36, Ethernet0/0
i L1 192.168.24.0/24 [115/20] via 192.168.123.2, 00:00:36, Ethernet0/0
i L1 192.168.34.0/24 [115/20] via 192.168.123.3, 00:00:36, Ethernet0/0

我们查看R2的ISIS邻居表

1
2
3
4
5
6
7
R2#show isis neighbors 

System Id Type Interface IP Address State Holdtime Circuit Id
R1 L1 Et0/0 192.168.123.1 UP 25 R3.01
R3 L1 Et0/0 192.168.123.3 UP 8 R3.01
R3 L2 Et0/0 192.168.123.3 UP 7 R3.01
R4 L2 Et0/1 192.168.24.4 UP 8 R4.01

R2和R3其实不需要两个邻居关系,他们同属于49.0001区域,但是R2和R3都不能设置为L1路由器,因为它们还负责和其他区域相连,可以修改接口的角色

1
2
3
4
5
6
7
8
interface Ethernet0/0
isis circuit-type level-1
R2#show isis neighbors

System Id Type Interface IP Address State Holdtime Circuit Id
R1 L1 Et0/0 192.168.123.1 UP 25 R3.01
R3 L1 Et0/0 192.168.123.3 UP 6 R3.01
R4 L2 Et0/1 192.168.24.4 UP 9 R4.01

DIS

和OSPF类似,在一个MA(多路访问)网络中,需要选择一个指定路由器来收集其他邻居的更新消息,然后发送给所有成员,在OSPF中是DR来做这个事情,在ISIS中,是由PSN(伪节点)来做的。

伪节点其实是一个逻辑上的路由器,真实做伪节点工作的是DIS。

一个广播域中所有的路由器都会和PSN建立邻居关系,就像OSPF中一个广播域所有路由器都会和DR和BDR建立Full的邻居关系。

DIS的hello时间是1/3的正常hello时间,也就是3.3秒。也就意味着10s没有收到DIS的hello,就回重新选举DIS,而这个时候其他的路由器并没有到30s断开邻居。

DIS的选举(在ISIS中,DIS是可以被抢占的):

  1. 接口优先级(默认64),注意与OSPF不同的是,优先级为0的IS也参与DIS的选举,优先级数值越大越优。
  2. SNPA ,越大越优,在以太网中比较的就是MAC地址
  3. 系统ID,比大

数据单元(PDU)

  • ISIS将自己的消息都封装在数据链路层之后,而OSPF是封装在网络层之后,也就是ISIS的封装效率更高

image-20200322133908823

  • 有三种类型的PDU:IS-IS、ES-IS和CLNP
  • IS-IS的PDU有4种:
    • Hello
      • 由于建立和维护邻居关系
      • ESH
        • ES发送到IS的hello
      • ISH
        • IS发送到ES的hello
      • IIH
        • IS-IS之间的hello
    • LSP
      • 用来发布链路状态信息,类似于OSPF的LSA
    • CSNP(完全序列号PDU)
      • 用来请求完整的数据库信息
    • PSNP(部分序列号PDU)
      • 用来确认和请求链路状态信息

ISIS报文格式

image-20200322134520545

  • TLV是类型长度和值,用于携带ISIS各种消息
Level1 TLV字段
TLV 类型值 定义来源 备注
Area address 1 ISO10589 列出了路由器上配置的区域地址组。它只出现在非伪节点的 LSP 中,并且如果 LSP 被划分成不同的片段,那么该 TLV 字 段出现在第一段。
中间系统邻 接路 由 器 IS reachability 2 ISO10589 列举邻接的 L1-router,注意啊,我们这小节说的是 L1 router LSP 的 TLV 字段啊。这里头除了包含邻接 IS 的系统 ID,还有 一堆 metric
终端系统邻 接路 由 器 3 ISO10589 只在 L1 router 的 LSP 中出现。列举了邻接的 L1-router 和终 端主机。例如通过 ES-IS 协议搜寻到的 ISO CLNP 工作站。
认证信息 10 ISO10589 用于认证
IP 内部可达性信息 128 RFC1195 列举了直连的 IP 地址前缀列表,它只在非伪节点 LSP 中使用。 每个 IP 前缀分配了一堆的 metric。
支持协议 Protocols support 129 RFC1195 列举了集成型 IS-IS 协议支持的第三层协议,目前只有 CLNP (NLPID 0x81)和 IP(0xCC)
IP 接口地址 132 RFC1195 包含源路由器上配置的一个或多个 IP 地址,在 CISCO IOS 中 为最高的 loopback 口 IP
Level2 TLV字段
TLV 类 型 值 定义来源 备注
Area address 1 ISO10589 列出了路由器上配置的区域地址组。
中间系统邻 接路 由器IS reachability 2 ISO10589
分离指定层 2 中间系 统 4 ISO10589 这种 TLV 通过在 L2 router 之间建立一条穿过骨干网的虚链路 来支持区域修复
前缀邻接路由器 5 ISO10589 搜集可达的 NSAP 前缀信息,它只用于区域间 ISO CLNP 路 由选择(level2 路由)
认证信息 10 ISO10589 用于认证
IP 内部可达性信息 128 RFC1195 列举了直连的 IP 地址前缀列表
支持协议 Protocols support 129 RFC1195 列举了集成型 IS-IS 协议支持的第三层协议,目前只有 CLNP (NLPID 0x81)和 IP(0xCC)
IP 外部可达性信息 130 RFC1195 收集通过其他路由协议得到的 IP 路由信息
域间路由选 择协 议 信息 131 RFC1195 暂不支持
IP 接口地址 132 RFC1195 包含源路由器上配置的一个或多个 IP 地址,在 CISCO IOS 中 为最高的 loopback 口 IP

邻居关系

邻居关系的建立条件

  • 只有同一层次的相邻路由器才可能建立邻居
  • 对于L1路由器而言,area ID必须一致
  • 检查相邻路由器直连的网段,必须是同一个网段才可能建立邻居
  • MTU需要一样,因为ISIS在发送CSNP之类的消息的时候,如果过长,会进行分片,但是如果两边MTU不一致,会导致消息丢失。在hello消息中,会使用padding将数据大小直接填充到MTU值。

建立过程

  1. A发送IIH给B,根据接口或者路由器的角色,发送目的MAC不一样
    1. 发送地址为L1,01:80:c2:00:00:14(这个是数据链路层的MAC组播)
    2. 发送地址为L2,01:80:c2:00:00:15(这个是数据链路层的MAC组播)
  2. B收到IIH之后,检查本地的邻接数据库,查看IIH中System ID是否存在
    1. 如果存在,就忽略IIH,并且更新计时器
    2. 如果不存在,就添加邻居,但是状态写成init,然后发送IIH回应
  3. A收到了IIH回应之后,再次发送IIH消息
  4. B再次收到A的IIH之后,将邻居关系设置位UP
  5. 互相发送CSNP,开始同步数据库内容

触发更新条件

  • 邻接关系UP或Down
  • ISIS相关接口Up或Down
  • 引入的IP路由发生变化
  • 区间的IP路由发生变化
  • 接口的metric值发生变化
  • 周期性更新

ISIS度量值

image-20200322142736329

  • Default Metric
    • 所有ISIS路由器都支持,与带宽成反比,越小越优
    • 在Cisco设备上,不支持根据带宽来计算,每经过一个接口加10,变成跳数类似
  • Delay Metric
    • 链路的传输延迟,不支持
  • Expense Metric
    • 链路的传输开销,不支持
  • Error Metric
    • 链路的出错概率,不支持

默认路由

只能在L2或者L1/L2路由器上注入默认路由

1
2
router isis
default-information originate

路由汇总

只能在区域边缘的L1/L2路由器上做

1
2
router isis
summary-address 172.16.0.0 255.255.0.0 level-2

overload-bit

一台路由器如果资源不足,它可能就无法维护完整的链路状态数据库,数据流量到达此台设备可能就无法得到正常的转发,因此它有告知或者告警其他路由器的能力,具体的做法是在其自己产生的LSP中将Overload-bit置位。

1
2
router isis
set-overload-bit
评论
加载中,最新评论有1分钟缓存...