ARTICLE DETAIL

资讯详情

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

RIP路由协议实验全解析:配置、验证与排障实战指南

RIP路由协议实验全解析:配置、验证与排障实战指南 做了这么多年的网络运维和实验教学我始终觉得RIP这个协议虽然老但作为入门实验对象是真的合适。它简单到一眼能看穿但又包含了路由协议最核心的设计思想——距离矢量、跳数度量、周期性更新、防环机制这些东西一旦吃透后面学OSPF、BGP都会轻松很多。这篇RIP实验报告我就把整套配置过程、验证方法和踩过的坑一次性讲清楚。这篇内容面向刚接触动态路由的学生、准备网络认证考试的考生以及想夯实基础的在职工程师。我会用华为eNSP环境为主来做演示思科设备的命令差异也会标注出来毕竟两套设备在企业里都常见。文章里的每个命令、每个验证步骤都是我在实验台上亲手敲过、抓包验证过的不是纸上谈兵。1. 实验背景与RIP路由协议核心机制1.1 为什么选RIP做路由协议实验RIPRouting Information Protocol是距离矢量路由协议的典型代表1988年就在RFC 1058里被标准化了。虽然现在生产环境里已经很少直接用RIP但它在网络教学里的地位一直没被动摇过。原因很简单它把“路由是怎么一回事”用最朴素的方式表达了出来——每台路由器只知道“我去某个网段要走多少跳”然后把这个信息周期性地告诉邻居邻居再传给下一个邻居最终全网都拿到一张路由表。比起OSPF的区域划分、LSA类型、SPF计算RIP几乎没有这些复杂概念。你只需要理解三件事度量值是跳数、更新间隔是30秒、最大有效跳数是15跳。这三个参数撑起了整个协议的行为逻辑。把RIP玩明白了你就知道路由协议通用的那些套路——邻居发现、路由通告、防环、收敛——是怎么一步步演变出来的。做这个实验还有一个实际意义RIP和静态路由、直连路由会在路由器里并存你可以直观地比较不同来源路由的优先级理解“管理距离”这个概念。这些基础不牢后面排障的时候会非常痛苦。1.2 RIP两个版本的区别和适用场景RIPv1和RIPv2看起来只差一个版本号但行为差异很大。RIPv1是典型的“有类路由”协议它在通告路由时根本不携带子网掩码所有路由都按照A/B/C类地址的标准掩码来理解。这就意味着如果不连续子网划分RIPv1会直接算错路由。举个例子接口配了10.1.1.1/24RIPv1默认按10.0.0.0/8来通告这在子网划分精细的网络里就是灾难。RIPv2补齐了这个短板更新报文中携带子网掩码支持无类路由同时把广播更新改成了组播更新目的地址224.0.0.9减轻了网络里无关主机的处理压力。RIPv2还支持明文或MD5认证、路由标记、外部路由重分发等功能。现在的实验和考试基本都是RIPv2起步RIPv1主要拿来做一个对照让你看清有类和无类的差别。两个版本还有一个兼容性问题值得注意RIPv2能接收和处理RIPv1报文但反过来不行。所以如果你在生产环境里混用新旧设备一定要把所有路由器都统一配置成RIPv2别留一台老配置的不然会出现路由“单向学习”的怪现象——一边有路由另一边死活学不到。1.3 度量值、定时器和防环机制必须吃透RIP的度量值就是跳数hop count每经过一台路由器加1。取值范围0到16其中16被定义为“不可达”。这个设计导致RIP的网络规模天然受限超过15跳的路径根本没法用所以RIP只适合小型网络。但是这种简单的度量也有一个好处——排障容易你看到路由条目的metric值就能立刻算出路径上有几台设备。RIP有三个核心定时器更新定时器Update默认30秒用来周期性地发送完整路由表无效定时器Invalid默认180秒如果一条路由连续6个更新周期没被刷新就被标记为无效刷新定时器Flush默认240秒到时直接把这条路由从路由表里删掉。这个“30/180/240”的节奏一定要记住实验里最常见的怪现象——链路断了路由还在——基本都是因为没等够这三个计时器。防环机制是RIP实验的重点观察对象。水平分割Split Horizon规定了一条铁律从某个接口学到的路由不能再从这个接口通告回去这就避免了A告诉B一条路由B又原封不动告诉A的循环。毒性反转Poison Reverse更激进——从某接口学到的路由回通告时直接把度量值设成16跳告诉邻居“这条路已经不可达”。再加上触发更新Triggered Update链路状态一变就立刻发更新不用等30秒周期。这几个机制在实验里都能通过debug和抓包看到非常直观。2. 实验拓扑设计与环境规划2.1 拓扑结构与IP地址规划我设计的这个实验拓扑采用了三台路由器串联加两台PC的结构既覆盖了多跳路由的学习过程又不至于复杂度失控。R1的GigabitEthernet0/0/0连接R2的GigabitEthernet0/0/0R2的GigabitEthernet0/0/1连接R3的GigabitEthernet0/0/0形成一条链路。这个拓扑刻意没有做冗余环目的是先用最干净的场景看清RIP的基本行为环路防制机制单独通过故障注入来验证。IP规划我用10.0.0.0/24网段做骨干链路地址R1-R2互联用10.0.12.0/24R2-R3互联用10.0.23.0/24。每台路由器各建一个Loopback接口模拟业务网段R1的Loopback0用192.168.1.1/24R2的Loopback0用192.168.2.1/24R3的Loopback0用192.168.3.1/24。这样做的好处是Loopback接口不会因为物理链路down而消失很适合用来观察路由通告的稳定性。PC1连接在R1上PC2连接在R3上最终目标是让两台PC能互通同时所有网段都能出现在三台路由器的路由表里。地址规划时我建议遵循“接口地址和业务地址分网段”的原则。骨干链路单独用一个IP段业务网段用另一个IP段这样看路由表的时候一眼就能分辨出哪些是直连、哪些是学习来的。你如果全部揉在一个大网段里实验做了一半自己都会看晕。2.2 模拟器选型eNSP、GNS3还是真实设备实验环境我首选华为eNSP原因很实在免费、体量小、对电脑配置要求不高而且华为设备在国内网络环境里占比极高学到的命令体系直接能在工作中用。eNSP自带的AR路由器镜像支持RIP、OSPF、BGP这些主流协议做这个实验绰绰有余。GNS3的优势是能加载真实设备的IOS镜像行为和真机完全一致但配置门槛高需要自己准备镜像文件对新手不太友好。如果用真实设备我建议至少凑三台能跑动态路由的路由器但实验环境里凑三台设备本身就不容易而且设备型号不一致时命令细节会有差异排障成本高。我个人的建议是先用eNSP把拓扑和配置跑通理解协议行为再去真机上验证一遍命令。纯模拟器环境有一个弱点——你永远体会不到线缆松动、模块光衰这类物理层故障而这类问题恰恰是真实网络里最常见的坑。有条件的话哪怕是几台老设备搭个临时架都值得一试。2.3 实验前的准备工作和预期目标开始配置之前先把三台路由器的系统时间校准好。RIP虽然是周期更新协议但日志和debug输出都带时间戳时间乱了你分析事件顺序时会一头雾水。eNSP里可以在系统视图下用clock datetime命令设置也可以让设备自动同步。另外建议把路由器的控制台日志同步显示打开用info-center enable和terminal monitor这样在配置过程中就能实时看到RIP的状态变化不用反复手动刷屏。动手配置前还建议画一张表把每台设备的接口、IP地址、所在网段和RIP要通告的范围写清楚。很多新手实验做到一半发现路由不通回头一查是有一台路由器的network语句漏了一条网段。这种问题不是协议理解不到位而是规划不细致完全可以靠一张表提前规避。这个实验做完你应该能回答这几个问题RIP路由表里的每一跳是怎么学到的路由条目里的度量值代表什么断开一条链路后全网路由多久能收敛RIPv2的组播更新报文长什么样这些问题的答案就是你写实验报告的素材也是你真正掌握RIP的标志。3. 基础配置过程与命令详解3.1 接口IP配置与Loopback口用途先把三台路由器的接口IP配好。以R1为例进入系统视图后依次配置[Huawei] sysname R1 [R1] interface GigabitEthernet0/0/0 [R1-GigabitEthernet0/0/0] ip address 10.0.12.1 255.255.255.0 [R1-GigabitEthernet0/0/0] undo shutdown [R1-GigabitEthernet0/0/0] quit [R1] interface LoopBack0 [R1-LoopBack0] ip address 192.168.1.1 255.255.255.0R2作为中间路由器需要配置两个物理接口IP和Loopback0[R2] interface GigabitEthernet0/0/0 [R2-GigabitEthernet0/0/0] ip address 10.0.12.2 255.255.255.0 [R2-GigabitEthernet0/0/0] quit [R2] interface GigabitEthernet0/0/1 [R2-GigabitEthernet0/0/1] ip address 10.0.23.2 255.255.255.0 [R2-GigabitEthernet0/0/1] quit [R2] interface LoopBack0 [R2-LoopBack0] ip address 192.168.2.1 255.255.255.0Loopback口在这里的作用很关键。它是一个逻辑接口只要路由器没宕机这个接口就一直处于up状态。用它模拟业务网段可以避免物理接口抖动导致路由反复震荡让实验聚焦在RIP协议本身。生产环境里Loopback口常用于管理地址、OSPF Router-ID、BGP更新源等学会用它是基本功。接口配完之后建议先检查一下直连网络是否通畅。从R1 ping R2的10.0.12.2再从R2 ping R3的10.0.23.3能通再往下走。别急着配RIP——如果直连都不通后面路由学不到你根本分不清是协议问题还是物理链路问题。3.2 启用RIPv2的关键命令和network语句理解三台路由器都启用RIP并指定版本2。R1的配置如下[R1] rip 1 [R1-rip-1] version 2 [R1-rip-1] network 10.0.0.0 [R1-rip-1] network 192.168.1.0 [R1-rip-1] undo summary这里有个新手最容易误解的地方network语句后面的地址不是“我要通告给谁”而是“我要在哪些接口上启用RIP”。路由器会把network指定的网段和本地所有接口的IP地址做匹配只要接口IP落在这个网段里RIP就在这个接口上开始工作同时这个接口所属的网段也会被通告出去。所以network 10.0.0.0匹配的是GigabitEthernet0/0/0的10.0.12.1network 192.168.1.0匹配的是Loopback0的192.168.1.1。undo summary这条命令在华为设备上用来关闭自动汇总。默认情况下RIPv2会把子网路由汇总成有类网段通告但这样做实际是违背了RIPv2无类路由的初衷。你可以在R1的路由表里看到192.168.2.0/24这样的明细路由就是关闭自动汇总的效果。如果不开很可能会看到R2把192.168.2.0/24和192.168.3.0/24汇总通告成一条192.168.0.0/16反而看不清路由的来龙去脉。思科设备上对应的是no auto-summary。R2和R3的配置同理只是网段不同。R2要通告10.0.0.0、192.168.2.0R3要通告10.0.0.0、192.168.3.0。配置完建议用display rip 1确认一下RIP进程状态。3.3 被动接口和单播更新配置技巧默认情况下RIP会向所有启用了RIP的接口周期发送更新报文。但在实际网络中并不希望每个接口都这么做。比如R1连接PC1的接口GigabitEthernet0/0/1下面根本没有其他路由器发RIP广播/组播更新纯属浪费带宽还有安全隐患——万一有人在这个接口上抓包分析就能直接看到你的路由表结构。解决办法是配置被动接口Passive Interface让RIP在这个接口上只接收路由不主动发送更新。华为的命令是在接口视图下使用rip input和rip output来控制收发包。在华为设备上[R1] interface GigabitEthernet0/0/1 [R1-GigabitEthernet0/0/1] rip output disable这样配置之后R1连接PC1的接口就不会再发送RIP报文了但PC1所在网段的地址依然会通过RIP通告给R2。思科设备在路由器配置模式下用passive-interface GigabitEthernet0/1即可这个命令控制得更彻底。注意被动接口只是不发送更新并不影响该接口网段被通告——这两个概念一定要分清。在帧中继或NBMA网络里RIP广播更新可能无法送达对端这时需要指定邻居并改用单播更新。华为配置[R1-rip-1] peer 10.0.23.3这条命令告诉RIP进程直接把更新报文单播给10.0.23.3这个地址。结合被动接口和单播更新你可以把RIP控制在精确的边界内这是生产环境很常见的做法。4. 实验验证方法与报文交互分析4.1 路由表验证与度量值计算配置完成后在R1上执行display ip routing-table重点看192.168.3.0/24这条路由Destination/Mask Proto Pre Cost Flags NextHop Interface 192.168.3.0/24 RIP 100 2 D 10.0.12.2 GigabitEthernet0/0/0这里的信息量非常大。Proto字段是RIP说明这条路由是靠动态路由协议学来的。Pre是管理距离华为设备上RIP是100直连是0静态是60数值越小越优先。Cost是度量值这个2代表从R1出发到192.168.3.0/24需要经过R2和R3两台中间设备跳数就是2。NextHop指向10.0.12.2意思是去往目标网段的下一跳是R2的接口地址。我在R3上直接执行display rip 1 route能看到RIP进程自己维护的路由数据库里面更详细地记录了每条路由的来源接口、度量值和老化时间。这里的每条路由后面都有个计时器在倒计时如果30秒内没有收到邻居新的更新这个数字会不断增长超过180秒后路由进入无效状态。这个细节是判断协议运行是否健康的重要指标。4.2 用debug和Wireshark抓包看RIP报文在R2上执行debug ip rip华为是debugging rip 1能看到RIP收发包的实时记录R2-RIP: Receiving v2 update from 10.0.12.1 on GigabitEthernet0/0/0 R2-RIP: 192.168.1.0/24 via 0.0.0.0 metric 1 R2-RIP: Sending v2 update to 224.0.0.9 via GigabitEthernet0/0/0 R2-RIP: 192.168.3.0/24 via 0.0.0.0 metric 2注意看Sending v2 update to 224.0.0.9这行。224.0.0.9是RIPv2的组播地址说明R2确实在用组播方式发送更新这是RIPv2区别于RIPv1的直观证据。RIPv1用的是广播地址255.255.255.255如果你在同一网络里抓包对比能明显看到两种报文的目的地址不同。更彻底的验证是在PC上装Wireshark抓包。PC上没跑RIP抓包时选“RIP”过滤条件就能看到R2发往224.0.0.9的UDP报文源端口和目的端口都是520。展开报文内容里面会列出每一条路由条目的IP地址、子网掩码和metric值。我每次做实验都喜欢在这里截图作为报告里的证据比贴一堆命令行输出直观多了。抓包时有个细节要注意交换机的端口可能过滤组播报文。如果你的实验环境里有交换机建议在连接路由器的端口上开启组播监听或者直接用路由器背靠背连接省去中间交换机。实测下来eNSP环境背靠背连接最简单抓包也最干净。4.3 收敛时间实测和计时器观察RIP的收敛速度慢是出了名的但慢到什么程度要亲手量一量才有数。我在三台路由器配置完成后直接在R2上断开连接R3的GigabitEthernet0/0/1接口然后计时观察192.168.3.0/24这条路由在R1上多久消失。实测下来加上手动等待和触发更新的作用大约90到180秒后路由才被标记为不可达。这个结果恰好反映了RIP计时器的设计R2和R3之间的链路断开后R2立即把192.168.3.0/24的度量值改为16毒性反转并触发更新通知R1。但由于RIP的更新是周期性的R1可能正好错过这个触发更新还是要等自己的无效计时器超时后才能确认路由不可用。如果触发更新及时送到R1会在几秒内就删除路由如果没送到就得等满180秒。生产环境为什么会淘汰RIP这个实验给了最直观的答案收敛时间太长。链路一断业务流量要中断好几秒甚至几分钟这在现代网络里完全不可接受。OSPF能在几百毫秒内完成收敛这就是后浪推前浪的根本原因。5. 故障注入与排障实录5.1 网段漏通告导致的路由黑洞我在R2上故意删掉network 192.168.2.0这条配置然后从R1 ping 192.168.2.1结果自然是不通的。在R1上display ip routing-table192.168.2.0/24这条路由完全消失但10.0.0.0和192.168.1.0/24还在。原因是R2不再通告Loopback0网段全局路由表里就没有这条目从R1发往192.168.2.1的数据包只能被丢弃。这类故障在真实网络里非常常见尤其在网络割接后新增业务网段忘了在路由协议里通告就是典型的“黑洞”。排查思路是先确认设备本地有没有这条路由再确认路由协议里有没有通告这个网段。很多时候业务方报“不通”其实设备自己都能到只是没把路告诉别人。5.2 水平分割机制验证水平分割是RIP防环的第一道防线实验验证它有一个很巧妙的方法。在R1和R2之间配置完成后在R2的GigabitEthernet0/0/0接口上抓包正常情况下应该看不到R2往R1方向发送192.168.2.0/24的路由更新——因为这条路由本身就是从R1方向学来的。如果开启水平分割R2不会把一个接口学到的路由再从这个接口送回去。华为设备默认开启水平分割可以用接口下的rip split-horizon命令显式确认。实测中如果把水平分割关掉你会在抓包里看到R2开始向R1通告192.168.1.0/24的更新这在链式拓扑里看起来无害但一旦形成环路这种回灌会无限循环造成路由计数到无限大。RIP后来用毒性反转和最大跳数16来兜底但水平分割依然是第一道成本最低的防线。5.3 路由环路与16跳不可达实验为了直观看到RIP如何应对环路我在实验里临时构建了一个三角形拓扑R1连R2R2连R3R3再连回R1三台路由器之间两两互联。然后在R1上把连接R2的接口down掉观察R3上关于R2的Loopback网段路由变化。正常情况下R1会通告一条去往192.168.1.0/24的路由给R2和R3R3又通告给R2R2再通告给R1——形成一个路由环路。RIP用“最大跳数”机制终结这种循环每经过一次通告度量值加1当跳数达到16时这条路由被认为不可达不再继续通告。你可以在R2上连续执行display ip routing-table看到度量值一级一级往上跳直到变成16跳消失。这个实验不是随便看看热闹它解释了为什么RIP的网络直径上限是15跳——第16跳就是不可达这是协议设计时就定好的硬性约束。理解了这个机制你也就理解了为什么RIP不适合大型网络不是因为跳数不够用而是环路收敛时间太长在等待计数到16跳的过程中数据包会一直绕着环路打转直到TTL耗尽。6. 实验中的意外情况和处理建议6.1 更新不同步和版本不匹配问题我第一次做实验时配置了RIPv2但有一台AR路由器默认没有version 2指令一直停留在RIPv1模式。结果对端的RIPv2设备能收到RIPv1报文并能学习路由但RIPv1的设备对RIPv2报文会直接丢弃形成单向路由学习。表面现象很迷惑R2能看到R1的路由R1却看不到R2的。排查办法是逐台执行display rip 1重点看Version字段。遇到这类问题别着急改全局配置先确认所有设备都统一版本。另一个常见问题是水平分割和毒性反转在相邻设备上配置不一致导致路由信息被抑制或重复通告现象更诡异。总之动态路由协议是“协商”出来的必须保证所有参与设备的行为一致。6.2 链路状态变化后的等待期实验里我还试过直接拔掉两台路由器之间的网线然后等待路由表更新。最让人困惑的现象是链路已经断了但路由表里那条路由还在度量值也不变。这是因为RIP的刷新计时器还没到默认180秒。而且如果之前收到的更新里没有包含被断开网段的路由路由器会坚持到刷新计时结束后才删除。这个等待期不是协议缺陷而是RIP设计上的“钝感力”——它用牺牲响应速度换取了实现的简单性。实验时如果你急着看故障现象可以采用两个方法一是手动执行reset ip routing-table statistics路由表统计重置不会直接删除RIP路由需要配合undo重新配置二是直接重启RIP进程。但要注意真实生产环境里绝对不能随手重启协议影响面太大。这里我更推荐用display rip 1 route查看计时器的剩余时间心里有数地等。6.3 命令误配置后的恢复技巧实验过程中最耗时间的往往不是配置而是改错之后的恢复。我建议在每次改动前先执行display current-configuration备份当前配置或者在一个文本文件里记录每一台设备的完整配置。如果某台设备改乱了直接reset saved-configuration后重启比一条条敲命令恢复快得多。eNSP里有“保存”功能每个实验做完建议立即导出配置文件备份。这个习惯在真实设备上同样重要——网络设备最怕的就是改错后没有备份只能靠记忆恢复一旦断电重启全盘皆输。我在带徒弟的时候反复强调动手前备份动手时记录动手后验证这三板斧能挡掉九成的人为故障。7. 实战心得和可扩展方向7.1 RIP实验中最容易忽略的三个细节第一路由器的display ip routing-table里Proto字段为“RIP”的路由管理距离是100。这个值决定了RIP路由和静态路由、OSPF路由并存时谁优先考试和工作里都爱考做实验时顺手就能验证。第二RIPv2的组播更新地址224.0.0.9配合Wireshark抓包是理解协议行为最直观的窗口。第三network语句实际是在匹配接口不是在通告网段——这个误解至少能坑掉一半新手。7.2 从RIP到OSPF的学习路径做完RIP实验我强烈建议紧接着做OSPF实验。这两者对比着学能理清很多概念。比如RIP用跳数做度量OSPF用带宽做开销CostRIP是距离矢量只告诉邻居“我有多远”OSPF是链路状态把整个拓扑的链路信息都广播给区域内的所有路由器每台设备自己算SPF树。你会发现RIP实验里那些防环、收敛、更新周期的问题在OSPF里都有更优雅的解法。7.3 落笔成文的报告整理建议最后说说实验报告怎么写。不要只贴命令和输出一定要写清楚“我配置了什么、看到了什么、为什么会出现这个现象、如果换一种配置会怎样”。每个display输出选一两行关键信息解释配合抓包截图比一整页命令行有价值得多。我习惯每做完一个子实验先写一小段当时的理解和疑问全部做完再统一整理这样报告里能留下真实思考的痕迹而不是事后回想拼凑出来的“标准答案”。
返回列表