> 文档中心 > RIP(Routing Information Protocol,路由信息协议)

RIP(Routing Information Protocol,路由信息协议)

        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,都具备下面的特征:

  1. 是距离矢量协议。
  2. 使用跳数(Hop Count)作为度量值,度量值的最大跳数为15跳。
  3. 默认时路由更新周期为30秒。
  4. 管理距离(AD)为120。
  5. 支持触发更新。
  6. 支持等价路径,默认4条。
  7. 源端口和目的端口都使用UDP 520端口进行操作,在没有验证的情况下,一个更新数据包最大可以包含25个路由条目,数据包最大为512字节(UDP报头8字节+RIP报头4字节+路由条目25x20字节)。

RIPv1和RIPv2的区别

RIPv1和RIPv2的区别
RIPv1 RIPv2
在路由更新过程中不携带子网消息 在路由更新的过程中携带子网消息
不提供验证 提供明文和MD5验证
不支持VLSM和CIDP 支持VLSM和CIDR
采用广播更新 采用组播(224.0.0.9)更新
有类(Classful)路由协议 无类(Ciassless)路由协议

RIP数据包格式

RIPv1
0                                7 8                                15 16                              23 24                              31
路由条目 命令 版本 必须为0
地址类型标识符 必须为0
IP地址(网络地址)
必须为0
必须为0
度量
RIPv2
0                                7 8                                15 16                              23 24                              31
路由条目 命令 版本 必须为0
地址类型标识符 路由标记
IP地址(网络地址)
子网掩码
下一跳
度量(跳数)

        RIPv2与RIPv1的基本数据包格式相同,但是RIPv2添加了3项重要扩展,分别为子网掩码、路由标记和下一条,各字段含义如下所述。

  1. 命令:取值为1或2;1表示是请求消息,2表示是响应消息。
  2. 版本:对于RIPv1,该字段值为1;对于RIPv2,该字段值为2。
  3. 地址类型标识符:对于IP该项设置为2;当数据包是对路由器(或主机)整个路由选择表的请求时,这个字段被设置为0
  4. 路由标记:该字段用来标记外部路由或重发布到RIPv2协议中的路由。
  5. IP地址:路由条目的目的地址,可以是主类网络地址,子网地址中的主机路由。
  6. 子网掩码:一个确认IP地址的网络或子网部分的32位掩码。
  7. 下一跳:如果存在的话,它标识一个比通告路由器的地址更好的下一跳地址。也就是说,它指出的下一跳地址,其度量值比同一个子网上通告路由器更靠近目的地。如果这个字段设置全为0(0.0.0.0,说明通告路由器的地址就是最好的下一跳地址。
  8. 度量:一个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之间。

RIP的消息格式