第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 请求超时 | ⭐⭐⭐ |
八、思考
- 当 OSPF 邻居状态卡在 Init 时,最可能的原因是什么?如何排查?
- MTU 不匹配会导致 OSPF 邻居卡在哪个状态?为什么?
- 华为设备默认是否检查 MTU 一致性?与 Cisco 设备互联时需要注意什么?
- 两台路由器的 Router ID 配置相同会发生什么?
- 如果你发现邻居状态卡在 ExStart,你会按什么顺序排查?
下篇预告:第68篇《OSPF 邻接震荡典型案例分析》——通过各种真实案例理解 OSPF 邻接震荡的根因。