内部网关协议——RIP(路由信息协议)

1.工作原理。

       RIP是一种分布式的基于距离向量的路由选择协议,其最大的优点时简单。RIP协议只能以“跳数”来定义路由开销。所谓跳数,就是到达目的网络需要经过路由器的个数。每经过1个路由器,跳数就加1。RIP认为好的路由就是通过的路由器的数目少,即“距离短”。RIP允许一条路径最多只能包含15个路由器。因此当跳数等于或者大于16的路由将被视为不可达路由,这一限制使得RIP协议一般只应用于规模较小的网络。
       RIP协议具体以下特点:

  • 仅和相邻的路由器交换信息。
  • 路由器交换的信息是当前本路由器所知道的全部信息,即自己现在的路由表。
  • 按固定的时间间隔交换路由信息。
           路由器刚开始工作时,它的路由表是空的。然后路由器就得出到直接相连的几个网络的距离。接着每个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。但经过若干次更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址。

2.路由表的形成。

       路由表中最主要的信息就是:到某个网络的距离,以及应经过的下一跳地址。路由表更新的原则是找出到每个目的网络的最短距离。这种算法叫做距离向量算法。下面是路由器更新路由表的过程(如果N+1小于16,则规定M的值为N+1;如果N+1等于或大于16,则规定M的值为16):
       假设RIP路由器Rx和Ry互为邻居路由器。假设Ry的RIP路由表中存在一条 目的地/掩码 为 z/y 的路由,该路由的Cost为N。当Ry把这条路由信息通过自己的Interface-y接口发送给Rx,且Rx的Interface-x接口接收到这条路由信息后,Rx将会根据如下的更新来更新自己的路由表:

  • 如果Rx的RIP路由表中不存在 目的地/掩码 为 z/y 的路由项,则Rx会在自己的RIP路由表中添加一个路由项,该路由项的目的地/掩码 为 z/y ,出接口Rx的Interface-x接口,下一跳IP地址为Ry的Interface-y接口的IP地址,cost为M。
  • 如果Rx的RIP路由表中已经存在一条目的地/掩码 为 z/y的路由项,且该路由项的下一跳IP地址为Ry的Interface-y接口的IP地址,则Rx会将该路由项的出接口更新为Rx的Interface-x接口,下一跳IP地址更新为Ry的Interface-y接口的IP地址,Cost更新为M.
  • 如果Rx的RIP路由表中已经存在一条目的地/掩码 为 z/y的路由项,且该路由项的下一跳IP地址不是Ry的Interface-y接口的IP地址,并且该路由项的Cost大于M,则Rx会将该路由项的出接口更新为Rx的Interface-x接口,下一跳IP地址更新为Ry的Interface-y接口的IP地址,Cost更新为M。
  • 如果Rx的RIP路由表中已经存在一条目的地/掩码 为 z/y的路由项,且该路由项的下一跳IP地址不是Ry的Interface-y接口的IP地址,并且该路由项的Cost小于或等于M,则该路由项的出接口、下一跳IP地址以及Cost均保持不变。也就是说,Rx不会对该路由项进行更新。

3.RIP的消息格式。

内部网关协议——RIP(路由信息协议)_第1张图片
       RIP协议有两种版本RIPv1和RIPv2,两者主要的差别就是前者不支持认证,而后者是可以认证的。认证功能的作用是用来对付网络中的恶意路由器所发布的一些虚假或错误的路由信息。还有RIPv1采用广播方式发送消息而RIPv2采用组播方式发送消息。

4.RIP定时器。

       RIP协议定义了三种定时器,分别是更新定时器、无效定时器、垃圾收集定时器。

  • 更新定时器:也称为周期定时器,默认30s发送一次更新。它是一个倒计时定时器,每当更新定时器的值倒计为0时,路由器便会向它的所有邻居发送RIP响应消息。
  • 无效定时器:它也是一个倒计时定时器,默认时间是180s,如果在无效定时器内没有收到邻居发送来的更新报文,则把该路由的度量值设置为16,并启动垃圾收集定时器。
  • 垃圾收集定时器:默认时间120s,无效定时器的值为0时,该路由的度量值会被设置为16但路由器并不会立即删除这条无效路由,而是启动垃圾收集定时器。当垃圾收集定时器值为0时路由器才会删除这条无效路由。

5.RIP网络中的环路问题。

       RIP更新路由表的算法虽然易于实现,但是在某些情况下,这种算法会导致路由环路的产生。下面是一个简单的例子:
       内部网关协议——RIP(路由信息协议)_第2张图片
       假设上图RIP网络中,路由已经收敛,那么R3的路由表中会存在一条目的网络为3.0.0.0/8的路由,出接口为R3的GE0/0/0,下一跳地址为3.0.0.1,cost为1;R2的路由表也会存在一条目的网络为3.0.0.0/8的路由,出接口为R2的GE0/0/1,下一跳地址为23.0.0.2,cost为2。
       现在,假设R3去往3.0.0.0/8的物理链路中断了,导致R3的GE0/0/0接口无法正常工作。R3在检测到这一故障后会立即将自己RIP路由表中去往3.0.0.0/8的路由项的cost设置为16,表示3.0.0.0/8对于R3来说已经变的不可达了。然而,就在R3等待着准备将这条无效路由的信息随下一个周期性的响应消息发送给R2时,却收到R2发送过来的关于3.0.0.0/8的路由信息。根据DV算法,R3会将自己的RIP路由表中去往3.0.0.0/8的无效路由更新成为有效路由,出接口为R3的GE0/0/1,下一跳地址更新为23.0.0.1,cost更新为3。也就是说R3认为自己可以通过R2间接的到达3.0.0.0/8。此时会发现,R2和R3都存在一条去往3.0.0.0/8的有效路由,且下一跳都指向对方,这样便产生了环路。
       为了解决这一问题RIP提供了三种不同的方法来解决这一问题。分别是:

  • 触发更新:当路由信息发生变化时,运行RIP的设备会立即向邻居设备发送更新报文,而不必等待定时更新,从而缩短了网络收敛时间。华为设备上没有命令可以关闭触发更新功能。但是它只是在很大程度上降低路由环路产生的几率,但是还无法完全避免路由环路的产生。
  • 水平分割:指的是RIP从某个接口接收到的路由信息,不会从该接口再发回给邻居设备。这样不但减少了带宽消耗,还可以防止路由环路。它的工作原理是如果一台路由器的RIP路由表中目的地/掩码为 z/y 的路由信息是通过该路由器的Interface-x接口学习来的,那么该路由器在通过Interface-x接口向外发送响应消息时,不会发送关于 z/y 这个路由项的信息。
  • 毒性逆转:指的是RIP从某个接口接收到路由信息后,将该路由的开销设置为16(即该路由不可达),并从原接口发回邻居设备。它的工作原理是如果一台路由器的RIP路由表中目的地/掩码为 z/y 的路由信息是通过该路由器的Interface-x接口学习来的,那么该路由器在通过Interface-x接口向外发送响应消息时,会发送关于 z/y 这个路由项的信息但会将cost设置为16。利用这种方式,可以清除对方路由表中的无用路由。

       水平分割和毒性逆转的工作原理非常相似,这两种方法是互斥的,一个路由器不可能同时具备这两种功能。

你可能感兴趣的:(学习杂记,计算机网络,RIP)