提到动态路由协议,很多人第一反应就是OSPF、BGP这些“大牌”,而RIP常常被评为“老旧、过时、该淘汰”。但我在带新人做网络实验时,反而特别推荐先从RIP下手。不是因为RIP在生产环境多有用,而是因为它足够简单,简单到你可以用一台电脑、一个模拟器,把路由协议最核心的那套逻辑——度量值、路由表、防环、收敛——完完整整地看透。RIP协议实验,是你理解所有动态路由协议的起点,绕不开,也省不掉。
这篇文章我会以华为eNSP为主环境,带你从零搭建一个三路由器的RIP实验,包含拓扑规划、配置命令、验证方法和排错思路。整个过程不搞花活,全部是实操中真正能用到的细节。如果你手里有思科模拟器,我也会在关键命令处给出对应写法,方便对照练习。
1. 实验定位:RIP到底在解决什么问题
1.1 从静态路由到动态路由的跳跃
先想一个最基础的场景:两台路由器互联,要让两端的终端互通,最直接的办法是写静态路由。
ip route-static 192.168.20.0 24 10.0.12.2 ip route-static 192.168.10.0 24 10.0.12.1两条静态路由,搞定。但如果有十台路由器、几十个网段呢?每台设备都要手动维护所有非直连网段的路由,任何一个拓扑调整都可能牵扯到多台设备的配置变更。这时候你需要的不是“手工填表”,而是让路由器之间自己交换路由信息,这就是动态路由协议的价值。
RIP(Routing Information Protocol,路由信息协议)是动态路由协议里最老牌的一个。它基于距离矢量算法,说白了就是“我告诉你我有哪些网段,你也告诉我你有哪些网段,大家互相抄路由表”。每台路由器不需要知道全网拓扑,只需要知道“去某个网段,下一跳是谁,跳数是多少”。
这个设计放在今天看很幼稚,但它把“路由器之间如何协作”这件事讲得明明白白。你把这个理解透了,再去学OSPF的SPF算法、BGP的路径属性,会发现都是同一个逻辑的延伸——协商、通告、选路、收敛。
1.2 RIP的核心机制与两个版本的选择
RIP的核心机制可以用三句话概括:
- 度量值只看跳数:每经过一台路由器跳数加1,16跳视为不可达。
- 周期性广播路由:RIPv1用广播(255.255.255.255)发送,RIPv2用组播(224.0.0.9)发送。
- 靠防环机制兜底:水平分割、毒性逆转、触发更新、抑制计时器,四件套防路由环路。
版本选择上,我不建议一上来就纠结。直接跑RIPv2,原因很简单:RIPv1是有类路由协议,不携带子网掩码,遇到不连续子网会直接出问题,会把你带进“为什么路由老是不对”的坑里。RIPv2支持无类路由、支持VLSM、支持认证,虽然协议本身还是老一套距离矢量逻辑,但作为实验对象更贴近现代网络环境。
两个版本的差异可以看这张表:
| 对比项 | RIPv1 | RIPv2 |
|---|---|---|
| 报文发送方式 | 广播 255.255.255.255 | 组播 224.0.0.9 |
| 是否携带掩码 | 否 | 是 |
| 是否支持VLSM | 否 | 是 |
| 是否支持认证 | 否 | 是 |
| 路由汇总方式 | 自动汇总,无法关闭 | 支持手动汇总 |
| 适用场景 | 老式同网段网络 | 现代小型网络 |
2. 实验环境与拓扑设计
2.1 网络模拟器怎么选
做RIP实验,不需要真机,模拟器完全够用,而且更方便反复折腾。主流选择有三个:
华为eNSP:我这次用的环境,华为官方出品,界面干净,命令风格和真实华为设备一致,适合后续要考HCIA/HCIP的人练手。缺点是只在Windows上跑得舒服,而且需要注册账号下载。
思科Packet Tracer:思科官方模拟器,操作最简单,适合纯入门。但命令精简了很多,和真实IOS有差异,做RIP这种基础实验没问题。
GNS3/EVE-NG:跑真实镜像,功能最全,但配置门槛高,要自己导入路由器镜像,对电脑性能也有要求。做RIP实验属于杀鸡用牛刀,如果你已经有现成环境,用也行。
对新手我的建议是:手头有什么用什么,别在工具上耗太久。如果你完全没装过任何模拟器,直接下一个eNSP,半小时就能跑起来。
2.2 拓扑规划与地址表
这个实验我用三台路由器搭一条链式拓扑,这是最经典也最能讲清楚RIP工作过程的形态。
拓扑结构是:R1连着R2,R2连着R3,R1和R3各自用一个Loopback接口模拟终端网段。这样设计的原因有两点:一是R2作为中间设备,能清楚地展示“从R1学到的路由再传给R3”这个过程;二是用Loopback模拟用户网段,可以省掉在每台路由器后面再接交换机和PC的麻烦,聚焦路由协议本身。
地址规划如下:
| 设备 | 接口 | IP地址 | 掩码 | 用途说明 |
|---|---|---|---|---|
| R1 | GigabitEthernet0/0/0 | 10.0.12.1 | 255.255.255.0 | 连接R2 |
| R1 | Loopback0 | 172.16.1.1 | 255.255.255.0 | 模拟用户网段A |
| R2 | GigabitEthernet0/0/0 | 10.0.12.2 | 255.255.255.0 | 连接R1 |
| R2 | GigabitEthernet0/0/1 | 10.0.23.2 | 255.255.255.0 | 连接R3 |
| R3 | GigabitEthernet0/0/1 | 10.0.23.3 | 255.255.255.0 | 连接R2 |
| R3 | Loopback0 | 172.16.3.3 | 255.255.255.0 | 模拟用户网段B |
实验目标是:配置完RIP后,R1能通过R2学到172.16.3.0/24的路由,R3能通过R2学到172.16.1.0/24的路由,R2能同时学到两边的Loopback网段。
3. 配置实操:从零打通RIP路由
3.1 接口地址配置
先把三台路由器的接口IP配好,这是所有路由协议实验的前提。R1上的配置大概是这样的:
system-view sysname R1 interface GigabitEthernet0/0/0 ip address 10.0.12.1 255.255.255.0 undo shutdown quit interface Loopback0 ip address 172.16.1.1 255.255.255.0 quitR2需要配两个物理接口:
system-view sysname R2 interface GigabitEthernet0/0/0 ip address 10.0.12.2 255.255.255.0 undo shutdown quit interface GigabitEthernet0/0/1 ip address 10.0.23.2 255.255.255.0 undo shutdown quitR3参照R1,把IP换成10.0.23.3和172.16.3.3。
配置完先做一件事:用display ip interface brief检查所有接口状态。只要接口是up的,物理链路这块就算通了。很多人RIP学不到路由,最后排查发现是接口shutdown或者IP配错,这种基础问题一定要在最开始就排除掉。
3.2 RIP协议启用与network宣告
接口配完,重头戏来了。在R1上启用RIP并宣告网段:
rip 1 version 2 network 10.0.0.0 network 172.16.0.0 undo summary quit这里面有几个关键点必须说明白,也是新手最容易懵的地方。
第一,network后面跟的是主类网络号,不是精确的子网地址。华为设备的RIP宣告规则是:只要接口IP属于这个主类网络,就启用RIP并通告这个接口。比如R1的G0/0/0是10.0.12.1,属于A类网络10.0.0.0,所以写network 10.0.0.0;Loopback0是172.16.1.1,属于B类网络172.16.0.0,所以写network 172.16.0.0。
这里和思科有区别。思科IOS的network命令可以写精确网段,比如network 10.0.12.0,但华为设备写network 10.0.12.0会直接报错,只会接受主类网络号。你如果用eNSP做实验,一定要记住这个差异。
第二,undo summary是关掉自动汇总。华为设备RIPv2默认开启自动汇总,开启后R1通告172.16.1.0/24时,会把它汇总成172.16.0.0/16通告出去。在我们这个实验里,因为两边正好都是172.16.x.x网段,自动汇总反而会掩盖明细路由的学习过程,所以干脆关掉,让路由表保持最清晰的状态。
R2的配置类似:
rip 1 version 2 network 10.0.0.0 undo summary quitR2两端接口都在10.0.0.0这个主类网络里,一条network声明就能覆盖两个接口。
R3的配置和R1对称:
rip 1 version 2 network 10.0.0.0 network 172.16.0.0 undo summary quit如果你用的是思科模拟器,对应配置是:
router rip version 2 network 10.0.0.0 network 172.16.0.0 no auto-summary3.3 配置验证与路由检查
配置完别急着走,验证环节才是这个实验真正值钱的部分。
在R1上执行display ip routing-table protocol rip,应该能看到类似这样的输出:
Destination/Mask Proto Pre Cost Flags NextHop Interface 10.0.23.0/24 RIP 100 1 D 10.0.12.2 GigabitEthernet0/0/0 172.16.3.0/24 RIP 100 1 D 10.0.12.2 GigabitEthernet0/0/0看到这两条路由,说明RIP已经正常工作。R1通过R2学到了R3那边的网段,下一跳指向10.0.12.2,Cost为1,代表经过了一台中间路由器。
在R2上执行同样的命令,应该看到:
Destination/Mask Proto Pre Cost Flags NextHop Interface 172.16.1.0/24 RIP 100 1 D 10.0.12.1 GigabitEthernet0/0/0 172.16.3.0/24 RIP 100 1 D 10.0.23.3 GigabitEthernet0/0/1R2两边各学一条Loopback网段,完全符合预期。
R3上的结果和R1对称,能学到10.0.23.0/24和172.16.1.0/24。
如果你此时在R1上ping 172.16.3.3,能通,实验的主线任务就完成了。
还有一个命令值得看一下:display rip 1 route。这个命令直接查看RIP进程的路由数据库,能看到协议内部的明细信息。执行后你会看到类似这样:
Destination/Mask Nexthop Cost Tag Flags Expires 172.16.3.0/24 10.0.12.2 1 0 RA 28s这里有个细节:RIP路由过期时间是180秒,刷新周期是30秒。如果R2超过180秒没给R1发更新,R1就会标记这条路由不可达,再过120秒彻底删除。你看到Expires字段倒计时,这就是RIP“靠周期刷新维持路由表”的直观体现。
4. 排错与实战经验:RIP实验常见的坑
4.1 典型故障速查表
下面这些坑,我自己带实验时几乎每个班级都会有人踩一遍,直接整理成速查表:
| 现象 | 可能原因 | 排查思路 |
|---|---|---|
| 路由表里没有RIP路由 | 接口没宣告进RIP | display current-configuration configuration rip检查network声明 |
| 路由表里只有直连路由 | 接口shutdown或链路故障 | display ip interface brief确认接口状态 |
| RIPv1和v2不互通 | 版本不匹配 | 所有设备统一version 2 |
| 学到路由但下一跳不对 | 自动汇总导致明细丢失 | 检查是否关闭了auto-summary |
| ping不通对端Loopback | 两端不在同一VLAN或地址配错 | 逐跳ping网关,确认中间链路 |
| 路由时有时无 | 计时器老化,Garbage-Collection删除 | 查看抓包,确认RIP报文是否持续发送 |
第一个坑最隐蔽。很多人配置时图省事,只写rip 1和version 2,忘了network宣告,RIP进程起来了但一个接口都没参与,自然学不到任何路由。华为的判断标准是:network宣告了哪个主类网络,只有属于该网络的接口才会发送和接收RIP报文。不是说RIP启动了,所有接口就自动参与。
第二个坑我单独强调一下。华为设备默认所有物理接口都是开启的,但有些模拟器版本里,接口默认是shutdown状态,特别是老版本的eNSP。你配好IP发现接口down,第一反应应该是undo shutdown,别傻乎乎地在物理层面折腾。
4.2 抓包看RIP报文的思路
排查RIP问题,最高效的手段是抓包。eNSP里可以在链路上开启抓包,也可以把报文导出用Wireshark分析。
抓包时关注一个关键点:RIP报文使用UDP 520端口,报文类型只有两种——Request和Response。路由器启动时会发送Request请求邻居的路由表,邻居收到后回复Response报文。日常运行中,每30秒主动发送一次Response报文,通告自己的路由信息。
打开一个Response报文,你会看到里面带着一堆路由条目,每条包含目标网段、掩码、下一跳和Metric(跳数)。这就是RIP“距离矢量”这个名字的由来——路由器通告的是一份“距离清单”,而不是一份“拓扑地图”。
如果你决定抓包,注意一个小小的注意事项:RIPv1用广播发送,抓包软件里会看到源IP是接口IP、目的IP是255.255.255.255的UDP包;RIPv2用组播,目的IP是224.0.0.9。通过抓包结果就能判断对端设备是不是跑了RIPv2,不用花时间猜。
4.3 收敛慢与环路:RIP防环机制现场演示
RIP在网络上有个著名的痛点:收敛慢。链路断了,路由表却不能立刻更新,最坏情况下要等180秒超时加120秒垃圾回收,将近5分钟才能彻底删除一条失效路由。这就是RIP不适合大型生产网络的核心原因。
为了让这个“慢”变得更直观,你可以做一个破坏性实验:配置完成后,在R2上用shutdown关掉连接R1的接口,然后用debugging rip 1观察R1和R3的反应。
<R1> debugging rip 1 <R1> terminal monitor你会看到R1收不到R2的更新报文,一直等到超时计时器到期,才把从R2学到的路由标记为不可达。这个过程验证了RIP对链路故障的处理逻辑:不是立即删除,而是等待超时。
与此同时,如果R3还在继续给R2发送去往172.16.1.0/24的报文,R2没有及时收到对端接口down的通知,就可能暂时继续把流量转发给R1的方向。这种“信息不同步”就是路由环路的雏形。RIP防环靠的是水平分割和毒性逆转:R2从连接R1的接口学到的路由,不会再从同一个接口通告回去,避免R1把流量“还”给R2。你可以在R2上执行display rip 1 neighbor,看邻居关系,想深入的话还可以在接口视图下用undo rip split-horizon关掉水平分割,观察路由环路如何出现,再对比开启后的区别。教学效果会非常明显。
5. 扩展实验:把RIP玩透
5.1 计时器调整与触发更新观察
RIP的计时器是可以在实验里改的,华为设备在RIP视图下可以直接调整:
rip 1 timers rip 10 60 40 quit这条命令把更新周期改成10秒、超时时间改成60秒、垃圾回收时间改成40秒。改完之后你会发现收敛速度快了很多,链路断掉后最多一分钟左右就能删掉失效路由。
不过要注意,华为和思科的计时器参数含义不完全一样。华为的是更新周期、超时时间、垃圾回收时间三个参数;思科的是更新周期、无效时间、抑制时间、清除时间四个参数。如果你两边对照实验,别直接套用同一组值。
改小计时器能让实验节奏变快,但我不建议在实验里追求极端值,比如把更新周期改成1秒。那样RIP报文会像洪水一样刷屏,看不到正常的路由交换过程。10秒已经足够快。
5.2 路由汇总、等价负载与认证
关掉自动汇总之后,你可以试试手动汇总。在R1上对172.16.1.0/24这个网段做聚合,通告172.16.0.0/16出去,这样R3的路由表会变得更精简。手动汇总在华为的配置方式是进入RIP视图,在网络类型接口下使用汇总命令,具体语法可以结合你的设备型号查一下。实验目的不是背命令,而是看RIP通告时如何处理前缀和掩码,这能帮你理解无类路由的汇总逻辑。
等价负载分担也是值得观察的点。如果你在图里加一条平行链路,比如R1和R3之间直接再接一根线,RIP会在两条等成本的链路间做负载均衡,路由表里同一个目标网段会出现两个下一跳。这个现象在抓包和路由表里都很好认,理解了它,你就理解了动态路由协议“多路径选路”的基本形态。
最后提一下RIP认证。RIPv2支持简单的MD5或明文认证,配置后邻居之间必须使用相同密钥才能互相学习路由。这是RIP从“实验玩具”走向“可用性”的重要一步,也解释了为什么RIPv2能在一些中小型网络里存活这么久——不是因为它多强,而是因为它能做基本的安全校验。
我在实际做实验时最大的体会是:RIP这个协议,越简单的实验越要把动作做完整。接口地址、network宣告、版本选择、关闭汇总、验证路由、抓包对比,每一步都值得停下来想一想“为什么这么配”。这些东西不是你背下来就算了,而是你以后排查OSPF、BGP问题时的底层直觉。如果你能把三台设备的RIP实验从头到尾做一遍,并且能把每一步的命令、现象、原理对应起来,这个实验就算学透了。之后再进入OSPF,你会发现很多概念——邻居关系、路由通告、度量值、收敛——都是老朋友,只是换了一套更复杂的“方言”而已。