关键词:IS-IS、IIH、LSP、PSNP、CSNP、PDU 类型、泛洪、确认机制
第75篇:IS-IS 报文类型:Hello、LSP、PSNP、CSNP
一、引言
IS-IS 协议通过四种基本报文类型(PDU, Protocol Data Unit)完成邻居发现、拓扑信息传播和数据库同步。这四种报文各司其职,共同维护 IS-IS 网络的正常运行。
理解每种 IS-IS 报文的结构、作用和交互方式,是排查 IS-IS 故障和进行网络优化的基础。与 OSPF 的 Hello、DBD、LSR、LSU、LSAck 五类报文相比,IS-IS 的报文类型更少但设计更加简洁。
二、核心概念
2.1 IS-IS 四种报文类型总览
| 报文类型 | 全称 | 主要功能 | 类比 OSPF |
|---|---|---|---|
| IIH | IS-IS Hello | 邻居发现和维护 | Hello |
| LSP | Link State PDU | 链路状态信息传播 | LSU |
| PSNP | Partial Sequence Number PDU | 部分序列号(请求和确认) | LSR + LSAck |
| CSNP | Complete Sequence Number PDU | 完整序列号(数据库摘要) | DBD |
2.2 IIH(IS-IS Hello)报文
IIH 用于发现和维持 IS-IS 邻居关系,分为三种子类型:
| IIH 子类型 | PDU 类型值 | 用途 |
|---|---|---|
| Level-1 IIH | 0x02 | Level-1 邻居发现 |
| Level-2 IIH | 0x03 | Level-2 邻居发现 |
| Level-1-2 IIH | 0x02/0x03 | 分别发送 L1 和 L2 IIH |
IIH 报文核心字段:
| 字段 | 长度 | 说明 |
|---|---|---|
| Source ID | 6 字节 | 发送方的 System ID |
| Holding Time | 2 字节 | 邻居保持时间(秒) |
| Priority | 1 字节 | DIS 选举优先级(仅广播网络有效) |
| LAN ID | 7 字节 | 广播网络标识(DIS System ID + Pseudonode ID) |
| ATT 位 | 1 bit | Attached 位,表示能否到达 Level-2 网络 |
| P 位 | 1 bit | 表示发送方支持 IP 路由 |
2.3 LSP(Link State PDU)报文
LSP 是 IS-IS 的核心报文,承载链路状态信息:
LSP ID 格式:<System ID>.<Generator ID>.<LSP Number>
| 字段 | 长度 | 说明 |
|---|---|---|
| System ID | 6 字节 | 生成该 LSP 的路由器 System ID |
| Generator ID | 1 字节 | 生成器标识(00 = 普通 LSP,非 0 = 伪节点 LSP) |
| LSP Number | 1 字节 | LSP 序号(同一 System 产生多个 LSP 时分页) |
LSP 关键特性:
| 特性 | 说明 |
|---|---|
| 生命周期 | LSP Lifetime(默认 1200 秒),到期前需刷新 |
| 剩余时间 | Remaining Lifetime,每转发减 1 |
| 序列号 | 每更新一次递增 1,用于判断新旧 |
| 校验和 | 每个 LSP 独立计算 |
| 分页机制 | 单个 LSP 超限时,拆分为多个 LSP(序号递增) |
2.4 PSNP(Partial Sequence Number PDU)报文
PSNP 在不同网络类型中承担不同角色:
| 网络类型 | PSNP 作用 | 类比 |
|---|---|---|
| 点对点 | 确认收到 LSP(类似 ACK)+ 请求缺失 LSP | OSPF LSAck + LSR |
| 广播 | 仅用于请求缺失 LSP | OSPF LSR |
PSNP 报文内容:包含需要确认或请求的 LSP 摘要列表(LSP ID + 序列号 + 校验和)。
2.5 CSNP(Complete Sequence Number PDU)报文
CSNP 包含本地区域(或 Level-2 域)内所有 LSP 的完整摘要信息:
| 特性 | 说明 |
|---|---|
| 内容 | 区域内所有 LSP 的 ID、序列号和校验和 |
| 发送方 | 广播网络中仅由 DIS 发送;点对点网络中双方都发送 |
| 发送时机 | DIS 周期性发送(默认 9 倍 Hello 间隔);新邻居建立时发送 |
| 用途 | 数据库比对和缺失 LSP 发现 |
2.6 IS-IS 报文与 OSPF 报文对比
| IS-IS 报文 | OSPF 等价报文 | 关键差异 |
|---|---|---|
| IIH | Hello | IS-IS IIH 携带更多信息(DIS ID、ATT 位等) |
| LSP | LSU | IS-IS 使用 TLV 编码,OSPF 使用 LSA 类型 |
| PSNP | LSR + LSAck | IS-IS 一个报文完成两种功能 |
| CSNP | DBD | IS-IS CSNP 由 DIS 周期性发送,OSPF DBD 仅在建立阶段使用 |
三、技术细节
3.1 IIH 报文交互流程

