第36篇:RIP 跳数限制导致的网络不可达故障
关键词:RIP、15 跳限制、Counting to Infinity、路由不可达、网络规模限制
一、引言
在第35篇中,我们学习了 RIP 协议的四种防环机制。然而,RIP 最大的限制之一是其最大跳数 15 的设计。当一个网络中源到目的的路由跳数超过 15 时,RIP 会将该网络标记为不可达。这种限制在小型网络中不是问题,但在中大型网络或存在冗余路径的网络中,就会引发"明明物理上可达、RIP 却认为不可达"的故障。
二、15 跳限制的来龙去脉
2.1 为什么是 15 跳
RIP v1(RFC 1058)路由条目中的 Metric 字段为 4 字节(32 bit),可表示 0~2³²-1。但协议规范把 16 约定为不可达(Infinity)。当跳数增长到 16 时就被认为是不可达,因此最大有效跳数为 15。
| Metric 值 | 含义 |
|---|---|
| 0 | 直连网络 |
| 1-15 | 可达,经过 N 跳 |
| ≥16 | 不可达(Infinity) |
要点:"16=不可达"是协议规范的设计选择,并非因为字段只能存这么小的值(Metric 字段实际是 32 bit)。把这个值固定在 16,是为了给环路收敛设置一个明确的"天花板",配合计数到无穷使 metric 不会无限增长。
2.2 15 跳限制的两种故障模式
| 模式 | 说明 | 表现 |
|---|---|---|
| 模式一:网络规模超限 | 正常路径就超过 15 跳 | 远端网络不可达 |
| 模式二:冗余路径消耗跳数 | 主路径故障后,备用路径跳数超过 15 | 故障后不可达 |
三、故障场景分析
3.1 场景一:线性拓扑超过 15 跳

从 R1 到 R17 需要 16 跳,超过 RIP 的最大有效跳数 15,R17 永远无法学到 10.0.0.0/24 的路由(被标记为 metric=16 不可达)。
3.2 场景二:故障切换后跳数超标

正常情况下,R6 通过主路径以 2 跳学习到路由。当主路径故障后,R6 只能通过绕行路径以 14 跳学习到。R6 后面的 R7 为 15 跳(刚好可达),R8 为 16 跳(不可达)。
3.3 场景三:网络层级过深,累计跳数超过 RIP 15 跳上限
RIP 协议规定路由的最大有效跳数为 15 跳,跳数达到 16 即判为不可达。而企业网络的报文往往需要逐层穿过多级设备,每一层都会让累计跳数增加 1:
| 网络层级 | 跳数 | 说明 |
|---|---|---|
| 接入层到汇聚层 | 2-3 跳 | 接入交换机 + 汇聚交换机 |
| 汇聚层到核心层 | 1-2 跳 | 核心路由器 |
| 核心层到出口 | 1 跳 | 边界路由器 |
| 出口到远端站点 | 可变 | 取决于远端深度 |
如果远端站点的网络深度为 10 跳以上,加上核心及园区内的累计跳数,路径总跳数很可能超过 15 跳。一旦超过,路由会被 RIP 判定为不可达,远端站点将无法正常学习到该网段的路由,业务中断且排查困难(现象为"路由时有时无"或"重分布后目标不可达")。
对策建议:
- 改用无跳数上限的动态路由协议(OSPF、IS-IS),其度量值上限远高于 RIP;
- 压缩网络层次,控制园区到远端之间的设备级数;
- 对超深站点单独划分路由域,通过重分布或静态路由衔接,避免全路径处于同一 RIP 域内。
四、故障排查与解决
4.1 故障排查流程

