尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

RIP动态路由完全解读:原理、配置、防环与排错指南

RIP动态路由完全解读:原理、配置、防环与排错指南 1. 为什么我还在谈RIP动态路由里的元老级选手1.1 静态路由把人逼疯之后动态路由才成了刚需我最早接触网络的时候觉得动态路由是个特别“玄乎”的东西。那时候公司内部网络规模不大十几台路由器几条专线所有路由都是手工写的静态路由。每一台设备上敲ip route把对端网段一条条指过去。小规模的时候没什么问题拓扑也简单写错了顶多 ping 不通排查起来也不算难。真正让人崩溃的是网络规模扩大到几十个分支、上百个网段之后。今天加一个办公网段明天调整一条链路后天某个分支的路由器重启结果路由表里有一条指向旧链路的静态路由没删干净流量绕了远路不说出了故障还特别难查。更麻烦的是静态路由完全没有“自我学习”能力——对端网段新增了这边不会自动知道链路断了路由器也不会自动切换到备用路径。所有变更都得靠人肉操作网络一复杂人的脑子就跟不上了。这时候动态路由就登场了。它的核心价值一句话就能说清路由器之间把自己知道的路由信息相互通告让每台设备自动计算出一张可用的路由表链路状态变了路由也跟着自动收敛。省人力、少出错、能自动切换这就是做网络的人非学动态路由不可的根本原因。很多人会把“动态路由”和某个具体协议画等号其实动态路由是一个大分类底下有距离矢量协议、链路状态协议、路径矢量协议。而RIPRouting Information Protocol路由信息协议就是距离矢量协议里最经典、也最容易被低估的一个。这篇文章我想从实操角度把RIP的原理、配置、防环机制和排错思路完整过一遍不管你是刚入门的学生还是工作中偶尔要碰老网络设备的运维都能直接用得上。1.2 RIP在动态路由家族里的位置距离矢量派的代表动态路由协议按算法分主流就是两派距离矢量Distance Vector和链路状态Link State。RIP属于前者OSPF、IS-IS属于后者。距离矢量协议的工作原理可以这样理解每台路由器只告诉邻居“我这边能到哪里需要多少跳”邻居收到后再结合自己已知的路由信息转发给下一个邻居。每台路由器手里没有全网地图只有一张张“到某处大概多远”的卡片。信息像村里口口相传的消息一个人告诉邻居邻居再告诉下一个人最后大家都知道去某个地方大致要走几步。这种机制实现简单占用资源少但缺点是收敛慢、容易产生路由环路所以必须设计一堆防环机制来保护。链路状态协议则完全换了一个思路每台路由器都把自己和谁相连、链路开销多大广播给全网让每台设备都能画出一张完整的网络拓扑图然后用最短路径算法自己算路。OSPF就是这一派的代表收敛快、精度高但实现复杂对设备CPU和内存的消耗也大。RIP作为距离矢量的老牌代表最大的特点就是两个字简单。它用跳数hop count当度量值15跳以内认为是可达的超过15跳直接判定不可达。配置命令就那么几条不像OSPF还要分区域、设计DR/BDR选举、算cost值。正因为简单RIP至今仍在两类地方活着一类是非常小的网络设备老旧、内存有限跑OSPF太吃力另一类是教学环境几乎所有网络教材和认证课程都拿RIP当距离矢量协议的入门标本。你把它学透了再去看BGP里的路径矢量思想会发现很多概念都是相通的。顺便说一句如果你搜索“动态路由”的时候同时看到了前端领域的Vue动态路由别慌那是完全不同的另一个世界。这个坑我在文章最后会专门解释这里先继续把网络RIP讲透。2. RIP的工作方式跳数、定时器和防环三件套2.1 跳数作为度量值便宜好用但也有明显短板RIP把“经过了多少台路由器”当作衡量路径好坏的唯一标准这个值就叫跳数。直连网段是0跳经过一台路由器学到的路由是1跳再经过一台就是2跳依次累加。16跳代表不可达这是RIP里最硬的规矩。用跳数做度量优点是实现成本极低计算量几乎可以忽略非常适合RIP诞生年代那些CPU和内存可怜巴巴的设备。但它的短板也特别明显不看带宽、不看延迟、不看链路负载。一条10Mbps的老旧专线如果只要2跳它会比一条1000Mbps的骨干链路需要3跳更“优先”结果流量全挤到慢链路上快链路反而闲着。这就是RIP在复杂网络里经常被人诟病的“次优路径”问题。实际工作中遇到这种问题我的建议很直接不要尝试在RIP里搞什么复杂的度量优化它根本不支持。要么接受它的简单性把网络设计成扁平小网要么直接换OSPF。RIP适合的是“图个省事”的场景不是“追求最优”的场景。2.2 定时器的四兄弟30秒更新、180秒失效、180秒抑制、240秒清理RIP是典型的“时间驱动”协议它靠一组定时器维持路由表的活力。搞清楚这组定时器是理解RIP收敛行为的关键。以最常见的思科实现为例RIP有四组默认定时器定时器默认值作用Update更新30秒周期性向邻居发送完整路由表Invalid失效180秒超过该时间没收到某条路由的更新标记为不可用Holddown抑制180秒路由失效后暂时不接收关于该路由的“更好消息”Flush清理240秒最终从路由表里删除该路由华为设备的默认参数略有不同一般是更新30秒、失效180秒、抑制120秒、垃圾回收120秒原理是一致的。这里几个值不能孤立地看要串起来理解正常情况下每30秒路由器会把整张路由表广播或组播给邻居如果某条路由连续180秒没有刷新路由器就认为它失效了进入抑制状态再等一段时间如果还是没有恢复就从路由表里彻底删除。30秒周期更新有个很经典的副作用——RIP网络里路由信息永远在“慢半拍”地传播。一条新路由通告到全网每一跳平均要等1.5个更新周期才能转发出去再加上抑制时间全网收敛往往要几十秒甚至更久。这在今天的网络里堪称“龟速”但在RIP设计的年代这个速度是完全可以接受的。2.3 防环机制拆解水平分割、毒性反转、触发更新距离矢量协议最容易出的问题就是路由环路。想象一下两台路由器互指对方为去某个网段的下一跳数据包就在两台设备之间来回转圈直到TTL耗尽被丢弃。RIP为了治这个问题设计了几道防线每道防线单独看都不复杂但组合起来确实能挡住大多数环路场景。第一道是水平分割Split Horizon。规则一句话从哪个接口学到的路由绝对不能再从同一个接口通告回去。道理很直白你已经告诉我你去某个地方要2跳了我再把这条路由告诉你只会让你以为还有别的路实际就是原路返回环路就是这么来的。默认情况下RIP是开启水平分割的这也是为什么很多配置指导里都提醒你点到多点链路上如果关掉了水平分割一定要自己确认不会产生环路。第二道是毒性反转Poison Reverse。它比水平分割更进一步我不但不说那条路由我干脆告诉邻居“这个目标我已经不可达了16跳”。这等于主动把一个坏消息传播出去让邻居赶紧把通过我学到的路由标成不可用防止邻居继续拿我当下一跳。第三道是触发更新Triggered Update。正常情况是每30秒发一次完整路由表但如果某条路由的状态突然变了比如链路断了路由器不等30秒立刻把变化的路由通告给邻居。这就大大缩短了坏消息的传播时间也是RIP在链路抖动时能撑住场面的重要原因。除此之外还有最大跳数限制和抑制计时器兜底。我曾经在实验环境里故意把两台路由器互指成环路开着水平分割的时候路由表最多振荡几轮就会被毒性反转压下去。如果你自己在GNS3或者EVE-NG里搭环境建议亲自把水平分割关掉试试你会真切体会到“没有防环的距离矢量协议有多可怕”。3. RIPv1和RIPv2怎么选以及RIPng的一点补充3.1 v1到v2的变化从有类别到无类别最大的区别是掩码RIP从诞生到现在最常见的两个版本就是RIPv1和RIPv2。很多人以为版本2就是把版本1修了修bug其实关键变化在于一个网络时代的大转型从有类别路由classful到无类别路由classless。RIPv1是上世纪80年代的产物那时候IP地址还严格按A、B、C类划分路由协议里根本不携带子网掩码。路由器收到一条路由只能根据目标地址是A类、B类还是C类自己脑补一个默认掩码。这在全是标准网段的时代没问题但等到CIDR和VLSM可变长子网掩码出现RIPv1就彻底不够用了——它没法正确传递像192.168.10.0/25这种非标准掩码的路由遇到连续子网甚至可能把路由汇总成错误的网段。RIPv2则在保留RIP全部优点的基础上把核心功能补齐了路由更新里携带子网掩码支持VLSM和CIDR更新方式从广播255.255.255.255改为组播224.0.0.9减少了对无关设备的干扰支持明文和MD5认证防止伪造路由更新可以关闭自动汇总避免子网被错误合并我在现网的经验是只要设备支持一律启用RIPv2没有任何理由去碰RIPv1。RIPv1只在两种极端情况下需要出现设备固件老旧到不支持v2或者对接的老设备关闭了v2的组播能力。否则RIPv1的路由缺失、掩码错误、认证缺失这些问题迟早让你在排错时多熬几个通宵。3.2 现网中还值得用的RIP形态RIPv2为主特殊场景用RIPngRIPng是RIP针对IPv6的版本端口从UDP 520换成了UDP 521组播地址从224.0.0.9换成了FF02::9并且彻底放弃了认证功能——因为IPv6 IPSec本身就可以提供安全保障。如果你维护的是纯IPv6小网络RIPng可能是最简单的内部路由选择但现实里IPv6网络跑OSPFv3的更多RIPng出现的频率确实不高。给不同场景做个判断方便你选型场景推荐方案理由小型办公网络设备老旧路由条目少于几十条RIPv2简单可靠配置量小跨地市多分支、需要快速收敛、链路类型多样OSPF收敛快支持开销计算适合复杂拓扑纯IPv6实验网或极简v6网络RIPng配置最简单能跑通就行大型互联网/企业骨干BGP策略控制能力和扩展性远强于RIP有一个判断标准我经常跟同行讲当你开始为一个RIP网络设计复杂的路由策略、设置优先级、做流量负载分担的时候说明RIP已经不适合你了。这不是RIP的错是选型的问题。4. RIPv2配置实操从接口宣告到验证收敛4.1 华为和思科的命令对照照着敲就行RIP配置在主流厂商设备上差异不算大。先看华为VRP系统的配置方式。假设核心路由器上有两个网段192.168.10.0/24和192.168.20.0/24想跑RIPv2命令如下system-view [Huawei] rip 1 [Huawei-rip-1] version 2 [Huawei-rip-1] network 192.168.10.0 [Huawei-rip-1] network 192.168.20.0 [Huawei-rip-1] undo summary这里必须注意华为的RIPnetwork命令后面只能跟自然网段A类、B类、C类主类地址不能填带子网掩码的明细网段比如network 192.168.10.128这种写法在华为设备上是无效的。如果你想宣告的是192.168.10.128/25也得写network 192.168.10.0并在RIP进程里配合其他手段控制明细路由的发布。很多第一次配华为RIP的兄弟就是被这个“自然网段”的要求卡了半天。思科的配置逻辑几乎一样但命令风格不同router rip version 2 network 192.168.10.0 network 192.168.20.0 no auto-summary思科IOS的RIPnetwork命令在较新版本里也能接受子网号但为了保险我还是习惯写主类网段配合no auto-summary来避免不必要的自动汇总。配置完成后两台路由器之间只要接口能互通、没有ACL拦截UDP 520端口路由就会在30秒内加上一点随机偏移自动出现。4.2 被动接口和自动汇总两个必须处理的配置细节配置的时候有两个细节特别容易被忽略但它们直接影响路由通告的正确性。第一个是被动接口passive-interface / silent-interface。在RIP进程里宣告了一个网段后设备会在该网段对应的所有接口上发送路由更新。可如果某个接口下面只挂着终端设备比如PC、服务器根本没有其他路由器那么RIP更新广播发出去就是纯粹的浪费甚至可能带来安全隐患——别人抓包就能看到你的完整路由表。解决办法是把这些面向终端的接口设为被动接口只接收路由更新、不主动发送。华为的命令是在RIP视图下写[Huawei-rip-1] silent-interface GigabitEthernet 0/0/2或者更省事把所有接口先全部设为被动[Huawei-rip-1] silent-interface all然后对真正连路由器的接口单独取消。思科写法类似router rip passive-interface default no passive-interface GigabitEthernet0/1第二个是自动汇总。RIPv2默认会开启自动汇总把连续的子网汇总成主类网段向外通告。如果你的网络里确实有连续子网自动汇总能减少路由条目但如果你有不连续的子网自动汇总就会制造“黑洞”——比如192.168.1.0/24和192.168.2.0/24分在两台路由器上自动汇总会让中间设备认为整个192.168.0.0/16都从某一侧可达另一侧的路由直接被吞掉。所以只要是做明细路由控制的场景我都建议顺手把它关掉。4.3 验证命令怎么确定路由真的学到了配置完不等于万事大吉验证才是关键一步。RIP的验证命令不复杂但很多人只会看路由表不知道还有更细的查看方式。华为设备上最常用的三条命令display rip 1 route display rip neighbor display ip routing-table protocol ripdisplay rip 1 route直接看RIP进程从邻居学到的路由、跳数和下一跳display rip neighbor看RIP邻居的状态确认双方确实交换了路由更新display ip routing-table protocol rip用来确认这些路由最终是否进入了全局路由表。思科设备上对应的命令show ip route rip show ip rip database debug ip rip其中debug ip rip是排错神器能实时看到哪个接口收到了来自哪个邻居的更新、更新里带了多少条路由。注意在生产设备上开debug要谨慎更新频繁时输出量很大可能把设备CPU占满。我一般只在维护窗口或者实验环境里开。验证收敛还有个很实用的方法在端到端路径上用tracert华为是tracertWindows是tracert思科是traceroute看每一跳的路径变化。RIP收敛前和收敛后的路径如果不同tracert结果会非常直观地告诉你路由有没有切换成功。另外要提醒一个容易误判的点RIP的30秒更新周期加上抑制计时器意味着从路由器故障到全网收敛耗时可能超过一分钟。测试的时候不要ping两下没通就急着排查先给RIP一点收敛时间否则很容易陷入“明明配置没问题就是不通”的假象。5. 一次RIP路由收不到的完整排查链路5.1 现象与初步定位分支新增网段后对端没有任何路由去年帮一个客户处理过一次典型的RIP问题。拓扑很简单总部和分支各一台路由器中间走专线两边都跑RIPv2原本互访一切正常。后来分支新增了一个终端网段192.168.50.0/24网管在分支路由器上加了RIP宣告可总部这边等了五分钟路由表里还是没有新网段的影子。按我的习惯遇到这类“路由学不到”的问题先不要急着怀疑协议本身而是把链路状态、接口状态、基础连通性挨个过一遍。第一步就是确认两台路由器之间物理链路正常接口upIP地址能互通。接着确认RIP进程都活着版本是否一致。这一步看着简单但往往能过滤掉一半的问题。当时检查结果是链路正常两边RIP进程都是version 2版本没有冲突。那就进入下一层。5.2 逐步排查从进程、接口、宣告到版本和链路过滤我把排查顺序固定成了一套链路每一步都有明确目的看RIP进程里到底宣告了哪些网段。华为用display rip 1思科用show ip protocols。这一步是为了确认宣告本身没写错。客户在华为分支路由器上写的宣告是network 192.168.50.0看起来是正常的。看RIP在哪些接口上生效。华为display rip interface思科show ip rip database或show ip protocols。这一步要看关键接口是否被误设为了被动接口。检查后没发现问题接口状态是正常的。抓包看路由更新到底有没有发出去。如果设备上方便在分支路由器连总部的接口上用tcpdump或者华为的display ip packet过滤UDP 520端口看有没有发往224.0.0.9的组播包。这里有个很容易踩的坑中间如果经过三层交换机某些交换机默认会过滤组播或者没开组播路由RIPv2的更新包就可能在半路被丢掉。当时我用抓包发现分支路由器确实在发更新但总部的接口上迟迟收不到——怀疑点立刻集中到了中间链路上。查中间链路设备。最后果然在中间那台三层交换机上发现连接分支的端口启用了端口隔离和组播过滤策略把224.0.0.9的组播包拦掉了。把该端口的组播过滤策略调整后不到30秒总部的路由表里就出现了192.168.50.0/24。这个案例里最容易迷惑人的地方是从分支路由器本身看RIP进程没问题、宣告没问题、更新也在发但路由就是到不了对端。如果只看两端路由器永远找不到原因。所以排查RIP问题一定要有“中间链路也可能吃更新包”的意识而不是只盯着两端设备。5.3 这类问题常见的几处坑一次说清把RIP排错的常见坑集中列一下每一处我都实际踩过或者看别人踩过坑典型表现排查方向network宣告写错华为写子网号路由学不到确认写的是自然网段RIPv1与RIPv2混跑两边配置各自正常但互不学习检查版本是否一致被动接口误开接口up、地址通但收不到更新检查silent/passive配置中间设备过滤组播两端都正常路由就是不过去抓包定位更新包被谁丢掉自动汇总吞路由部分网段路由缺失或被合并关掉auto-summaryundo summaryUDP 520被ACL拦截单方向学不到路由检查ACL和组播/广播转发策略跳数超过15距离远的路由全部不可达检查拓扑中路由跳数其中被动接口这个坑最容易出现在“图省事”的配置里。有人为了减少路由通告直接在RIP视图下敲了silent-interface all然后忘了对连接邻居的接口执行undo silent-interface结果邻居之间的路由更新全部哑火。我之前就见过一个兄弟两边的RIP配置看起来一模一样怎么调都不通最后发现就是那句silent-interface all惹的祸。6. RIP在2025年还有什么价值以及“动态路由”热词里的一个大坑6.1 RIP的现代生存场景在小网和老设备里继续服役可能有人会问RIP这么老、收敛这么慢、度量又粗糙还有什么学习的必要我的看法是它依然是理解网络基础的一块好跳板而且在实际环境里并没有彻底消失。先说现实场景。很多银行网点、加油站、小型分支机构的网络数量巨大但每个点的规模又特别小可能就一台路由器带两个网段跑OSPF纯属杀鸡用牛刀。这类设备往往还比较老CPU和内存资源有限RIPv2这种30秒发一次完整路由表的开销反而刚刚好。在早期物联网和工业网络的存量项目里RIP也还活着很多运维人员接手时面对的就是一张已经跑了好多年的RIP网络这时候不懂RIP就没法动手改。再从学习价值看RIP把距离矢量路由协议的核心思想表现得最纯粹。你理解了跳数、理解了几种防环机制、理解了周期性通告的代价再去看BGP这种路径矢量协议时会发现很多概念是一脉相承的。比如BGP也有水平分割思想、也有抑制机制只是它的规模更大、策略更复杂。拿RIP当敲门砖再看OSPF、BGP会轻松不少。6.2 把vue动态路由和RIP分开同名热词背后的两码事最后说一个非常容易让人混淆的问题。现在搜索“动态路由”这个关键词除了网络领域的RIP、OSPF之外还会搜到大量前端开发的内容尤其是“Vue动态路由”。很多初学者搜着搜着就懵了这两个“动态路由”是一回事吗完全不是。Vue动态路由属于前端框架Vue Router的功能指的是根据用户权限、登录状态在前端应用运行过程中动态地添加、删除路由配置用来实现菜单权限控制、页面按需加载等效果。它的核心是“用户能看到哪些页面、能访问哪些模块”运行在浏览器里跟路由器设备上学习IP路由表的机制没有任何关系。我遇到过不止一个刚入行的朋友看到“动态路由”和“RIP”两个词凑在一起以为是要用RIP协议去控制前端页面的跳转。这里明确地做一个名词纠偏如果你在做前端开发搜索“Vue动态路由”是正常的如果你在做网络运维搜索“RIP协议”也是正常的。两件事只是中文上都叫“动态路由”底层一个是网络层的路由协议一个是应用层的路由管理没有任何交集。看清搜索词的上下文能帮你少走很多弯路。最后分享一个我自己的小习惯配置RIP时永远先写version 2再写network然后顺手关掉自动汇总最后再检查一遍有没有接口被误设成被动接口。这套流程就像肌肉记忆每次做RIP相关项目我都会按这个顺序走一遍能避开大多数低级故障。RIP虽然简单但简单不意味着不重要把它的脾气摸透了你在动态路由这个领域才算真正打好了地基。
返回列表