☰
RIP动态路由实验:从距离矢量原理到华为eNSP配置与排错
2026/10/3 9:17:17 网站建设 项目流程

上次给学员讲完静态路由配置,紧接着就有人问:动态路由什么时候上?能不能直接跳到OSPF?我的回答一直很明确——先把RIP跑通再碰OSPF。原因不是RIP有多重要,而是它足够简单,简单到你可以在半小时内完整体验“一台路由器是怎么通过邻居的转述去学习远端网段”的完整过程,这是理解所有动态路由协议的地基。这篇文章就是一次完整的RIP动态路由实验实录,基于华为eNSP环境,包含拓扑规划、接口配置、协议宣告、路由表解读,以及我在复现过程中踩到的各种坑和对应的排查方法。适合刚学完静态路由、正准备跨入动态路由门槛的朋友,也适合要考网络工程师相关认证、想回头补一补距离矢量协议细节的同学。

1. 项目概述与核心需求解析

1.1 RIP协议在今天的定位:老,但不能跳过

RIP(Routing Information Protocol,路由信息协议)诞生于上个世纪80年代,是目前还在活跃使用的最老牌动态路由协议。它基于距离矢量(Distance Vector)算法,核心衡量标准只有一个——跳数,最大有效跳数15,第16跳直接视为不可达。每台运行RIP的路由器,会周期性地把自己的整张路由表以UDP 520端口发送给邻居,收到后就套用“到达目标网络 = 邻居告诉我的距离 + 1”的规则来评估。

如果你觉得这段话太像教科书,那我换个说法。RIP这套机制本质上和“小区口口相传的消息扩散”一模一样:我不一定知道目的地在哪,但我的邻居告诉我它离那边还有几步路,那我记下来,告诉下一个邻居时在前面加一步。每个节点只需要相信直接邻居,完全不需要掌握全网地图。

很多人会疑惑:现在企业网里跑OSPF、IS-IS、BGP,学RIP是不是浪费时间?我的看法是,RIP的价值不在协议本身,而在它的教学模型。距离矢量算法、防环机制、计时器交互、路由收敛这些概念,在OSPF和BGP里同样存在,只是实现方式更复杂。把RIP这个最简单的样本吃透,后面学OSPF的LSA、邻接关系、区域设计时会顺手很多。

1.2 实验拓扑与网络需求拆解

本次实验用三台路由器串联成一条线。R1作为业务网段192.168.1.0/24的接入设备,R3作为业务网段192.168.3.0/24的接入设备,中间由R2连接,两个互联网段分别是192.168.12.0/24和192.168.23.0/24。拓扑图用文字描述也非常直观:

  • R1的G0/0/0接口接R2的G0/0/0,网段192.168.12.0/24
  • R2的G0/0/1接口接R3的G0/0/0,网段192.168.23.0/24
  • R1的G0/0/1独立出一个业务网段192.168.1.0/24
  • R3的G0/0/1独立出一个业务网段192.168.3.0/24

我故意把拓扑做成一条线,没有加冗余链路。这样设计的用意是让RIP的“逐跳传递”特性彻底暴露出来:R1和R3之间没有任何直接连接,R3上的业务网段必须经过R2“转述”才能被R1学到。如果网络里还有其它路径,反而会引入路由环路、路径选择等干扰变量,不利于新手观察基础行为。

这项实验的核心需求可以拆成三点:第一,让R1主动学习到192.168.3.0/24,让R3主动学习到192.168.1.0/24;第二,理解RIP路由表中“下一跳”和“跳数”的含义——R1看到192.168.3.0/24的下一跳应该指向R2,跳数为2,而不是指向R3;第三,在链路出现故障时验证RIP的路由更新与撤销机制。

1.3 实验预期与实际观察基线

配置全部完成并等待RIP更新周期之后,需要确认几个明确结果。R1的路由表中必须出现一条通过RIP学习到的192.168.3.0/24路由,协议类型字段显示RIP,优先级Preference为100,Cost为2跳,下一跳为192.168.12.2。R3那边对称地出现192.168.1.0/24,Cost同样为2,下一跳是192.168.23.2。除此之外,网络中间段192.168.12.0/24和192.168.23.0/24也会被通告出来,但因为三台路由器都直连着其中某段,相对不那么显眼。

