第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 请给我这个 / 已收到

九、思考

  1. IS-IS 的 Hello 报文有几种类型?它们有什么区别?
  2. CSNP 在广播网络和 P2P 网络上的使用方式有什么不同?
  3. PSNP 的两个作用分别是什么?
  4. LSP ID 中的伪节点编号和分片编号分别表示什么含义?
  5. 在 IS-IS 中,LSDB 的可靠同步是如何实现的(提示:PSNP 确认机制)?

下篇预告:第76篇《IS-IS LSP 泛洪与 LSDB 同步》——深入理解 IS-IS 如何确保全网 LSDB 一致。