菜鸟笔记
提升您的技术认知

RIP协议

一、RIP概述

路由信息协议( Routing Information Protocol, RIP )是一种较简单的内部网关协议,主要应用于规模较小的网络中,如校园网及结构较简单的地区性网络。

RIP是一种基于距离矢量算法的协议,它通过UDP报文进行路由信息的交换,使用的端口号为520。RIP使用跳数来衡量到达目的地址的距离,换句话说,就是RIP采用跳数作为度量值。在RIP中,默认情况下,设备到与它直接相连网络的跳数为0,通过一个设备可达的网络跳数为1,以此类推。也就是说,度量值等于从本网络到达目的网络间的设备数量。为限制收敛时间,RIP 规定度量值取0~ 15之间的整数,大于或等于16的跳数被定义为无穷大,即目的网络或主机不可达。这个限制使得RIP不可能在大型网络中得到应用。

RIP包括RIPv1与RIPv2两个版本,两者原理相同,RIPv2 是RIPv1的增强版。RIPv1 是有类别路由协议,协议报文中不携带掩码信息,不支持VLSM,不支持手工汇总,只支持以广播方式发布协议报文。RIPv2支持VLSM,协议报文中携带掩码信息,支持明文认证和MD5密文认证,支持手工汇总,支持以广播或者多播的形式发送报文。

二、RIP的工作过程

1.路由表建立

RIP启动时的初始路由表仅包含本路由器的一些直连端口路由,RIP启动后的工作过程包括如下几个步骤。

(1) RIP启动后向各端口广播一个Request报文。

(2)邻居路由器的RIP从某端口收到Request 报文后,根据自己的路由表形成Response报文向该端口对应的网络广播。

(3)IP接收邻居路由器回复的包含邻居路由器路由表的Response报文,形成路由表。RIP以30s为周期用Response报文广播自己的路由表

收到邻居发送而来的Response 报文后,RIP计算报文中的路由度量值,比较其与本地路由表中的路由度量值是否有差别,更新自己的路由表。报文中路由度量值的计算公式为metric = MIN ( metric + cost, 16 )。其中,metric为报文中携带的度量值信息; cost 为接收报文的网络的开销,默认为1; 16 代表不可达。

RIP根据DV算法的特点,将协议的参加者分为主动机和被动机两种。主动机主动向外广播路由刷新报文,被动机被动地接收路由刷新报文。一般情况下,主机作为被动机,路由器则既是主动机又是被动机,即在向外广播路由刷新报文的同时,接收来自其他主动机的DV报文,并进行路由刷新。

2.路由表更新

RIP在更新和维护路由信息时主要使用如下的4个定时器。

(1)更新定时器( Update timer) :当此定时器超时时,立即发送更新报文。

(2)老化定时器( Age timer) : RIP设备如果在老化时间内没有收到邻居发来的路由更新报文,则认为该路由不可达。

(3)垃圾收集定时器( Garbage- collect timer ) :如果在垃圾收集时间内不可达路由没有收到来自同一邻居的更新, 则该路由将被从RIP路由表中彻底删除。

(4)抑制定时器(Suppress timer) :当RIP设备收到的对端的路由更新cost为16时,对应路由进入抑制状态,并启动抑制定时器。为了防止路由震荡,在抑制定时器超时之前,即使再收到对端路由cost小于16的更新也不接收。当抑制定时器超时后,重新允许接收对端发送的路由更新报文。

当本路由器从邻居路由器收到路由更新报文时,根据以下原则更新本路由器的RIP路由表。

(1)本路由表中已有路由项的下一跳是 邻居路由器时,不论度量值增大或是减小,都更新该路由项(度量值相同时只将其老化定时器清零);当该路由项的下一跳不是邻居路由器时,只在度量值减小时更新该路由项。

对本路由表中不存在的路由项,度量值小于不可达( 16)时,在路由表中增加该路由项。

(2)路由表中的每一 路由项都对应一老化定时器,当学习到一条路由并添加到RIP路由表中时,老化定时器启动。当路由项在180s内没有任何更新时,老化定时器超时,该路由项的度量值变为不可达( 16)。

(3)某路由项的度量值变为不可达后,启动垃圾收集定时器,以该度量值在Response 报文中发布4次(120s),如果垃圾收集定时器超时,设备仍然没有收到更新报文,则在RIP路由表中删除该路由。
 

三、RIP的路由环路及避免方法

1.路由环路的产生

