RIP
简介
RIP多用于规模较小和结构较简单的网络环境,是基于距离矢量的路由协议,使用跳数(Hop Count)来衡量到达目的地址的距离。RIP有两个版本:RIP-1和RIP-2。
定义
RIP是一种较为简单的内部网关协议IGP(Interior Gateway Protocol),基于距离矢量(Distance-Vector)算法的协议,它通过UDP报文进行路由信息的交换,使用的端口号为520。
为防止产生路由循环:
1.RIP使用跳数(Hop Count)来衡量到达目的地址的距离,称为度量值。在RIP中,缺省情况下,路由器到与它直接相连网络的跳数为0,通过一个路由器可达的网络的跳数为1,其余依此类推。也就是说,度量值等于从本网络到达目的网络经过的路由器数量。为限制收敛时间,RIP规定度量值取0~15之间的整数,大于或等于16的跳数被定义为无穷大,即目的网络或主机不可达。由于这个限制,使得RIP不可能在大型网络中得到应用。
2.支持水平分割(Split Horizon)和毒性反转(Poison Reverse)功能。
目的
RIP协议是最早的内部网关协议之一,主要应用于规模较小的网络中,例如校园网以及结构较简单的地区性网络。与静态路由相比,RIP协议能够自动适应网络拓扑的变化,不需人工干预。
由于RIP的实现较为简单,在配置和维护管理方面也远比OSPF和IS-IS容易,因此在实际组网中仍有广泛的应用。
RIP-1
RIP-1(即RIP version1)是有类别路由协议(Classful Routing Protocol),它只支持以广播方式发布协议报文,报文格式如图1所示。在一个RIP报文中,最多可以有25个路由表项。RIP是一个基于UDP协议的,并且RIP-1的数据包不能超过512字节。RIP-1的协议报文中没有携带掩码信息,它只能识别A、B、C类这样的自然网段的路由,因此RIP-1无法支持路由聚合,也不支持不连续子网(Discontiguous Subnet)。
图1 RIP-1的报文格式
RIP-2
RIP-2(即RIP version2)是一种无分类路由协议(Classless Routing Protocol),报文格式如图1所示。
图1 RIP-2的报文格式
与RIP-1相比,RIP-2有以下优势:
支持外部路由标记(Route Tag),可以在路由策略中根据Tag对路由进行灵活的控制。
报文中携带掩码信息,支持路由聚合和CIDR(Classless Inter-Domain Routing)。
支持指定下一跳,在广播网上可以选择到最优下一跳地址。
支持组播路由发送更新报文,只有支持RIP-2的设备才能收到协议报文,减少资源消耗。
定时器
RIP主要使用三个定时器:
更新定时器(Update timer):它定时触发更新报文的发送,更新周期默认为30秒。
老化定时器(Age timer):RIP设备如果在老化时间内没有收到邻居发来的路由更新报文,则认为该路由不可达。
垃圾收集定时器:如果在垃圾收集时间内不可达路由没有收到来自同一邻居的更新,则该路由将被从路由表中彻底删除。
三个定时器之间的关系:
RIP的更新信息发布是由Update定时器控制的,默认为每30秒发送一次。每一条路由表项对应两个定时器:老化定时器和垃圾收集定时器。当学到一条路由并添加到路由表中时,老化定时器启动。如果在默认180秒后没有收到邻居发来的更新报文,则把该路由的度量值置为16(表示路由不可达),并启动垃圾收集定时器,如果在默认120秒内仍然没有收到更新报文,垃圾收集定时器超时后在路由中删除该表项。
触发更新
触发更新的原理是,路由信息发生变化时,立即向邻居设备发送触发更新报文,通知变化的路由信息。
触发更新缩短了收敛时间,触发更新可以缩短网络收敛时间,在路由表项变化时立即向其他设备广播该信息,而不必等待定时更新。
图1 触发更新原理图
如图1所示,网络10.4.0.0不可达时,RouterC最先得到这一信息。通常,更新路由信息会定时发送给相邻RouterC(RIP协议每隔30秒发送一次)。但如果在RouterC等待更新周期到来的时候,RouterB的更新报文传到了RouterC,RouterC就会学到RouterB的去往网络10.4.0.0的错误路由。这样RouterB和RouterC上去往网络10.4.0.0的路由都指向对方从而形成路由环路。如果RouterC发现网络故障之后,不再等待更新周期到来,就立即发送路由更新信息给RouterB,使RouterB的路由表及时更新,则可以避免产生上述问题。
触发更新还存在另外一种方式:当下一跳不可用之后(如因为链路故障)需要及时通告给其它设备,此时要把该路由的cost设置为16然后发布出去,此更新也叫做路由毒杀。
水平分割
水平分割(Split Horizon)指的是RIP从某个接口学到的路由,不会从该接口再发回给邻居设备。这样不但减少了带宽消耗,还可以防止路由环路。
图1 水平分割原理图
如图1所示,RouterB目的地址是10.0.0.0的路由信息通告给RouterA后,RouterA不会再把到网络10.0.0.0的路由发回给RouterB。