eNSP 实战难度 · 进阶

OSPF 邻居状态机图解:两台路由器如何成为邻居

OSPF 邻居建立与邻居状态机图解,一张图看懂 Hello、DR/BDR、LSA 洪泛,附华为 eNSP 单区域配置。

#OSPF#动态路由#eNSP

先看效果

OSPF邻居状态机七种状态转换图
OSPF 邻居状态机,从 Down 到 Full 的完整过程

为什么需要 OSPF

静态路由手动配,网络一大就累死人。OSPF(开放最短路径优先)是应用最广的动态路由协议:路由器之间自己交换路由信息,网络拓扑变了自动收敛,不用人管。

OSPF 的核心是邻居关系:两台路由器先把对方变成邻居,再交换各自的链路状态(LSA),最后各自算出一张完整的拓扑图(LSDB),用 Dijkstra 算法算最短路径。

原理图解

看上面这张图——邻居状态机的七个状态:

  1. Down:初始,还没收到对方消息;
  2. Init:收到了对方的 Hello,但对方还没收到我的 Hello;
  3. 2-Way:双方都收到了对方的 Hello,邻居关系确认(广播网里这时开始选 DR/BDR);
  4. ExStart:开始协商主从关系,决定谁先发送数据库描述;
  5. Exchange:交换 DBD(数据库描述),列出各自的 LSA 摘要;
  6. Loading:发现对方有自己缺的 LSA,发 LSR(链路状态请求);
  7. Full:双方 LSDB 完全同步,邻居建立完成,可以互相转发。

记忆技巧:Down → 2-Way 靠 Hello 刷存在感;ExStart → Full 靠交换数据库同步。广播网多路访问里还要选 DR(指定路由器)和 BDR(备份 DR)来减少 LSA 洪泛。

eNSP 完整配置

两台 AR2220(R1、R2)互联,属于 area 0,各带一个业务网段。以 R1 为例:

# ===== R1 =====
<Huawei> system-view
[Huawei] sysname R1

# 接口 IP
[R1] interface GigabitEthernet0/0/0
[R1-GigabitEthernet0/0/0] ip address 10.1.1.1 24
[R1-GigabitEthernet0/0/0] quit

[R1] interface GigabitEthernet0/0/1
[R1-GigabitEthernet0/0/1] ip address 192.168.1.254 24
[R1-GigabitEthernet0/0/1] quit

# 启用 OSPF,进程号 1,区域 0
[R1] ospf 1 router-id 1.1.1.1
[R1-ospf-1] area 0
[R1-ospf-1-area-0.0.0.0] network 10.1.1.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0] quit
[R1-ospf-1] quit

[R1] save

R2 对称配置(router-id 2.2.2.2,网段 192.168.2.0/24)。

验证

# 查看邻居,State 应该是 Full
[R1] display ospf peer

# 查看 OSPF 路由
[R1] display ospf routing

# 全链路测试
[R1] ping 192.168.2.1

display ospf peer 能看到邻居 2.2.2.2,State: Full,Mode: -。路由表里 192.168.2.0/24 变成 OSPF 学到的动态路由。

常见问题

Q: 邻居一直卡在 2-Way? A: 广播网里 2-Way 是正常状态——只有 DR/BDR 之间才继续走到 Full。如果你在串行链路上卡 2-Way,多半是网络类型不匹配。

Q: 邻居起不来? A: 四项必查:① 两端接口 IP 同网段;② network 宣告的网段要覆盖接口 IP;③ area ID 一致;④ router-id 不能相同。

下一步

OSPF 能让网络自动学会路由,但防火墙才管谁能进出。接下来看 ACL 访问控制列表。