10-RIP路由协议详解——触发更新和中毒路由

  在上一篇学习RIP计时器时,我们可以知道当一条路由信息不可用时,从这条路由信息标记为“无效”直到完全删除需要240s(4分钟时间),因为前面我们把R3暂停时,这对R1来说它无法检测到R3是否真的出故障了,所以才会启动计时器。当路由器出现关机或崩溃时,对于邻居路由器来说能明显检测到这种网络故障,这时就会立即触发更新的机制。

1. 触发更新

  当路由协议检测到网络拓扑发生变动时,不再需要基于计时器进行路由处理,直接发送故障或者发生变动信息进行处理,此过程称为触发更新

  正常情况下,路由器会基于计时器每30s将路由表发送给邻居路由器,而触发更新就是立刻发送路由更新信息。也就是说检测到网络故障的路由器会直接发送一个更新信息给邻居路由器,并依次产生触发更新通知它们的邻居路由器,此过程就叫触发更新。触发更新这种方式使整个网络上的路由器在最短的时间内收到更新信息,从而快速了解(学习收敛)整个网络的路由变化。

  这里,我们把R3设备的loopback 1口直接shutodwn掉,来模拟R3设备发生很明显的网络故障,如图1所示:

这里写图片描述
图1-R3设备模拟网络故障

  注意一下2.0.0.0网段的时间间隔,也就过了8秒,当R1检测到R3出故障时,就会立即触发更新,把3.0.0.0路由从路由表中删除掉,如图2所示:

这里写图片描述
图2-R1设备


下面是用wireshark抓取R1到R3链路的数据包,具体信息如下:

这里写图片描述
图3-R3设备的数据包

  这说明R3设备出故障时,就发送了一个度量值16的广播数据包,相当于R3说:“我发了一条中毒的路由给你们了”。


R1给R3发的数据包,具体信息如下:

这里写图片描述
图4-R1设备的数据包

  然后R1收到R3发的这条中毒路由后,也发了一条一模一样的路由返回给R3,这种现象叫毒性逆转,表示R1收到了R3的中毒路由。如果R1没有回复,那么R3就会一直发中毒路由。

  但这样也是有问题存在,有可能路由更新信息数据包被某些网络中的链路丢失或损坏,导致其他路由器没能及时收到触发更新。

  因此就产生了抑制计时器的触发更新,而抑制计时器的规则要求一旦路由无效,在抑制时间内,到达同一目的地有同样或更差度量值的路由更新信息将会被忽略。这样触发更新将有时间传遍整个网络,从而避免了已经损坏的路由重新插入到已经收到触发更新的邻居中,也就解决了路由环路的问题。

2. 路由中毒

   路由中毒是指在路由信息在路由表中失效时,先将度量值变为无穷大的数,而不是马上从路由表中删掉这条路由信息。( 这句话要理解,如RIP协议中,其度量值变为16,意味着路由不可达,是无效路由,也就是之前所说的中毒路由,这点我们可以在图3和图4中看到) 然后再将其中毒的路由信息发布出去,这样相邻的路由器收到该中毒路由就可以通过其度量值就得知这条路由的度量值是16,说明该路由是无效的。

  因为RIP协议中的度量值其实就是跳数,而RIP协议的跳数最大是15,大于15的目的地被认为是不可达,所以当其度量值为16,就表示这是一个无效路由,这就是所谓的路由中毒,这个数字在限制了网络大小的同时也防止了一个叫做“记数到无穷大”的问题。

3. 毒性逆转

  然后收到中毒路由信息的相邻的路由器会发送一个毒性逆转的信息,表示已经收到中毒路由信息。

  那么为什么收到中毒路由的路由器为什么要回复一个毒性逆转的信息?这是因为如果不回复的话,那么发送中毒路由的路由器就会一直以广播的形式发送中毒路由,直到相邻的路由器收到并回复一个毒性逆转的信息。

猜你喜欢

转载自blog.csdn.net/qq_35733751/article/details/80309562