第51篇:OSPF 协议基础——链路状态通告与 LSDB
关键词
OSPF、链路状态、LSDB、LSA、SPF 算法、Cost
一、为什么需要 OSPF?
在前面的篇章中,我们学习了 RIP。RIP 虽然简单,但存在两个致命问题:
- 跳数限制 15 跳——网络规模稍大就无法使用。
- 收敛慢——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(参考带宽 / 接口带宽) |
八、思考
- OSPF 与 RIP 的根本区别是什么?
- 什么是 LSDB?为什么区域内所有路由器的 LSDB 必须一致?
- SPF 算法如何保证无环?
- 为什么 OSPF 需要区域的概念?
- OSPF 的 Cost 是如何计算的?(提示:100Mbps / 接口带宽)
下篇预告:第52篇《OSPF 邻居状态机——从 Down 到 Full》——详解 OSPF 邻居建立的每一步。