多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

RIP路由协议详解与实验配置指南:从距离向量算法到思科华为模拟器实操

RIP路由协议详解与实验配置指南:从距离向量算法到思科华为模拟器实操 有人看到“RIP作业”这几个字第一反应多半是“作业没了”——毕竟RIP在网络文化里经常是Rest In Peace的意思表示某样东西已经凉透了。但如果你是在计算机网络课的作业列表里看到它那这里说的RIP是另一个东西路由信息协议Routing Information Protocol一个在网络技术史上留下过浓墨重彩、至今仍是教学必修内容的老牌路由协议。这篇博文要解决的就是“RIP作业到底怎么做”这件事。我会从协议的核心原理讲起把距离向量算法、跳数限制、环路问题这些躲不开的知识点用大白话掰开揉碎然后给出一套可以直接照抄的实验配置方案覆盖思科和华为两种主流模拟器环境最后把我这些年做实验、带学生、排故障时踩过的坑和总结的技巧一并整理出来。无论你是刚上完网络课、面对作业无从下手的学生还是想快速把RIP实验复现一遍的入门工程师这篇内容都能让你少走很多弯路。1. RIP到底是什么一个“跳数”说了算的协议1.1 距离向量算法靠邻居的口口相传认识全网RIP是一个典型的距离向量Distance Vector路由协议。要说清楚它得先聊聊它背后的贝尔曼-福特算法以及这套算法究竟是怎么让每台路由器“知道”整个网络长什么样的。我习惯用一个生活里的例子来解释距离向量协议想象你在一座陌生城市里想知道去火车站的路线。你不会一下子就知道全程怎么走而是会去问身边的人。如果路边小店老板告诉你往前走两个路口就是地铁站从地铁站可以直达火车站那你就知道了去火车站先走两个路口到地铁站然后转地铁。这里的“两个路口”是到地铁站的距离“转地铁”是地铁站到火车站的距离你把它们加起来就得到了自己到火车站的完整路径信息。RIP的工作方式几乎一模一样。每台路由器只信任自己的直连接口然后通过周期性的路由更新把“我已知的路由信息”告诉邻居。当路由器A从邻居B那里收到一条“到某个网络需要3跳”的路由时A会在这条路由上加上自己的1跳变成4跳然后放进自己的路由表。这个过程不断迭代最终每台路由器都能知道去往全网所有网络的路由。这就是“距离向量”这个名字的由来距离跳数 方向下一跳地址合在一起就是一条路由信息的全部要素。RIP本身不维护整个网络的拓扑图它只知道“我这个包出去下一跳给谁大概要走多少跳”至于中间经过了哪些路由器、链路长什么样它一概不关心。这种“只问邻居、不上帝视角”的设计决定了它简单也决定了它后续的一系列问题。1.2 四个必须背下来的数字30、180、240、15如果让你只记一组关于RIP的数字那一定是这四个30秒更新周期、180秒路由失效时间、240秒路由刷新时间以及15跳最大跳数限制。RIP默认每30秒向邻居发送一次完整的路由表更新。这听起来很勤快但问题在于30秒太长了。想象一下如果网络中某条链路突然断掉最坏情况下需要等30秒甚至更久邻居才会通过下一次更新得知这个变化。如果这期间又有其他路由器发出了旧路由信息网络就可能出现临时环路。网络上经常用“收敛时间”这个词来评价一个路由协议的快慢RIP的收敛时间动辄几十秒甚至几分钟在今天看来确实是“龟速”。更关键的是15跳限制。RIP把路由的度量值定义为跳数跳数越大表示路径越长。任何路由的跳数一旦达到16就表示这个网络不可达。换句话说RIP设计的网络规模最大也就是15台路由器串成一串再长就彻底玩不转了。这个限制在今天看来非常原始但在RIP诞生的上世纪80年代小型企业内部网络基本也就这个规模所以它一度是局域网路由的事实标准。剩下的180秒和240秒是配合使用的。当路由器连续180秒没有收到某条路由的更新就会把这条路由标记为不可达跳数设为16再等240秒后彻底删除这条路由记录。这两个计时器保证了RIP即使收不到更新也不会永远保留一条已经失效的路由。作业里如果要求你解释“为什么RIP收敛慢”这四个数字就是你回答的核心论据。1.3 RIPv1和RIPv2别看名字像能力差不少RIP有两个主流版本作业和考试里特别喜欢对比它们。RIPv1是有类路由协议它发送的路由更新报文里不携带子网掩码信息。路由器只能根据IP地址的类别默认推断出相应的掩码。这样一来如果网络里使用了可变长子网掩码VLSM比如一个网段被拆成了多个不同掩码的子网RIPv1就完全无法正确传递这些信息会出现路由汇总错误甚至路由丢失。RIPv2则是无类路由协议它在更新报文里明确携带子网掩码支持CIDR和VLSM同时每隔30秒通过组播地址224.0.0.9发送更新而不是像v1那样用广播。RIPv2还支持简单的明文认证和MD5认证能防止一些恶意的路由欺骗。这在作业里可能只是加分项但在实际网络环境里认证是很重要的安全防线。做作业的时候我建议你直接用RIPv2除非题目明确要求“使用RIPv1实现有类路由”。理由很简单现代网络几乎都用了VLSMRIPv1的局限性会在实验里制造出一堆你根本不想排查的问题。2. 作业场景拆解先看懂拓扑再动手2.1 典型RIP实验拓扑与需求分析绝大多数RIP作业都不会用太复杂的拓扑我见过最多的是“三台路由器连成一串或者连成一个三角形下面挂几台PC或几个模拟局域网网段”。原因也很现实三台路由器刚好能体现RIP的路径选择、跳数累加、邻居关系建立而且排查起来难度适中。拿一个最经典的拓扑来举例R1的G0/0口连接192.168.10.0/24网段G0/1口连接10.0.12.0/30网段对端是R2的G0/0口R2的G0/1口连接10.0.23.0/30网段对端是R3的G0/0口R3的G0/1口连接192.168.30.0/24网段。三台路由器再各配一个环回口模拟额外的局域网。作业需求通常是在三台路由器上都启用RIP保证192.168.10.0、192.168.30.0以及所有环回口网段都能互相通信。做这种作业第一步不是敲命令而是先把拓扑和地址规划图画出来。我见过太多人上来就配配置配到一半发现地址冲突、网段重叠最后全部推翻重来。地址规划的要点很简单互联链路用30位掩码一条链路一个子网避免浪费末端网络用24位掩码方便识别环回口用32位掩码或24位掩码都可以但要清楚它在RIP里会怎么被通告。2.2 为什么作业老爱用RIP而不是OSPF很多人会有疑问现在实际网络里几乎没人用RIP了为什么作业还是它答案是教学价值。RIP是所有动态路由协议里最简单、最直观的一个它能把“路由协议到底是干什么的”“路由表是怎么构建出来的”“路由环路是什么”这些核心概念用最少的配置量展现出来。学生在还没理解链路状态、最短路径树这些进阶概念之前需要先有一个简单的模型来建立直觉。RIP就是那个垫脚石。所以做RIP作业不要只是为了交差你要在每一步操作里主动问自己几个问题我敲的这条network命令到底在宣告哪个网段路由表里为什么会出现这条路由如果我把某条链路shutdown路由表多久能反应过来这些问题想明白了后面学OSPF、BGP会轻松非常多。2.3 RIP作业里的隐藏考点路由环路与水平分割RIP作业还有一个很容易被忽略的知识点路由环路。距离向量协议的天然缺陷就是可能产生环路因为所有路由器都只依赖邻居传来的二手信息一旦网络出现故障旧的路由信息可能在新信息到达前被继续传播形成“你告诉我走你我告诉你走我”的死循环。RIP应对环路有几招水平分割、毒性逆转、触发更新、抑制计时器。水平分割的规则很好记从一个接口学到的路由不能再从这个接口发回去。毒性逆转则是把要发回去的坏路由直接标成16跳不可达让对方赶紧放弃。触发更新就是一旦路由发生变化不等30秒周期立刻通告邻居。抑制计时器则是在路由变得不可达后在180秒内忽略来自其他路由器关于这条路由的更新给网络留出稳定收敛的时间。作业里如果要你“设计一个方案避免环路”或者“解释为什么需要水平分割”你要能把这几招完整说出来并且知道它们对应了RFC里的哪些机制。3. 实操从零配通一份RIP作业3.1 在思科模拟器里配RIP五步走完思科的Packet Tracer或者GNS3里的IOS镜像是我做RIP作业最常用的环境。配置过程本身非常简单一共就五步进入全局配置模式、创建RIP进程、指定版本、宣告直连网段、关闭自动汇总。下面是一台路由器的完整配置示例我加了一些注释方便你对照理解Routerenable Router#configure terminal Router(config)#router rip Router(config-router)#version 2 Router(config-router)#network 192.168.10.0 Router(config-router)#network 10.0.0.0 Router(config-router)#no auto-summary Router(config-router)#end Router#write这里最值得注意的就是network命令。RIP的network命令后面跟的是直连接口所在的网段而且必须是你希望被这个RIP进程收编的接口。它有两个隐藏含义第一这个网段会被通告给邻居第二这个网段所在的接口上会开始发送和接收RIP更新报文。如果你忘了宣告某个接口所在的网段那这个接口连接的网段就不会出现在路由表里邻居自然也学不到。RIPv2下network后面可以写精确的子网号但很多教材和老的配置习惯还是写主类网络号比如10.0.0.0而不是10.0.12.0。原因是RIP早期的版本只认识主类网络写子网号它不认。RIPv2已经支持无类通告配合no auto-summary你写精确网段也不会出问题。但为了兼容性和考试习惯我建议按主类网络号宣告再用no auto-summary关闭自动汇总。3.2 华为eNSP/VRP里怎么配命令风格对比国内很多学校的实验课用的是华为的eNSP模拟器命令风格和在思科里有差异但逻辑是一样的。华为VRP上启用RIP的姿势如下Huaweisystem-view [Huawei]rip 1 [Huawei-rip-1]version 2 [Huawei-rip-1]network 192.168.10.0 [Huawei-rip-1]network 10.0.0.0 [Huawei-rip-1]undo summary [Huawei-rip-1]quit [Huawei]save注意华为里要先创建一个RIP进程进程号可以随意比如rip 1思科则是直接进router rip默认就一个进程。华为的network命令同样宣告直连网段宣告后对应接口会自动启用RIP。默认情况下华为RIPv2会自动汇总实验里最好执行undo summary关掉否则你可能会看到环回口的32位路由被汇总成奇怪的主类网段。验证命令方面思科用show ip route rip看RIP路由华为用display rip 1 route或者display ip routing-table protocol rip。思科用show ip protocols看RIP进程参数华为用display rip 1。思科用debug ip rip看更新报文华为用debugging rip 1 packet。两者对应的关系非常工整做实验时完全可以对照着记。3.3 验证阶段的标配动作看路由表、ping、抓包配置完成后最快验证RIP是否工作的方法是看路由表。在思科上执行show ip route rip你会看到类似这样的输出R 192.168.30.0/24 [120/1] via 10.0.23.3, 00:00:12, GigabitEthernet0/1这条输出信息量很大R代表这条路由由RIP学来[120/1]里120是RIP的管理距离1是跳数via后面是下一跳地址00:00:12是这条路由距离上次更新经过的时间RIP每30秒更新一次所以这个数字一定在0到30之间最后的接口表示从这个接口收到的路由。然后就是ping测试。从R1 ping R3环回口从PC1 ping PC3把每台设备都ping一遍确保全网互通。如果ping不通不要急着说是RIP的问题很可能只是没写网关或者防火墙开着。我见过太多学生折腾半天协议最后发现是PC的网关没配。如果你用的是GNS3还可以直接在路由器接口上抓包看RIPv2的组播更新报文确认源地址、目的地址224.0.0.9、跳数等信息。这一步不是作业必需但做一次能极大加深你对RIP报文格式的理解我强烈推荐试试。3.4 一个小技巧把计时器调短实验效率翻倍做RIP实验最痛苦的事情就是等收敛。默认的30秒更新周期、180秒无效计时器让每次故障模拟都要干等好几分钟。实际上RIP允许你修改计时器我做演示和自测的时候会把它们大幅调短。Router(config)#router rip Router(config-router)#timers basic 5 20 20 60这行命令把更新周期改成5秒路由失效时间改成20秒刷新时间改成60秒。这样一来把接口down掉之后20秒内就能看到路由表发生变化实验节奏舒服得多。需要说明的是这只是实验演示手段生产环境中随便乱调计时器会引发网络震荡而且不同路由器上的计时器不一致很容易出现路由黑洞。华为VRP上对应的是timers rip 5 20 20命令格式略有差异设置前记得先查一下当前设备的配置说明。4. 常见问题与排查技巧实录4.1 路由表里一条RIP路由都没有先查这四个地方这是RIP作业里最经典的问题明明每台路由器都敲了router rip和network命令但show ip route rip就是空空如也。根据我长期排查的经验90%的情况出在下面四个原因之一。第一个原因是network宣告漏了网段。很多拓扑里有环回口你给R1配置了network 192.168.10.0但忘了宣告环回口所在的10.0.0.0网段邻居自然学不到这条路由。解决方法是把每台路由器上的每个接口地址都列出来挨个确认是不是都落进了已宣告的主类网络范围。第二个原因是接口地址和宣告网段不匹配。比如你接口配的是10.0.12.1/30network却写了10.0.0.0这在RIPv1时代可能没问题因为RIPv1会按主类网络匹配但在RIPv2并且配了精确网段的写法时如果地址和宣告网段对不上更新就发不出去。所以最稳妥的做法是保持“接口地址属于某个主类网段network宣告这个主类网段”。第三个原因是RIP版本不一致。一台路由器开了version 2另一台还是默认的v1两者之间虽然v2能处理v1的报文但v1收到v2组播报文时根本不理会。作业里最容易出现的情况是三台路由器里有一台忘了敲version 2。这个坑用show ip protocols一眼就能看出来各台路由器的版本必须对齐。第四个原因是被动接口设错了。passive-interface可以用来阻止RIP更新从某个接口发出去如果误把连接路由器的接口设成了被动接口那邻居永远收不到更新。排查时先看配置里有没有passive-interface再看它是不是加在了错误的接口上。4.2 能学到路由但ping不通多半不是协议的问题如果你已经能在路由表里看到RIP路由但实际ping不通目标地址问题往往不在RIP本身而在数据包的转发链路上。第一个要查的是回包路径。R1能学到去往192.168.30.0/24的路由走R2-R3过去但R3未必学到去往192.168.10.0/24的路由这样ICMP回包到半路就丢了表现为ping请求发出去但没有回应。RIP是双向学习的按理说不该出现单向路由但如果你只在一台路由器上配了RIP或者把某个接口加进了被动接口就会出现单向路由。第二个要查的是掩码和汇总问题。RIPv2虽然支持可变长子网掩码但如果你在更新里看到某些路由被自动汇总成了主类网络而实际网络里子网划分得很碎就可能出现路由指向错误。解决办法是确保所有路由器都配置了no auto-summary。第三个要查的是ACL和防火墙。很多模拟器默认配置里没有ACL但如果你在接口上误开了访问控制列表即使路由表完全正确数据包也会被丢掉。排查这种问题最直接的方法是在入接口和出接口分别debug ip packet看包被丢到了哪个阶段。4.3 环路的观察实验怎么做水平分割关闭后的灾难现场有些进阶作业会要求你验证水平分割的作用方法是把接口的水平分割关掉人为制造环路。我很推荐做一次这个实验因为亲眼看到数据包在环路里反复弹跳比背十遍概念都管用。在思科上关掉某个接口的水平分割有两种方法一种是在接口配置模式下执行no ip split-horizon另一种是启用ip split-horizon poison-reverse把普通水平分割换成毒性逆转。关闭后再把某条链路Shutdown然后观察路由表你会发现路由并没有按时消失反而可能因为环路导致TTL耗尽的ICMP报文满天飞。做这个实验时切记两点第一一定要用模拟器做别在真实设备上折腾第二实验做完马上把配置恢复回来。我以前带实验课时有学生做完环路实验忘了恢复配置后面连着好多台设备都学到了错误路由排查了整整一下午。4.4 debug和抓包看清RIP更新报文的真面目当路由表里出现了莫名其妙的路由或者更新总是收不到最直观的排查手段就是抓包和debug。思科上执行debug ip rip你会看到类似下面的日志RIP: sending v2 update to 224.0.0.9 via GigabitEthernet0/1 (10.0.12.1) RIP: build update entries network 192.168.10.0/24 metric 1 network 10.0.0.0/8 metric 1 RIP: received v2 update from 10.0.23.3 on GigabitEthernet0/1 network 192.168.30.0/24 metric 1sending和received两行日志分别展示了RIP更新报文的发送和接收metric值可以帮你判断是不是多跳了从哪个接口来的也能直接看到。如果debug日志里一直只有sending没有received说明对方的路由更新根本没送到你这里原因可能是接口down、被动接口、版本不匹配或者中间链路有问题。注意debug命令在生产环境里要慎用因为它会占用大量CPU资源尤其是在大型网络中。实验做完记得执行undebug all把debug关掉。华为设备对应的是debugging rip 1 packet看完之后用undo debugging all关掉。如果你用的是GNS3可以在两台路由器之间的链路上直接插一个抓包点用Wireshark看完整的RIPv2报文结构包括命令字段、版本字段、地址族标识符、路由标记、IP地址、掩码、下一跳和跳数。报文结构清晰之后RIP的工作机制就会变得特别具体以后无论如何都不会搞混。结语一个被淘汰的协议为什么还是值得认真做一遍RIP在真实网络里基本已经被OSPF和IS-IS取代了但作为学习路由协议原理的“第一课”它依然不可替代。我个人的体会是把这个简单的实验认认真真做完再把那些故障场景亲手复现一遍你对路由协议的理解会比直接看OSPF配置快得多。因为RIP把路由协议最核心的要素都摊开了度量值、更新机制、计时器、环路防护、版本差异、邻居关系。这些概念在任何路由协议里都存在只是被更复杂的算法包装起来了。最后再分享一个小习惯我做RIP作业时会在每台路由器上把所有接口地址、宣告网段、路由版本整理成一张表格对照着检查。这看起来笨但能避免90%的低级错误。如果你卡在某个配置问题上超过二十分钟别继续硬扛了把三台路由器的show running-config全部拉到同一个窗口里逐行对比问题通常一眼就能看出来。RIP作业不难难的是静下心来把每一步都看清楚做到心中有数。希望这篇内容能帮你顺利交掉这份作业更重要的是让你真正弄懂距离向量协议到底是怎么运转的。
返回列表