ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

RIP动态路由实验:从距离矢量原理到华为eNSP配置与排错

RIP动态路由实验:从距离矢量原理到华为eNSP配置与排错 上次给学员讲完静态路由配置紧接着就有人问动态路由什么时候上能不能直接跳到OSPF我的回答一直很明确——先把RIP跑通再碰OSPF。原因不是RIP有多重要而是它足够简单简单到你可以在半小时内完整体验“一台路由器是怎么通过邻居的转述去学习远端网段”的完整过程这是理解所有动态路由协议的地基。这篇文章就是一次完整的RIP动态路由实验实录基于华为eNSP环境包含拓扑规划、接口配置、协议宣告、路由表解读以及我在复现过程中踩到的各种坑和对应的排查方法。适合刚学完静态路由、正准备跨入动态路由门槛的朋友也适合要考网络工程师相关认证、想回头补一补距离矢量协议细节的同学。1. 项目概述与核心需求解析1.1 RIP协议在今天的定位老但不能跳过RIPRouting 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/24R2的G0/0/1接口接R3的G0/0/0网段192.168.23.0/24R1的G0/0/1独立出一个业务网段192.168.1.0/24R3的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为100Cost为2跳下一跳为192.168.12.2。R3那边对称地出现192.168.1.0/24Cost同样为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 quitR2的配置如下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 quitR3的配置如下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检查接口状态是否UPIP地址是否生效。然后做一次简单的连通性验证R1 ping 192.168.12.2R2 ping 192.168.23.3R3 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是强制指定的版本号如果不写默认是v1v1无法传递子网掩码后续你会发现路由学到了但掩码全是主类网络的样子。network命令的含义非常关键它表示“启动哪些直接网段上的RIP”这里的网段要填路由器自身直连的网段不是你要“去往”的网段这点和静态路由完全相反。R2需要宣告两个互联网段配置如下rip version 2 network 192.168.12.0 network 192.168.23.0 quitR3需要宣告自己的业务网段和互联网段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/24Cost为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之间邻居关系为0R3学不到任何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-interfacedisplay 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的协议行为。我自己当年就是从抓包里真正看懂了“跳数累加”是怎么回事希望这个技巧也能帮你把最后一点模糊地带补上。
返回列表