4.7.2 RIP协议

路由信息协议RIP(Routing Information Protocol)是应用最广泛的IGP协议,目前有两个版本,分别是RIPv1和RIPv2。

RIP协议采用矢量距离路由算法,并将参与通信的机器分为主动被动两种方式。主动路由器向其它路由器通告其路由,而被动路由器接收通告并在此基础上更新其路由,但是它们自己不通告路由。路由器采用主动方式使用RIP协议,而主机则只能使用被动方式。

RIP路由器每30秒广播一个路由更新报文,并使用跳数(hop)来度量到达目的站的距离。为了防止路由在两个或多个费用相等的路径之间振荡不定,RIP规定在得到费用更小的路径之前,保留原路由不变。路由器添加新路由时,需要启动一个定时器。如果180秒之内都没有收到该路由的刷新报文,则将其设置成无效路由。

RIP协议使用较小的数值来限制最大的距离值,来防止网络出现不稳定现象。RIP协议采用的最大距离值为15。如果超过该距离,RIP协议将视为网络不可到达,距离值用16来表示。因此,RIP协议只适用于小型的互联网。

RIP协议存在的最大的问题是慢收敛问题,即路由更新报文在网络之间的传播速度很慢,容易引起路由的不一致。RIP选择16作为距离无限正是为了限制慢收敛问题。

下面通过一个动画来分析一种典型的慢收敛情况。

路由器R1与网络1直接相连,因此距离为0,R2和R3通过R1与网络1相连,距离分别为1和2。假设R1与网络1的连接出现故障,我们来分析R1、R2和R3的路由刷新情况。当R1与网络1连接失效时,R1立即更新其路由表,将该路由距离置位16(无限远),并在下次路由报告时通告这个信息。但是除非采用了专门的预防机制,否则可能有其他路由器在R1之前先广播其路由。比如,R2正好报告其到达网络1的距离为2。但是R1并不知道这个距离值是依赖于R1到网络1的连接,因此会错误地将R1到网络1的距离更新为3。在下一轮的路由刷新中R2将根据R1通告的路由信息将到达网络1的距离设置为4。再下一轮的路由刷新中R1根据R2的路由信息将到达网络1的距离设置为5。如此循环下去,直到距离值到达16,即无限远。我们知道RIP路由器每30秒钟广播一次路由报文,这就意味着自治系统要经过240秒钟以后R1到网络1的距离才会收敛。

如何解决慢收敛问题呢?

有四种技术可以解决这个问题,它们分别是触发更新技术、毒性逆转技术、抑制技术和分割范围技术。下面我们分别介绍它们的设计思想。

■ 分割范围技术(split horizon update)要求路由器不会把关于某路由的信息传回到该路由的接口中。这样就避免了上面示例所出现的情况,但是,这种技术不能解决所有拓扑结构中的环路问题。

■ 抑制技术(hold down)迫使参与RIP协议的路由器在收到关于某网络不可达信息后的一个固定时间段内,忽略任何关于该网络的路由信息,以确保所有机器都收到坏消息,而不会错误地接受内容过时的报文。抑制时间通常为60秒。该技术的缺陷是:如果出现路由环路,在抑制期内,错误的路由将保存下来。

■ 触发更新技术(triggered update)的思想是在路由器接收到坏消息后立即广播,而不必等待下一个广播周期。通过立即发送更新信息,路由器减少了因为好消息而容易出错的时间。但是,该技术存在一个问题,一个广播可能改变其它相邻路由器的路由表,从而引发新一轮的广播。如果新的广播有引起路由表改变,则会导致更多的广播。这样就形成了广播雪崩

■ 毒性逆转技术(poison reverse)的思想是在一条连接消失后,路由器在若干个更新周期内都保留该路由,但是在广播路由时规定该路由的费用为无限远。该技术通常与触发更新技术结合使用。

下面我们学习RIPv1报文的格式,如下图所示:

其中,命令字段包含下图描述的各种操作:

RIP协议采用的地址结构不仅仅局限于IP地址,也能适应其它网络协议族的地址规范,因此,其地址结构使用了14个八位组。IP地址仅使用其中的4个八位组,其余部分填充为0。RIP通过网络的协议族类型字段来区分不同的协议族,TCP/IP协议族类型编号为2 。

距离字段尽管使用了32比特,但是其取值范围限制为1到16,其中16表示无限远。

RIPv1没有包括明确的子网信息,如果接收方能够按照局部可用的子网掩码无二义性地对地址进行解释,RIPv1才允许路由器发送子网路由。因此RIPv1只能用于分类地址或定长的子网地址。

下面我们学习RIPv2报文的格式,如下图所示:

RIPv2对前一个版本的扩充体现在三个方面:

协议报文中为每个地址提供相应的一个子网掩码,解决了RIPv1不能传播变长子网和用于CIDR的无类型编址。

通过提供明确的下一跳信息,防止出现路由环路和慢收敛。

提供了16比特路由标记,在传输路由时,路由器发送和接收的标记必须相同,因此该标记提供了传播路由起点的额外信息,甚至可以传递自治系统编号。

因此,RIPv2在功能上明显增强,并且提高了对错误的抵抗能力。

但是无论是RIPv1,还是RIPv2,由于采用最小跳数来计算最短路由,因此存在严重的缺点。它会使路由相对固定不变,而无法对网络负载的变化做出反应。