11-RIP路由协议详解——路由算法和防环机制

1. RIP路由算法

  RIP协议是基于Bellham-Ford(距离矢量)算法,即贝尔曼算法,该路由算法可以根据路径参数,也就是度量值的好坏来生成路由条目。

1.如图1所示,如果收到邻居给的路由,若本地没有,则接收。

这里写图片描述
图1



2. 如图2所示,如果收到邻居给的路由,若本地有,根据度量值对比,若优则录入,若劣质则丢弃。

这里写图片描述
图2

路径1:PC–>R1–>R2–>R4
路径2:PC–>R3–>R4
路径1的管理距离是3,路径2的管理距离是2,因此路由算法会从中学习选择最优路径PC–>R3–>R4

3.如图3所示,在只有一个邻居路由的情况下,如果收到邻居给的是劣质路由,还是会从原有的邻居R2学到这条路由。

这里写图片描述
图3

因为R4只有R2一个邻居,无法对邻居的路径进行对比,所以R4对于R2的两条路径不管优劣都会选择学习加入进来。

2. 路由防环机制

关于RIP防环的机制面试当中经常问到,下图是RIP路由环路的原理:

这里写图片描述
图4

  假设A发送一个数据给B,R1路由会学习相邻的路由器R2的路由路径,当R2的这条链路出现故障时,这是R1并不知道这条链路已经无效了,然后R1把学习到的路由路径发送给R2,R2路由并没有通知R1这条路由无效,而是把该路由信息又发送给了R1,因此会造成路由环路的现象。

RIP协议防止路由环路的机制有以下几种:

1.水平分割(从本接口收到的路由条目,不能再从本接口发送出去)

2.最大16跳(若RIP的路由条目跳数达到16跳,则此路由失效并且被丢弃。因为RIP只能支持直径为16跳的网络,最大有效为15跳)

3.路由中毒(路由毒化,若RIP的路由条目发生故障时,会将此路由标记为16跳,并发送给邻居,告知邻居此路由有问题,尽快删除)

4.毒性逆转(若RIP的路由条目发送故障时,会将此路由标记为16跳,并发送给邻居,邻居会返回16跳的中毒路由,实现确认)

5.抑制计时器(180s),(当收到故障路由之后,默认会直接删除本故障路由;若此时从远方又收到此路由,则有可能造成再一次的环路;为了解决这个问题,设置抑制计时器,当收到故障路由之后,保持180s之后再删除路由条目。)

  需要注意的是,这些方法必须都用上才能防止路由环路,中间任何一个出了问题都有可能会造成路由环路问题。



  前面在学习RIP计时器的时候提到过一个抑制计时器,关于抑制计时器的作用如图5所示:

这里写图片描述
图5

  假设A发送一个数据给B,R1路由会学习相邻的路由器R2的路由路径,R3也会学习到路由器R2的路由路径,相当于图中的1和2两步骤,当R2的这条链路出现故障时,如果R2立马把这条链路给删除掉了,R3在这时又堵住了,还没有删除掉中毒路由,那么R3会把学习到的路由信息再次发送给R2,相当于图中的3步骤,然后R2又发送给R1,相当于图中的第4步,造成R1和R2之间一直重复1和4步骤,会造成路由环路的现象。这时抑制计时器作用就是相当于把中毒路由标记为无效路由,然后等待抑制计时器时间到再把路由删除掉,防止路由环路