ISIS报文
ISIS的报文类型:
1.hello
1.L1 hello
目标MAC地址为0180-c200-0014
邻居建立时,hello报文10s一个,30s老化
邻居建立完成,由DIS设备发送3/10s,,一个10s老化
接口优先级作用于DIS的选举,默认值64,取值0-127
[AR1-GigabitEthernet0/0/0]isis dis-priority
2.L2 hello
目标MAC地址为0180-c200-0015
3.p2p hello
2.LSP(链路状态PDU)
1.L1 LSP 类似于OSPF的LSU报文
2.L2 LSP
3.SNP 序列号PDU
1.PSNP 部分序列号PDU,类似于OSPF的LSR报文、LSAck报文
*如果PSNP携带的摘要LSP,序列号为全0 则表示请求
序列号不为全0 则表示确认
1.L1 PSNP
2.L2 PSNP
2.CSNP 全序列号PDU,类似于OSPF的DD报文
1.L1 CSNP
2.L2 CSNP
*服务哪一次就相当于哪一层
OSPF封装与网络层之上,服务于IP层
ISIS封装于数据链路层(数据帧)之上,服务于IP层
ISIS的通用头部:
每一个报文都会携带的头部内容
ISO 10589 ISIS InTRA Domain Routeing Information Exchange Protocol
Intradomain Routeing Protocol Discriminator: ISIS (0x83)
Length Indicator: 27
Version/Protocol ID Extension: 1
ID Length: 6 系统id值6字节
000. .... = Reserved: 0x0
...0 1111 = PDU Type: L1 HELLO (15)
Version: 1
Reserved: 0
Maximum Area Addresses: 3 描述最大的区域地址配置数量为3
可以实现区域改变的平滑迁移
要求配置多个区域地址时,system-id一致(一定要记住是一个人有3个区域)
TLV:一种数据封装的格式
T:type 类型
L:length 长度
V:value 数据的内容
更加便于协议的扩展
ISIS设备之间都是建立的邻接关系
IS-IS按如下原则建立邻接关系:
▫只有同一层次的相邻路由器才有可能成为邻接。
▫对于Level-1路由器来说,Area ID必须一致。
▫链路两端IS-IS接口的网络类型必须一致。
▫链路两端IS-IS接口的地址必须处于同一网段(默认情况下)。
由于IS-IS是直接运行在数据链路层上的协议,并且最早设计是给CLNP使用的,IS-IS邻接关系的形成与IP地址无关。但在实际的部署中,在IP网络上运行IS-IS时,需要检查对方的IP地址的。如果接口配置了从IP,那么只要双方有某个IP(主IP或者从IP)在同一网段,就能建立邻接,不一定要主IP相同。
ISIS和OSPF不一样的点在于OSPF要建立邻居时要协商掩码,比如俩端必须都是/24才满足条件但ISIS不一样只要求了链路两端ISIS接口的地址必须处于同一网段即可一端/24和一端/25都没关系。
ISIS邻接关系建立过程:
1.广播网络
1.设备处于down状态,没有使能ISIS
2.设备处于init状态,发送hello报文,收到hello报文,但hello报文中不存在自身的MAC地址
3.设备处于up状态,收到的hello报文中携带了自身的MAC地址
*设备根据交互的hello报文进行DIS设备的选举
根据报文内的优先级值,值越大越优先;如果值相等,则比较接口的MAC地址,地址越大越优先(假设你们班级( 广播网络 )要选班长( DIS ),每个同学( 设备接口 )都有个 “班长竞选分”( DIS 优先级 )。默认大家 “竞选分” 都是 64 ,你用isis dis-priority
命令,就是给 GigabitEthernet0/0/0 这个 “同学”,单独改 “竞选分”,比如改成 100 。)
*DIS主要用于在广播型网络中连接所有物理设备的虚拟设备
负责伪节点LSP的通告和维护
*DIS是可以抢占的
*DIS没有明确的备份设备,广播网络内的所有设备都在监听DIS
选举为DIS的设备会周期3/10s发送hello报文
*设备接口优先级值为0,也会参与DIS的选举
4.邻接关系建立完成后,设备会通告自身所有的LSP通过LSP报文给DIS设备(目标地址为0180-c200-0014)
![]()
5.DIS设备会周期(10s)通告CSNP报文(会携带DIS设备具有的所有LSP信息摘要)(目标地址为0180-c200-0014)
6.广播内的其他设备收到CSNP报文后,根据报文内的摘要进行对比自身的LSDB
1.如果自身LSDB和CSNP报文携带的摘要同步,则不做理会
2.如果自身LSDB不存在CSNP报文携带的摘要,则发送PSNP报文,请求自身缺少的LSP(目标地址为0180-c200-0014)
7.DIS设备收到PSNP报文后,回复LSP报文更贴切的比喻:
- 所有运行 Level-1 IS-IS 的设备都 “加入” 了这个群,会时刻关注群里的消息。
- 不管是新设备通报自己的 LSP(“大家好,我是 XX,连接了这些网络”),还是 DIS 周期性发 CSNP(“这是当前群里的所有信息目录,大家核对一下”),或者其他设备发 PSNP 请求缺失信息(“我缺了 XX 条信息,谁有麻烦发一下”),都是直接往这个群里发。
- 群里的每个消息都会带着发送设备的 “身份标识”(System ID),就像聊天时会显示 “XX 说:……”,所以虽然是群聊,大家也能清楚知道每条信息来自哪台设备。
用 “群聊补文件” 的比喻再解释一下:
如果新成员在群里说 “我缺 A 和 B 两个文件”(PSNP 报文中包含 A 和 B 的摘要),群里的响应可能有两种情况:
- 一个成员一次性发齐:比如管理员 DIS 手里同时有 A 和 B,他可以直接把 A 和 B 打包成两条 LSP 报文(或在一条报文里携带多个 LSP,协议支持单报文携带多个 LSP),一次性发到群里,新成员收到后就能同时补全。
- 多个成员分别发送:如果 DIS 只有 A,另一个成员有 B,那么 DIS 发 A,另一个成员发 B,新成员分两次收到,最终也能补全。
协议本身不强制要求 “分别发”,只要求所有被请求的 LSP 必须被发送。实际中,设备会根据自身持有的 LSP 情况和报文承载能力(比如单条 LSP 的大小、协议对报文长度的限制)来决定是一次性发送还是分开发送。
ISIS设备之间都是建立的邻接关系
状态机:
1.down:设备接口未使能ISIS
2.init:收到hello报文,但hello报文中不存在自身的MAC地址
3.up:收到的hello报文中携带了自身的MAC地址
LSP的保持时间,1200s倒计时,900s过后更新(倒计时为300s时刷新),0s删除
这是一条LSP的报文
通过<AR1> dis isis peer可以查看伪结点的值
记住P2P是用的邻居的system-id值
而广播里面是用的MAC地址
ISIS邻接关系建立过程:
1.P2P网络
1.设备处于down状态,没有使能ISIS
2.设备处于init状态,发送hello报文,收到hello报文,但hello报文中不存在自身的system-id
3.设备处于up状态,收到的hello报文中携带了自身的system-id地址
*P2P网络不会选举DIS
4.邻接关系建立完成后,会将自身完整的LSP信息通过LSP报文发送
5.对端收到LSP报文后,会发送PSNP报文进行确认
6.LSP同步完成后,发送CSNP报文进行LSDB的同步检测
如果收到的CSNP报文和自身的LSDB同步,则不予理会
如果收到的CSNP报文和自身的LSDB不同步,则会发送PSNP报文进行请求
收到PSNP报文后,会发送LSP报文
收到LSP报文,回复PSNP进行确认咱们可以把 P2P 网络(比如两台设备直接用一根线连起来)想象成 “两个人打电话”,没有第三方参与,所有沟通都是 “一对一” 的,这样就好理解了:
1. 没有 “管理员”(不选举 DIS)
在之前的广播网络里,因为设备多,需要一个 “管理员”(DIS)来统筹信息;但 P2P 网络就像两个人私聊,只有彼此,不需要中间人,所以不用选举 DIS,双方直接沟通就行。
2. “我把我的情况全告诉你”(发送完整 LSP)
当两台设备建立好邻接关系(相当于电话接通,确认 “是你呀”)后,就会把自己所有的链路状态信息(LSP)整理好,发给对方。
比如 A 设备会对 B 设备说:“我连接了哪些网络、每条链路的开销是多少…… 这些是我的全部信息,你收好。” 同样,B 设备也会把自己的全部 LSP 发给 A。
这里和广播网络不同:广播网络里设备发 LSP 是 “发到群里”,而 P2P 里是 “直接单独发给对方”,因为只有彼此需要知道。3. “收到了,信息没问题”(PSNP 确认)
当 B 设备收到 A 发来的 LSP 后,会检查这些信息是否完整、正确,然后发一个 PSNP 报文给 A,相当于说:“你发的信息我收到了,内容没问题,我记下来了。”
同理,A 收到 B 的 LSP 后,也会发 PSNP 确认。这个过程就像打电话时说 “我听清了,你继续说”,确保信息传递没遗漏。4. “咱俩的信息核对一下,确保一致”(CSNP 同步检测)
当双方都收到并确认了对方的 LSP 后,还会各自整理一份自己的 “信息目录”(CSNP 报文),里面包含自己所有 LSP 的摘要(比如 “我有 A、B、C 三条信息”),然后发给对方。
对方收到后,会拿着这个目录和自己的信息对比:如果双方的目录完全一致,说明彼此的链路状态数据库(LSDB)同步成功;如果有不一致,就再针对性地补充信息。
这就像打电话结束前说:“我再跟你核对一下,你记的和我记的是不是一样?” 确保双方掌握的信息完全相同。总结一下 P2P 网络的 LSP 同步逻辑:
就像 “一对一私聊”—— 没有中间人,双方直接交换全部信息,收到后互相确认 “已收到”,最后再核对一遍 “信息是否一致”,确保彼此掌握的网络情况完全同步。整个过程简单直接,因为只有两台设备参与,不需要考虑多设备的复杂协调~
PSNP请求和确认的区别,序列号全0的代表请求
需要记住的命令:
<AR1>dis isis lsdb 查看ISIS的LSDB