☰
RIP综合练习全解析:从协议原理到抓包排障
2026/10/5 3:14:07 网站建设 项目流程

看到“rip综合练习”这个题目,我第一反应不是“又是个老掉牙的协议”,而是想起自己当年蹲在GNS3前面,一遍遍敲show ip route、盯着RIP更新报文发呆的日子。如果你正准备做这个练习,或者已经被老师/考题架上去了,那我先给你交个底:RIP是理解所有动态路由协议的敲门砖,把rip综合练习做扎实了,后面学OSPF、IS-IS会顺滑非常多,因为你真正搞懂的不是命令,而是“路由到底是怎么被学来的”。这篇内容就是把你可能遇到的原理、配置、抓包、排障一次讲透,不管你是刚接触路由的初学者,还是想快速补一遍RIP细节的运维老哥,都能直接照着练。

1. 为什么要把“RIP综合练习”当作第一课

1.1 RIP在路由协议家族中的位置

先说结论:RIP属于距离矢量协议。它和OSPF(链路状态)走的是两条完全不同的技术路线。距离矢量协议的核心逻辑非常朴素——“我不认识全网,我只听邻居说,并且完全相信邻居”。每台路由器定期把自己知道的路由信息,原封不动地告诉直连邻居,邻居再加上自己的跳数继续转发。这种“口口相传”的模式,就是RIP的老底子。

你可能会问,现在生产环境里哪儿还有RIP的身影?确实,大型网络基本都是OSPF、IS-IS、BGP的天下,RIP只存在于某些小型网络或者老旧设备上。但经典之所以经典,就在于它用最少的机制讲清楚了路由协议必须面对的所有核心问题:度量值怎么选、更新频率怎么定、环路怎么防、收敛怎么做。把这些一次性弄明白,再看OSPF的DR/BDR、LSA泛洪、SPF计算,你的理解会完全是另一个深度。

1.2 做完这套练习,你该带走什么能力

我见过很多学生做完RIP练习只说得出“配了几条命令、show了一下路由表”,这就是练了个寂寞。一套合格的RIP综合练习,做完你至少该带走四样东西:

第一,能徒手画出RIP的报文交互过程。知道更新是从UDP 520端口发出的,RIPv1用广播255.255.255.255,RIPv2用组播224.0.0.9,一个响应包里最多塞25条路由,多了就分多个包发。第二,能解释清楚度量值。RIP不看带宽不看延迟,就看跳数,最大有效跳数是15,16就是不可达。第三,能说出四种防环机制的原理。水平分割、毒性逆转、触发更新、抑制计时器,缺一个就是环路的温床。第四,也是最重要的,能独立排障。路由学不到、路由环路、路由黑洞,给你一台路由器你能用命令和抓包定位问题。

如果你练完这四样都能做到,那这个“综合练习”才算在脑子里真的扎了根。

1.3 练习环境怎么选:GNS3、eNSP还是Packet Tracer

环境选不好,练习体验会差一大截。先说不推荐的:Packet Tracer。它做入门理解还行,但协议实现太简化,很多RIP的细节行为(比如触发更新、抑制计时器的实际表现)在PT里根本看不到,你要想抓包、看debug输出,就会被它憋死。

我个人更推荐GNS3,配合思科IOS或IOL镜像。它的优势是协议实现完整、支持Wireshark直接抓接口的包、能模拟真实故障场景。如果你手头只有华为环境,那eNSP也完全够用,华为AR路由器的RIP实现也很规范,命令风格和思科略有差异(华为是rip 1进入进程,思科是router rip),但只要原理通了,换命令只是查一下语法的事。

另外提醒一句,不管用哪个模拟器,请务必在练习前把拓扑保存成一个工程文件,命名带上日期和实验目的。这种习惯看似不起眼,但等你做“RIPv1对比RIPv2”、“关闭自动汇总前后对比”这种多轮实验时,能少走无数弯路。

2. RIP协议的核心机制:先懂原理再动手敲命令

2.1 距离矢量算法与RIP的度量

RIP的算法名字叫Bellman-Ford,本质就是一个动态规划的分布式版本。每台路由器维护一张路由表,表里每一项包含目的网段、下一跳、出接口和度量值。启动后,路由器给邻居发更新,邻居检查收到的条目:如果这个目的网段我没见过,直接加进来,度量值加1;如果我知道一条更优的路径,就替换;如果收到的路径不如现有路由,但它是从当前最优的下一跳发来的,那就说明拓扑可能有变化,还是得认。