当网络发生故障时,RIP网络有可能产生路由环路。例如图所示的示例,RIP 网络正常运行时,RTA会通过RTB学习到10.0.0.0/8网络的路由,度量值为1,一旦路由器RTB的直连网络10.0.0.0/8产生故障,RTB会立即检测到该故障,并认为该路由不可达。此时,RTA由于还没有收到该路由不可达的信息,会继续向RTB发送度量值为2的通往10.0.0.0/8 的路由信息。RTB则会学习此路由信息,认为可以通过RTA到达10.0.0.0/8 网络。此后,RTB发送的更新路由表,又会导致RTA路由表的更新,RTA便会新增一条度量值为3的10.0.0.0/8网络路由表项,如此产生路由环路。这个过程会持续下去,直到度量值为16。

由此可得出一个结论: 当网络发生故障或者网络拓扑发生改变的时候,网络收敛速度慢会造成网络数据库不一致,即造成路由环路。
 

 

2.避免方法

(1)最大跳数

在上图所示的网络中,发生路由环路时,路由器去往网络10.0.0.0的跳数会不断地增大,网络无法
收敛。为解决这个问题,可以给跳数定义一个最大值,当跳数到法最大值时,网络10.0.0.0被认为是个可达的。路由器会在路由表中显示网络不可达信息,并不再更新到法网络10.0.0.0的路由。在RIP路由协议中,跳数最大值为16

通过定义最大值,距离矢量路由协议可以解决发生环路时路由权值无限增大的问题,同时也可校正错误的路由信息。但是,在最大权值到达之前,路由环路还是会存在的。也就是说,以上解决方案只是补救措施,不能真正避免环路产生,只能减轻路由环路产生的危害。

(2)水平分割

水平分割是指路由器从某个端口学习到的路由不会再从该端口发出去。如图所示,RTA从RTB学习到的10.0.0.0/8网络的路由不会再从RTA的接收端口重新通告给RTB,由此避免路由环路的产生。

 

(3)毒性反转

毒性反转是指路由器从某个端口学到路由后,将该路由的跳数设置为16,并从原接收端口发送给邻居路由器。毒性反转机制可以使错误路由立即超时,即配置毒性反转。RIP从某个端口学习到路由之后,发送给邻居路由器时会将该路由的跳数设置为16。利用这种方式,可以清除对方路由表中的无用路由。如图所示,RTB向RTA通告了度量值为1的10.0.0.0/8路由,RTA在通告给RTB时将该路由度量值设置为16,如果10.0.0.0/8网络发生故障,RTB便不会认为可以通过RTA到达10.0.0.0/8网络,因此就可以避免路由环路的产生。

 

(4)触发更新

触发更新是指当路由信息发生变化时,立即向邻居设备发送触发更新报文。默认情况下,一台RIP路由器每30s会发送一次路由表更新给邻居路由器,当本地路由信息发生变化时,触发更新功能允许路由器立即发送触发更新报文给邻居路由器,来通知路由信息更新,而不需要等待更新定时器超时。例如图所示的示例,路由器RTB会立即通告网络10.0.0.0/8不可达信息,从而加速了网络收敛。

 

四、RIP配置实例

1.目标

通过RIP的配置实现网络的互通。

2.拓扑图

本实例的网络拓扑如图所示。

3.配置步骤

( 1)按拓扑图配置端口IP地址

<Huawei>system-view //进入系统视图

[Huawei]sysname R1

//修改设备名称

[R1]interface GigabitEthernet 0/0/0

//进入端口视图

[R1- -GigabitEthernet0/0/1]ip address 192.168.2.1 24//将和 PC1连接的端口配上IP地址

 [R1-GigabitEthernet0/0/0]quit

//退回系统视图

[R1]interface GigabitEthernet 0/0/1

//进入端口视图

[R1-GigabitEthernet0/0/1]ip address 192.168.1.1 24//将和 R2连接的端口配上IP地址

[R1-GigabitEthernet0/0/1]quit

//退回系统视图

R2与R1配置类似。

(2)启动RIP并在指定网段使能RIP

[R1]rip 1

//进入RIP路由配置视图

[R1-rip-1]version 1

//设置BIP版本

[R1-rip-1]network192.168.1.0

//将和R2连接的端口加入RIP中

[R1-rip-1]network192.168.2.0

//将和PC1连接的端加入RIP中

R2与R1配置类似。

4.测试

(1)查看IP路由表

查看路由表,可发现相应路由。


(2)用Ping命令检查联通性

可以Ping通,当然也能Ping通其他网段,说明全网联通性正常。