第67篇:OSPF 邻居故障排查——状态卡在 Init/ExStart

关键词

OSPF、邻居故障、Init、ExStart、MTU、Router ID、认证、接口类型


一、OSPF 邻居建立流程回顾

Down → Init → 2-Way → ExStart → Exchange → Loading → Full
状态 含义 典型停顿原因
Down 未收到任何 Hello 接口未 UP、被动接口、网络不通
Init 收到 Hello,但未看到自己 邻居关系单向
2-Way 双向通信建立 通常正常,DR/BDR 选举后进入下一步
ExStart 协商主从关系 Router ID 冲突、MTU 不匹配
Exchange 交换 DD 报文 链路质量问题
Loading 请求完整 LSA 链路质量或 LSDB 过大
Full 邻接建立成功 ✅ 正常状态

二、状态卡在 Init

2.1 现象

display ospf peer

OSPF Process 1 with Router ID 1.1.1.1
  Neighbors: 

  Area 0.0.0.0 interface 10.0.12.1 (GE0/0/0)
    Neighbor ID     Pri   State
    2.2.2.2         1     Init/-

2.2 原因分析

State 为 Init 说明:

  • 本端收到了对端的 Hello 报文
  • 但对端的 Hello 报文中没有包含本端的 Router ID

常见原因

原因 说明
单向链路 对端发过来的包能到本端,但本端发的包到不了对端
OSPF 网络类型不一致 一端 Broadcast,另一端 P2P
区域 ID 不匹配 两端配置的 Area 不同
认证不匹配 一端配置了认证,另一端没有
Hello/Dead 间隔不一致 两端 Timer 不同步

2.3 排查命令

# 1. 检查 OSPF 接口状态
display ospf interface

# 2. 检查接口是否 UP
display interface brief | include up

# 3. 检查 OSPF 配置一致性
display current-configuration | section ospf

# 4. 抓包确认 Hello 报文内容
# 在本端接口抓包,查看对端发来的 Hello 是否包含本端 Router ID

2.4 修复方案

# 检查并统一网络类型
interface GigabitEthernet0/0/0
 ospf network-type broadcast    # 两端必须一致

# 检查并统一区域
ospf 1
 area 0.0.0.0                   # 必须在同一区域

# 检查并统一认证
ospf 1
 area 0.0.0.0
  authentication-mode md5 1 cipher Huawei

# 检查并统一 Timer
interface GigabitEthernet0/0/0
 ospf timer hello 10            # 两端必须一致
 ospf timer dead 40

三、状态卡在 ExStart

3.1 现象

display ospf peer

OSPF Process 1 with Router ID 1.1.1.1
  Area 0.0.0.0 interface 10.0.12.1 (GE0/0/0)
    Neighbor ID     Pri   State
    2.2.2.2         1     ExStart/-

3.2 原因分析

ExStart 阶段的主要任务是选举主从关系(Master/Slave)和协商 DD 报文序列号。

卡在 ExStart 的常见原因:

原因 说明
MTU 不匹配 最常见原因!一端接口 MTU 小于对端发送的 DD 报文长度
Router ID 冲突 两端 Router ID 相同
接口错误 存在链路层 CRC 错误

3.3 MTU 问题详解

OSPF 要求建立邻接的两端接口 MTU 必须一致

当一端接口 MTU 较小,收到对端发送的超过 MTU 的 DD 报文时,会丢弃该报文,导致状态一直卡在 ExStart。

# 查看接口 MTU
display interface GigabitEthernet0/0/0
  MTU: 1500              ← 检查两端是否一致

# 修改接口 MTU
interface GigabitEthernet0/0/0
 mtu 1500

特殊情况——华为设备的 MTU 忽略配置

华为设备默认不检查 MTU 一致性(Cisco 默认检查)。

# 华为:启用 MTU 检查(默认不启用)
interface GigabitEthernet0/0/0
 ospf mtu-enable           # 启用后,MTU 不匹配时会卡在 ExStart

华为与 Cisco 互联时的 MTU 问题

华为(默认不检查 MTU)←→ Cisco(默认检查 MTU)

Cisco 端:收到华为的 DD 报文后检查 MTU
  → 如果华为的 MTU > Cisco 的 MTU → 卡在 ExStart

解决方案:
  1. 两端 MTU 改为一致
  2. 华为端启用 ospf mtu-enable 确保双方都能感知 MTU 限制

3.4 Router ID 冲突

# 检查本端 Router ID
display ospf brief

# 如果冲突,重新配置 Router ID
ospf 1
 router-id 1.1.1.2            # 修改 Router ID
 reset ospf process            # 重启 OSPF 进程使配置生效

四、状态卡在 Exchange/Loading

4.1 Exchange 状态

现象:邻居状态在 Exchange 长时间不推进。

原因

  • 链路质量差:存在大量丢包或错包
  • LSDB 过大:DD 报文交换过程中超时

排查

display ospf peer  # 检查重传计数
  Neighbor is exchange, retransmit: 5   ← 重传次数很多

# 检查接口错包
display interface GigabitEthernet0/0/0
  Input errors: 100                    ← 错误包很多

4.2 Loading 状态

现象:State 停留在 Loading。

原因

  • LSR/LSU 丢失:请求的 LSA 长时间未收到回复
  • 邻居 Router ID 不可达:对端路由器不可达

五、综合故障排查流程

OSPF 邻居故障排查表:

1. 接口 UP 了吗?
   └─ No → 排查物理链路

2. 能否 ping 通对端?
   └─ No → 排查三层连通性

3. 两端 Area ID 是否一致?
   └─ No → 修改区域配置

4. 两端网络类型是否一致?
   └─ No → 统一网络类型

5. 两端认证配置是否一致?
   └─ No → 统一认证参数

6. 两端 Hello/Dead 间隔是否相同?
   └─ No → 统一 Timer

7. 两端 MTU 是否一致?
   └─ No → 统一 MTU

8. Router ID 是否冲突?
   └─ Yes → 修改 Router ID

9. 是否启用了静默接口?
   └─ Yes → 移除静默接口配置

10. 状态是 Full?
    └─ Yes → ✅ 邻居建立成功

六、常用排查命令汇总

# 查看所有 OSPF 邻居
display ospf peer

# 查看邻居详细信息
display ospf peer verbose

# 查看 OSPF 接口配置和状态
display ospf interface

# 查看 OSPF 简要信息
display ospf brief

# 查看 LSDB 摘要
display ospf lsdb

# 查看 OSPF 错误统计
display ospf error

# 调试 OSPF 报文(慎用,生产环境谨慎)
debugging ospf packet hello

七、总结

卡住状态 最常见原因 排查优先级
Init 路由不通 / 区域不匹配 ⭐⭐⭐⭐⭐
2-Way 正常状态(如果是 DRother 则正常)
ExStart MTU 不匹配 / Router ID 冲突 ⭐⭐⭐⭐⭐
Exchange 链路质量差 / LSDB 过大 ⭐⭐⭐
Loading LSA 请求超时 ⭐⭐⭐

八、思考

  1. 当 OSPF 邻居状态卡在 Init 时,最可能的原因是什么?如何排查?
  2. MTU 不匹配会导致 OSPF 邻居卡在哪个状态?为什么?
  3. 华为设备默认是否检查 MTU 一致性?与 Cisco 设备互联时需要注意什么?
  4. 两台路由器的 Router ID 配置相同会发生什么?
  5. 如果你发现邻居状态卡在 ExStart,你会按什么顺序排查?

下篇预告:第68篇《OSPF 邻接震荡典型案例分析》——通过各种真实案例理解 OSPF 邻接震荡的根因。