第34篇:距离矢量 vs 链路状态——RIP 与 OSPF 的根本差异

一、写在前面

动态路由协议中,IGP 内部又分为两类:距离矢量(Distance Vector)链路状态(Link State)

这两种协议的设计哲学完全不同,理解它们的差异是深入理解路由协议的关键。

本文用一个最形象的比喻来帮助你理解:

  • 距离矢量 = 你问路人"去北京怎么走?",路人说"往东走"——他只知道方向,不知道整个地图。
  • 链路状态 = 你手里有一张全国地图——你自己可以算出最短路径。

二、距离矢量协议(以 RIP 为例)

2.1 工作方式

每台路由器只知道:

去某个网段,走哪个邻居 距离(跳数)是多少

它不知道整个网络的拓扑, 只知道"我的邻居告诉我去某地走哪条路"。

2.2 路由传播方式——传闻式

路由更新:
  R1 告诉 R2:"我有 10.0.1.0/24,距离 1 跳"
  R2 告诉 R3:"我有 10.0.1.0/24,距离 2 跳"
  R3 告诉 R4:"我有 10.0.1.0/24,距离 3 跳"

每台路由器"听邻居说" → 加 1 跳后告诉下一个邻居
这种传播方式叫"传闻式路由(Routing by Rumor)"

三、链路状态协议(以 OSPF 为例)

3.1 工作方式

每台路由器都拥有:

整个网络的完整拓扑图(LSDB) 所有路由器、所有链路、所有网段

每台路由器自己用 SPF 算法计算最短路径。

3.2 路由计算方式——地图式

所有路由器之间交换 LSA(链路状态通告)
每台路由器收到所有 LSA → 构建 LSDB(链路状态数据库)
每台路由器自己运行 SPF 算法 → 计算最短路径树 → 生成路由表

四、核心差异对比

对比项 距离矢量(RIP) 链路状态(OSPF)
对网络的认知 只知道下一跳方向 知道全网拓扑
路由更新 整张路由表周期性更新 变化的链路状态触发更新
更新内容 "我去 X 网段距离 Y 跳" "我的接口状态是 UP,Cost=10"
路由计算 Bellman-Ford 算法 Dijkstra SPF 算法
环路防护 水平分割、毒性反转等 SPF 算法天然无环
收敛速度 慢(分钟级) 快(秒级)
CPU 消耗 低(简单的表计算) 高(复杂的 SPF 计算)
带宽消耗 高(周期性全量更新) 低(增量/触发更新)
扩展性 差(最大 15 跳) 好(区域划分)
适用规模 小型网络 中到大到巨型网络

五、收敛速度的具体对比

RIP 的收敛过程(慢)

R1→R2 链路断了

R1 发现链路断了
  ↓
R1 更新路由表,标记为不可达
  ↓
R1 等待 30 秒(等下一次路由更新周期)
  ↓
R1 发送更新 → R2 收到
  ↓
R2 更新路由表
  ↓
R2 等待 30 秒 → 告诉下一个邻居
  ↓
R3 收到...
  ↓
总计收敛时间:分钟级 (可能 2~3 分钟)

OSPF 的收敛过程(快)

R1→R2 链路断了

R1 立即检测到链路 Down(硬件检测,毫秒级)
  ↓
R1 立即发送 LSU(链路状态更新)给所有邻居
  ↓
R2 收到 → 立即更新 LSDB
  ↓
R2 立即运行 SPF 计算新路径
  ↓
R2 立即将变化泛洪给 R3
  ↓
R3 同样立即更新
  ↓
总计收敛时间:秒级(典型 1~5 秒)

六、环路防护的差异

RIP 的防环机制(治标)

机制 说明
最大跳数(15) 跳数到 16 表示不可达,强制丢弃
水平分割 从 A 接口学到的路由,不再从 A 接口通告出去
毒性反转 告诉邻居"某路由已不可达"(跳数=16)
触发更新 拓扑变化时立即发送更新,不等周期
抑制计时器 路由失效后的一段时间内不接受新信息

OSPF 的防环(治本)

OSPF 使用 SPF(Shortest Path First)算法(Dijkstra 算法):

1. 每台路由器有完整的网络拓扑
2. SPF 算法从自己作为根,构建一棵无环的树
3. 树上的每条路径都是最短路径
4. 树天然没有环路

一句话:距离矢量协议需要额外机制防环,链路状态协议天然防环。


七、RIP vs OSPF 的实际应用

特性 RIP OSPF
企业网使用 ❌ 已基本淘汰 ✅ 主流
运营商网络 ✅ 或 IS-IS
数据中心
认证考试 仍有(理解基础概念) 重点
现网设备支持 兼容但有 全支持

八、思考

  1. 距离矢量协议的"路由传闻"是什么意思?有什么风险?
  2. 链路状态协议中,LSDB 和路由表有什么区别?
  3. 为什么 RIP 收敛那么慢而 OSPF 这么快?
  4. OSPF 为什么天然没有环路?SPF 算法是怎么保证的?
  5. RIP 的"水平分割"是做什么的?在什么场景下能防止环路?
  6. 一个网络有 20 台路由器,全部用 RIP,链路故障后大约多久能恢复?换成 OSPF 呢?

下篇预告:第35篇《RIP协议原理与防环机制》——掌握RIP协议的原理和防环机制。