技术背景
- RIPv1是一个典型的有类路由协议(Glassful Routing Protocol)。
- RIPv1不支持VLSM,这使得RIP只能够在特定的网络环境中提供路由信息服务,原因是RIPv1的Response报文中所携带的路由信息只有IP地址(目的网络地址)而没有目的网络掩码。
示例
如下图所示的网络拓扑中,部署了一个VLSM的网络:
- R1连接着主类网络172.16.0.0/16的一个子网172.16.1.0/24,R3连接着该主类网络的另一个子网172.16.3.0/24。也就是说172.16.0.0/16这个B类地址的两个子网被192.168.12.0/24及192.168.23.0/24这两个C类网络地址段“分隔”开了,这种网络又被称为“不连续的主类网络”。
- 现在网络管理员将在R1、R2及R3上部署RIPv1。
引入问题
- RIPv1是有类路由协议,运行RIPv1的路由器所泛洪的Response报文中,路由信息是不携带目的网络掩码的,这就存在两个问题:
(1)如果R1要向外通告172.16.1.0/24这个子网,路由的目的网络地址是多少?
(2)对方收到这个路由而又缺少网络掩码信息,它该如何判断目标网络的掩码?
问题分析
- RIPv1定义了一套路由发送及更新规则,简单地说如果RIPv1路由器处于主类网络边界,当它将一个主类网络的子网路由通告到另一个主类网络时,会将前者自动汇总成主类路由进行通告。
- R1处于主类网络172.16.0.0/16及192.168.12.0/24的边界,因此当它向192.168.12.0/24网络通告172.16.1.0/24这个子网路由时,会将该子网路由汇总成主类路由:172.16.0.0/16。
- R2收到这条路由更新后,为172.16.0.0附上该地址的缺省掩码,也就是255.255.0.0,因此最终R2将172.16.0.0/16路由加载到路由表中,该路由的下一跳为R1。
- 同理,R3也处于主类网络边界,因此它向R2发送的Response报文也包含172.16.0.0路由,这将使得R2收到这两份Response报文后,会将两条路由都加载到路由表中(目标地址、路由协议类型、度量值都相同),也就是说,R2的路由表中的172.16.0.0/16路由将在R1及R3这两个下一跳执行等价负载分担。
- 假设此时R2转发到达172.16.3.0/24的数据包时,那么有可能会R2将其送往R1从而导致通信故障。
- 这就是RIPv1面对不连续的主类网络时存在的问题。
解决方法
最推荐的方法是部署RIPv2替代RIPv1。
RIPv2
与RIPv1相比,RIPv2做了如下改进:
(1)使用组播的方式发送RIP报文;
(2)支持无类路由选择,支持VLSM;
(3)在Response报文携带的路由信息中增加目的网络掩码;
(4)支持报文认证;
(5)增加下一跳特性;
(6)增加路由标记功能;
(7)支持手工路由汇总等。