在这个预期基础上,还应该做一个端到端测试:在R1上ping 192.168.3.1,应该能通;在R3上ping 192.168.1.1,同样能通。如果这两条命令都退回100%丢包,那说明动态路由根本没有生效,问题基本出在RIP宣告范围或进程配置上,可以直奔第4章的排查部分。

2. 核心技术原理拆解

2.1 距离矢量算法:只靠邻居“讲故事”的选路机制

RIP选路的思想源自贝尔曼-福特算法(Bellman-Ford),核心就一句话:每台路由器只维护自己到各个目的网段的“距离”和“下一跳”,并且定期把这个信息原样告诉邻居。邻居收到后,会做两个动作。第一步是累加距离,既然你告诉我去目标网络要经过X跳,而你我又直接连着,那么从我出发去目标网络就是X加1跳。第二步是比大小,如果这个新算出来的跳数比我当前路由表里记录的更小,我就更新路由条目,下一跳指向你;如果更大或相等,就当作噪音忽略。

这套逻辑甚至不需要知道自己和邻居之间发生了什么,只要收到更新就重新计算一遍。举个例子,R3把自己的业务网段192.168.3.0/24通过接口G0/0/0发出去,R2在G0/0/1接口收到这条更新,计算得到跳数为1,于是在路由表里把下一跳记录为192.168.23.3。随后R2在自己的RIP更新周期里,把这条跳数为1的路由继续发给R1。R1在G0/0/0接口收到后,再算一次,得到跳数为2,下一跳为192.168.12.2。

整个过程你可以理解成消息在一条链路上传话。R1离最终目标虽然物理上只有“两段网线”的连接,但这并不重要,RIP只认经过了几台路由器,不认线缆长度和带宽。所谓“动态”,就是路由器不再需要网络管理员逐条手工指定“去3.0网段走哪”,而是自行通过邻居间的周期对话完成了选路表的建立。

2.2 RIP的防环机制:为什么它总被吐槽收敛慢

动态路由协议最怕的是路由环路——两台路由器互相认为对方才是去往某个目标的最佳路径,结果数据包在中间死循环。RIP针对环路设计了一套组合拳,这是整个实验中最值得仔细琢磨的部分。

第一个机制是触发更新(Triggered Update)。当某条路由发生变化,尤其是接口断开时,路由器不必等30秒的周期更新,可以立刻向所有邻居发送最新的路由信息,告诉它们“我这边发生变化了”。第二个机制是水平分割(Split Horizon),核心原则非常直白:从哪个接口学到的路由,就不再从那个接口原路发回去。因为邻居既然能直接告诉你这条路由,说明它自己也不需要你再往回传一份。

第三个机制是毒性反转(Poison Reverse),可以理解成“把坏消息说得更狠”。当路由器知道某条路由已经不可达时,不会假装它不存在,而是主动把这条路由的跳数置为16——也就是RIP世界里的“无穷大”,并通告给邻居。用16跳来明示“此路不通”,比单纯不通告要高效得多。第四个机制是抑制计时器(Hold-Down),收到不可达信息后,路由器会在一定时间内不轻易接受关于目标网络的新路由,从而避免因网络抖动导致频繁切换。

有了这些机制,RIP仍然背负着“收敛慢”的名声,根本原因在于它的默认周期更新是30秒,再加上计时器的叠加,一旦链路故障,路由表往往要几十秒甚至几分钟才能彻底稳定下来。这正是RIP从骨子里适合教学、不适合大规模生产网络的原因。

2.3 四个定时器与协议版本的关键区别

RIP的行为完全由一组计时器驱动。华为VRP系统默认的RIP计时器如下表所示:

计时器默认值作用说明
Update(更新计时器)30秒周期性向所有运行RIP的接口发送整张路由表
Timeout(老化计时器)180秒一条路由超过这个时间未收到更新,就被标记为不可达
Suppress(抑制计时器)180秒不可达路由进入抑制状态,暂不对外通告,等待网络恢复
Garbage-Collect(垃圾收集计时器)120秒抑制期结束后再经过该时间,路由条目被彻底删除

