第51篇:OSPF 协议基础——链路状态通告与 LSDB

关键词

OSPF、链路状态、LSDB、LSA、SPF 算法、Cost


一、为什么需要 OSPF?

在前面的篇章中,我们学习了 RIP。RIP 虽然简单,但存在两个致命问题:

  1. 跳数限制 15 跳——网络规模稍大就无法使用。
  2. 收敛慢——RIP 靠周期性广播整张路由表,出故障后要等 180 秒超时才能感知。

OSPF(Open Shortest Path First,开放最短路径优先)正是为了解决这些问题而生。它是一种链路状态路由协议,属于 IGP(内部网关协议)范畴。


二、OSPF 的核心思想

2.1 链路状态 vs 距离矢量

特性 RIP(距离矢量) OSPF(链路状态)
认知范围 只知道"往哪个方向、多少跳" 知道整个网络的拓扑
更新方式 周期性广播整张路由表 触发更新,只发变化的部分
收敛速度 慢(分钟级) 快(秒级)
度量标准 跳数 Cost(带宽相关)
环路预防 最大跳数、水平分割等 SPF 算法天然无环

2.2 OSPF 的工作流程

每台路由器收集自己直连的链路信息
       ↓
封装成 LSA(链路状态通告)
       ↓
向所有邻居泛洪 LSA
       ↓
每台路由器获得相同的 LSDB(链路状态数据库)
       ↓
以自己为根,运行 SPF 算法计算最短路径树
       ↓
生成路由表

关键理解:OSPF 的路由器不"学"路由,而是"算"路由。 每台路由器都知道全网拓扑,自己用算法算出最短路径。


三、LSDB(链路状态数据库)

3.1 什么是 LSDB

LSDB 是路由器上存储的所有 LSA 的集合。在一个 OSPF 区域(Area)内,所有路由器的 LSDB 必须一致——这是 OSPF 正确工作的前提。

3.2 LSDB 包含的信息

每条 LSA 记录的信息包括: - 通告路由器(谁发的这条 LSA) - 链路类型(P2P、Transit、Stub 等) - 链路 ID(对端路由器 ID 或网段) - 接口 IP 和掩码 - 链路开销(Cost) - 序列号(用于判断新旧)

3.3 LSDB 同步过程

RouterA ───────────── RouterB
   │                        │
   │    1. Hello 报文       │
   │◄──────────────────────►│  发现邻居
   │                        │
   │    2. DB Description   │
   │◄──────────────────────►│  交换 LSA 摘要
   │                        │
   │    3. LSR / LSU        │
   │◄──────────────────────►│  请求并获取完整 LSA
   │                        │
   │    4. 最终 LSDB 一致   │
   │                        │

四、LSA(链路状态通告)

LSA 是 OSPF 的"信息载体"。不同类型的 LSA 承载不同信息:

LSA 类型 名称 作用范围 生成者
Type 1 Router LSA 区域内 每台路由器
Type 2 Network LSA 区域内 DR(指定路由器)
Type 3 Summary LSA 区域间 ABR
Type 4 ASBR-Summary LSA 区域间 ABR
Type 5 AS-External LSA 整个 AS ASBR
Type 7 NSSA LSA NSSA 区域内 ASBR

后续文章会逐一详细讲解每种 LSA。


五、SPF(Shortest Path First)算法

5.1 算法原理

SPF 算法又称 Dijkstra 算法,以路由器自己为根,计算到每个目的地的最短路径树。

算法步骤: 1. 把自己加入最短路径树,Cost = 0 2. 检查所有邻居,记录到每个邻居的 Cost 3. 选择 Cost 最小的邻居加入树 4. 通过新加入的节点,检查是否有更短的路径 5. 重复直到所有节点都在树中

5.2 举例

┌─── A ───┐ Cost=5 RouterA RouterB Cost=10

RouterA 到 RouterB: - 直连路径:Cost = 10 - 经过虚节点(实际无此场景)

SPF 算法会选出 Cost=10 的直连路径。


六、OSPF 的区域概念(预告)

OSPF 通过区域(Area)实现分层设计: - 骨干区域 Area 0:所有非骨干区域必须与 Area 0 相连 - 非骨干区域:普通区域,通过 ABR 与骨干区域相连

区域的好处: 1. 缩小 LSDB 规模——路由器只需知道本区域的详细拓扑 2. 减少 LSA 泛洪范围 3. 故障隔离——一个区域的动荡不影响其他区域


七、总结

知识点 核心要点
OSPF 本质 链路状态路由协议,基于 SPF 算法
LSDB 每台路由器维护一致的链路状态数据库
LSA 描述链路状态的信息单元,多种类型
SPF 算法 Dijkstra 算法,计算最短路径树
收敛 触发更新,秒级收敛
度量 Cost(参考带宽 / 接口带宽)

八、思考

  1. OSPF 与 RIP 的根本区别是什么?
  2. 什么是 LSDB?为什么区域内所有路由器的 LSDB 必须一致?
  3. SPF 算法如何保证无环?
  4. 为什么 OSPF 需要区域的概念?
  5. OSPF 的 Cost 是如何计算的?(提示:100Mbps / 接口带宽)

下篇预告:第52篇《OSPF 邻居状态机——从 Down 到 Full》——详解 OSPF 邻居建立的每一步。