RIP(Routing Information Protocols,路由信息协议)是使用最广泛的距离向量协议,它是由施乐(Xerox)在70年代开发的。当时,RIP是XNS(Xerox Network Service,施乐网络服务)协议簇的一部分。TCP/IP版本的RIP是施乐协议的改进版。RIP最大的特点是,无论实现原理还是配置方法,都非常简单。
RIP(Route Information Protol 路由信息协议)是交换机路由功能中最常使用的一种动态路由协议。下图形象的描述了RIP协议在整个交换机三层路由协议中的位置。
1. RIP的基本概念
RIP是一种基于距离矢量(Distance-Vector,D-V)算法的协议,它通过UDP报文 进行路由信息的交换,使用的端口号为 520。
RIP 使用跳数(Hop Count)来衡量到达目的地址的距离,称为度量值(Routing Cost)。在 RIP 中,路由器到与它直接相连网络的跳数为 0,通过一个路由器可达 的网络的跳数为 1,其余依此类推。为限制收敛时间,RIP 规定度量值取 0~15 之 间的整数,大于或等于 16的跳数被定义为无穷大,即目的网络或主机不可达。由于 这个限制,使得 RIP不适合应用于大型网络。 为提高性能,防止产生路由环路,RIP支持水平分割(Split Horizon)功能。RIP还可引入其它路由协议所得到的路由。
2. RIP的路由数据库
每个运行 RIP的路由器管理一个路由数据库,该路由数据库包含了到所有可达目的地的路由项,这些路由项包含下列信息:
- 目的地址:主机或网络的 IP地址。
- 下一跳地址:为到达目的地,需要经过的本路由器相邻路由器的接口 IP地址。
- 出接口:本路由器转发报文的出接口。
- 度量值:本路由器到达目的地的开销。
- 路由时间:从路由项最后一次被更新到现在所经过的时间,路由项每次被更新时,路由时间重置为 0。
并不是所有的路由选择协议在交换目的网络时也会交换子网掩码。可以看到,RIP并不支持变长子网和非连续网络,RIP的第2版本和OSPF则支持变长子网和非连续网络。
3. RIP使用的定时器
在 RFC1058 中规定,RIP 受三个定时器的控制,分别是 Period update、Timeout和 Garbage-Collection:
- Period update定时器,定义了发送路由更新的时间间隔。
- Timeout定时器,定义了路由老化时间。如果在老化时间内没有收到关于某条路由的更新报文,则该条路由在路由表中的度量值将会被设置为 16。
- Garbage-Collection 定时器,定义了一条路由从度量值变为 16 开始,直到它从路由表里被删除所经过的时间。在 Garbage-Collection 时间内,RIP 以 16作为度量值向外发送这条路由的更新,如果 Garbage-Collection超时,该路由仍没有得到更新,则该路由将从路由表中被彻底删除。
3.1.2 RIP的启动和运行过程
RIP启动和运行的整个过程可描述如下:
- 某路由器刚启动 RIP 时,以广播或组播的形式向运行 RIP 协议的相邻路由器发送请求报文,相邻路由器收到请求报文后,响应该请求,回送包含本地路由表信息的响应报文。
- 路由器收到响应报文后,更新本地路由表,同时向运行 RIP协议的相邻路由器发送触发更新报文,通告路由更新信息。相邻路由器收到触发更新报文后,又向其各自的相邻路由器发送触发更新报文。在一连串的触发更新后,各路由器都能得到并保持最新的路由信息。
- RIP在缺省情况下每隔 30秒向相邻路由器发送本地路由表,运行 RIP协议的相邻路由器在收到报文后,对本地路由进行维护,选择一条最佳路由,再向其各自相邻网络发送更新信息,使更新的路由最终能达到全局有效。同时,RIP采用老化机制对超时的路由进行老化处理,以保证路由的实时性和有效性。
正常情况下,每30秒路由器就可以收到一次路由信息更新,如果经过180秒,即6个更新周期,一个路由项都没有得到更新,路由器就认为它已失效了。如果经过240秒,即8个更新周期,路由项仍没有得到更新,它就被从路由表中删除。
4.交换机功能和RIP的关系
需要注意的是,只有选择了开启RIP功能的接口才会收发RIP报文,每个接口对应一个Vlan,拥有独立的IP地址,同时每个接口可以包含多个交换机端口。
另外,三层交换机的实现是需要硬件支持的。要实现路由功能,最基本的要求是,设备可以设置多个IP地址,可以连接多个网段。RIP动态路由模块,将使用静态路由模块提供的一些接口,来创建和删除路由接口。
H3C 3600支持基于VLAN的RIP动态路由功能
RIP动态路由模块需要PNE RIP协议,静态路由模块以及RIP管理配置部分的协同工作,因此该模块的设计规格同时制约与路由软件部分与硬件条目部分两方面。与硬件条目部分相比,软件部分设计,扩充相对自由,因此模块的设计规格取决于MAC芯片所能提供的硬件条目数。
最后,PNE 协议栈的源代码对RIP动态路由协议的实现也有一定的局限性。
RIP的水平分割和毒性逆转-路由循环的改进办法
距离向量类的算法容易产生路由循环,RIP是距离向量算法的一种,所以它也不例外。如果网络上有路由循环,信息就会循环传递,永远不能到达目的地。为了避免这个问题,RIP等距离向量算法实现了下面4个机制。
- 水平分割(split horizon)。水平分割保证路由器记住每一条路由信息的来源,并且不在收到这条信息的端口上再次发送它。这是保证不产生路由循环的最基本措施。
- 毒性逆转(poison reverse)。当一条路径信息变为无效之后,路由器并不立即将它从路由表中删除,而是用16,即不可达的度量值将它广播出去。这样虽然增加了路由表的大小,但对消除路由循环很有帮助,它可以立即清除相邻路由器之间的任何环路。
- 触发更新(trigger update)。当路由表发生变化时,更新报文立即广播给相邻的所有路由器,而不是等待30秒的更新周期。同样,当一个路由器刚启动RIP时,它广播请求报文。收到此广播的相邻路由器立即应答一个更新报文,而不必等到下一个更新周期。这样,网络拓扑的变化会最快地在网络上传播开,减少了路由循环产生的可能性。
- 计数到无穷大(Count to Infinity),即便采用了上面的几种方法,路由循环的问题也不能完全解决,只是得到了最大程度的减少。一旦路由循环真的出现,路由项的度量值就会出现计数到无穷大的情况。RIP选择16作为不可达的度量值是很巧妙的,它既足够的大,保证了多数网络能够正常运行,又足够小,使得计数到无穷大所花费的时间最短。