第53篇:OSPF Hello 报文与邻居建立条件

关键词

OSPF、Hello 报文、Router-ID、Area ID、认证、Hello 间隔、Dead 间隔、MTU


一、Hello 报文的作用

Hello 报文是 OSPF 最基本也最重要的报文。它的主要作用有:

  1. 发现邻居——发现链路上的其他 OSPF 路由器
  2. 维护邻居关系——周期性发送,超时即认为邻居 Down
  3. 参数协商——确保两端参数一致
  4. DR/BDR 选举——Hello 报文中携带 DR/BDR 字段

Hello 报文发送到组播地址: - 224.0.0.5(AllSPFRouters)——所有 OSPF 路由器 - 224.0.0.6(AllDRouters)——仅 DR 和 BDR


二、Hello 报文格式

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Version=2   |   Type=1     |         Packet Length           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Router ID                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          Area ID                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Checksum             |          Auth Type             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          Authentication                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          Authentication                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Network Mask          |   Hello Interval  |  Options  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        Rtr Pri    |        Router Dead Interval                |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      Designated Router                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                   Backup Designated Router                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      Neighbor 1 (Router ID)                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      Neighbor 2 (Router ID)                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                              ...                               |

Hello 报文中包含的关键字段: - Network Mask——接口的子网掩码 - Hello Interval——发送 Hello 的时间间隔(秒) - Router Dead Interval——宣告邻居失效的超时时间 - Options——可选能力(如 NSSA、Opaque LSA 等) - Rtr Pri(Router Priority)——用于 DR/BDR 选举的优先级 - DR / BDR——当前的 DR 和 BDR 地址 - Neighbor 列表——最近收到的邻居列表


三、邻居建立的条件

两台路由器要建立邻居关系,Hello 报文中的以下参数必须一致

条件 1:Area ID 相同

两台路由器必须在同一个区域内。

Area 0 ───── RouterA ─── 不匹配 ─── RouterB ───── Area 1
                 ↓
              无法建立邻居

条件 2:认证信息一致

如果配置了认证(明文或 MD5),两端必须匹配。

# 接口下配置明文认证
interface GigabitEthernet0/0/0
 ospf authentication-mode simple plain huawei123

# 两端密码必须相同

条件 3:Hello Interval 和 Dead Interval 一致

默认值(广播/P2P 网络): - Hello Interval:10 秒 - Dead Interval:40 秒(4 倍 Hello 间隔)

# 修改 Hello 间隔(建议保持默认)
interface GigabitEthernet0/0/0
 ospf timer hello 5        # 5 秒
 ospf timer dead 20         # 20 秒(通常保持 4 倍关系)

如果两端 Hello 或 Dead 间隔不一致,邻居将无法建立。

条件 4:Subnet Mask 一致

在广播网络中,两端接口的子网掩码必须一致

RouterA: 10.0.12.1/24
RouterB: 10.0.12.1/30    ← 掩码不匹配,邻居建立失败

注意:P2P 网络不校验掩码,因为 P2P 只有两端。

条件 5:MTU 一致(实为隐性要求)

虽然 OSPF 协议本身没有强制要求 MTU 一致,但 DBD 报文大小受 MTU 限制。如果两端 MTU 不同,可能导致 ExStart/Exchange 状态卡住

推荐配置:

interface GigabitEthernet0/0/0
 mtu 1500

条件 6:Network Type 一致

两端接口的网络类型必须匹配,否则会导致 LSA 无法正确解析。

网络类型 典型场景
Broadcast 以太网(默认)
P2P 串行链路或手动配置
NBMA Frame Relay(历史)
P2MP 非广播多路访问
# 将广播接口改为 P2P(加速邻居建立,消除 DR 选举)
interface GigabitEthernet0/0/0
 ospf network-type p2p

四、默认 Hello/Dead 间隔

网络类型 Hello 间隔 Dead 间隔
Broadcast 10 秒 40 秒
P2P 10 秒 40 秒
NBMA 30 秒 120 秒
P2MP 30 秒 120 秒

五、Debug 示例:Hello 报文交互

# 开启 OSPF 调试
debugging ospf packet hello

# 输出示例
OSPF: Send Hello Packet from GE0/0/0 to 224.0.0.5
  Router-ID: 1.1.1.1
  Area: 0.0.0.0
  Neighbor Count: 0

OSPF: Receive Hello Packet from GE0/0/0 src: 10.0.12.2
  Router-ID: 2.2.2.2
  Area: 0.0.0.0
  Neighbor: 1.1.1.1         ← 关键:看到自己,进入 2-Way

六、常见故障场景

现象 原因 解决方法
邻居卡在 Init 对方没收到自己的 Hello 检查 ACL、防火墙、组播
邻居卡在 Init 对方没将自己的 RID 加入 Neighbor 列表 检查 Area ID、认证
邻居反复振荡 Hello/Dead 间隔不一致 display ospf peer 对比
无法建立邻居 掩码不匹配 检查接口 IP 配置
邻居在 ExStart 卡住 MTU 不匹配 统一两端 MTU

七、总结

邻居建立条件(Hello 参数一致性):

  1. Area ID 相同
  2. 认证信息一致
  3. Hello/Dead 间隔一致
  4. 子网掩码一致(广播网络)
  5. MTU 一致(隐性要求)
  6. 网络类型一致 │ ▼ 邻居建立(2-Way) │ ▼ 邻接建立(Full)

八、思考

  1. OSPF Hello 报文发送到哪些组播地址?各是什么含义?
  2. 哪些参数必须两端一致才能建立 OSPF 邻居?
  3. 如果两端 Hello 间隔分别是 10 秒和 20 秒,会发生什么?
  4. 在广播网络中,为什么需要检查子网掩码一致?
  5. 如果将接口改为 ospf network-type p2p,对 Hello 报文的检查有什么影响?(提示:不再检查掩码和 DR 选举)

下篇预告:第54篇《OSPF 区域设计——骨干区域与非骨干区域的约束》——深入 OSPF 的区域划分与路由传递规则。