3.2 各报文的多播地址
| 报文类型 | 目的 MAC | 说明 |
|---|---|---|
| L1 IIH | 0180.CA00.0014 | Level-1 组播 |
| L2 IIH | 0180.CA00.0015 | Level-2 组播 |
| LSP | 0180.CA00.0014/0015 | 根据 Level 选择 |
| CSNP | 0180.CA00.0014/0015 | 根据 Level 选择 |
| PSNP | 0180.CA00.0014/0015 | 根据 Level 选择 |
3.3 LSP 报文泛洪流程

3.4 LSP 分页机制
当一台路由器的链路状态信息超过单个 LSP 的最大长度时,IS-IS 将信息分页到多个 LSP 中:
| LSP 序号 | 文件名 | 序列号 | TLV 内容 | 结束标志 |
|----------|--------|--------|----------|----------|
| LSP 1 | 0000.0000.0001.00-0001 | 0x00000001 | Area Address (49.0001)、IS Neighbors (部分)、IP Extended Reachability (部分) | Not Last (01) — 还有下一页 |
| LSP 2 | 0000.0000.0001.00-0002 | 0x00000002 | IS Neighbors (续)、IP Extended Reachability (续) | Last (10) — 最后一页 |
3.5 CSNP 与 PSNP 在不同网络类型的行为差异
| 行为 | 广播网络 | 点对点网络 |
|---|---|---|
| CSNP 发送 | 仅 DIS 周期性发送 | 双方均在邻接建立时发送 |
| PSNP 确认 | 不用于确认 LSP | 用于确认收到的 LSP |
| PSNP 请求 | 用于请求缺失 LSP | 用于请求缺失 LSP |
| LSP 确认机制 | 依赖 CSNP 周期性比对 | PSNP 逐包确认 |
四、实战配置/案例分析
4.1 IS-IS 报文调试
# 调试 IS-IS 报文
isis 1
debugging isis packet
# 或接口级别调试
interface GigabitEthernet0/0/0
isis debugging packet
# 查看调试输出
<Huawei> terminal debugging
*Sep 1 15:00:00.000 +0800 R1 %%%% ISIS: Receive L2 IIH from 0000.0000.0002
*Sep 1 15:00:01.000 +0800 R1 %%%% ISIS: Send L2 IIH
*Sep 1 15:00:10.000 +0800 R1 %%%% ISIS: Receive L2 CSNP from 0000.0000.0003
4.2 查看 LSP 详细信息
# 查看 LSP 列表
<Huawei> display isis lsdb
Level-2 LSDB:
Total: 5
LspID HoldTime SeqNum CheckSum Length
-------------------------------------------------------------------
0000.0000.0001.00-00 1085s 0x00000005 0x9A3B 180
0000.0000.0002.00-00 950s 0x00000003 0x8C21 164
0000.0000.0003.00-00 1120s 0x00000004 0x7F45 148
0000.0000.0003.00-00 1120s 0x00000001 0x6E12 80 (Pseudonode)
# 查看单个 LSP 的 TLV 内容
<Huawei> display isis lsdb verbose lsp-id 0000.0000.0001.00-00
4.3 案例分析:LSP 序列号溢出
故障背景:某网络运行 IS-IS 已超过 5 年未重启,R1 的 LSP 序列号接近溢出(0x7FFFFFFF),导致新 LSP 无法被正确接受。
排查:
# R1 LSP 序列号
<R1> display isis lsdb
LspID HoldTime SeqNum
0000.0000.0001.00-00 1100s 0x7FFFFFFD
# R2 无法接受 R1 的新 LSP(序列号回滚)
<R2> display isis lsdb
LspID HoldTime SeqNum
0000.0000.0001.00-00 1100s 0x7FFFFFFC # 未更新
根因:IS-IS LSP 序列号是 32 位有符号整数,最大值为 0x7FFFFFFF。序列号溢出后回滚为负数,其他路由器认为新 LSP 比旧 LSP 更旧(序列号更小),拒绝接受。
修复:
# 方案1:手动老化(Purge)旧 LSP
# 在 R1 上清空 IS-IS 进程(影响较大)
isis 1
reset isis routing-table
# 所有 LSP 重新泛洪,序列号重新开始
# 方案2:平滑重置
isis 1
reset isis lsdb
4.4 案例分析:IIH 报文不匹配导致邻居无法建立
故障背景:R1 和 R2 直连后 IS-IS 邻居无法建立。
排查:
# 抓包分析 IIH 报文
# R1 发送的 IIH
Source ID: 0000.0000.0001
Level: Level-1
Area ID: 49.0001
# R2 发送的 IIH
Source ID: 0000.0000.0002
Level: Level-2
Area ID: 49.0002
根因:R1 配置为 Level-1(Area 49.0001),R2 配置为 Level-2(Area 49.0002)。Level-1 IIH 只在同 Area 内有效,而 R1 和 R2 的 Area 不同且 Level 不匹配。
修复:
# R1 修改为 Level-1-2
interface GigabitEthernet0/0/0
isis circuit-level level-1-2
#
# R2 修改为 Level-1-2
interface GigabitEthernet0/0/0
isis circuit-level level-1-2
五、总结
| 报文类型 | 核心功能 | 发送方式 | 网络类型差异 |
|---|---|---|---|
| IIH | 邻居发现与维持 | 周期性组播 | L1/L2 分别使用不同多播地址 |
| LSP | 链路状态传播 | 事件触发 + 周期性刷新 | 广播网络通过 DIS 泛洪 |
| PSNP | 确认 + 请求 | 点对点确认/双方请求 | P2P 用于确认,广播仅用于请求 |
| CSNP | 数据库摘要 | DIS 周期性 + 邻接建立 | P2P 双方发送,广播仅 DIS 发送 |
| 关键参数 | 默认值 |
|---|---|
| IIH 发送间隔 | 10 秒(广播)/ 10 秒(P2P) |
| Holding Time | 3 倍 Hello 间隔 |
| LSP 生命周期 | 1200 秒 |
| CSNP 发送间隔(DIS) | 9 倍 Hello 间隔 |
| LSP 刷新间隔 | 900 秒(生命周期 75%) |
思考
- IS-IS 在广播网络中 LSP 的确认依赖 DIS 的 CSNP 周期性比对,而不是逐包确认。这种设计与 OSPF 的逐 LSA Ack 机制相比,各自的优缺点是什么?
- PSNP 在点对点网络中同时承担确认和请求两种功能。为什么不将确认和请求分为两种独立的报文?
- LSP 的 32 位序列号最终会溢出。在实际网络运维中,应该如何预防和应对序列号溢出问题?
下篇预告:第76篇:IS-IS LSP 泛洪与 LSDB 同步