RIP把“距离”简化成了跳数,这是它所有优点和缺点的根源。优点是实现简单、CPU和带宽开销小;缺点也很明显——它完全不考虑带宽和延迟。两台路由器之间哪怕一个是百兆光纤,一个是拨号调制解调器,只要跳数一样,RIP就认为它们一样好。这就是为什么RIP在现代复杂网络里会被淘汰。你在练习中必须亲手感受这个局限性,以后才不会天真地认为“路由协议都是智能的”。

这里还要记住几个关键计时器。更新计时器(Update)默认30秒,路由器每30秒周期性地向所有启用RIP的接口发送完整路由表。失效计时器(Invalid)180秒,如果在180秒内没有收到某条路由的更新,就标记为可能失效。垃圾收集计时器(Flush)240秒,到时彻底从路由表删除。抑制计时器(Holddown)后面专门讲。这几个数字请你练到手熟,排障时第一件事就是对它们。

2.2 RIPv1与RIPv2:哪些坑藏在版本差异里

很多人做RIP练习,第一步就踩了版本坑。在思科设备上,如果只敲router rip不敲version 2,进程默认跑的是RIPv1。RIPv1是有类协议,更新报文里根本不带子网掩码,也不支持VLSM和无类路由,更不能关闭自动汇总。这意味着如果你的网络里用了/30这种子网划分,RIPv1会把它们强行汇总成有类边界,导致路由表混乱。

RIPv2的无类特性解决了这个问题。它引入了一个关键能力:更新报文中携带子网掩码和下一跳字段,支持VLSM、CIDR,并且默认开启自动汇总但可以手动关闭(no auto-summary)。RIPv2还支持明文和MD5认证,以及路由标记,这些在RIPv1里通通没有。

我把两者差异整理成一张对照表,你练习时可以贴在屏幕边上:

对比项RIPv1RIPv2
报文类型有类无类
更新目标地址广播255.255.255.255组播224.0.0.9
是否携带子网掩码否是
支持VLSM/CIDR不支持支持
自动汇总强制开启默认开启,可关闭
认证支持不支持支持明文/MD5认证
附带下一跳字段无有

练习时我强烈建议你把同一套拓扑分别跑一遍RIPv1和RIPv2,然后抓包对比。你会看到RIPv2的路由条目里清清楚楚带着掩码长度,而RIPv1只能靠目的地址猜掩码。这个视觉冲击比你背十遍概念都有用。

2.3 RIP的防环机制到底防了什么

距离矢量协议最怕的就是环路。想象路由器A和B之间链路断了,A发现路由不可达,但B还在30秒后傻乎乎地告诉A“我能到那,跳数是2”,于是A把这条路由学回来,跳数加1变成3;A再回告B,B再变成4……这就是计数到无穷。RIP用跳数16作为无穷大的标记,让这个失控的循环在16跳处戛然而止,但代价是收敛时间非常漫长。

为了抑制环路,RIP准备了四件套。第一件是水平分割:从某个接口学来的路由,永远不再从这个接口通告回去。逻辑很简单,既然邻居告诉我这条路,我再告诉邻居“你也走这条路”没有任何意义。第二件是毒性逆转:比水平分割更猛烈,它允许从某接口学到的路由反向通告,但把度量值直接改成16,等于明明白白告诉邻居“这条路已经烂了”。第三件是触发更新:一旦检测到拓扑变化,不等周期更新计时器,立刻发出更新,把变化告诉全网。第四件是抑制计时器(Holddown),当收到某条路由可能变坏的更新后,路由器会启动一个180秒的抑制窗口,在这段时间内即使收到更优的路径,也不会轻易修改路由表,防止路由在两条路径之间来回弹跳。

你在综合练习里,一定要人为制造一次链路down/up,然后开debug ip rip外加抓包,亲眼看看毒性逆转报文里的metric 16是怎么出现的,触发更新是不是立竿见影的。对这四个机制的观察,才算把RIP协议读懂了。

3. 综合练习实操:从零搭建拓扑到跑通全网路由

3.1 练习拓扑设计与IP规划

模拟器里做实验,拓扑别搞太复杂,但也不能简单到只是一条直连。我建议你搭一个经典的“三台路由器串联+两台PC挂两端”的拓扑,具体长这样:

R1的G0/0接R2的G0/0,R2的G0/1接R3的G0/0,R1的G0/1接PC1所在交换机,R3的G0/1接PC2所在交换机。三台路由器之间的两条互联链路分别是10.0.1.0/30和10.0.2.0/30,两个业务网段分别用192.168.1.0/24和192.168.2.0/24。这个设计的好处是:R1和R3之间存在两跳距离,RIP的跳数累加体现得清清楚楚;两条互联链路都是/30掩码,逼着你必须用RIPv2才能正确处理,正好用来对比RIPv1的毛病。

