7.4 RIP
RIP(Routing Information Protocol,路由信息协议),是一种距离向量算法,广泛用于LAN。
该协议将路由控制信息定期(30秒一次)向全网广播。如果没有收到路由控制信息,连接就会被断开。考虑到有可能是因为丢包导致,所以RIP规定等待5次。如果超过6次即180秒仍未收到路由信息,就会真正的关闭连接。
RIP会根据距离向量算法决定路径,距离单位成为“跳数”,即经过的路由器的个数(IP首部中有个生存周期字段TTL,和跳数对应)。RIP希望尽可能少通过路由器将数据包转发到目标IP地址,如下图所示。最终,路由器会根据距离向量生成距离向量表,抽出较小的路由生成最终的路由控制表。
因为子网掩码的长度不固定(并非8的倍数),使用子网掩码时则需要另外注意以下两点:
- 将借口的IP地址对应分类得出网络地址后,与根据路由控制信息流过此路由器的包中的IP地址对应的分类得出的网络地址进行比较,若二者相同,则以接口的网络地址长度为准
- 若不同,则以IP地址的分类所确定的网络地址长度为准。
例如192.168.1.33/27
,这是一个C类地址,按照IP地址分类,其网络地址为192.168.1.33/24
。与192.168.1.33/24
相符合的IP地址,其网络地址长度会被认为是接口的27位。除此之外,则采用各个地址的分类(例如B类、C类)所确定的网络地址长度。
因此,使用RIP需要注意以下两点:
- 因IP地址的分类而产生不同的网络地址
- 构造网络地址长度不同的网络环境
接下来我们会讲述一下RIP中路由发生变更时的处理
RIP的基本行为可以归纳为
- 将自己已知的路由信息定期进行广播
- 一旦认为网络被断开,数据将无法流过此路由器,其他路由器也就可以得知网络已经断开
但是这么做会有些问题,如下图所示:
首先路由器A将信息发送给路由器B,路由器B又将自己的信息发送给路由器A和C。假设这时网络A发生了故障。
路由器A虽然觉察到自己与网络A的连接断开,无法再将网络A的信息发送给路由器B,但是巧就巧在,路由器B这位“懂哥”会告诉A曾知悉的消息。这就使得路由器A误认为自己的信息还可以通过路由器B到达网络A。
然后就会陷入循环之中,路由器A与B仿佛卧龙凤雏一般,陷入喋喋不休的传话之中。这个问题被称为无限计数(Counting to Infinity)
。
为了解决这个问题,可以采取以下两种方法:
-
最长距离不超过16(该信息会由
垃圾收集计数器(Garbage collection Timer)
的工具保留120秒,一旦超过改时间,信息就会被删除)。也可以从时间上进行控制。 -
规定路由器不再把所收到的路由信息原路返还给发送端,称作为
水平分割(Split Horizon)
。如下图所示:
然而,对于那些有环路的网络,以上解决方法是不起作用的。如下图所示,如有回路,凡响的贿赂会成为迂回的通道,路由信息会不断地被循环往复地转发。虽然可以通过设置一个正确的迂回通道来解决这个问题,但是就像下图一样,若网络A的通信发生故障,将无法传送正确的路由信息,尤其是在环路有多余的情况下,需要很长时间才能产生正确的路由信息。
为了解决如上问题,有两种方法:
毒性逆转
:指网络中发生链路被断开的时候,不是不再发送这个消息,而是将这个无法通信的消息传播出去,广而告之,即发送一个距离为16的消息。
触发更新
:指当路由信息发生变化时,不等待30秒而是立刻发送出去。
这两种方法的目的都是为了迅速地传送消息以使路由信息尽快收敛。
然而,即使有了上述的方法,在一个具有众多环路的复杂的网络环境中,路由信息想要达到一个稳定的状态是需要花一段时间的。为了更好的解决这个问题,必须明确地掌握网络结构,为此可以采用OSPF。
RIP2,即RIP第二版,在原版的基础上进行了改良,有了如下这个新的特点:
-
使用多播
RIP中路由器之间交换路由信息使用广播,第二版中则使用多播,减少了网络的流量,缩小了对无关主机的影响。
-
支持子网掩码
与OSPF类似,RIP2支持在其交换的路由信息中加入子网掩码信息。
-
路由域选择
在同一个网络中可以使用逻辑上独立的多个RIP。
-
外部路由标志
通常用于把从BGP等获得的路由控制信息通过RIP传送到自治系统中。
-
身份验证密钥
携带密码,只有在自己能够识别这个密码时才接收数据,否则忽略这个RIP包。
本篇小结
本篇介绍了重要的路由信息协议RIP。
其通过广播,每隔30秒,将自己已知的路由信息交换给其他路由。
其根据距离向量确定路由,距离单位为“跳数”。
需要注意的一点时,使用子网掩码时有不同的处理。若IP包网络地址与接口的网络地址相同,就使用接口的网络地址,不相同就使用IP分类(例如C类)的那种网络地址。
当网络信息发生变化时,容易因为RIP的回传消息机制,导致在两个路由器之间反复的告知对方某已经断开连接的网络信息。
基本方案一是限制路由器跳数不超过16,二是规定路由器不再把收到路由信息原路返回给发送端(称作为水平分割)。
然而在有环路的网络中,基本方案不起作用,于是人们提出了两种新的解决方案,一是“毒性逆转”:链路断开后,将这个无法通信的消息传播出去,二是“触发更新”:路由信息发生变化时,不等待30秒而是立刻发送。这两种机制可以使得路由信息尽快收敛。
最后介绍了RIP2中的一些新特性。