一、RIP简介
RIP是Routing Information Protocol(路由信息协议)的简称,它是一种较为简单的内部网关协议(Interior Gateway Protocol)
RIP是一种基于距离矢量(Distance-Vector)算法的协议,它使用跳数(Hop Count)作为度量来衡量到达目的网络的距离。设备到与他直连网络的设备跳数为0,然后每经过一个三层设备跳数增加1,也就是度量值等于从本网络到达目网络间的三层设备数量,但并不等于所经过的网段数
RIP通过UDP报文进行路由信息的交换,使用的端口号为520。所以它又是一个不可靠的路由协议
由于RIP的实现较为简单,在配置和维护管理方面也远比OSPF和IS-IS容易,因此RIP主要应用于规模较小的网络中,例如校园网以及结构较简单的地区性网络。对于更为复杂的环境和大型网络,一般不使用RIP协议
RIP包括RIP-1和RIP-2两个版本,RIP-2对RIP-1进行了扩充,使其更具有优势
二、RIP原理
RIP是一种基于距离矢量(Distance-Vector)算法的协议,它使用跳数(Hop Count)作为度量值来衡量到达目的地址的距离
在RIP网络中,缺省情况下,设备到与它直接相连网络的跳数为0,通过一个设备可达的网络的跳数为1,其余依此类推。也就是说,度量值等于从本网络到达目的网络间的设备数量。为限制收敛时间,RIP规定度量值取0~15之间的整数,大于或等于16的跳数被定义为无穷大,即目的网络或主机不可达。由于这个限制,使得RIP不可能在大型网络中得到应用
RIP协议有两种更新机制:
一是定期更新,二是触发更新。定期更新是根据设置的更新计时器定期发送RIP路由通告。而触发更新是RIP路由器一旦察觉到网络变化,就尽快甚至是立即发送更新报文,而不等待更新周期结束。只要触发更新的速度足够快,就可以大大地防止“计数到无穷大”的发生,但是这一现象还是有可能发生的
无论是定期更新,还是触发更新,RIP路由的更新规则如下:
- 如果更新的某路由表项在路由表中没有,则直接在路由表中添加该路由表项
- 如果路由表中已有相同目的网络的路由表项,且来源端口相同,那么无条件根据最新的路由信息更新其路由表
- 如果路由表中已有相同目的网络的路由表项,但来源端口不同,则要比较它们的度量值,将度量值较小的一个作为自己的路由表项
- 如果路由表中已有相同目的网络的路由表项,且度量值相等,保留原来的路由表项
三、RIP运行例子
- 在一开始,所有路由器中的路由表只有自己所直接连接的网络的路由表项信息。但不是RIP路由表项,是直连路由表项,无需下一跳(用“--”表示),度量“距离”也均为0 ,各路由器的初始路由表如图所示,均只有两条直连网络的路由表项
- 接下来,各路由器就会按设置的周期(默认为30秒)向邻居路由器发送路由更新了。具体哪个路由器会先发送路由更新,取决于哪个路由器先开了。现假设路由器R2先收到来自路由器R1和R3的路由更新,然后就更新自己的路由表,如图所示。从中可以看出,它新添加了分别通过R1和R3到达10.0.0.0网络和30.0.0.0网络的路由表项,度量值均为1,因为它只经过了一跳
- R2更新自己的路由表后,会把完整的路由表发给邻居路由器R1和R3。路由器R1和R3分别再进行更新。根据前面介绍的RIP路由表更新的规则可以知道,R1对每项度量进行加1,得到的路由表如图所示
- 然后R1再把图8-9所示的路由表与自己原来的路由表进行比较,凡是新添加的,和度量值小于等于原来的路由表项均将更新,度量值更大的路由表项将忽略更新。经过行比较发现有两条新的路由表项,其目的网络分别为30.0.0.0和40.0.0.0,直接在路由表中添加。而原来已有的两条10.0.0.0和20.0.0.0表项,发现路由度量(“距离”)值1比原来的0还大,忽略更新,结果就得到R1更新后的路由表,如图所示
四、其他
RIP封装在UDP之上,端口为520
组播,为了降低那些没有监听RIP Version 2 报文的主机的不必要的开销,IP多目传送地址被用于定时广播。IP 多目地址是224.0.0.9