三张表讲透 OSPF:邻居表、拓扑表、路由表的区别

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部

OSPF 是企业网络中最常用的动态路由协议。

可一提到它的“三张表”——邻居表、拓扑表、路由表,很多人就懵了:

  • 它们是怎么生成的?
  • 有什么区别?
  • 哪张表决定数据包转发?
  • 为什么邻居起来了,路由却没有?

别急。今天用三张表 + 三个命令 + 一张流程图,带你彻底搞懂 OSPF 的工作逻辑。

一、先看全景

[邻居表] ↓ 发送 Hello 建立关系 [拓扑表] ↓ 运行 SPF 算法计算最短路径 [路由表] ↓ 指导数据包转发

一句话总结

  • 邻居表:和谁“认识”
  • 拓扑表:全网“地图”
  • 路由表:最终“导航指令”

二、第一张表:邻居表

作用:

记录本设备已建立邻接关系的 OSPF 路由器。

生成过程:

  1. 接口启用 OSPF 后,开始发送 Hello 报文

  2. 收到对方 Hello,检查参数是否匹配:

    • 区域 ID(Area ID)
    • 认证类型与密码
    • Hello/Dead 间隔
    • 网络类型(广播、点对点等)
  3. 匹配 → 进入 Init → 2-Way → 若需同步LSA,则进入 ExStart → Exchange → Full

查看命令(华为/H3C):

display ospf peer

输出关键字段:

⚠️ 注意:

  • State 为 2-Way 不一定错(如广播网络中的DROther之间)
  • 只有 Full 状态才会交换完整LSA

✅ 核心要点:

  • 邻居表是 OSPF 的“社交圈”

  • 邻居起不来?查 Hello 参数、网络类型、物理连通性

三、第二张表:拓扑表

别名:

  • LSDB(Link-State Database)

  • 链路状态数据库

作用:

存储本区域所有路由器生成的 LSA(链路状态通告),拼出一张完整的网络拓扑图。

生成过程:

  1. 邻居进入 Full 状态后,开始交换 DBD(数据库描述报文)

  2. 通过 LSR → LSU → LSAck 交互,同步 LSA

  3. 所有 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

LSA 类型简析:

✅ 核心要点:

  • 拓扑表是 OSPF 的“上帝视角”

  • 同一区域内的所有路由器,LSDB 必须完全一致

  • 查看 lsdb 是否同步,是排错的关键

四、第三张表:路由表——“数据包的导航指令”

作用:

存储最终的路由条目,指导数据包如何转发。

生成过程:

  1. OSPF 将 LSDB 作为输入

  2. 运行 SPF 算法(Dijkstra 算法)

  3. 计算从本路由器到全网每个网段的最短路径树

  4. 将最优路径写入路由表

查看命令:

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 计算失败,路由也不会生成

五、三张表对比总结表

六、经典问题解析

❓ 问题1:邻居是 Full,但路由没有?

  • 可能原因
    • 区域类型不匹配(如一边是 Stub,一边是普通区域)

    • 网络类型不一致(如一边是 Broadcast,一边是 P2P)

    • 过滤策略(filter-policy)阻止了路由下发

    • SPF 计算异常(极少)

✅ 排错命令:display ospf lsdb 看是否有对方的 LSA

❓ 问题2:路由表里有路由,但 ping 不通?

  • 说明:OSPF 表现正常,问题出在:

    • 下一跳不可达(ARP 学不到)

    • 反向路由缺失(对端没回OSPF)

    • ACL/防火墙拦截

    • MTU 不匹配导致分片失败

✅ OSPF 只负责“我知道怎么去”,不保证“一定能通”

❓ 问题3:为什么 OSPF 路由的 Cost 不是直连带宽算的?

  • OSPF Cost = 100Mbps / 接口带宽(华为默认参考带宽)

  • 但可手动修改:

    interface GigabitEthernet0/0/1 ospf cost 10
  • 或全局修改参考带宽:

    ospf 1 bandwidth-reference 1000 # 以1G为基准

七、总结:三句话记住 OSPF 工作流程

🎯 邻居表 → 拓扑表 → 路由表 Hello 交朋友,LSA 画地图,SPF 算路径

  1. 邻居起不来?→ 查物理、IP、Hello 参数

  2. LSDB 不一致?→ 查区域、认证、网络类型

  3. 路由没生成?→ 查 SPF、过滤策略、管理距离

搞懂这三张表,你就掌握了 OSPF 的“大脑”。

原创:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值