第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 跳

场景一:线性拓扑超过 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 台
收敛要求 低 高
配置能力 初学者 有经验

思考

  1. RIP 的最大跳数限制为 15 是一种"设计选择"还是"技术限制"?如果是技术限制,能否通过扩展协议解决?
  2. 如果一个 RIP 网络的 metric 刚好为 15,此时链路故障后走了更长的路径(16 跳),从业务角度看会有什么影响?
  3. RIP 的 15 跳限制在今天的网络中还有什么意义?为什么 RIP 还没有被淘汰?

下篇预告:第37篇:路由优先级(Preference)与度量值(Metric)