到此为止,R I P的基本机制和特性已经以一种相当静态的方式进行了讨论,然而通过考察这些机制如何相互作用来适应网络的拓扑变化,可以获得对R I P这些机制更深层的理解。
R I P互联网络中拓扑变化带来的最重要可能是它会改变相邻节点集,这种变化也会导致下一次计算距离向量时得到不同的结果。因此,新的相邻节点集必须得到汇聚,从不同的起始点汇聚到新拓扑结构的一致看法,得到一致性拓扑视图的过程称为收敛( c o n v e rg e n c e )。简单地讲,收敛就是路由器独立地获得对网络结构的共同看法。
图9显示了收敛过程;图中画出了两条可能的从路由器A和网络1 9 2 . 1 6 8 . 1 2 5到路由器D 的路由。路由器D是一个网关路由器。到路由器D网络的基本路由要通过路由器C。如果这条路由器出现故障,就需要一些时间使所有的路由器收敛至新的拓扑结构,这个拓扑中不再包括路由器C和D之间的链路。
路由器C和D之间的链路出现故障,它就不再可用,但是整个网络却需要相当一段时间才能知道这一事实。收敛的第一步是D认识到至C的链路发生故障。这里假设路由器D的更新计时器先于C的计时器到期。因为这条链路本应传输从路由器D到路由器C的更新报文,所以C就不能收到D发送来的更新报文。C ( A和B )仍没有意识到C - D链路已经发生故障。互联网络中的所有路由器会继续通过那条链路对寻址到路由器D网络的报文进行转发。收敛的第一阶段显示在图1 0中。

图9 从路由器A到路由器D的两条可能路径

图10 只有路由器D意识到链路故障
一旦更新计时器超时,路由器D会试图把对网络拓扑变化的推测通知给它的相邻路由器。直接相邻者中只有路由器B能直接联系。收到更新报文,B会更新它的路由表,设置从B到D (通过C )的路由为无穷。这样允许其通过B - D的链路与D进行通信。一旦B更新了自己的路由器,它会把关于拓扑结构的新变化广播给它的其他相邻者,A和C。
注意记住,RIP节点通过设置路由的度量为16来作废一条路由—16对RIP而言相当于无穷。
A和C一收到更新报文并重新计算了网络耗费之后,它们就能用B - D的链路来替换路由表中使用C - D链路的表项。以前所有的节点,包括B本身都不使用B - D的路由,因为它比C - D的链路耗费大。它的耗费度量为1 0,而C - D的耗费为1。现在,C - D链路发生了故障,B - D链路的耗费变为最低。因此,这条新的路由会代替相邻节点路由表中超时的路由。
当所有的路由器认识到通过B是到D的最有效路由时,它们就收敛了,如图11 所示。

图11 路由器把B-D作为新路由
确定收敛完成之前所需的时间不容易。它因网络不同而区别很大,这要依赖于许多因素,包括路由器和传输线路的健壮性、交通流量等等。
在前一节所举的例子中,惟一的故障发生在连接C和D的链路上。路由器能够收敛到新的拓扑结构,通过另一条路径恢复对网关路由器D上网络的访问。如果D自身发生故障会造成更严重的结果。前面例子中的收敛过程开始于D能够通知B发生了链路故障。如果是D,而不是到C的链路出现故障;B和C就都不能收到更新,通知它们拓扑发生了变化。
这种情况下收敛到新拓扑能导致一种称为计值到无穷的现象。当网络变得完全不能访问时,基于如下错误的想法:存在另一个路由器能访问那个不可达的目的地,这种情形中的路由器会计值R I P度量到无穷。
为了从路由角度显示这种灾难性故障所带来的内在危险性,重新考虑收敛图中的拓扑结构。在图1 2中,路由器D发生故障。

图12 路由器D发生故障
由于路由器D发生故障,位于网络之中的所有主机从外部不能再被访问。路由器C,在没有收到路由器D的6个连续更新之后,会作废掉C - D路由,并且广播其为不可到达。这一点显示在图1 3中。路由器A和B对路由失效一无所知直到接到C的通知。
此时,A和C相信通过B能到达D。它们会重新计算自己的路由,包括这条更高耗费的迂回线路。图1 4显示了这一点。
这两个路由器向它们的直接相邻路由器B发送它们的下一个更新报文,路由器B,已经超时了自己至D的路由,相信通过A或C仍能访问D。显然,这样是不可能的,因为A和C依赖于B刚作废的链路。实质上,在A、B、C之间形成了一个环,这个环的形成是由下面的错误想法形成的,即A和C通过对方仍能到达路由器D。这是因为二者都有到B的连接,而B有一条到D 的连接。

图13 路由器C作废了C-D路由

图14 A和C相信它们能通过B访问D
更新的每次叠代过程,耗费度量会因额外的下一跳而递增到已经计算过的环上。这种形式的循环是由于时间延迟而引起的,而这种时间延迟是通过相邻者发送更新报文的独立收敛过程的特点。