ARTICLE DETAIL

资讯详情

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

RIP路由协议详解:华为eNSP三路由器动态路由配置实验全记录

RIP路由协议详解:华为eNSP三路由器动态路由配置实验全记录 做网络实验的朋友应该都有过这种体验小网络里敲静态路由问题不大三五条路由手一敲就完事可设备一旦超过三台、网段上到七八个静态路由表就成了灾难现场。这时候就该动态路由协议登场了。这篇要聊的就是动态路由里最经典也最适合入门的一类——RIPRouting Information Protocol路由信息协议以及我基于华为eNSP模拟器完整跑过一遍的实验全记录。这文章不是教科书式的原理复述而是我亲手搭了三台路由器、两台PC从IP规划、协议配置、路由表验证到链路故障模拟一步一步走下来的实操记录。中间还会穿插一些我踩过的坑比如RIP v1和v2版本不匹配导致路由学不到、network宣告漏了某个接口导致整个网段从路由表里“人间蒸发”、接口shutdown之后路由表要等多久才真正收敛等等。看标题点进来的你大概率是这三种情况之一刚开始学网络想搞明白动态路由到底是怎么工作的在备考华为HCIP或者思科CCNA这类认证需要补实验细节又或者已经工作了被一堆路由问题搞到头大回来把基础重新捋一遍。不管哪种这篇都给你一条不用翻一堆文档的完整路线。顺便说一句现在前端圈也经常能看到“vue动态路由”这个词但那是前端框架里页面组件和URL映射的概念跟咱们网络层的动态路由完全是两码事。这期聚焦的是路由器之间怎么通过协议自动交换路由信息别混了。1. 实验需求与整体设计思路1.1 从静态路由的痛点说起为什么需要动态路由先把话说透静态路由不是一无是处恰恰在小型稳定网络中它反而高效、可控、不占带宽。比如就两台路由器互联分别带两个终端网段你两条静态路由配下去一劳永逸。但真实网络不会只有这么点规模。一旦网络拓扑发生变化比如新加了一台设备、某个网段搬迁、链路临时割接静态路由就得一台一台登录过去改。改错一行命令整条路径就断了。动态路由解决的就是这个问题。路由器之间通过协议自动交换路由信息每台路由器把自己已知的网段“告诉”邻居邻居再告诉下一个邻居大家各自维护一张动态更新的路由表。拓扑变了协议自己发现、自己收敛不用你手动干预。从这个角度看动态路由是网络工程师必须掌握的能力。而对入门者来说第一步选一个合适的协议来理解动态路由的工作机制比一上来就啃OSPF、IS-IS要友好得多。这个实验我选择RIP核心原因有三个第一RIP逻辑简单算法就是距离矢量理解起来没有门槛第二报文交互机制直观通过抓包能看到它隔30秒就发一次更新第三它虽然在实际生产中已经边缘化但作为学习概念的工具价值极高。把RIP吃透了再去看OSPF的SPF算法、区域设计你会有一种“原来如此”的感觉。1.2 动态路由协议的分类与RIP的定位动态路由协议从大类上分先是IGP内部网关协议和EGP外部网关协议。IGP负责一个自治系统内部的路由比如RIP、OSPF、IS-ISEGP负责自治系统之间的路由典型的就是BGP。咱们平时接触最多的是IGP这个实验里的RIP就是IGP中最老牌的一员。IGP内部又分两类距离矢量路由协议和链路状态路由协议。RIP属于距离矢量它不关心整张网络的详细地图只告诉邻居“我到某个网段还差几跳”传递给对方的是一个“目的网段跳数”的矢量结果。OSPF属于链路状态每台路由器把接口、邻居这些“链路状态”泛洪给全网每台路由器手里都有一份完整的拓扑数据库再用SPF算法自己计算出一棵树。打个比方距离矢量相当于你问路的时候路人只告诉你“往北走三个路口就到了”他不跟你描述整条街道的布局。链路状态则是你手里有一张完整地图去哪都能自己规划路线。RIP的定位就是在当年链路质量参差不齐、网络规模普遍较小的时代用最简单的方式把路由信息跑起来。现在大型企业网、数据中心里已经很少看到RIP的身影但它在教学场景里的地位依然稳固。这次实验的目的就是把这套最朴素的动态路由工作流程完完整整跑通。对比项RIPOSPF算法类型距离矢量链路状态更新机制周期30秒触发更新周期通告度量值跳数带宽计算的Cost收敛速度慢分钟级快秒级适用规模小型网络中大型网络1.3 这个实验到底要验证什么做实验最忌讳的就是照着命令敲一遍敲完也不知道发生了什么。动手之前先把目标定清楚这个实验要验证的核心是四件事第一RIP协议启动后三台路由器能不能自动学到全部网段的路由注意是自动也就是没有任何手动静态路由第二在R2这台中间路由器上能看到从不同方向学习过来的路由条目理解“下一跳”和“度量值”这两个字段的含义第三链路故障发生后路由表里的失效路由能不能自动消失多久消失这直接关系到你对动态路由收敛能力的理解第四配置过程中各种坑点比如版本不匹配会有什么现象、宣告网段遗漏会有什么后果。这四个问题验证完你才算是真正对RIP有了体感而不是停留在“好像听过这个名字”的层面。2. 动手前必须吃透的RIP原理2.1 跳数度量与15跳限制RIP最核心的度量值是跳数Hop Count。每一台经过的路由器算一跳比如R1到R3需要经过R2那么跳数就是2。目的网段直连在路由器自己的接口上跳数为0。RIP规定了最大有效跳数是15跳数达到16就会被判定为不可达。这个限制直接决定了RIP只能用在小型网络里。为什么是15不是20或者30从历史上看这个值是为了防止路由环路报文的无限循环同时控制路由更新的传播范围。一台大型企业网内部分区动辄十几台路由器串接跳数很容易逼近上限这也是RIP在现代网络中“退休”的核心原因之一。这里要补充一个容易忽略的细节RIP计算的是“经过的设备的数量”跟链路的带宽、时延、可靠性完全无关。哪怕是一条10M的老旧专线和一条千兆光纤并排跑RIP眼里它们等价只要跳数一样就认为一样好。这显然不够科学但这也是它的特点——简单到极致。2.2 RIP v1与v2的关键差异RIP有好几个版本目前学习用得最多的是v2v1已经是博物馆级别了。两者的差异直接关系到实验能不能成所以必须搞清楚。RIP v1是有类路由协议报文的更新里不携带子网掩码路由器只能用地址类别推断出掩码。这意味着v1不支持可变长子网掩码也不支持CIDR网络里一旦出现非标准掩码v1就蒙圈了。另外v1用广播地址255.255.255.255发送更新广播会打扰同一广播域里所有设备。RIP v2的主要改进有四个方面支持VLSM和CIDR更新报文里携带子网掩码用组播地址224.0.0.9发送更新而不是广播支持明文和MD5认证防止非法设备注入路由支持路由标记等扩展字段为后续策略留了空间。实验里我建议直接用v2。如果混合使用v1和v2就会出现兼容问题v2开启的接口能收到v1的广播更新但v1的接口收不到v2的组播更新表现就是一方学到了路由、另一方死活学不到这种不对称的现象在排查时特别迷惑人。后面故障排查部分我会专门展开。2.3 防环机制RIP能活到今天的秘密距离矢量协议天然存在一个严重问题路由环路。想象一下A和B之间的链路断了A还没收到消息之前周期性更新到了把通往某网段的路由又发给了BB还以为通过A可达于是把去往该网段的流量又转发给A形成死循环。为了避免这种情况RIP配备了四道防线。第一是水平分割。这条规则很朴素从某个接口学习到的路由不能再从这个接口通告回去。相当于你从A同学那里听到的消息不会原封不动又告诉A同学。第二是毒性逆转。水平分割的基础上更进一步从接口学到的路由再转发回去时直接标记为不可达跳数16让邻居立刻意识到这条路径有问题。第三是触发更新。链路状态一旦发生变化不等30秒周期立刻发送更新缩短错误的传播时间窗口。第四是抑制计时器一条路由失效后进入抑制状态在这段时间内不接受任何关于它的新路由消息防止接收到过期的错误信息。这四道防线叠加让RIP的环路风险降到可以接受的水平。不过话说回来防环机制再多也无法改变RIP收敛慢这个硬伤一个链路故障从发现到全网收敛完成几十秒甚至一两分钟很常见。这也是我建议后续实验一定体验一下OSPF的原因对比之下你才能理解什么叫“秒级收敛”。3. 实验环境准备与拓扑搭建3.1 eNSP安装与设备选型这个实验我用的是华为eNSP全称Enterprise Network Simulation Platform国内网络工程教学使用率最高的模拟器之一。你如果手头有真实路由器或者用的是GNS3、Cisco Packet Tracer也别急着退出配置思路完全一致命令大同小异我用华为命令做演示思科对应命令我在关键地方会提一句。eNSP的安装有几个坑提前说。它依赖两个组件Wireshark用于抓包VirtualBox用于运行部分设备镜像。安装顺序建议先装VirtualBox再装eNSP版本不匹配会导致设备启动报错。装好之后打开软件第一次添加设备时会有提示是否注册按提示操作就行。如果AR路由器启动后一直显示“启动中”或者端口红绿闪烁不停大概率是VirtualBox版本不兼容换一个官方指定版本能解决绝大部分问题。设备选型上实验用三台AR路由器型号AR2220或者AR201都行性能足够。PC直接用eNSP自带的终端设备不需要额外配置服务。三台路由器成一条链R2居中R1和R3各挂一台PC。这个拓扑规模刚好能展示RIP在不同方向上的路由学习和传播又不会因为设备太多增加配置负担。3.2 拓扑设计与IP地址规划IP规划是整个实验的地基选不好后面配置全是坑。我采用的规划是这样的设备接口IP地址所属网段PC1—192.168.1.1/24192.168.1.0/24R1GE 0/0/0192.168.1.254/24192.168.1.0/24R1GE 0/0/110.0.12.1/2410.0.12.0/24R2GE 0/0/010.0.12.2/2410.0.12.0/24R2GE 0/0/110.0.23.2/2410.0.23.0/24R3GE 0/0/010.0.23.3/2410.0.23.0/24R3GE 0/0/1192.168.3.254/24192.168.3.0/24PC2—192.168.3.1/24192.168.3.0/24R1和R3之间的通信物理上要经过R2逻辑上经过两个网段跳数为2。这个拓扑的好处是链路对称、网段清晰路由交换路径一眼就能看穿。这里有个规划细节值得多说一句互联地址用了10.0.12.0/24和10.0.23.2/24这样的30位掩码。我特意用了24位掩码原因有两个。第一是入门阶段用24位掩码看着直观每个网段只有一台设备读起来不容易算错。第二是RIP实验不涉及带宽规划互联地址浪费几个IP无所谓但如果你后续在真机上练习还是建议用30位掩码真机上地址资源是宝贵的这个习惯要早养成。拓扑连接在eNSP里的操作很简单从设备列表拖三台AR2220到画布再拖两台PC用自动连线把R1的GE0/0/0、GE0/0/1、R2的GE0/0/0、GE0/0/1、R3的GE0/0/0、GE0/0/1以及两台PC的以太口分别连好接口对应关系按照上面那张表来。连线之后给所有设备和PC开机等指示灯稳定变绿再操作不然配置容易“没反应”。4. 核心配置实操与验证4.1 基础配置接口IP与PC网关配置从接口IP开始这是所有上层协议的地基。以R1为例命令如下system-view sysname R1 interface GigabitEthernet 0/0/0 ip address 192.168.1.254 24 quit interface GigabitEthernet 0/0/1 ip address 10.0.12.1 24 quit三个地方说明一下。sysname用来改设备名改了之后提示符会变多台设备同时操作时不容易敲错命令。ip address后面先写IP再写掩码写24就代表255.255.255.0华为设备支持这种简写。每配完一个接口就quit退回系统视图养成随手保存的习惯。R2和R3的接口IP按照IP规划表同样配置R2两个接口分别是10.0.12.2和10.0.23.2R3是10.0.23.3和192.168.3.254这里不再重复贴代码。PC的配置是用图形界面做的双击PC图标在IP配置里把IP地址、掩码、网关填上。PC1填192.168.1.1、255.255.255.0、网关192.168.1.254。PC2填192.168.3.1、255.255.255.0、网关192.168.3.254。配完接口先做一件事验证直连链路通不通。从R1 ping R2的10.0.12.2通了再继续。很多人在这个阶段跳过验证直接配RIP结果出了问题分不清是底层链路问题还是路由协议问题白白浪费排查时间。接口配置阶段的验证永远是第一步。4.2 启用RIP并宣告网段全部接口配好后开始配置RIP。R1的完整配置命令rip 1 version 2 network 192.168.1.0 network 10.0.0.0 quit先看第一行rip 1里的数字1是进程ID。eNSP里默认进程ID是1如果同一台路由器上要跑多个RIP进程ID就得不同。入门实验不用纠结用1就行。第二行version 2指定RIP版本这一步很多人会漏。eNSP里的AR路由默认RIP版本是v1如果不手动改成v2后面会遇到一堆兼容性怪问题。network命令是RIP配置里最容易出错的点。它的作用不是“添加一条路由”而是“告诉RIP哪些接口要参与协议”。华为设备上network后面跟的是网段而且一般是自然网段形式。R1上10.0.12.1这个接口属于10.0.0.0这个A类网段所以写network 10.0.0.0192.168.1.254属于192.168.1.0这个C类网段写成network 192.168.1.0。这里有个关键思路你得捋清楚RIP只宣告接口所在网段其他网段的路由是由接口参与协议后自动学习并传播的。比如R1的network 10.0.0.0告诉RIP“GE0/0/1接口要跑RIP”至于这个接口对面是谁、再往远是谁RIP会通过报文交互自己学不需要你宣告。R2上没有终端网段只有两个互联接口都落在10.0.0.0网段里所以只需要一条network 10.0.0.0。R3的配置和R1对称两条network分别是10.0.0.0和192.168.3.0。配完之后三台设备的RIP进程就都启动了。如果你用Cisco设备命令格式对应为router rip然后network语句版本则在接口或路由器模式下配version 2逻辑完全相同。4.3 验证路由学习路由表与协议状态配置完成不代表真的学通了验证环节才是实验的高潮。先看最直观的路由表在R1上执行display ip routing-table。正常情况下路由表里除了直连路由还会出现10.0.23.0/24和192.168.3.0/24两条路由协议类型显示R代表RIP学习。其中192.168.3.0/24这条路由的下一跳是10.0.12.2接口是GE0/0/1表示去往192.168.3.0/24的数据要从GE0/0/1交给R2。而10.0.23.0/24这条下一跳同样是10.0.12.2接口GE0/0/1因为R2就是中间这台路由器正好处在R1通往R3的半路上。R2上执行display ip routing-table路由表更丰富两条直连网段10.0.12.0/24和10.0.23.0/24两个RIP学习来的终端网段192.168.1.0/24和192.168.3.0/24。这里有个细节R2去往192.168.1.0/24会有两个下一跳可选但RIP只保留下一个最优的默认保留最早学到的那一条这点跟OSPF在同开销时会形成等价负载均衡不同RIP即使有多个相同跳数的下一跳通常也只保留一条。想看得更细用display rip 1 route看RIP协议自己的路由表里面会标明每个目的地是从哪个方向学来的、跳数是多少字段含义一目了然。还要提一个容易被忽略的命令display rip 1 neighbor。RIP虽然没有显式的邻居概念但华为设备里能看到当前活跃的RIP邻居信息。如果这里显示不出邻居说明协议报文没交互起来得回去查版本和宣告。最后从PC1上ping PC2通这条ping通了说明R1和R3之间的路由学习是完整且生效的。我建议你从PC1连续ping一段时间然后故意把R2的某个接口shutdown观察ping会不会断、断了之后多久恢复这样能直观感觉到收敛过程带来的“痛”。4.4 链路故障与路由收敛实验协议学完之后来点真实的操作模拟链路故障。在R1上把连R2的接口GE0/0/1直接关掉命令是interface GigabitEthernet 0/0/1然后shutdown。先看路由表你会发现在R1上10.0.23.0/24和192.168.3.0/24这两条RIP路由立刻消失因为接口down了物理链路不可用跟这个接口相关的路由直接被删掉。但其他路由器此刻还不知道这个变化因为在RIP的周期更新机制下它们要等30秒甚至更久才能收到消息。如果这时候从R2上观察路由表一时半会儿看不到变化。R2的邻居检测机制要等几个更新周期RIP在华为设备上默认接口down后要经过失效时间才把相关路由标记为不可达。你可以计时从R1的接口shutdown到全网路由收敛整个过程通常要几十秒。这个等待时间正是RIP的致命短板也是后来被OSPF逐步替代的关键原因。恢复链路时在R1接口里执行undo shutdown等一两分钟后路由又会自动回来。这里有个实操心得测试时别只盯着路由表从PC1持续ping PC2观察丢包和恢复的节奏能把收敛过程具象化。这也是面试时经常被问到的“RIP收敛慢到底慢在哪”的一次亲身验证。4.5 扩展实验调整度量值基础实验跑完还能加点料锻炼理解。RIP允许对特定接口调整路由度量值让路过这条链路的开销变大。比如在R2的接口上配置rip metricout 5表示从该接口通告出去的路由跳数在原有基础上加5。这个有什么实际意义帮你理解“路由选择是在比较多个候选路径”这件事。如果拓扑稍做调整R1和R3之间再连一条独立链路RIP就会挑跳数小的一方进路由表。这时把其中一条链路的metric调大你会看到路由切换立刻发生。这个扩展实验不复杂但对理解动态路由“择优录取”的工作方式帮助很大建议有条件都做一下。5. 常见问题排查与避坑实录5.1 路由始终学不到先查network宣告实验中最常遇到的问题就是RIP配完了路由表里死活不出现对端网段的路由。第一反应别去怀疑协议配置先查network宣告。漏宣告的现象很典型某台路由器自己的直连网段没宣告它就无法向邻居通告这个网段或者某一条链路上的两个接口没都宣告两个RIP进程之间就根本传递不了路由信息。我之前就犯过一次低级错误R1上只宣告了192.168.1.0忘了宣告10.0.0.0结果R1自己的路由表看起来一切正常——直连路由都在跟R2之间的直连链路也通但就是不出现R3那边的路由。排查了好久才注意到R1跟R2之间的接口根本没被RIP“激活”协议报文压根没发出来。给个排错口诀先看物理链路的直连通不通再确认所有参与RIP的接口都已通过network宣告再看端口之间是不是同一个网段。这三点没问题RIP的路由交换就可以期待了。5.2 版本不匹配的诡异现象RIP版本不一致导致的症状是新手最容易懵的。现象是这样R1配了version 2R2配了version 1然后R1能学到R2通告的路由R2却学不到R1通告的路由。原因我在原理部分已经埋了伏笔v2的接口可以同时处理v1的广播报文和v2的组播报文具备一定的向下兼容能力而v1的接口只监听广播地址压根不理会v2发出的组播报文。于是两边收到的信息不对称表现就是“单向学习”。你在排错时看到这种单通的路由学习第一反应就该是查版本一致性。解决方法最粗暴统一把三台设备全部配置成version 2互通的接口上版本必须一致。在eNSP里我建议配置RIP时第一行就紧跟version 2养成习惯就不会踩这个坑。5.3 接口shutdown后路由表迟迟不消失另一个让人很困惑的现象是接口明明shutdown了某些路由却还在路由表里待了很久。这里要解释清楚RIP的失效机制。华为设备的RIP路由条目要经过失效计时器默认180秒才会被彻底删除。当你down掉一个接口跟接口直接相关的路由会快速消失但通过邻居学习来的路由要等三个更新周期之后才被判定失效。换句话说你看到的那条“僵尸路由”是因为RIP还不知道远端已经发生变化了。这个等待过程正是防环机制和报文交互时序共同作用的结果。强扭一下也合理如果RIP立刻删掉每一条过期的路由在网络振荡的场景下反而会引发路由回环。理解了这个机制你就不会在排错时被“明明很灵异、其实很正常”的假象误导。5.4 模拟器环境特有的坑最后聊聊eNSP模拟器自身的坑这些都真实影响过我的实验进度。第一个是设备启动异常。AR路由器开不了机、端口一直红色九成是VirtualBox版本不对。我建议按eNSP安装文档推荐的VirtualBox版本装别追求新版新版反而容易出问题。第二个是设备间连线后要等接口全绿再配置否则命令输进去提示符没反应不是模拟器坏了是设备还没就绪。第三个是配置完RIP后别急着看结果RIP的周期更新是30秒加上处理时延等上10到20秒再刷新路由表是正常操作没看到结果可以再等一轮不用立马怀疑配置错了。第四个坑是关于自动改名的多台设备同时操作时我习惯第一件事就sysname改设备名可以显著降低“这台配置写到另一台”的误操作概率。所有配置完成后记得在用户视图下执行save保存模拟器重启后配置才会保留不然下次打开又是全新的一台裸机。5.5 从RIP到OSPF下一步实验方向把RIP实验完整跑完你对动态路由的理解就有了一个扎实的基础。接下来我强烈推荐把同样的拓扑跑一遍OSPF。改动不大但体验天差地别OSPF邻居建立有LSA交互链路状态数据库全网一致收敛速度从分钟级直接降到秒级。当你亲自看到RIP和OSPF在同一张拓扑下的表现差异就会明白为什么现代网络几乎都是OSPF和BGP的天下了。扩展方向上还有一个选项是策略路由和路由控制比如利用prefix-list、route-map控制RIP通告和接收的路由把RIP实验从“能跑通”提升到“能控制”。这条路很接近生产环境里动态路由协议的日常运维方式值得投入时间。我个人在实际操作中的体会是RIP实验虽然看起来简单但它是少数几个能把动态路由的“交换逻辑”完整暴露在你眼皮底下的协议。跑通它你就理解了为什么路由器需要“学”路由而不是“配”路由理解了这个转变后面再看OSPF的多区域设计、BGP的路由反射你的起点就完全不同了。一个小技巧送给你每次做完实验都手动抓一次RIP的UDP 520报文亲眼看一看路由器之间交换的那几行内容绝对比背十遍协议状态机印象深刻。
返回列表