第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 |
| 数据中心 | ❌ | ✅ |
| 认证考试 | 仍有(理解基础概念) | 重点 |
| 现网设备支持 | 兼容但有 | 全支持 |
八、思考
- 距离矢量协议的"路由传闻"是什么意思?有什么风险?
- 链路状态协议中,LSDB 和路由表有什么区别?
- 为什么 RIP 收敛那么慢而 OSPF 这么快?
- OSPF 为什么天然没有环路?SPF 算法是怎么保证的?
- RIP 的"水平分割"是做什么的?在什么场景下能防止环路?
- 一个网络有 20 台路由器,全部用 RIP,链路故障后大约多久能恢复?换成 OSPF 呢?
下篇预告:第35篇《RIP协议原理与防环机制》——掌握RIP协议的原理和防环机制。