关键词: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 路由

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 报文交互流程

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 报文泛洪流程

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%)

思考

  1. IS-IS 在广播网络中 LSP 的确认依赖 DIS 的 CSNP 周期性比对,而不是逐包确认。这种设计与 OSPF 的逐 LSA Ack 机制相比,各自的优缺点是什么?
  2. PSNP 在点对点网络中同时承担确认和请求两种功能。为什么不将确认和请求分为两种独立的报文?
  3. LSP 的 32 位序列号最终会溢出。在实际网络运维中,应该如何预防和应对序列号溢出问题?

下篇预告:第76篇:IS-IS LSP 泛洪与 LSDB 同步