关键词:IS-IS、LSP 泛洪、LSDB 同步、CSNP、PSNP、数据库一致性、收敛

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

一、引言

LSP(Link State PDU)泛洪和 LSDB(Link State Database)同步是 IS-IS 协议的核心机制。LSP 泛洪确保网络中每一台路由器都能获取完整的拓扑信息,而 LSDB 同步保证所有路由器的链路状态数据库保持一致。

理解 LSP 泛洪的路径和 LSDB 同步的机制,对于分析 IS-IS 收敛行为和排查数据库不一致问题至关重要。

二、核心概念

2.1 LSP 泛洪的基本流程

LSP 泛洪是一个确保全网路由器最终获得相同链路状态信息的过程:

  1. 起源:当本地链路状态发生变化时,路由器生成新的 LSP
  2. 泛洪:将新 LSP 发送(泛洪)给所有 IS-IS 邻居
  3. 确认:邻居收到后发送确认(PSNP 或 CSNP 机制)
  4. 转发:邻居将 LSP 继续泛洪给其他邻居
  5. 存储:每个路由器将 LSP 存入自己的 LSDB

2.2 泛洪范围

LSP 类型 泛洪范围 说明
Level-1 LSP 仅在同一 Area 内泛洪 Level-1 路由器可见
Level-2 LSP 在所有 Level-2 域内泛洪(跨 Area) Level-2 和 Level-1-2 路由器可见
伪节点 LSP 与起源 LSP 相同的泛洪范围 由 DIS 生成

2.3 LSDB 同步机制

IS-IS 通过三种机制确保 LSDB 一致:

机制 描述 触发时机
CSNP 摘要比对 DIS 周期性发送 CSNP,路由器比对本地 LSDB 周期性(广播网络)
PSNP 请求缺失 路由器发现缺少某 LSP 时发送 PSNP 请求 发现缺失 LSP 时
新邻居建立同步 新邻居建立时交换 CSNP 完成全量同步 邻居状态变为 Up 时

2.4 LSP 的更新与刷新

事件 LSP 操作 序列号变化
本地链路变化 生成新 LSP 并泛洪 +1
周期性刷新 重新生成 LSP(内容不变) +1
LSP 到期 生成 Purge 标记 LSP(剩余时间 = 0) +1
接收更新 对比序列号,接受更新并转发 不变(本地不生成)

2.5 LSP 新旧判断规则

路由器收到 LSP 时,按以下规则判断是否接受:

  1. 序列号更大 → 新 LSP,接受并转发
  2. 序列号更小 → 旧 LSP,丢弃
  3. 序列号相同,校验和相同 → 相同 LSP,丢弃
  4. 序列号相同,校验和不同 → 冲突,接受新的并转发
  5. 剩余时间更短 → 丢弃(已有更新的副本)

三、技术细节

3.1 广播网络中的 LSP 泛洪

广播网络中的 LSP 泛洪 - 图示

3.2 点对点网络中的 LSP 泛洪

点对点网络中的 LSP 泛洪 - 图示

3.3 新路由器加入网络时的 LSDB 同步

当新路由器 R_new 加入 IS-IS 网络时,需要通过 CSNP 快速同步完整的 LSDB:

新路由器加入网络时的 LSDB 同步 - 图示

3.4 LSP 泛洪抑制(Flooding Suppression)

为防止泛洪风暴,IS-IS 实现了泛洪抑制机制:

抑制机制 描述
序列号去重 已接收过的 LSP(相同序列号)不重复泛洪
泛洪延迟 收到 LSP 后短暂延迟再转发,避免瞬间泛洪
泛洪队列 LSP 放入队列按序处理,防止队列溢出
最大 LSP 数限制 限制单台路由器生成的 LSP 数量(默认 512)
LSP 大小限制 限制单个 LSP 大小,超限时分页

3.5 Level-1 和 Level-2 泛洪隔离

Level-1-2 路由器虽然同时维护 L1 和 L2 LSDB,但 LSP 泛洪严格隔离:

来源 Level-1 泛洪 Level-2 泛洪
Level-1 LSP ✓(区域内) ✗
Level-2 LSP ✗ ✓(跨区域)
Level-1-2 路由器生成的 L1 LSP ✓(本区域) ✗
Level-1-2 路由器生成的 L2 LSP ✗ ✓(全网)

注意:Level-1 和 Level-2 的 LSP 不会自动交叉传播。如果需要在 Level-1 中引入 Level-2 路由,必须通过路由泄露(Route Leaking)手动配置。

四、实战配置/案例分析

