首页/计算机网络/04-network/链路状态路由(OSPF) 🔗 在 Obsidian 中打开
计算机网络 · 04-network

链路状态路由(OSPF)

难度 ★★★重要度 ★★★★★ 考查频率 低题型 选择 / 计算 / 简答 OSPF链路状态DijkstraLSDBArea 0
速查
链路状态协议:每个路由器掌握完整网络拓扑,用 Dijkstra 计算最短路径;度量为链路代价(与带宽相关);触发式更新(链路变化时泛洪 LSA);划分 Area 收敛快、适合大型网络。

核心概念

OSPF 概述

  • 链路状态协议:每个路由器知道完整的网络拓扑。
  • 度量:链路代价(与带宽成反比)。
  • 更新方式:触发式更新(链路变化时立即发送)。
  • 算法:Dijkstra 最短路径算法。
  • 适用范围:大型网络(AS 内部,IGP)。

与 RIP 的关键区别

特性RIPOSPF
算法距离向量(Bellman-Ford)链路状态(Dijkstra)
信息范围只知邻居知道完整拓扑
度量跳数链路代价(带宽)
更新方式周期性(30s)触发式
收敛速度
适用规模小型大型

OSPF工作过程

步骤

1. 发现邻居:发送 Hello 报文,建立邻居关系
2. 交换链路状态通告(LSA):
   - 每个路由器广播自己的链路状态(邻居、代价)
   - 使用泛洪法(Flooding)发送给所有路由器
3. 建立链路状态数据库(LSDB):
   - 所有路由器的 LSA 汇总
   - 每个路由器有相同的 LSDB(全局视图)
4. 计算最短路径树:
   - 以自己为根,用 Dijkstra 算法计算到所有目的的最短路径
   - 结果写入路由表

Dijkstra 算法

初始化:
- 源节点距离=0,其他节点距离=∞
- 所有节点未确定

循环:
1. 选择未确定节点中距离最小的节点 u
2. 将 u 标记为已确定
3. 更新 u 的所有邻居 v 的距离:
   如果 d(u) + cost(u,v) < d(v)
   则 d(v) = d(u) + cost(u,v)
4. 重复直到所有节点都确定
关键每个路由器以自己为根运行 Dijkstra,得到一棵指向全网的最短路径树(SPT)。

LSA 和 LSDB

LSA 类型

类型名称内容
Type 1Router LSA路由器的链路和代价
Type 2Network LSA网络中的路由器列表
Type 3Summary LSA区域间路由汇总
Type 4ASBR SummaryAS 边界路由器信息
Type 5External LSA外部路由信息

泛洪过程

路由器 R1 的链路变化:
R1 → 生成新 LSA → 泛洪给所有邻居
邻居收到 → 更新 LSDB → 继续泛洪给其他邻居
...直到所有路由器都收到

序列号机制:防止旧 LSA 覆盖新 LSA
老化机制:LSA 有最大生存时间

OSPF区域

为什么需要区域

大规模网络中 LSDB 太大,泛洪开销大
解决方案:将网络划分为多个区域(Area)

Area 0 是骨干区域,所有区域必须连接到 Area 0
Area 0(骨干区域) R1 R2 R3 Area 1(R4) Area 2(R5)
图:所有非骨干区域必须连接到骨干区域 Area 0。

区域的好处

  • 减少 LSA 泛洪范围。
  • 减小 LSDB 大小。
  • 加速 SPF 计算。
  • 提高网络稳定性。

常见考法

考点说明
Dijkstra 算法计算给定拓扑计算最短路径
OSPF vs RIP 对比算法、更新方式、收敛速度
LSA 泛洪过程链路变化时如何传播信息
OSPF 区域的作用减少泛洪开销

易错点

必记
  1. OSPF 是链路状态协议,不是距离向量。
  2. OSPF 使用触发式更新,不是周期性。
  3. OSPF 的度量是与带宽成反比的链路代价,不是跳数。
  4. 所有区域必须连接到骨干区域 Area 0

核心结论

  1. OSPF 每个路由器知道完整拓扑,用 Dijkstra 计算最短路径。
  2. 链路变化时触发更新,收敛速度快。
  3. 使用区域划分减少 LSDB 和泛洪开销。
  4. OSPF 适合大型网络,RIP 适合小型网络。

记忆卡片

OSPF 使用什么算法?
Dijkstra 最短路径算法。
OSPF 和 RIP 的核心区别?
OSPF 知完整拓扑(链路状态),RIP 只知邻居(距离向量)。
OSPF 的更新方式?
触发式更新(链路变化时立即发送 LSA)。
为什么要划分区域?
减少 LSA 泛洪范围和 LSDB 大小,加速计算。

交互动画 · Dijkstra 最短路径树

1 2 3 2 1 A B C D E
以 A 为源,逐步确定最短距离;橙色节点为"已确定"
点击步骤按钮开始计算
拓扑:A–1–B–2–C,A–3–D–2–E,C–1–E。最终最短路径:A→B=1,A→C=3,A→D=3,A→E=4。

相关知识点

distance-vector-rip hierarchical-routing static-and-dynamic-routing

↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。