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

   在上一篇中,当一条路由信息不可用被标记为“无效”直到完全删除需要4分钟。

   一般把R3设备暂停时,这对相邻的R1来说它无法检测到R3是否真的出故障了,此时会启动计时器。但是当路由器出现关机或崩溃时,邻居路由器可以明显检测到这种网络故障,并立即触发更新的机制。


1. 触发更新

   正常情况下,路由器会基于更新计时器每30s将路由表发送给邻居路由器,而触发更新是立刻发送路由更新信息

   触发更新就是当检测到网络拓扑发生变动时,路由器会立即发送一个更新信息给邻居路由器,并依次产生触发更新通知它们的邻居路由器,此过程就叫触发更新。

   触发更新主要就是让整个网络上的路由器在最短的时间内收到更新信息,从而快速了解(学习收敛)整个网络的路由变化。


   这里,我们把R3设备的loopback 1口直接shutodwn掉,来模拟R3设备发生很明显的网络故障,如图1所示:
10-RIP路由协议详解——触发更新和中毒路由_第1张图片

  注意一下2.0.0.0网段的时间间隔,也就过了8秒,当R1检测到R3出故障时,就会立即触发更新,把3.0.0.0路由从路由表中删除掉,如图2所示:
10-RIP路由协议详解——触发更新和中毒路由_第2张图片


下面是用wireshark抓取R1到R3链路的数据包,具体信息如下:
10-RIP路由协议详解——触发更新和中毒路由_第3张图片

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


R1给R3发的数据包,具体信息如下:
10-RIP路由协议详解——触发更新和中毒路由_第4张图片

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


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

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

2. 路由中毒

   路由中毒是指在路由信息在路由表中失效时,先将度量值变为无穷大的数,而不是马上从路由表中删掉这条路由信息。 然后再将中毒路由信息发布出去,当相邻的路由器收到该中毒路由就可以通过其度量值是16,说明该路由是无效的。

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

3. 毒性逆转

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

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

你可能感兴趣的:(CCNA修炼指南)