上午做实验,我把三台路由器的配置全部清空,准备完整跑一遍RIP。如果你搜“RIP”进来是为了找菲林RIP软件,先说清楚:这篇要聊的是路由信息协议,不是印前排版里那个栅格图像处理器。两个缩写同名,方向完全不同。我这里说的RIP,是网络设备之间用来交换路由信息、自动建立路由表的动态路由协议。虽然如今生产环境里它不算主力,但理解RIP,就是理解动态路由最好的入门方式,CCNA、HCIA、软考网工这些考试里也都有它的位置。
这篇文章我会用GNS3搭一个三台路由器的实验环境,从接口IP配置开始,逐步把RIPv2跑起来,再用实际现象验证路由表、定时器、断链收敛和防环机制。最后把我踩过的坑整理成一份速查表,做实验遇到问题可以照表自查。
1. 实验背景与设计思路
1.1 为什么还要折腾RIP
很多人觉得RIP已经过时了,工作里几乎见不到,学了有什么用?这话对了一半。生产网络确实很少用RIP跑大规模路由,但它没有被移出主流网络教材,原因很简单:RIP是最容易完整讲明白的动态路由协议。
我见过不少同学一上来就学OSPF,被区域、LSA、DR/BDR弄得晕头转向。如果先做一遍RIP实验,很多概念会顺理成章:邻居关系是什么意思、路由度量是什么、路由更新怎么触发、环路怎么防。RIP把这些问题都用一个极简模型解释了。
另外,RIP实验的成本非常低。三台路由器、几根链路就能撑起完整场景,而且现象很直观。你用RIPv2配置完,路由表立刻能看到变化,不像一些复杂协议需要等一堆进程协商。对初学者来说,这种“配置完立刻有反馈”的体验特别重要。
1.2 RIP的核心机制:距离向量与三大计时器
RIP是典型的距离向量协议。什么叫距离向量?可以理解成每个路由器只相信自己邻居说的话,邻居告诉我它知道哪些网段,我就把这些信息记下来,再告诉我的下一个邻居。
它的度量值就是跳数。每经过一台路由器,跳数加1,最大跳数是15,跳到16就代表不可达。这个设计非常朴素,你可以把跳数想象成快递的转运节点数:15次转运还能送到,超过这个数就没人接了。
RIP有三个关键计时器,实验里会反复遇到:
- 更新计时器:默认30秒,每30秒向邻居发送一次完整的路由表。
- 失效计时器:默认180秒,如果180秒内没收到某条路由的更新,就认为它不可达。
- 刷新计时器:默认240秒,如果240秒内还没恢复,就从路由表中删掉这条路由。
这三个计时器决定了RIP的收敛速度。也正是这段漫长的等待时间,让RIP在真实网络中逐渐被OSPF等协议取代。但你亲手在模拟器里体验一次“断链后等180秒路由才变”的过程,会比任何PPT都直观。
1.3 实验拓扑与地址规划
我用的拓扑是三角形三台路由器互连。这样设计不是图省事,而是为了验证故障切换:如果一台路由器到目标网段的直连链路断了,它还能不能绕到另一条路径上?只有两条平行链路的拓扑测不出这个效果。
三台路由器分别命名为R1、R2、R3。每条直连接口用30位掩码的地址段,环回口模拟业务网段。规划是这样的:
| 设备 | 接口 | IP地址 | 用途 |
|---|---|---|---|
| R1 | G0/0 | 10.0.12.1/30 | 连接R2 |
| R1 | G0/1 | 10.0.13.1/30 | 连接R3 |
| R1 | Loopback0 | 192.168.1.1/24 | 模拟业务网段 |
| R2 | G0/0 | 10.0.12.2/30 | 连接R1 |
| R2 | G0/1 | 10.0.23.1/30 | 连接R3 |
| R2 | Loopback0 | 192.168.2.1/24 | 模拟业务网段 |
| R3 | G0/0 | 10.0.13.2/30 | 连接R1 |
| R3 | G0/1 | 10.0.23.2/30 | 连接R2 |
| R3 | Loopback0 | 192.168.3.1/24 | 模拟业务网段 |
搭这个拓扑的目的很明确:让所有设备都能通过RIP学到其他设备的业务网段,同时保留一条备用路径。后面做断链实验时,R1到R2业务网段原本有直连路径,也有经过R3的绕行路径,你才能看到RIP在路径切换时的真实表现。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与基础配置
2.1 搭一套三路由器实验环境
我在GNS3里建了一个新项目,拖了三台思科IOS路由器进拓扑,用以太网口互拉连线。如果你不熟悉GNS3,也可以用EVE-NG或者华为的eNSP,操作思路完全一样。
提醒一个新手最容易忽略的点:GNS3里刚拖出来的路由器,所有物理接口默认都是down状态。你必须进到接口敲no shutdown,接口才会起来。很多“配置完全一样怎么就不通”的问题,九成是接口没开启。
如果手头没有路由器镜像,另一个思路是用三台Linux虚拟机跑bird或者Quagga这样的开源路由软件,也能实现RIP,不过命令行体验和Cisco IOS差异较大。我这里以Cisco IOS为例,因为它的show命令和debug输出在排查问题的时候非常清晰。
2.2 接口地址配置与基础连通性排查
先把三台路由器的接口IP配好。这一步不需要启动任何路由协议,目标是让直连链路能互相ping通。
R1上的接口配置:
bash复制interface GigabitEthernet0/0
ip address 10.0.12.1 255.255.255.252
no shutdown
!
interface GigabitEthernet0/1
ip address 10.0.13.1 255.255.255.252
no shutdown
!
interface Loopback0
ip address 192.168.1.1 255.255.255.0
!
R2的配置类似,只是地址换成10.0.12.2、10.0.23.1,Loopback0用192.168.2.1。R3也照这个逻辑配一遍。这里多说一句:30位掩码255.255.255.252代表一个只有两个可用IP的段,正好用于点对点链路,不浪费地址。
配置完先检查接口状态,用show ip interface brief,把每个接口的status和protocol都确认一遍。然后从R1 ping R2的10.0.12.2,从R1 ping R3的10.0.13.2。如果ping不通,先不要把问题甩给RIP,大概率是物理接口没起来,或者地址掩码写错。
2.3 激活RIPv2:配置与验证
RIP配置非常简单,但正因为简单,很多人反而不理解每条命令在做什么。先看R1的完整RIP配置:
bash复制router rip
version 2
network 10.0.0.0
network 192.168.1.0
no auto-summary
R2的RIP配置:
bash复制router rip
version 2
network 10.0.0.0
network 192.168.2.0
no auto-summary
R3的RIP配置:
bash复制router rip
version 2
network 10.0.0.0
network 192.168.3.0
no auto-summary
需要注意的是5.1解释network命令的作用。network 10.0.0.0并不是说“把10.0.0.0这个网段宣告出去”,而是告诉RIP进程:凡是接口IP属于10.0.0.0这个范围的,都要参与RIP。因为三台路由器上所有互联接口都是10.0.x.x,所以一条network 10.0.0.0就全部覆盖了。同理,每条环回接口的网段也要单独被network命令包含进去。
配置完成后,show ip protocols能确认RIP版本和参与接口,show ip route能看动态学习到的路由。我建议每个接口都加no auto-summary,这是RIPv2在无类网络上工作的前提,后面会专门讲为什么它这么关键。
2.4 network命令的正确理解与常见用法
这个点值得单独拿出来说,因为它确实是很多人卡住的地方。以前有朋友问我,RIP里network命令后面写了网段,怎么路由表里还是空的?我一看他的配置,路由器接口是172.16.10.1/24,他写的是network 172.16.10.0,这没问题。但另一台路由器的接口地址是192.168.20.1/24,他却忘了写network 192.168.20.0。
network命令本质上是在匹配“接口所在的网络”,不是匹配“从某个接口发出去的数据包”。只要你希望某个接口参与RIP,就必须让接口IP落在某个network命令声明的范围内。要是有接口没被任何network覆盖,那这个接口所连接的网段就不会出现在RIP更新中。
3. 实验中的关键验证
3.1 查看路由表:R路由条目到底长什么样
配置完RIP后,在各台路由器上执行show ip route,能看到带“R”标记的条目。比如在R1上,应该能看到类似这样的输出:
bash复制R 192.168.2.0/24 [120/1] via 10.0.12.2, 00:00:07, GigabitEthernet0/0
R 192.168.3.0/24 [120/1] via 10.0.13.2, 00:00:11, GigabitEthernet0/1
我来拆解一下这条输出的含义。R代表这是RIP动态学到的路由。120是RIP的管理距离,也就是这条路由的可信程度。[]里面的1是跳数,意思是到达192.168.2.0只需要经过R2一台设备。via后面是下一跳地址,GigabitEthernet0/0是出接口。
这个管理距离值得解释解释。如果一台路由器同时通过RIP和OSPF学到了同一个网段,它会比较管理距离,数字越小越可信。RIP的管理距离是120,OSPF是110,所以同一个目标网段,路由器会优先用OSPF的结果。这也是RIP在真实网络里“打架打不过”OSPF的原因之一。
我建议你在实验里配合使用show ip rip database,这条命令能看到RIP进程内部维护的数据库,比show ip route更底层一些。当路由表里没有某条路由时,可能数据库里有但被抑制了,原因就得去数据库里找。
3.2 定时器与收敛节奏:等30秒看一次更新
RIP每30秒发送一次完整路由表,这个特性用debug ip rip一眼就能看明白。在R1上执行:
bash复制debug ip rip
你会看到类似这样的输出:
bash复制RIP: sending v2 update to 224.0.0.9 via GigabitEthernet0/0 (10.0.12.1)
RIP: build update entries
192.168.1.0/24 via 0.0.0.0, metric 1, tag 0
RIP: received v2 update from 10.0.12.2 on GigabitEthernet0/0
192.168.2.0/24 via 0.0.0.0 in 1 hops
注意224.0.0.9这个组播地址,这是RIPv2的标识。RIPv1用的还是广播255.255.255.255,RIPv2改成组播后,只有运行了RIPv2的接口才会去处理这些报文,能少打扰无关设备。
看到debug输出后,建议立即敲undebug all退出调试模式。在实验环境里开一会儿没事,但真机上debug ip rip会大量打印日志,CPU占用很快就上去了。
你观察几十秒就能体会到RIP的工作节奏:源端不断把自己的路由表发给邻居,邻居收到后立刻加入自己的路由表并计算跳数,然后继续往下传。这个过程不复杂,但胜在稳定。真正的问题出在链路断了之后。
3.3 断链实验:慢收敛体验
这是整个实验最值得做的一步。我先在R1上确认192.168.2.0/24的路由是走10.0.12.2这条直连路径,跳数为1。然后模拟R1和R2之间的链路故障:
bash复制interface GigabitEthernet0/0
shutdown
这时候我立刻查看R1的路由表,结果非常有意思:192.168.2.0/24还在,下一跳依然是10.0.12.2,跳数还是1。明明直连链路已经断了,为什么RIP没有立刻改走经过R3那条备用路径?
这就回到了RIP的计时器机制。R1要等失效计时器到期,也就是大约180秒后,才认为这条路由不可用。在失效之后,还有抑制计时器在起作用,R1会暂时不接收其他路由器通告的这条路由的替代路径。整个过程走完,可能要等几分钟,路由才切到R3那条路径。
我实测看到的时间线和预测差不多:链路down掉之后,大约3分钟里R1一直尝试通过已经断掉的接口转发给192.168.2.0的数据包,ping自然全丢。直到差不多够180秒,路由才消失,随后R3那条跳数为2的路径才被采纳,网络才恢复正常通信。
这个“慢”是RIP设计的固有代价,也是后来OSPF能打败它的根本原因。真正在生产环境里,一个链路故障要等3分钟才恢复,业务早就炸了。所以做这个实验一定要有耐心,不要一看到还没收敛就以为配置错了。如果想加快实验节奏,可以手动清理路由表强制重新收敛:
bash复制clear ip route *
在模拟器里这么做没问题,但真实设备上执行这条命令要谨慎,它会短暂清空所有路由,可能引起瞬断。
3.4 防环机制:水平分割与毒性逆转
断链实验除了让你体验慢收敛,还能引出RIP的防环机制。距离向量协议最容易出的问题就是路由环路:A告诉B有条路,B告诉C,C又把这条路由传回A,循环往复,跳数越加越大。
RIP用了几招来防环。第一招是水平分割,意思是路由从哪个接口学到的,就不再从这个接口发回去。这就避免了邻居之间的信息“回灌”。第二招是毒性逆转,当一条链路断了,路由器会把这条路由的跳数标记为16,意思是“不可达”,主动告诉邻居,比默默等待超时要好。
这些机制在日常运行中很难直接看到,但理解它们能帮你
