2026年01月23日/ 浏览 7
号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部
OSPF 是企业网络中最常用的动态路由协议。
可一提到它的“三张表”——邻居表、拓扑表、路由表,很多人就懵了:
它们是怎么生成的?有什么区别?哪张表决定数据包转发?为什么邻居起来了,路由却没有?别急。今天用三张表 + 三个命令 + 一张流程图,带你彻底搞懂 OSPF 的工作逻辑。

[邻居表]
↓ 发送 Hello 建立关系
[拓扑表]
↓ 运行 SPF 算法计算最短路径
[路由表]
↓ 指导数据包转发✅ 一句话总结:
邻居表:和谁“认识”拓扑表:全网“地图”路由表:最终“导航指令”记录本设备已建立邻接关系的 OSPF 路由器。
接口启用 OSPF 后,开始发送 Hello 报文
收到对方 Hello,检查参数是否匹配:
区域 ID(Area ID)认证类型与密码Hello/Dead 间隔网络类型(广播、点对点等)匹配 → 进入 Init → 2-Way → 若需同步LSA,则进入 ExStart → Exchange → Full
display ospf peer
⚠️ 注意:
State 为 2-Way 不一定错(如广播网络中的DROther之间)只有 Full 状态才会交换完整LSA邻居表是 OSPF 的“社交圈”
邻居起不来?查 Hello 参数、网络类型、物理连通性
LSDB(Link-State Database)
链路状态数据库
存储本区域所有路由器生成的 LSA(链路状态通告),拼出一张完整的网络拓扑图。
邻居进入 Full 状态后,开始交换 DBD(数据库描述报文)
通过 LSR → LSU → LSAck 交互,同步 LSA
所有 LSA 存入 LSDB,形成拓扑表
display ospf lsdb
Type : Router
Ls id : 1.1.1.1
Adv rtr : 1.1.1.1
Seq : 8000000a
Checksum : 0x5a8c
Link count: 3
拓扑表是 OSPF 的“上帝视角”
同一区域内的所有路由器,LSDB 必须完全一致
查看 lsdb 是否同步,是排错的关键
存储最终的路由条目,指导数据包如何转发。
OSPF 将 LSDB 作为输入
运行 SPF 算法(Dijkstra 算法)
计算从本路由器到全网每个网段的最短路径树
将最优路径写入路由表
display ip routing-table protocol ospf
Destination/Mask Proto Pre Cost NextHop Interface
192.168.10.0/24 OSPF 10 1001 10.1.1.2 GigabitEthernet0/0/1
192.168.20.0/24 OSPF 10 2000 10.1.2.2 GigabitEthernet0/0/2
Proto:路由协议来源(OSPF)
Pre:管理距离(华为默认10)
Cost:OSPF 开销(基于带宽)
NextHop:下一跳
Interface:出接口
路由表是 SPF 算法的“输出结果”
数据包转发只看路由表,不看邻居表或拓扑表
即使邻居 Full、LSDB 同步,如果 SPF 计算失败,路由也不会生成
区域类型不匹配(如一边是 Stub,一边是普通区域)
网络类型不一致(如一边是 Broadcast,一边是 P2P)
过滤策略(filter-policy)阻止了路由下发
SPF 计算异常(极少)
✅ 排错命令:display ospf lsdb 看是否有对方的 LSA
说明:OSPF 表现正常,问题出在:
下一跳不可达(ARP 学不到)
反向路由缺失(对端没回OSPF)
ACL/防火墙拦截
MTU 不匹配导致分片失败
✅ OSPF 只负责“我知道怎么去”,不保证“一定能通”
OSPF Cost = 100Mbps / 接口带宽(华为默认参考带宽)
但可手动修改:
interface GigabitEthernet0/0/1
ospf cost 10
或全局修改参考带宽:
ospf 1
bandwidth-reference 1000 # 以1G为基准
邻居表 → 拓扑表 → 路由表Hello 交朋友,LSA 画地图,SPF 算路径
邻居起不来?→ 查物理、IP、Hello 参数
LSDB 不一致?→ 查区域、认证、网络类型
路由没生成?→ 查 SPF、过滤策略、管理距离
搞懂这三张表,你就掌握了 OSPF 的“大脑”。
原创:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部