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

关键词

IS-IS、LSP 泛洪、LSDB 同步、CSNP、PSNP、Reliable Flooding


一、IS-IS 泛洪机制概述

与 OSPF 一样,IS-IS 使用可靠泛洪(Reliable Flooding)确保全网 LSDB 一致。但实现方式有所不同。

1.1 泛洪的基本原则

  1. 每台路由器产生自己的 LSP,描述直连链路状态
  2. LSP 被泛洪到所有邻居
  3. 邻居收到后,继续泛洪给自己的其他邻居
  4. 最终全网所有路由器的 LSDB 一致
  5. 从不将 LSP 泛洪回发送者

二、广播网络上的泛洪

2.1 DIS 的作用

在广播网络上,DIS 是 LSP 泛洪的中心节点

非 DIS 路由器产生 LSP:
  RouterA ── LSP ──→ DIS
  RouterB ── LSP ──→ DIS
  RouterC ── LSP ──→ DIS

DIS 泛洪 LSP 到所有非 DIS 路由器:
  DIS ── LSP ──→ RouterA
  DIS ── LSP ──→ RouterB
  DIS ── LSP ──→ RouterC

2.2 CSNP 的周期性同步

DIS 每 10 秒发送 CSNP:
  DIS ── CSNP(完整的 LSDB 摘要)──→ 所有非 DIS 路由器

非 DIS 路由器收到 CSNP 后:
  ├─ 与自己的 LSDB 对比
  ├─ 如果缺少某条 LSP → 发送 PSNP 请求
  └─ 如果全部一致 → 不做操作

2.3 完整过程

RouterA 产生新 LSP(路由发生变化):

Step 1: RouterA 组播 LSP 到 01-80-C2-00-00-15
Step 2: DIS 收到 LSP,更新自己的 LSDB
Step 3: DIS 组播 CSNP(包含更新后的摘要)
Step 4: RouterB 收到 CSNP,对比后发现需要请求缺失 LSP
Step 5: RouterB 单播 PSNP 到 DIS
Step 6: DIS 单播 LSP 到 RouterB
Step 7: RouterB 更新 LSDB,流程结束

三、P2P 网络上的泛洪

P2P 网络上的泛洪更简单:

RouterA ──── P2P ──── RouterB

RouterA 产生新 LSP:
  A ── LSP ─────────────→ B    (发送 LSP)
  A ←─ PSNP(ACK)─────── B    (B 确认收到)

RouterB 产生新 LSP:
  B ── LSP ─────────────→ A    (发送 LSP)
  B ←─ PSNP(ACK)─────── A    (A 确认收到)

P2P 上没有 DIS,LSDB 同步通过双方的 CSNP+PSNP 完成:

A ── CSNP ─────→ B    (A 发送完整摘要)
A ←─ PSNP ────── B    (B 请求缺失的 LSP)
A ── LSP ───────→ B    (A 发送缺失的 LSP)
A ←─ PSNP ────── B    (B 确认)
     (双方角色互换)
B ── CSNP ─────→ A    (B 发送完整摘要)
...

四、LSP 的刷新与老化

4.1 刷新机制

每台路由器每 900 秒(15 分钟)刷新自己的 LSP:

T0:RouterA 产生 LSP,序列号=0x00000001
T900:RouterA 刷新 LSP,序列号=0x00000002
T1800:RouterA 刷新 LSP,序列号=0x00000003
...

即使路由没有变化,LSP 也会周期刷新。

4.2 老化机制

  • 每条 LSP 包含一个 Remaining Lifetime(剩余寿命) 字段
  • 初始值:1200 秒(20 分钟)
  • 路由器收到 LSP 后,开始倒计时
  • 在寿命耗尽前需要收到刷新后的 LSP
  • 寿命到 0 → LSP 从 LSDB 中删除

4.3 异常老化

如果路由器故障,邻居会在 Hold Time 超时后将故障路由器的 LSP "归零":

1. RouterA 故障
2. RouterB 检测到 Hold Time 超时
3. RouterB 将 RouterA 的 LSP 的 Remaining Lifetime 设为 0
4. RouterB 泛洪该 LSP(寿命=0,即"死亡通告")
5. 全网收到后,删除 RouterA 的所有 LSP

五、LSP 分片

5.1 为什么需要分片

一条 LSP 的大小有上限(通常 1492 字节)。当一台路由器需要宣告的路由数量超过单条 LSP 的容量时,需要进行 LSP 分片。

LSP ID: 1111.1111.1111.00-00    ← 主 LSP(分片 00)
LSP ID: 1111.1111.1111.00-01    ← 分片 01
LSP ID: 1111.1111.1111.00-02    ← 分片 02
...

5.2 最大分片数

级别 最大分片数
L1 256 个分片
L2 256 个分片

5.3 分片配置

# 增加 LSP 分片数量
isis 1
 lsp-fragments-extend 1           # 启用分片扩展

六、LSP 泛洪的控制

6.1 泛洪范围控制

# 限制 LSP 泛洪的接口
interface GigabitEthernet0/0/0
 isis silent                        # 静默接口(不发送任何 IS-IS 报文)

6.2 LSP 生成间隔

# 控制 LSP 生成间隔(避免频繁变化导致泛洪风暴)
isis 1
 lsp-gen-interval 2                 # 最小 LSP 生成间隔 2 秒
 lsp-gen-interval level-1 3
 lsp-gen-interval level-2 3

6.3 LSP 泛洪间隔

# 控制 LSP 泛洪间隔
isis 1
 flooding-throttle 10 50 100        # 最小 10ms,最大 50ms,超过 100 条 LSP 时限速

七、OSPF 与 IS-IS 的 LSDB 同步对比

同步机制 OSPF IS-IS
初始同步 DD/ LSR / LSU CSNP / PSNP / LSP
周期性同步 CSNP(DIS 每 10 秒)
确认机制 隐式确认 + LSU ACK PSNP 显式确认
刷新间隔 30 分钟 15 分钟
老化时间 60 分钟 20 分钟
分片机制 LSA 本身无分片 LSP 支持分片
泛洪控制 定时器控制 更精细的节流控制

八、总结

知识点 核心要点
泛洪方式 广播网络通过 DIS,P2P 直接交互
CSNP DIS 每 10s 发送,完整的 LSDB 摘要
PSNP 请求缺失 LSP 或确认收到
LSP 刷新 每 15 分钟刷新一次
LSP 老化 20 分钟寿命,归零即删除
LSP 分片 超出容量时自动分片(最多 256)

九、思考

  1. 在广播网络上,LSP 是如何从非 DIS 路由器泛洪到全网其他路由器的?
  2. PSNP 在 P2P 和广播网络上的角色有什么不同?
  3. 如果一台路由器故障,它的 LSP 如何从全网 LSDB 中删除?
  4. 什么情况下会出现 LSP 分片?如何查看分片?
  5. CSNP 在广播网络上的发送周期是多少?它有什么作用?

下篇预告:第77篇《IS-IS 邻居建立条件——Area、SystemID、MTU》——排查 IS-IS 邻居建立失败的常见原因。