【计算机网络】思科实验(9):RIPv2协议实战与环路预防机制剖析

1. RIPv2协议基础与小型企业网络实战

第一次在Packet Tracer里配RIPv2时,我盯着那些跳数看了半天——这玩意儿真的能自己算出最佳路径?后来才发现,这个诞生于1988年的老牌协议,至今仍是小型企业组网的性价比之选。咱们先拆解下它的核心机制:

距离矢量算法的本质就像快递站之间互相抄送货单。每个路由器30秒就会把自家路由表广播给邻居(RIPv2改用组播地址224.0.0.9更高效),通告内容就三要素:目标网段、下一跳、跳数。比如财务部(192.168.1.0/24)到仓库(192.168.3.0/24)要经过市场部路由器,跳数就标记为1。

在最近给某连锁便利店升级网络时,我用三层交换机模拟了这个场景:

Switch(config)# router rip Switch(config-router)# version 2 Switch(config-router)# network 192.168.1.0 Switch(config-router)# network 192.168.3.0

关键点在于network命令要写主类网络号,就算你划了子网也得写192.168.1.0而不是192.168.1.32/27。实测发现忘开ip routing的话,三层交换机会傻乎乎地把路由请求当二层帧处理。

2. 防环三剑客:水平分割与毒性逆转的配合战

去年处理过一次网络震荡,问题就出在RIP的环路。当市场部和仓库间的链路闪断时,市场部会继续告诉财务部"我能到仓库(跳数2)",而财务部也深信不疑地回复"我这也到仓库(跳数3)",结果形成死亡循环。

水平分割(Split Horizon)的配置像给路由器装了防呆设计:

Router(config-if)# no ip split-horizon // 默认开启,此命令是关闭

它禁止路由器从Fa0/1口学到的路由再从这个口发回去。但我在多接入点网络中发现,这会导致备用路径无法及时生效。

这时就要祭出毒性逆转(Poison Reverse)

Router(config-if)# ip poison-reverse

它会故意从原接口发回跳数为16(不可达)的路由更新。实测中建议和触发更新配合使用:

Router(config-router)# timers basic 15 90 120 // 更新/失效/抑制/刷新时间(秒)

3. 版本兼容性陷阱与认证配置

给老设备升级时踩过坑:总部用RIPv2发带子网掩码的更新,但分公司的老2950交换机只认RIPv1。解决方案是在边界接口强制版本:

Router(config-if)# ip rip send version 1 Router(config-if)# ip rip receive version 1

更稳妥的做法是上MD5认证,防止前台WiFi路由器乱发路由污染:

Router(config)# key chain MYCHAIN Router(config-keychain)# key 1 Router(config-keychain-key)# key-string S3cr3t! Router(config-if)# ip rip authentication mode md5 Router(config-if)# ip rip authentication key-chain MYCHAIN

4. 路由过滤与偏移列表实战

去年有次市场部VPN路由总被错误优选,用offset-list解决了:

Router(config)# access-list 1 permit 192.168.5.0 0.0.0.255 Router(config-router)# offset-list 1 in 2 FastEthernet0/1

这会给从Fa0/1口学到的192.168.5.0路由增加2跳。更精细的控制可以用分发列表:

Router(config)# access-list 10 deny 10.1.2.0 Router(config-router)# distribute-list 10 in FastEthernet0/0

5. 与静态路由的混合部署技巧

在便利店项目里,我把收银系统的路由设为静态,其他用RIP动态传播:

Router(config)# ip route 192.168.100.0 255.255.255.0 Null0 // 防路由黑洞 Router(config-router)# redistribute static metric 5

记得用passive-interface阻止不必要的广播:

Router(config-router)# passive-interface default Router(config-router)# no passive-interface FastEthernet0/1

6. 性能优化与故障排查

debug ip rip能看到这样的更新:

RIP: sending v2 update to 224.0.0.9 via Fa0/1 RIP: build update entries - suppressing null update

如果发现路由抖动,先查show ip protocols里的计时器是否匹配。有个客户的路由器总丢包,最后发现是clock rate没配:

Router(config-if)# clock rate 64000 // 串行链路必备

在真实项目中,RIPv2最适合网点少于15个的扁平化网络。上次给汽修连锁店部署时,用路由汇总大幅减少更新量:

Router(config-router)# summary-address 172.16.0.0 255.255.0.0