RIP路由协议的使用,是我们接触路由协议当中最为常见的。那么这个协议,也是众多路由协议的根源。为了更好地掌握路由方面的知识,现在我们来遐想一个基于RIP路由协议的网络拓扑。假若,R1直接与网络1相连,所以在它的选路表中有一条到该网络的距离为1的路由;在周期性的路由广播中包括了这个路由.R2从R1处得知了这个路由,并在自己的选路表中建立了相应的路由产工将之以距离值2广播出去.***R3从R2处得知该路由并以距离值3广播.
现在假设R1到网络1的连接失效了.那么R1立即更新它的选路表把该路由的距离置为16(无穷大).在下一次广播时,R1应该通告这一信息.但是,除非协议包含了额外的机制预防此类情况,可能有其他的路由器在R1广播之前就广播了其路由.可能假设一个特殊的情况,即R2正好在R1与网络1连接失效后通告其路由.因此,R1就会收到R2的报文,并对此使用通常的矢量距离算法:它注意到R2有到达网络1的费用更低的路由,计算出现在到达网络1需要3跳(R2通告的到网络1费用是2跳,再加上到R2的1跳).然后在选路表中装入新的通过R2到达网络1的路由.这样的话,R1和R2中的任一个收到去网络1的数据报之后,就会把该报文在两者之间来回传输直到寿命计时器超时溢出.
这两个路由器随后广播的RIP路由协议不能迅速解决这个问题.在下一轮交换选路信息的过程中,R1通告它的选路表中的各个项目.而R2得知R1到网络1的距离是3之后,计算出该路由新长度4.到第三轮的时候,R1收到从R2传来的路由距离增加的信息,把自己的选路表中该路由的距离增到5.如此循环往复,直至距离值到达RIP的极限.
慢收敛问题的解决
可以使用分割范围更新(split horizon update)技术来解决慢收敛问题.在使用分割范围技术时,路由器记录下收到各路由的接口,而当这路由器通告路由时,就不会把该路由再通过那个接口送回去.在该例中,路由器R2不会把它到网络1的距离为2的路由再通告给R1,因此一旦R1与网络1的连接失效,它就不会再通告该路由.经过几轮选路更新之后,所有的机器都会知道网络1是不可达的.但是分割范围更新技术不能解决所有的拓扑结构中的问题.
考虑慢收敛问题的另一个方法是使用信息流的概念.如果路由器通告了到某网络的短路由,所有接收路由器迅速地作出安装该路由的反应.当路由器停止通告某路由,协议在判断该路由不可达之前,要依据超时机制来工作.当超时出现时,路由器寻找替代路由并开始传播此信息.不幸的是,路由器并不知道这个替代路由是否要依赖于刚刚消失的路由.因此,通常不应迅速地传播否定的信息.有一条警句或谓一语破的:
好消息传播得快,坏消息传播得慢.
解决慢收敛问题的另一个技术使用了抑制(hold down)法.抑制法迫使参与协议工作的路由器,在收到关于某网络不可达的信息后的一段固定时间内,忽略任何关于该网络的路由信息.这段抑制时间的典型长度是60秒.该技术的思路是等待足够的时间以便确信所有的机器都收到坏消息,并且不会错误地接受内容过时的报文.需要指出的是,所有参与RIP路由协议的机器都要遵循抑制策略,否则仍然会发生选路回路现象.抑制技术的缺点是:如果出现了选路回路,那么在抑制期间内这些选路回路仍然会维持下去.更严重的是,在抑制期间所有不正确的路由也保留下来了,即使是有替代路由的存在.
解决慢收敛问题的***一种技术就是毒性逆转(poison reverse).当一条连接消失后,路由器在若干个更新周期内都有保留该路由,但是在广播路由时则规定该路由的费用为无限长.为提高毒性逆转法的效率,它应该与触发更新(triggered updates)技术结合.触发更新技术使得新信息,路由器减少了因为想信好消息而容易出错的时间.
不幸的是,虽然触发更新技术、毒性逆转技术、抑制技术和分割范围技术能够解决一些问题,但它们又带来了一些新的问题.例如,在许多路由器共享一个公共网络的结构中采用触发更新技术的情况下,一个广播就能改变这些路由器的选路表,引发一轮新的广播.如果第二轮广播改变了路由表,它又会引起更多的广播.这就产生了广播雪崩.
使用广播技术(这有可能产生选路回路)和使用抑制技术防止慢收敛问题,可使得RIP在广域网上的工作效率极低.广播要耗费大量宝贵的带宽.即便不出现广播雪崩现象,所有机器周期性地进行广播也意味着网络流量随着路由器数目的增加而增加.而可能出现的选路回路在线路容量有限的情况下可能就是致命的问题.当兜圈子的分组使得线路的容量饱和后,路由器要交换一些选路报文来打破这种回路,就变得很困难甚至是不可能的.同样,在广域网中,抑制期间可能太长,使得高层协议使用的定时器超时从而中断连接.尽管有这些熟知的问题,但还是有许多的组织在广域网上使用RIP作为IGP.