ARTICLE DETAIL

资讯详情

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

RIP动态路由协议详解:从原理、配置到防环机制一次讲透

RIP动态路由协议详解:从原理、配置到防环机制一次讲透 很多人交RIP作业就是打开模拟器敲完命令截两张图然后交差。老师问一句“你解释一下水平分割”当场卡壳。我自己当年也经历过这个阶段后来在项目里真正用RIP做过一次跨站点的路由互通当时设备太老升级OSPF要重新买授权只能继续用RIP才把协议细节翻来覆去啃了一遍。这篇文章就是站在“做作业”和“真做实网”两个角度把动态路由里最经典的RIP协议一次讲透。不管你是计算机网络课程需要交作业还是刚入行想搞懂路由协议的工作机制按这篇文章的节奏走你能拿到的不只是一份能跑的配置更是一套能应对老师提问的完整知识框架。RIPRouting Information Protocol是动态路由协议里最老牌的距离向量协议已经存在了几十年。它虽然收敛慢、跳数限制苛刻但正因为简单直观成了无数网络课程作业的指定内容。这篇内容会从原理、拓扑设计、配置命令、验证排错到加分项完整走一遍。1. 先搞懂RIP在作业里到底是“背”还是“懂”四个容易漏的核心机制很多同学RIP作业失败不是路由器配置错了而是压根没理解这个协议到底怎么工作。RIP属于距离向量协议它的核心逻辑不复杂每台路由器定期把自己知道的路由信息告诉邻居邻居再告诉自己的邻居这样一步步传递全网路由。这里的“知道”指的是“我能到达哪些网段”“距离”用跳数hop count来衡量。这就像一个宿舍楼传话游戏A宿舍知道食堂在哪告诉B宿舍B宿舍再告诉C宿舍。每一层楼就是一台路由器每传一次路径加一跳。这个类比能解释RIP几乎所有行为——包括它的缺点。1.1 跳数上限15为什么是15而不是100RIP规定一条路由最多只能有15跳16跳就被视为不可达。这个限制不是拍脑袋定的而是为了防环。距离向量协议天生容易产生路由环路A告诉BB告诉CC又告诉A如果允许无限跳数环路里的路由会无限循环增长。设一个上限跳数一旦超过阈值就宣告不可达环路自然被掐断。这个设计直接影响的作业场景是如果你在拓扑里串联超过15台路由器RIP根本没法工作。实训环境一般最多三五台设备不会踩到这个坑但答辩时老师很可能问“RIP为什么不能在大规模网络里用”答案就是跳数上限。1.2 水平分割与毒性反转两个必须讲清楚的防环手段我见过太多作业报告把“水平分割”和“毒性反转”混为一谈甚至有人只写其中一个。这两个机制是RIP防环的核心必须分开理解。水平分割Split Horizon是一条朴素原则从某个接口学到的路由不再从同一个接口发回去。想象一下路由器A告诉我“网段X可达”我如果原封不动告诉A“网段X可达”对A来说完全没用因为它知道得比我清楚。这种没用的信息在网络里还可能形成环路。所以干脆不说。毒性反转Poison Reverse更激进一点从某个接口学到的路由从同一个接口发回去时把跳数改成16即对外宣告不可达。这等于故意告诉对方“这条路我这边已经断了”主动掐断潜在环路。两者的关系是这样的水平分割是“不说”毒性反转是“往反方向说它坏话”。RIPv1默认开启水平分割毒性反转在特定场景下配合使用。作业里你能观察到的现象是R2从R1学到一条路由在R2发给R1的更新包里这条路由的跳数是16。抓包看到这个现象你的作业深度就上了一个层次。1.3 触发更新与抑制定时器收敛慢的根本原因RIP每30秒发送一次完整路由表所有路由信息都靠这个周期性的更新包来传播。但网络拓扑变化时不可能干等30秒所以有了触发更新Triggered Update只要接口状态变化、路由表发生变化立刻向邻居发送更新不需要等定时器到期。但触发更新也有问题——网络里同时有多台设备触发更新的传播存在延迟这期间就可能产生环路。于是RIP引入抑制定时器Holddown Timer当某条路由被标记为不可达后在180秒内即使收到更好的路由信息也暂时不更新这条路由防止因网络中的延迟导致路由抖动。四个计时器我列个表作业报告里直接抄计时器默认值作用更新计时器Update30秒周期性发送完整路由表无效计时器Invalid180秒超过180秒没收到某路由的更新标记为不可达抑制计时器Holddown180秒路由失效后暂时不接收更新防环刷新计时器Flush240秒超过240秒还没收到更新从路由表中彻底删除这四个计时器配合造成了RIP最大的痛点——收敛慢。一个接口down掉最快也要30秒触发更新再经过180秒抑制期全网路由才稳定下来。对比OSPF的秒级收敛RIP确实老旧。但作业里恰恰可以利用这个特性做“收敛对比实验”后面我会细说。2. 拓扑设计与地址规划一份能直接抄的实训作业方案作业的第一步不是配命令而是画拓扑。我推荐用最经典的三台路由器链式拓扑R1连接R2R2连接R3R1和R3之间不直连。这个拓扑是RIP作业的最优解原因有三条第一两台路由器根本体现不出动态路由的价值。直连路由本来就是自动生成的R1能ping通R2那是物理层的事跟RIP无关。第二三台链式拓扑刚好能展示“R1怎么学到R3网段的路由”——答案是经过R2转发这正好解释了距离向量协议“逐跳传递”的本质。第三拓扑简单配置和排错都方便。别给自己找麻烦做全互联那会引入大量等价路径作业演示反而显得混乱。2.1 接口与IP地址规划表我用的规划如下这个规划可以直接照抄设备接口IP地址掩码用途R1G0/0192.168.12.1255.255.255.0连接R2 G0/0R1Loopback0192.168.1.1255.255.255.0模拟R1内部终端网段R2G0/0192.168.12.2255.255.255.0连接R1 G0/0R2G0/1192.168.23.2255.255.255.0连接R3 G0/0R3G0/0192.168.23.3255.255.255.0连接R2 G0/1R3Loopback0192.168.3.3255.255.255.0模拟R3内部终端网段这个规划有几个讲究。互联网段192.168.12.0/24和192.168.23.0/24与其他网段分开一眼就能看出RIP需要宣告哪些网络。用了Loopback接口模拟终端网段省去配置PC的IP和网关的麻烦测试时直接ping 192.168.1.1和192.168.3.3就能验证端到端连通性。另外再说一句地址规划是作业报告里最容易被忽视但老师一定会看的模块。你用了什么网段、为什么这么规划、广播域怎么划分这些写清楚至少说明你真的想知道自己在干什么。2.2 模拟器选择Packet Tracer还是GNS3作业场景下我建议直接用Cisco Packet Tracer。它的优点是上手快、设备库够用、不需要自己导入IOS镜像而且RIP的相关命令全部支持。缺点是部分调试命令比如debug输出的详细程度和真实设备有差异计时器显示也有些简化。GNS3加思科IOS镜像更接近真机但配置门槛高还要解决系统资源占用问题。对做作业来说没必要。除非你的作业明确要求“在真实环境或模拟真实IOS环境完成”否则Packet Tracer完全够用。3. 用Packet Tracer完成RIP配置逐条命令的原理拆解拓扑和地址规划做完进入配置阶段。我用R1举例其他路由器的配置逻辑完全一致。先进入RIP配置模式R1# configure terminal R1(config)# router rip注意router rip这条命令Cisco IOS里后面跟着的默认是RIPv1。当年做作业时很多人在这里踩坑——忘了version 2结果后面配置非有类网段时路由始终不生效。3.1 指定版本为什么强烈建议version 2R1(config-router)# version 2RIPv1是有类别路由协议它广播的路由信息里不携带子网掩码那它是怎么知道一个网段掩码多少的答案是靠IP地址类别自动推断。A类默认/8B类默认/16C类默认/24。如果你的拓扑使用了变长子网掩码VLSMRIPv1会直接出问题。比如192.168.1.0这个网段RIPv1一看是C类自动套用/24没问题。但如果某个接口配的是172.16.1.0/24原本B类网段里的子网RIPv1会因为无法辨认掩码而宣告错误或丢弃。RIPv2支持携带子网掩码CIDR还支持组播224.0.0.9发送更新、接口认证等特性。作业场景下我的建议是无论你的拓扑用没用VLSM统一version 2。原因很简单RIPv2能向下兼容处理RIPv1的路由但是RIPv1处理不了RIPv2的有类信息版本不一致会导致路由表残缺。3.2 network命令的真正含义最容易搞错的陷阱配置RIP最核心也最容易出错的命令就是network。R1(config-router)# network 192.168.1.0 R1(config-router)# network 192.168.12.0很多网工教材说“network命令宣告直连网段”这句话对但不够准确它其实暗含了几个关键行为network命令要求该网段必须存在于路由器的某个接口上如果写了路由器上不存在的网段这条命令会被静默忽略network命令的本质是在匹配到的接口上启动RIP进程决定哪些接口参与路由信息的收发network命令还会把匹配到的直连网段放进自己的更新包里发给邻居。所以配置R1时只需要宣告它自己直连的两个网段192.168.1.0Loopback0和192.168.12.0G0/0。不需要宣告192.168.23.0那是R2和R3直连的网段R1压根没有这个接口。这里有个细节值得对老师说清楚后来的IOS版本支持network后面带子网号如network 192.168.12.0但早期RIP配置习惯写有类网络号。Packet Tracer两种写法都能认但我建议作业里写子网号更直观、更不容易把不连续子网搞混。3.3 passive-interface防止广播风暴的正确姿势在真实网络里RIP更新是广播RIPv1或组播RIPv2发送的。如果R1的Loopback0接口可以理解为连接终端的方向也参与RIP更新那些发给终端的广播报文完全没有意义还会干扰终端设备的网络协议栈。正确做法是把不连接路由器的接口设置为被动接口R1(config-router)# passive-interface loopback 0这条命令的意思是Loopback0接口还能接收和宣告自己的路由信息但不再主动发送RIP更新报文。这里要特别注意如果你把连接路由器的接口设成passive等于直接切断RIP邻居通信别的路由器再也学不到你的路由了。passive-interface配错方向是RIP作业里特别常见的翻车点后面排错章节我会再提。三台路由器都配置完成后完整配置参考如下R1 router rip version 2 network 192.168.1.0 network 192.168.12.0 passive-interface loopback 0 R2 router rip version 2 network 192.168.12.0 network 192.168.23.0 passive-interface loopback 0 ! 如果R2也有Loopback R3 router rip version 2 network 192.168.23.0 network 192.168.3.0 passive-interface loopback 04. 验证学到的不是“配置完”路由表、调试信息与抓包逐层验证配置敲完后别急着截图。RIP作业的验证部分是拉开差距的关键。你需要证明的不只是“我配置成功了”而是“我知道它为什么成功”。4.1 show ip route读懂R条目的每个字段在R1上输入R1# show ip route重点看这几行R 192.168.3.0/24 [120/1] via 192.168.12.2, 00:00:08, GigabitEthernet0/0 R 192.168.23.0/24 [120/1] via 192.168.12.2, 00:00:08, GigabitEthernet0/0逐段拆解R路由来源是RIP协议。192.168.3.0/24目的网段。RIP学到的路由必须出现在路由表里这条就说明R3的Loopback网段已经传播到R1了。[120/1]方括号里第一个数字120是RIP的管理距离第二个数字1是度量值跳数。R1要到达192.168.3.0/24需要经过R2一跳所以metric是1。这个数字只反映“跳数”不反映链路带宽、延迟等质量指标——RIP根本不关心链路质量这也是它被OSPF取代的原因之一。via 192.168.12.2下一跳地址。R1访问192.168.3.0/24的数据包要发给192.168.12.2。00:00:08距离上次收到这条路由的更新已经过去了8秒。这个数字很关键RIP的更新周期是30秒如果你看到这个数字是30秒左右说明路由即将刷新。如果这个数字一直增长超过180秒还不变说明路由已经进入无效状态邻居可能断了。4.2 show ip protocols查看协议运行状态再看R1# show ip protocols输出里会显示RIP版本RIPv2、管理距离120、四个计时器的当前值、已宣告的网络列表以及真正运行RIP的接口列表。如果这里显示的接口比预期多或者少就能直接定位问题。比如你明明在R2上宣告了192.168.23.0但show里没出现这个network说明命令没输对。如果passive-interface配错了方向这里能看到被动接口列表里出现了不该在的接口。4.3 debug ip rip看协议实时吼了什么R1# debug ip rip开启后控制台会实时打印RIP的收发信息。你会看到类似这样的输出RIP: sending v2 update to 224.0.0.9 via GigabitEthernet0/0 (192.168.12.1) RIP: build update entries 192.168.1.0/24 via 0.0.0.0, metric 1 RIP: received v2 update from 192.168.12.2 on GigabitEthernet0/0 192.168.3.0/24 via 192.168.23.3, metric 2这个输出信息量极大。第一条说明R1向G0/0接口发送RIPv2组播更新宣告自己的192.168.1.0/24网段。第二条说明R1从192.168.12.2收到了更新学到了192.168.3.0/24metric是2R2从R3学到时是1再加一跳变成2。做debug实验必须记住用完后立即执行no debug all关闭。否则debug输出会持续刷屏严重消耗CPU资源。这个习惯在作业现场和真实设备上同样重要。4.4 抓包验证用Wireshark看UDP 520端口的秘密RIP更新报文使用UDP 520端口发送这是RIP最直观的协议特征。在Packet Tracer里可以用模拟模式抓包GNS3环境可以直接用Wireshark。抓包过滤器直接写udp.port 520你会看到周期性出现的RIP更新报文每隔30秒来一波。展开报文内容RIPv2的报文里带子网掩码字段能看到192.168.12.0/24这样的完整路由信息。这个验证能直观证明动态路由协议的“周期性交换完整路由表”特性。4.5 排错链路路由学不到时按这个顺序查如果R1上始终学不到R3的网段按下面的顺序排查不要乱试先ping直连地址。R1 ping 192.168.12.2不通说明物理层和二层都没通检查接口是否no shutdown、线缆是否插对接口。show ip interface brief看接口IP和状态。接口IP没配或处于shutdown一切白搭。show ip protocols看RIP协议状态。version是不是2network是不是写对了接口列表里有没有该出现的接口。debug ip rip看有没有发更新、有没有收更新。只发不收问题在对面只收不发问题在本地接口的被宣告状态。检查passive-interface。如果连接路由器的接口被配成passiveRIP更新根本不会从这个接口发出去。检查RIPv1/v2版本一致性。混合版本环境下RIPv2可以识别RIPv1的更新但RIPv1无法正确处理RIPv2的更新信息拓扑中有一台设备没写version 2就会导致信息传递中断。这一套查下来99%的RIP作业问题都能解决。剩下1%要么是模拟器本身的bug重启一下就好。5. 从“完成作业”到“拿高分”收敛测试、环路演示与常见翻车点复盘配置通了、路由表有了作业的基本盘就保住了。但如果你想让老师印象深刻或者不只在期末拿个及格分下面这几个实验必须做。5.1 演示RIP的收敛过程用秒表记录“慢”的代价收敛测试是RIP作业最能出彩的部分。操作很简单在R1上反复执行show ip route同时把R2和R3之间的链路shutdown掉R2(config)# interface g0/1 R2(config-if)# shutdown正常情况下R1上192.168.3.0/24这条路由不会立即消失。因为RIP有180秒的无效计时器邻居的更新停了之后还要等一段时间路由才被标记为不可达再经过刷新计时器才彻底从路由表里删除。你可以在R1上每隔10秒刷一次路由表记录这一条路由从“存在”到“消失”的时间变化。实测下来RIP收敛一条路由大概需要几分钟级别的时间。这个实验结果放在作业报告里配合一句话“RIP因周期性更新和抑制机制导致收敛慢不适用于大型网络”老师一看就知道你是真做过实验而不是抄的。5.2 演示环路防制观察毒性反转发出的16跳这个实验更有技术含量。在R1和R2之间加一台抓包设备或者用debug在R1新增一个网段然后观察R2回传给R1的路由更新里这条路由对应的metric。按照水平分割/毒性反转的规则R2从R1学到192.168.1.0/24这条路由后再把更新发回R1时这条路由的metric应该是16在Packet Tracer里配合debug输出能直接看到数字变化。你可以在作业报告里写观察到16跳即本协议定义的不可达值证明水平分割与毒性反转机制在RIP中默认生效。这一段实验记录比抄十页协议原文都有说服力。5.3 常见翻车点复盘这些错误你在考场一定见过我把这几年带过的学生做RIP作业翻的车总结成表格你自查一下错误现象根本原因排查方向路由表里学不到R3的网段network写错宣告了不存在的网段show ip protocols看宣告列表R1能学到R3但R2学不到R1的Loopbackpassive-interface错配在互联接口上show ip protocols看passive列表配置完只有直连路由没有R路由忘了version 2默认RIPv1不识别子网信息统一version 2抓包看不到RIP报文接口没有正确参与RIPnetwork未宣告或接口shutdown检查network和接口状态计时器一直不动模拟器未保存配置设备重启write保存配置R1和R2版本不一致双方路由表残缺一台配了version 2一台没配各设备show ip protocols对比5.4 作业报告怎么写让老师愿意多看两眼的组织方式最后说说作业报告。实验做完了报告才是交付物。我建议按这个结构组织实验拓扑图标注设备型号、接口编号和IP地址。地址规划表说明为什么用192.168.1.0/24做Loopback、互联网段为什么单独划分。关键配置脚本核心命令要加注释或配合用途说明。验证输出截图重点标注show ip route里的[120/1]、00:00:08这些数字的含义。收敛测试记录表记录测试前后路由状态和时间变化。抓包分析讲清楚UDP 520端口、更新周期、组播地址224.0.0.9这些协议特征。原理分析部分把水平分割、毒性反转、跳数上限、四个计时器写成自己的语言对应到实际观察到的现象。最后再多说一句我在实际项目里的体会RIP确实已经不是生产环境的主流选择但它的距离向量思想是所有动态路由协议的基础。你搞懂了RIP“每30秒把知道的全告诉邻居”的简单逻辑再看BGP的路径发布、OSPF的LSA泛洪底层那种“邻居之间交换可达性信息”的模式其实是一脉相承的。做这份作业别只为了交差把计时器、防环机制、版本差异这些细节弄明白后面学其他路由协议的效率会快很多。
返回列表