4.2 案例一:线性长距离网络跳数超限
故障描述:某连锁酒店网络,总部到最远分店的 RIP 路由 metric 为 16,分店无法访问总部服务器。
排查过程:
# 在分店路由器上检查
<BRANCH> display rip 1 route 10.0.0.0
Route Flags: R - RIP, T - TRIP
P - Permanent, A - Aging, S - Suppressed, G - Garbage-collect
---------------------------------------------------------------------
Peer 10.19.0.2 on GigabitEthernet0/0/1
Destination/Mask Nexthop Cost Tag Flags Sec
10.0.0.0/24 10.19.0.2 16 0 RG 100
# Cost=16 → 不可达(Infinity);Flag G = Garbage-collect,等待 Flush 删除,不会参与转发
# 如版本不支持按网络过滤,可 display rip 1 route 后人工核对
# 逐跳追踪跳数
<HQ> display ip routing-table 10.20.0.0
# 从总部到分店需要 16 跳,被标记为不可达
解决方案对比:
| 方案 | 优点 | 缺点 |
|---|---|---|
| 替换为 OSPF | 无跳数限制、收敛快 | 配置复杂、资源消耗高 |
| 路由聚合减少跳数 | 成本低 | 可能不满足业务需求 |
| 中间加入 OSPF 域 | 平衡成本与性能 | 需要重分发 |
# 最终方案:替换为 OSPF
[BRANCH] undo rip 1
[BRANCH] ospf 1 router-id 20.0.0.1
[BRANCH-ospf-1] area 0
[BRANCH-ospf-1-area-0.0.0.0] network 10.20.0.0 0.0.0.255
[BRANCH-ospf-1-area-0.0.0.0] quit
# 验证 OSPF 路由
<BRANCH> display ip routing-table protocol ospf
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.0.0.0/24 OSPF 10 16 D 10.19.0.2 GigabitEthernet0/0/1
# OSPF Cost=16(示例:16 段链路,默认参考带宽 100M 下每段 Cost=1),无跳数限制
4.3 案例二:RIP 跳数与静态路由的冲突
故障描述:RIP 路由的 metric 为 15,同时存在一条静态路由指向同一网络,但走不同路径。
# 检查路由表
<SW> display ip routing-table 10.0.0.0
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.0.0.0/24 Static 60 0 D 10.1.1.2 GigabitEthernet0/0/1 ← 静态路由生效
# 静态路由优先级 60 > RIP 优先级 100 → 静态优先生效(Preference 值越小优先级越高)
# RIP 路由(Pre=100)处于未激活状态,不进入路由表,因此 display 看不到该条目
# 它仍存在于协议进程中,当静态路由失效(如下一跳不可达)时才被激活
# 当静态路由的下一跳不可达后(静态路由因递归失败退出路由表):
<SW> display ip routing-table 10.0.0.0
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.0.0.0/24 RIP 100 15 D 10.2.2.1 GigabitEthernet0/0/2
# RIP 路由重新激活生效,作为备份路径承载流量
4.4 案例三:能否修改 RIP 的跳数上限?
说明:RIP 的最大跳数(15 可达 / 16 不可达)由 RFC 1058/2453 协议规范定义,属于协议行为。华为 VRP 未提供修改该上限的配置命令(标准 RIP 在其他厂商设备上同样不支持调整);网上流传的"RIP 跳数可调"说法容易误导,正式排障请勿依赖此类命令。
# 确认 RIP 进程参数(回显中无"最大跳数"配置项)
<HUAWEI> display rip 1
# RIP process 1, port 520 ...(含版本、计时器、默认引入 metric 等字段,均不含跳数上限配置)
# 标准 RIP 的可达上限固定为 15 跳,16 表示不可达
真正稳妥的解决方案:超出 15 跳的网络应改用 OSPF / IS-IS,既绕开跳数限制,也获得更快的收敛;无法立即迁移时,先通过拓扑优化或路由聚合把最长路径压到 15 跳以内。
五、总结
| 故障类型 | 根因 | 表现 | 解决 |
|---|---|---|---|
| 网络规模超限 | 路径跳数 > 15 | metric=16,不可达 | 换 OSPF / 缩短路径 |
| 故障切换超限 | 主路径断后备路径 > 15 | 正常可达,故障后不可达 | 换 OSPF / 优化拓扑 |
| 静态与 RIP 冲突 | 优先级不同 | 路由表显示不同源 | 确认优先级设计 |
| 决策矩阵 | 选择 RIP | 选择 OSPF |
|---|---|---|
| 网络跳数 | ≤15 跳 | >15 跳 |
| 设备数量 | ≤20 台 | >20 台 |
| 收敛要求 | 低 | 高 |
| 配置能力 | 初学者 | 有经验 |
思考
- RIP 的最大跳数限制为 15 是一种"设计选择"还是"技术限制"?如果是技术限制,能否通过扩展协议解决?
- 如果一个 RIP 网络的 metric 刚好为 15,此时链路故障后走了更长的路径(16 跳),从业务角度看会有什么影响?
- RIP 的 15 跳限制在今天的网络中还有什么意义?为什么 RIP 还没有被淘汰?
下篇预告:第37篇:路由优先级(Preference)与度量值(Metric)