Appearance
RIP 路由协议(距离向量)
考情分析
RIP 是 408 网络层的高频考点,选择题和大题都可能出。选择题常考 RIP 的特性(最大跳数、更新周期、使用 UDP 等),大题常给一个路由表更新的场景,要求按规则计算更新后的路由表。
考频:★★★★
RIP 的基本概念
RIP(Routing Information Protocol)是最简单的内部网关协议(IGP),基于距离向量算法。
核心思想:每个路由器只和直接相邻的路由器交换路由信息,通过迭代最终让所有路由器都学到到达各目的网络的最短路径。
RIP 的基本规则:
- 距离度量:跳数(Hop Count)。直连网络跳数为 0,每经过一个路由器加 1
- 最大跳数:15。跳数 16 视为不可达
- 更新方式:每 30 秒向所有邻居广播自己的完整路由表
- 传输协议:UDP 端口 520
路由表结构
RIP 路由器的路由表中,每条记录包含三个字段:
| 目的网络 | 距离(跳数) | 下一跳路由器 |
|---|---|---|
| Net1 | 1 | 直连 |
| Net2 | 3 | R2 |
| Net3 | 4 | R3 |
距离向量更新算法
当路由器 X 收到邻居 Y 发来的距离向量时,按以下规则逐条处理:
设 Y 发来的向量中:到目的网络 N 的距离为
- 将距离加 1:因为数据要从 X 到 Y 再到 N,多了一跳。新距离 =
- 查看 X 自己的路由表中是否有到 N 的记录:
- 没有:添加新条目(目的=N,距离=d+1,下一跳=Y)
- 有,且下一跳是 Y:无条件更新为新距离 d+1(不管变大还是变小,因为信息来自同一个邻居,以最新的为准)
- 有,且下一跳不是 Y:只有当 d+1 < 原距离时才更新(新路径更短才替换)
第二条规则是最容易出错的——如果下一跳就是 Y,不管新距离变大还是变小都要更新。因为 Y 是你到目的网络的必经之路,Y 说距离变远了,你也只能接受。
路由表更新例题
题目: 路由器 R1 的当前路由表如下,收到邻居 R2 发来的距离向量后,求更新后的路由表。
R1 当前路由表:
| 目的网络 | 距离 | 下一跳 |
|---|---|---|
| Net1 | 1 | 直连 |
| Net2 | 3 | R2 |
| Net3 | 4 | R3 |
| Net4 | 5 | R2 |
R2 发来的距离向量:
| 目的网络 | 距离 |
|---|---|
| Net1 | 2 |
| Net2 | 1 |
| Net3 | 2 |
| Net4 | 6 |
| Net5 | 3 |
逐条分析:
Net1: R2 说距离 2,加 1 得 3。R1 原来到 Net1 距离 1(直连),下一跳不是 R2,3 > 1,不更新。
Net2: R2 说距离 1,加 1 得 2。R1 原来到 Net2 距离 3,下一跳是 R2,无条件更新为 2。
Net3: R2 说距离 2,加 1 得 3。R1 原来到 Net3 距离 4,下一跳是 R3(不是 R2),3 < 4,更新为 3,下一跳改为 R2。
Net4: R2 说距离 6,加 1 得 7。R1 原来到 Net4 距离 5,下一跳是 R2,无条件更新为 7。(即使变大也要更新!)
Net5: R1 没有到 Net5 的记录,添加新条目,距离 4(3+1),下一跳 R2。
更新后的路由表:
| 目的网络 | 距离 | 下一跳 | 变化 |
|---|---|---|---|
| Net1 | 1 | 直连 | 不变 |
| Net2 | 2 | R2 | 距离 3→2 |
| Net3 | 3 | R2 | 距离 4→3,下一跳 R3→R2 |
| Net4 | 7 | R2 | 距离 5→7(变大了!) |
| Net5 | 4 | R2 | 新增 |
好消息传得快,坏消息传得慢
RIP 有一个经典的问题:路由信息的收敛速度不对称。
好消息(某个网络变得可达、距离变短)传播很快——几轮更新就能让所有路由器知道。
坏消息(某个网络不可达、链路故障)传播很慢——可能要经历"无穷计数"的过程。
无穷计数问题
假设 R1 直连 Net1,R2 通过 R1 到达 Net1(距离 2)。现在 Net1 故障了:
- R1 发现 Net1 不可达,将距离设为 16
- 但 R2 的路由表中还记着"到 Net1 距离 2"
- R2 在下一次更新时告诉 R1:"我到 Net1 距离 2"
- R1 收到后计算 2+1=3,认为可以通过 R2 到达 Net1,更新距离为 3
- R1 下次告诉 R2 距离 3,R2 更新为 4……
- 如此反复,直到距离增长到 16(不可达),两边才稳定
这个过程可能持续很多轮,期间产生路由环路。这就是为什么 RIP 设置最大跳数为 16——如果没有上限,"无穷计数"就真的无穷了。
RIP 的局限性
| 问题 | 说明 |
|---|---|
| 最大 15 跳 | 只适用于小型网络 |
| 无穷计数 | 坏消息收敛慢,可能出现路由环路 |
| 以跳数为唯一度量 | 不考虑链路带宽、延迟等因素 |
| 广播完整路由表 | 每 30 秒广播整张表,开销大 |
| 只支持等价路由 | 不支持按链路质量做负载均衡 |
交互可视化
易错点
1. 下一跳是发送者时,无条件更新
这是最容易犯的错误。"下一跳是 Y 则无条件更新"是 RIP 算法的核心规则,即使新距离比原来更大也要更新。
2. 距离要先加 1
收到邻居的距离向量后,所有距离都要 +1。因为经过邻居到目的地比邻居到目的地多了一跳。
3. 跳数 16 表示不可达
RIP 中距离 16 等价于"到不了"。如果更新后某条目距离 >= 16,就视为不可达。
4. RIP 使用 UDP,不是 TCP
RIP 报文通过 UDP 端口 520 传输。OSPF 直接封装在 IP 中,BGP 使用 TCP。三个协议的传输方式要区分清楚。
高频考点清单
- RIP 使用跳数作为度量,最大跳数 15,16 为不可达
- RIP 每 30 秒向邻居广播完整路由表
- RIP 使用 UDP 端口 520
- 距离向量更新三条规则(新条目/下一跳相同/下一跳不同)
- "下一跳是发送者则无条件更新"是核心考点
- 好消息传得快,坏消息传得慢(无穷计数问题)
- RIP 只适合小型网络(最大 15 跳)