初学者最容易混淆的是Timeout和Suppress。简单说,Timeout是“我好久没收到你的好消息,我怀疑你坏了”,Suppress是“我已经认定你坏了,但先不急着下最终结论,给网络一点恢复时间”,Garbage-Collect则是“确认你已经没了,清理掉这条记录”。

RIP协议还有v1和v2两个版本,它们在实验中的差别极其关键。RIPv1是经典的有类协议,报文里不携带子网掩码,不支持VLSM和CIDR,用广播地址255.255.255.255发送更新。RIPv2则支持发送子网掩码、支持触发更新、支持明文或MD5认证,并且改用组播地址224.0.0.9发送更新,避免打扰网络中不运行RIP的设备。在日常配置中,几乎已经不会有理由继续使用v1版本,除非在兼容某些极其老旧的设备。

3. 实验环境搭建与核心配置实操

3.1 环境选型:为什么用华为eNSP而不是其它模拟器

RIP实验可以用思科Packet Tracer、GNS3、华为eNSP,也可以直接用物理设备组网。我这次选择华为eNSP,主要是因为国内教材和认证考试普遍采用华为命令体系,而且eNSP里自带的AR系列路由器支持完整的RIP功能,包括版本切换、验证命令和抓包观察。对于只打算验证协议行为的朋友,任何一款模拟器都够用;但如果你的目标是就业或考证,尽早熟悉华为VRP的命令行风格会更有性价比。

使用eNSP时有个小提示:新建拓扑后一定要先“启动”设备组件,点击工具栏上的启动按钮让AR路由器真正跑起来。部分安装版本在首次启动AR时会报“错误代码40”或“错误代码41”,多半是VirtualBox版本不兼容,需要把VirtualBox和eNSP的版本对齐。我见过有人花半个小时排查配置,最后发现是设备根本没有启动成功,这个前置检查不能省。

3.2 接口地址规划与基础联通性检查

三台路由器启动完成后,先给接口配上IP地址,并确认物理链路能通。R1的配置命令如下:

system-view sysname R1 interface GigabitEthernet0/0/0 ip address 192.168.12.1 255.255.255.0 quit interface GigabitEthernet0/0/1 ip address 192.168.1.1 255.255.255.0 quit

R2的配置如下:

system-view sysname R2 interface GigabitEthernet0/0/0 ip address 192.168.12.2 255.255.255.0 quit interface GigabitEthernet0/0/1 ip address 192.168.23.2 255.255.255.0 quit

R3的配置如下:

system-view sysname R3 interface GigabitEthernet0/0/0 ip address 192.168.23.3 255.255.255.0 quit interface GigabitEthernet0/0/1 ip address 192.168.3.1 255.255.255.0 quit

配置完成后,依次在R1上执行display ip interface brief,检查接口状态是否UP,IP地址是否生效。然后做一次简单的连通性验证:R1 ping 192.168.12.2,R2 ping 192.168.23.3,R3 ping 192.168.23.2。这三条ping测试必须全部成功,才能说明底层链路没有问题。如果这一步就有不通的情况,后面配置RIP只会雪上加霜,所以基础连通性检查一定不能跳过。

3.3 RIP进程启动与network宣告:实验的核心一步

接口配置完成只是搭好了物理骨骼,动态路由要让网络自动学习,关键在宣告。进入R1的系统视图后,执行以下命令:

rip version 2 network 192.168.12.0 network 192.168.1.0 quit

这里逐条解释。输入rip后,系统进入RIP进程视图并默认创建进程1。version 2是强制指定的版本号,如果不写,默认是v1,v1无法传递子网掩码,后续你会发现路由学到了但掩码全是主类网络的样子。network命令的含义非常关键,它表示“启动哪些直接网段上的RIP”,这里的网段要填路由器自身直连的网段,不是你要“去往”的网段,这点和静态路由完全相反。

R2需要宣告两个互联网段,配置如下:

rip version 2 network 192.168.12.0 network 192.168.23.0 quit

R3需要宣告自己的业务网段和互联网段:

rip version 2 network 192.168.23.0 network 192.168.3.0 quit

三个进程配置完成后,等上几秒钟,让RIP完成第一个更新周期。如果一切正常,三台设备之间会互相学习到完整的动态路由。这里有个细节值得多说一句:network宣告的是一个范围概念,华为设备会根据该网段上真实存在的接口来绑定RIP运行,而不是简单地在全局广播中带上这个网段。所以漏宣告任何一个直连网段,对应的接口就直接退出了RIP域,这个接口上的邻居关系也会一并消失。