4.1 泛洪参数调优

# 调整 LSP 相关参数
isis 1
 # LSP 生命周期(秒)
 lsp-life-time 1200
 # LSP 刷新间隔(秒),默认为生命周期的 75%
 lsp-refresh-time 900
 # 最大 LSP 数量
 lsp-max-num 512
 # LSP 最大大小(字节)
 lsp-max-splittings 4

4.2 案例分析:LSP 泛洪不完整

故障背景:R1 的链路状态变化后,R3 未能及时学习到新的路由,导致流量转发错误。

排查过程:

# R1 生成了新 LSP
<R1> display isis lsdb
 0000.0000.0001.00-00   SeqNum: 0x00000005

# R2 已学习到(R1 的直连邻居)
<R2> display isis lsdb
 0000.0000.0001.00-00   SeqNum: 0x00000005

# R3 未学习到(R2 的邻居)
<R3> display isis lsdb
 0000.0000.0001.00-00   SeqNum: 0x00000004    # 仍为旧版本

根因分析:

# R2 和 R3 之间的 Level 不匹配
<R2> display isis peer
 System-id     : 0000.0000.0003
 Level         : Level-1           # 仅 L1 邻居
 # R1 生成的是 L2 LSP,R2 与 R3 只有 L1 邻居关系
 # L2 LSP 无法通过 L1 邻居关系泛洪

修复:

# R2 与 R3 之间需要建立 Level-2 邻居
interface GigabitEthernet0/0/1
 isis circuit-level level-2

4.3 案例分析:CSNP 周期导致的同步延迟

故障背景:广播网络中,新加入的路由器需要较长时间才能完成 LSDB 同步。

排查:

# 查看 DIS 的 CSNP 发送间隔
<R3> display isis interface
 CSNP Timer : 90s    # 9 倍 Hello(10s) = 90s
 # 新路由器需要等待下一个 CSNP 周期才能发现缺失的 LSP

优化:

# 缩短 Hello 间隔,间接缩短 CSNP 周期
interface GigabitEthernet0/0/0
 isis timer hello 3 level-2        # Hello 3 秒
 # CSNP 间隔变为 27 秒

# 或者直接缩短 CSNP 间隔(部分平台支持)
isis 1
 isis csnp-timer 15 level-2        # CSNP 15 秒

4.4 案例分析:LSP 数量超限

故障背景:某大型网络中 R1 频繁生成新的 LSP,达到最大 LSP 数量限制后,新的链路状态变化无法被记录和泛洪。

排查:

<R1> display isis lsdb
 Total: 512            # 已达上限

# 检查 LSP 分页情况
<R1> display isis lsdb verbose
 # 发现多个 LSP 被分页,说明单台路由器链路信息过多
 # 0000.0000.0001.00-0001
 # 0000.0000.0001.00-0002
 # 0000.0000.0001.00-0003
 # ... (大量分页)

根因:R1 连接了过多的接口,每个接口都生成可达性 TLV,导致 LSP 容量不足。

修复:

# 增加最大 LSP 数量
isis 1
 lsp-max-num 1024
#
# 增加 LSP 分页上限
isis 1
 lsp-max-splittings 8
#
# 优化:对非关键接口进行 IS-IS 接口路由策略过滤
isis 1
 filter-policy export default deny level-2

五、总结

机制 广播网络 点对点网络
LSP 泛洪路径 通过 DIS 集中泛洪 逐跳直接泛洪
LSP 确认 CSNP 周期性比对 PSNP 逐包确认
数据库同步 CSNP 周期性 + PSNP 请求 CSNP 建立时 + PSNP 请求
新路由器加入 等待 CSNP 发现缺失 立即交换 CSNP 同步
调优建议 说明
Hello 间隔 核心链路缩短 Hello 以加快收敛
LSP 生命周期 根据网络稳定性调整刷新频率
最大 LSP 数 大规模网络适当增加上限
CSNP 间隔 广播网络可适当缩短以加快同步

思考

  1. 在广播网络中,LSP 通过 DIS 泛洪。如果 DIS 故障,LSP 泛洪会中断吗?新的 DIS 选举期间如何保证 LSP 不丢失?
  2. IS-IS 的 LSP 泛洪在广播网络中依赖 DIS,而 OSPF 的 LSA 泛洪通过 DR 协调。两种机制在可靠性和效率上有什么差异?
  3. LSP 序列号溢出问题在长期运行的网络中不可避免。除重启外,是否有平滑的序列号回收机制?

下篇预告:第77篇:IS-IS 邻居建立条件:Area、SystemID、MTU