RIP是由Xerox公司在20世纪七十年代开发的,最初定义的RFC1058中。每个有RIP功能的路由器在默认情况下每隔30秒利用UDP520端口向与它直连的网络邻居广播(RIP v1)或组播(RIP v2)路由更新。因此,路由器不知道网络的全局情况,如果路由更新在网络上传播慢,将会导致网络收敛较慢,造成路由环路。为了避免路由环路,RIP采用水平分割、毒性逆转、定义最大跳数、触发更新和抑制计时器等机制来避免路由环路。
RIP协议的处理是通过UDP 520 端口来操作的。所有的RIP消息都被封装在UDP用户数据报协议中,源和目的端口字段的值被设置为520.RIP定义了两种消息类型:请求消息(request messages)和响应消息(response messages)。请求消息用来向邻居路由器发送一个更新(update),响应消息用来传送路由更新。RIP的度量是基于”跳“数(hop count)的,1跳表示是与发出通告的路由器相直连的网络,16跳表示网络不可达。
RIP路由器协议分为版本1和版本2。不论是版本1或版本2,都具备下面的特征:
- 是距离矢量协议。
- 使用跳数(Hop Count)作为度量值,度量值的最大跳数为15跳。
- 默认时路由更新周期为30秒。
- 管理距离(AD)为120。
- 支持触发更新。
- 支持等价路径,默认4条。
- 源端口和目的端口都使用UDP 520端口进行操作,在没有验证的情况下,一个更新数据包最大可以包含25个路由条目,数据包最大为512字节(UDP报头8字节+RIP报头4字节+路由条目25x20字节)。
RIPv1和RIPv2的区别
RIPv1 | RIPv2 |
在路由更新过程中不携带子网消息 | 在路由更新的过程中携带子网消息 |
不提供验证 | 提供明文和MD5验证 |
不支持VLSM和CIDP | 支持VLSM和CIDR |
采用广播更新 | 采用组播(224.0.0.9)更新 |
有类(Classful)路由协议 | 无类(Ciassless)路由协议 |
RIP数据包格式
RIPv2与RIPv1的基本数据包格式相同,但是RIPv2添加了3项重要扩展,分别为子网掩码、路由标记和下一条,各字段含义如下所述。
- 命令:取值为1或2;1表示是请求消息,2表示是响应消息。
- 版本:对于RIPv1,该字段值为1;对于RIPv2,该字段值为2。
- 地址类型标识符:对于IP该项设置为2;当数据包是对路由器(或主机)整个路由选择表的请求时,这个字段被设置为0
- 路由标记:该字段用来标记外部路由或重发布到RIPv2协议中的路由。
- IP地址:路由条目的目的地址,可以是主类网络地址,子网地址中的主机路由。
- 子网掩码:一个确认IP地址的网络或子网部分的32位掩码。
- 下一跳:如果存在的话,它标识一个比通告路由器的地址更好的下一跳地址。也就是说,它指出的下一跳地址,其度量值比同一个子网上通告路由器更靠近目的地。如果这个字段设置全为0(0.0.0.0,说明通告路由器的地址就是最好的下一跳地址。
- 度量:一个1~16之间的跳数。
RIP的计时器和稳定性
RIP使用带毒性逆转(poison reverse)的水平分隔(split horizon)和触发更新(triggeresd updates)。不像普通的定期更新,触发更新只要在有路由的度量值发生改变就会产生,而且触发更新不会引起接收路由器重置它们的更新计时器;因为如果这么做的话,网络拓扑的改变会导致很多路由器在同一时间重置,从而引起定期的路由更新变得同步。为了避免拓扑改变后造成触发更新”风暴“,还需要使用另外一个计时器。当一个触发更新传播时,这个计时器被随机的设置为1~5s之间的数值;在这个计时器超时前不能发送并发的触发更新。
一些主机可以在“模式”下使用RIP,这些所谓的“静”主机不产生RIP的更新消息,而只帧听RIP的更新消息。从而更新它们自己的路由表。比如在一台主机上可以使用带“-q”选项的“routed”启动“静”模式下的RIP。
RIP的消息格式(RIP Message Format)
RIP的消息格式,每条消息包含一条命令(Command)、一个版本好和路由条目(最大25条)。每个路由条目包括地址簇标识(address family identifier)、路由可达的IP地址和路由的跳数。如果某台路由器必须发送大于25条路由的更新消息,那么必须产生多条RIP消息。注意,RIP消息的开始部分(头部)占用4个八位组字节(octets),而每个路由条目占用20个八位组字节。因此,RIP数据报的大小(不含IP包的头部)最大可达512个八位组字节。
- 命令(Command)——取值1或2,1表示该消息是请求消息,2表示该消息是响应消息。其他的取值都不被使用或保留用作私有用途。
- 版本号(Version)——对于RIPv1,该字段的值设置为1。
- 地址簇标识(Address Family ldentifier,AFI)——对于IP该项设置为2。只有一个例外情况,该消息是路由器(或主机)整个路由表的请求。
- IP地址(IP Address)——路由的目的地址。这一项可以是主网络地址、子网地址或主机路由地址。
- 度量(Metric)——在RIP中指跳数,该字段的取值范围在1~16之间。