3.4 验证命令与路由表深度解读

RIP配置是否成功,不能只靠“看起来配得对”,必须看路由表。在R1上执行:

display ip routing-table

输出中会看到类似下面的关键条目:

Destination/Mask Proto Pre Cost Flags NextHop Interface 192.168.3.0/24 RIP 100 2 D 192.168.12.2 GigabitEthernet0/0/0

解读这条信息的逻辑很重要。Proto字段是RIP,标明这是动态学习出来的路由;Pre为100,这是华为RIP的默认协议优先级,优先级数字越小越优先;Cost为2,表示R1到达192.168.3.0/24需要经过两台路由器;下一跳是192.168.12.2,说明R1把数据先发给R2,剩余路径由R2继续转发。

在R1上还可以使用更专门的路由命令:

display rip 1 route

这条命令直接显示RIP协议自身的路由表,可以看到路由的当前状态,是正常的Aging(老化计数)还是处于Suppress(抑制)状态,对排查问题很有帮助。

R3那边应该对称地看到192.168.1.0/24,Cost为2,下一跳为192.168.23.2。最后别忘了做端到端测试,在R1上执行:

ping 192.168.3.1

我实测时这条ping是能够通的,时延标识在eNSP里通常为毫秒级。通了就说明动态路由完全生效,整个实验最核心的目标已经达成。

4. 常见问题与排错技巧实录

4.1 经典坑一:只宣告业务网段,漏宣告互联网段

这是我在带学员做实验时见到的最高频错误。很多人配置RIP时,只想到网络里的业务网段192.168.1.0和192.168.3.0,于是在R1上宣告了192.168.1.0,却没有宣告192.168.12.0。结果就是R1的RIP进程在G0/0/0接口上完全没有使能,R1和R2之间根本没有建立RIP邻居关系。

现象表现为:R1的路由表里有直连的192.168.1.0和192.168.12.0,但RIP路由一片空白。R2那边可能学到了192.168.3.0(如果R2漏宣告的更少),却学不到R1的192.168.1.0。用display rip neighbor查看,会发现邻居数为0。

解决方式就是回到RIP视图把互联网段补上,再次等待更新周期即可。排这个坑的收获是:RIP的邻居关系并不是自动建立在所有接口上的,只有明确宣告过的直连网段才会运行RIP,这条规则和OSPF在接口上启用进程的默认行为有本质区别。

4.2 经典坑二:链路断开后路由迟迟不消失

在R2上把连接R3的接口shutdown掉,然后连续观察R1的路由表。刚开始的十几秒内,R1上192.168.3.0/24这条路由依然显示跳数为2,但是已经下行不通。大约经过一次更新周期后,R2会向R1通告这条路由的跳数为16,也就是不可达状态。这时R1上的RIP路由表中该条目会进入抑制状态,虽然还在表里,但已经不再用于实际转发。再过了垃圾收集计时器的时间,这条路由最终被彻底删除。

很多人在这一步着急,以为RIP出了问题,其实恰恰相反,这正是RIP路由收敛机制的正常表现。RIP并不像OSPF那样能秒级感知拓扑变化,它的收敛依赖计时器逐级推进。如果想让实验过程更快,方便观察收敛细节,可以在RIP视图下调小计时器,例如执行times命令把更新周期调成5秒,老化调成30秒,这样整个收敛过程会被压缩到肉眼可观察的范围内。但对于初学者,我还是建议先用默认计时器完整走一遍,体验什么叫“慢收敛”。

4.3 经典坑三:接口配置了IP却忘了开启RIP宣告

和坑一看起来很像,但成因完全不同。有的拓扑里三台设备互联网段很多,中间某台路由器的某个接口只配了IP,没有把该网段加入network宣告。比如R2只宣告了192.168.12.0,漏宣告192.168.23.0,会造成R2和R3之间邻居关系为0,R3学不到任何RIP路由,而R1却能正常地通过R2学到一部分路由。这种情况下排查会有点迷惑,因为网络整体看起来“部分正常”。

