第75篇:IS-IS 报文类型——Hello、LSP、PSNP、CSNP
关键词
IS-IS、报文类型、IIH、LSP、PSNP、CSNP、PDU
一、IS-IS 的四种报文
IS-IS 使用四种 PDU(Protocol Data Unit) 完成邻居发现、LSDB 同步和路由维护:
| 报文类型 | 缩写 | 全称 | 主要作用 |
|---|---|---|---|
| Hello | IIH | IS-IS Hello PDU | 发现邻居、维护邻接 |
| LSP | LSP | Link State PDU | 携带链路状态信息 |
| PSNP | PSNP | Partial Sequence Number PDU | 请求缺失 LSP / 确认收到 LSP |
| CSNP | CSNP | Complete Sequence Number PDU | 描述完整的 LSDB 摘要 |
二、Hello 报文(IIH)
2.1 作用
- 发现邻居
- 维护邻接关系(周期性发送)
- 协商参数(如 Hold Time、MTU)
2.2 两种 Hello 类型
IS-IS 有两种不同格式的 Hello:
LAN IIH(广播网络使用): | 通用头部 | LAN 专用 - Circuit Type - Source ID - Hold Time - Priority - LAN ID - 邻居列表 | TLV | | --- | --- | --- |
P2P IIH(点到点网络使用): | 通用头部 | P2P 专用 - Circuit Type - Source ID - Hold Time - 邻居 System ID | TLV | | --- | --- | --- |
2.3 Hello 参数
| 参数 | 默认值 | 说明 |
|---|---|---|
| Hello Interval | 10s(广播)/ 10s(P2P) | 发送 Hello 的间隔 |
| Hold Time | 30s(广播)/ 30s(P2P) | 邻居保持时间(通常为 3 × Hello Interval) |
| Priority | 64 | 仅 LAN IIH 中有,用于 DIS 选举 |
2.4 Hello 中的邻居列表
LAN IIH 中包含该路由器在本网段上已知的所有邻居列表,这是 IS-IS 的"3 路握手"机制——当路由器的 System ID 出现在对端 Hello 的邻居列表中时,才认为邻接建立。
2.5 配置
interface GigabitEthernet0/0/0
isis timer hello 5 # 修改 Hello 间隔为 5 秒
isis timer holding-multiplier 4 # Hold Time = Hello Interval × 4
三、LSP(链路状态 PDU)
3.1 作用
LSP 是 IS-IS 的核心报文,等同于 OSPF 的 LSA,包含路由器的链路状态信息。
3.2 LSP 结构
| LSP 头部 - LSP ID - 序列号 - 剩余寿命 - 长度 - 级别 | LSP 内容 - IS Neighbors - IP 前缀 (TLV 128) | TLV - Area Addr - IP Addr (TLV 132) |
|---|---|---|
3.3 LSP ID 的组成
LSP ID = System ID + 伪节点编号 + LSP 分片编号
示例:1111.1111.1111.01-00
│ │
│ └─ LSP 分片编号(00~FF,默认为 00)
│
└─ 伪节点编号(00 表示路由器自身,非 00 表示伪节点)
| LSP ID 示例 | 含义 |
|---|---|
| 1111.1111.1111.00-00 | Router 自身的 LSP(主 LSP) |
| 1111.1111.1111.01-00 | DIS 生成的伪节点 LSP |
| 1111.1111.1111.00-01 | Router 的第一个 LSP 分片 |
3.4 LSP 刷新与老化
| 参数 | IS-IS | OSPF |
|---|---|---|
| 刷新间隔 | 15 分钟(900 秒) | 30 分钟(1800 秒) |
| 最大生存时间 | 20 分钟(1200 秒) | 60 分钟(3600 秒) |
| 序列号溢出 | 清零后重新开始 | 特殊处理 |
四、CSNP(完全序列号 PDU)
4.1 作用
CSNP 包含完整的 LSDB 摘要信息(所有 LSP 的 ID、序列号、剩余寿命等)。
4.2 发送方式
| 网络类型 | 发送者 | 发送间隔 |
|---|---|---|
| Broadcast | DIS 周期性发送 | 默认 10 秒 |
| P2P | 仅在 LSDB 同步开始时发送一次 | 一次 |
4.3 CSNP 的工作过程
广播网络:
DIS 每 10 秒发送一次 CSNP
├─ CSNP ──────────→ RouterA(检查自己的 LSDB 是否完整)
├─ CSNP ──────────→ RouterB(发现缺少某条 LSP)
│ │
│ └── PSNP(请求缺失的 LSP)─→ DIS
│ │
│ DIS 发送缺失 LSP
│ │
└───────────────────────────────┘
五、PSNP(部分序列号 PDU)
5.1 作用
PSNP 有两个用途:
| 用途 | 说明 |
|---|---|
| LSP 请求 | 向邻居请求缺失的 LSP |
| LSP 确认 | P2P 链路上确认收到 LSP(类似 ACK) |
5.2 P2P 链路上的可靠传输
P2P 链路上:
RouterA ── LSP ──────────→ RouterB
RouterA ←─ PSNP(ACK)─── RouterB ← 确认收到
这就是 IS-IS 在 P2P 链路上的"停等确认"机制。
5.3 Broadcast 网络上的 PSNP 请求
非 DIS 路由器发现缺少某条 LSP:
── PSNP(列出缺失 LSP)──→ DIS
←─ LSP(缺失的 LSP)──── DIS
六、四种报文的完整交互过程
6.1 邻居建立
RouterA RouterB
│ │
│── Hello(包含邻居列表为空)────→│
│←─ Hello(包含邻居 = RouterA)──│ Init(RouterA 看到自己)
│── Hello(包含邻居 = RouterB)──→│ Up(RouterB 看到自己)
│ │
邻接建立(Up) │
6.2 LSDB 同步
LSDB 在 P2P 链路上的同步过程:
RouterA RouterB
│── CSNP(完整 LSDB 摘要)──────→│
│←─ PSNP(请求缺失 LSP)────────│
│── LSP(发送请求的 LSP)───────→│
│←─ PSNP(确认收到 LSP)────────│
│ │
LSDB 一致 │
6.3 周期性维护
广播网络上的维护:
DIS ── CSNP(每 10 秒)──→ 所有路由器
│
所有路由器检查自己的 LSDB
如果发现缺失 LSP:
发送 PSNP 请求 → DIS 重发 LSP
所有路由器周期性(15 分钟)刷新自己的 LSP
七、报文汇总
| 报文 | 方向 | 触发条件 | 频率 | 主要字段 |
|---|---|---|---|---|
| IIH | 双向 | 定时 | 每 10s | System ID、Hold Time、邻居列表 |
| LSP | 泛洪 | 触发/定时 | 变化时 + 15 分钟刷新 | LSP ID、序列号、TLV |
| CSNP | 单向 | 定时/触发 | DIS 每 10s 或同步时 | 所有 LSP 的摘要 |
| PSNP | 双向 | 缺失/确认 | 按需 | 缺失 LSP 的列表 |
八、总结
| 报文 | 一句话记住 |
|---|---|
| IIH | 打招呼、交朋友 |
| LSP | 我是谁、我连了谁 |
| CSNP | 我有这些 LSP |
| PSNP | 请给我这个 / 已收到 |
九、思考
- IS-IS 的 Hello 报文有几种类型?它们有什么区别?
- CSNP 在广播网络和 P2P 网络上的使用方式有什么不同?
- PSNP 的两个作用分别是什么?
- LSP ID 中的伪节点编号和分片编号分别表示什么含义?
- 在 IS-IS 中,LSDB 的可靠同步是如何实现的(提示:PSNP 确认机制)?
下篇预告:第76篇《IS-IS LSP 泛洪与 LSDB 同步》——深入理解 IS-IS 如何确保全网 LSDB 一致。