IP分配我也直接给你:

设备接口IP地址说明
R1G0/010.0.1.1/30连接R2
R1G0/1192.168.1.1/24连接PC1网段
R2G0/010.0.1.2/30连接R1
R2G0/110.0.2.1/30连接R3
R3G0/010.0.2.2/30连接R2
R3G0/1192.168.2.1/24连接PC2网段
PC1网卡192.168.1.10/24网关192.168.1.1
PC2网卡192.168.2.10/24网关192.168.2.1

为什么要用/30而不是更省事的/24做互联?因为/30最小子网恰好容纳两台路由器的两个IP,用这种掩码才能逼出“RIP要正确处理无类路由”的需求,同时也符合真实网络里互联链路的规划习惯。你把这两个/30写进RIPv1里试试,就知道自动汇总有多坑了。

3.2 基础配置步骤与命令详解

环境搭好后,先完成所有接口的基础配置。思科风格的命令如下,我以R1为例:

Router> enable Router# configure terminal Router(config)# hostname R1 R1(config)# interface GigabitEthernet0/0 R1(config-if)# ip address 10.0.1.1 255.255.255.252 R1(config-if)# no shutdown R1(config-if)# exit R1(config)# interface GigabitEthernet0/1 R1(config-if)# ip address 192.168.1.1 255.255.255.0 R1(config-if)# no shutdown R1(config-if)# exit

注意接口视图下一定要敲no shutdown,模拟器里很多接口初始就是管理性down的,漏掉它你会半天查不出问题。R2和R3按表格依次配置即可,PC的IP和网关在图形界面里填好就行。

接口配置完,开始配置RIP。R1的RIP配置命令如下:

R1(config)# router rip R1(config-router)# version 2 R1(config-router)# no auto-summary R1(config-router)# network 10.0.0.0 R1(config-router)# network 192.168.1.0 R1(config-router)# end

这里要解释一个非常容易搞混的点:network命令后面跟的不是接口IP,而是你希望RIP宣告的直连网段。在思科IOS默认语法里,它要求的是有类网络范围。比如你的接口是10.0.1.1,那宣告network 10.0.0.0意味着所有10.x.x.x接口全部参与RIP;如果你的接口是192.168.1.1,宣告network 192.168.1.0正确,你写192.168.1.1也会被自动处理成有类范围。华为设备语法略有不同,但核心逻辑一样,network后面同样是要宣告的网段。

千万记得,RIP只能宣告直连网段,你不能宣告一条自己路由表里根本不存在的网络,这是新手最容易犯的错。R2的配置同理,它需要宣告10.0.0.0(覆盖两个互联接口所在网段),R3宣告10.0.0.0和192.168.2.0。

3.3 验证路由学习过程与抓包分析

配置完成后,依次在R1、R2、R3上执行show ip route rip,你会看到非直连路由开始出现。R1上应该能看到10.0.2.0/30和192.168.2.0/24两条RIP路由,且192.168.2.0/24的度量值显示为[120/2],前面的120是RIP的管理距离,后面的2是跳数。R3同理能看到10.0.1.0/30和192.168.1.0/24,度量值是[120/2]。R2则是能看到两个业务网段,度量值都是[120/1]。

这一步先别急着庆祝,我建议你立刻做两件事。第一,在R1上执行show ip protocols,确认RIP版本是2、自动汇总已关闭、network宣告的网段列表正确、四个计时器的数值是30/180/180/240(思科默认holddown也是180)。第二,用Wireshark在R1和R2的互联链路上抓包,过滤条件直接写udp.port == 520。你会看到每30秒一次周期更新,目标地址是224.0.0.9组播,报文里能展开RIP条目,看到192.168.2.0/24、255.255.255.0、metric 2这些字段。

抓包这段是整套练习里最有价值的部分,没有之一。你亲眼看到路由信息是怎么封装在UDP报文里的,以后理解任何路由协议都不会再觉得是在背天书。我练习时还会顺手把RIPv1和RIPv2的报文各存一份pcap,这个习惯后来帮了我大忙,因为只要打开对比一下路由条目里有没有掩码字段,就立刻能判断网络里跑的是哪个版本。

4. 练习中高频踩坑与排查实录

4.1 路由表里看不到邻居路由,怎么查

综合练习里最常见的翻车现场,是三台路由器配置全敲完了,show ip route ripple却学不到非直连路由。这种问题八成出在三个地方:network宣告错误、接口没起来、被动接口或ACL挡路。