我排查这类问题时的习惯是先看邻居表,再看特定接口上的RIP运行状态。用display rip neighbor确认哪些邻居建立成功了,再用display rip 1 interface查看每个接口的RIP使能情况。如果某个配置了IP地址的接口根本没出现在RIP接口列表里,问题大概率就是network宣告漏了。

4.4 其它高频问题速查表

以下表格是我在实际带实验和工作中整理出来的RIP相关高频问题速查:

现象可能原因快速排查命令
邻居表为空互联网段未宣告;版本不一致;接口shutdowndisplay rip neighbor
路由学到了但掩码是主类RIP版本为v1,不支持VLSM检查是否已配置version 2
某接口能收路由但不能发路由接口被设置为静默(silent-interface)display rip 1 interface
收到路由的跳数为16源端认为该路由不可达,处于抑制状态display rip 1 route 查看状态
所有RIP路由在路由表中cost相同但下一跳不同RIP默认支持等价负载均衡,可能是多条路径检查拓扑是否有多条链路
业务网段无法通信但路由表正常PC或服务器未配置网关检查终端侧网关设置

这张表不用背下来,而是提醒你在排查时保持“先邻居、再路由、后数据”的思维顺序。邻居关系是动态路由的基础,路由表是邻居关系的结果,数据库通信则是最终目标,跳步排查容易绕晕。

5. 实验延伸思考与个人心得

5.1 从RIP到OSPF:同样是动态,思路完全不同

RIP的邻居互相交换“我离目标有几跳”,OSPF则是每台路由器先把自己连接的链路信息和邻居状态广播给全网,让所有设备都拥有一张完整的“网络地图”,再基于这张地图独立计算最短路径。这一点差异决定了它们的一切行为:RIP用30秒全量更新,OSPF用触发更新加定期泛洪;RIP以跳数为度量,OSPF以链路开销(通常是10的8次方除以带宽)为度量;RIP最多15跳,OSPF没有类似硬限制。

如果你把RIP玩明白了,学OSPF时会发现很多概念其实能够对号入座:邻居关系、路由优先级、接口网络类型、数据库同步。只是OSPF把RIP里模糊的“信任邻居”换成了严谨的LSA交换、区域划分和链路状态数据库校验。这也是我一直坚持让学员先做RIP实验的原因,这些底层逻辑一旦建立,后面再面对复杂协议就不会觉得概念是悬空的。

5.2 RIP在现代网络里还有位置吗

这个话题常被拿来争论。从生产环境看,绝大多数企业网络已经默认OSPF或静态路由,RIP确实不是首选。不过在一些特定场景它依然存在:极小型分支机构、仅有两三台路由器的简易组网、需要兼容上世纪遗留设备的环境,偶尔还能看到RIPv2在默默运行。IPv6环境下的RIPng也有一定部署,但热度远不如OSPFv3。

我的建议很直接:RIP可以作为教学实验重点去学,但不建议在新设计的网络里主推它。如果你在公司网络里看到RIP,大概率是老设备留下的存量配置,迁移时更多考虑的是兼容性和业务中断窗口,而不是协议优劣本身。能把RIP实验的每个行为解释清楚,说明你已经具备了距离矢量协议的基本功,这时候再去学OSPF会从容很多。

5.3 我个人在反复复现这个实验后积累的几点体会

这套实验我反复带过很多轮,每次操作流程相同,但不同的学员总能在不同环节踩出新的坑。做工程和做实验的最大区别在于,工程里遇到问题要优先保障业务恢复,实验里则可以慢慢解剖问题。我建议在做RIP实验时不要只是“照着命令敲一遍”,而是刻意制造故障去观察现象,比如断开中间链路看路由收敛过程,改掉一端的version版本看邻居是否会消失,加一条冗余链路看RIP如何选路。

最后分享一个很实用的小技巧:在eNSP里可以启动Wireshark抓包观察RIP协议报文。抓包时关注UDP 520端口的数据包,RIPv2的更新报文目标地址是224.0.0.9,打开报文后可以看到路由条目里携带的IP前缀、子网掩码和跳数,这些直观数据比任何教材都更能帮你理解RIP的协议行为。我自己当年就是从抓包里真正看懂了“跳数累加”是怎么回事,希望这个技巧也能帮你把最后一点模糊地带补上。

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

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

立即咨询