先说network宣告。我见过太多人把network 10.0.0.0写成network 10.0.1.0。在思科IOS上,这会导致RIP只匹配主类网络10.0.0.0的子集?不对,严格来说OS会把输入转换为主类号,但如果你的设备开启了无类路由支持并且做了子网匹配,很多时候反而会漏宣告。最稳的排查姿势是看show ip protocols里的Routing for Networks列表,列表里每一行就是你宣告进去的网络。对照地址规划表,一眼就能看出谁漏了。

再说接口状态。如果你配置后等了一分钟还是学不到路由,赶紧敲show ip interface brief,看看路由器之间互联接口是不是shutdown状态。这个问题模拟器里极其常见,而RIP对更新又没有ACK机制,接口都没起,谁给你发路由更新?

最后是ACL和被动接口。有的练习项目会在接口上配置了ip access-group,或者做了passive-interface。被动接口就是只收不发——它可以接收邻居的更新,但不会主动往该接口发更新。如果你R1的路由表里有邻居给的10.0.2.0,但邻居学不到192.168.1.0,那多半就是被动接口设错了方向。排障时用debug ip rip发一个全局观察,谁在发、往哪儿发、发什么内容,全部一目了然,比瞎猜快得多。

4.2 路由环路和收敛风暴的现场表现

综合练习如果想上强度,我推荐你人为制造一次路由环路来观察。最常用的手法是在R1上配置一条指向R2的静态缺省路由,然后重分发进RIP,同时R2上也配置一条指向R1的静态缺省路由。这时候RIP兴高采烈地把“缺省路由”相互通告,如果链路又出现异常,就会出现典型的环路症状。

现场表现是怎样的?路由器会突然开始收到从同一个邻居反复通告的同类路由,metric越加越大:第一条是1,第二条变成2,第三条变成3,直到16跳不可达。此时debug ip rip的输出会非常热闹,你会看到一台路由器的两条路由条目在报文中反复出现。网络里同时会有大量更新报文泛洪,因为每个周期30秒大家都在互相通告更新版本,收敛时间被拖得很长。

防环机制的观察点就在这个场景里。你会看到一个接口收到的路由在回应报文中变成了metric 16,这就是毒性逆转在起作用。如果你在路由器上配置了holddown计时器,还能看到某条路由进入潜在失效状态后,即使收到更优路径也不立即生效,等待计时器倒计时。这套现象你亲手逮住一次,比单纯背概念要牢靠一万倍。

4.3 自动汇总引发的路由黑洞

RIP还有一个经典坑叫“路由黑洞”,尤其是在有类汇总参与的时候。假设你在R2上宣告了10.0.1.0/30和10.0.2.0/30,如果RIPv2没有执行no auto-summary,R2向外通告时会把这两条汇总成一条10.0.0.0/8。这个汇总条目看起来没问题,但如果你整个网络里10.0.0.0/8是分段的(比如业务网段里还有10.2.0.0/24),那么这条/8汇总就会把不该通的地方也吸进来,导致数据包发过去后又找不到具体路由,被默默扔掉。

怎么排查?看路由表时注意前缀长度。如果192.168.1.0/24旁边突然出现一条192.168.0.0/16,这就是自动汇总干的好事。解决方法在RIPv2下就一行命令:no auto-summary,每条路由器上都要敲。如果是RIPv1,对不起,它压根就不能关,这也是为什么现代网络必须淘汰RIPv1的核心原因之一。练到这里,你再回头看1.2节的能力清单,理解又会深一层。

4.4 计时器与被动接口的连环坑

最后一个坑是计时器不一致。如果你在R1上把更新计时器改成了60秒,而R2、R3还保持默认30秒,那么R1发出去的更新频率和R2不一致。短期内看不出问题,但只要链路抖动一次,R1的失效计时器过慢,就会在故障期间继续保持“已过期”的旧路由通告,把邻届带入认知混乱。

我在自己的综合练习里故意这么干过一次,然后把Wireshark打开对比报文时间戳,你能清清楚楚看到R1的更新间隔是60秒,而另两台是30秒。这种故障在现实中可能就是一次重大事故的温床,但在练习里是最好的教材。统一做法是让全网RIP计时器保持一致,或者干脆都用默认值。顺便说一句,被动接口如果和ACL叠加使用,还能折腾出“能学到但学不全”的奇葩现象,这种组合问题等你把基础排干净了再去挑战。

练到这里,整套rip综合练习已经远远超出了“配几条命令”的范围。我个人强烈建议你把RIPv1和RIPv2分别完整跑一遍,再用Wireshark把两种版本的更新报文存下来对比,你会发现路由协议演进背后的逻辑被一条条报文彻底照亮了。这个动作值回你所有的练习时间。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询