一. RIP简介

RIP(Routing Information Protocol,路由信息协议)是一种较为简单的内部网关协议(Interior Gateway Protocol,IGP),主要用于规模较小的网络中,比如校园网以及结构较简单的地区性网络。对于更为复杂的环境和大型网络,一般不使用RIP。
由于RIP的实现较为简单,在配置和维护管理方面也远比OSPF和IS-IS容易,因此在实际组网中仍有广泛的应用。

1. RIP工作机制
    1) RIP的基本概念
        l RIP是一种基于距离矢量(Distance-Vector,D-V)算法的协议,它通过UDP报文进行路由信息的交换,使用的端口号为520。
        l RIP使用跳数来衡量到达目的地址的距离,跳数称为度量值。在RIP中,路由器到与它直接相连网络的跳数为0,通过一个路由器可达的网络的跳数为1,其余依此类推。为限制收敛时间,RIP规定度量值取0~15之间的整数,大于或等于16的跳数被定义为无穷大,即目的网络或主机不可达。由于这个限制,使得RIP不适合应用于大型网络。
        l 为提高性能,防止产生路由环路,RIP支持水平分割(Split Horizon)和毒性逆转(Poison Reverse)功能。

    2) RIP的路由数据库
        每个运行RIP的路由器管理一个路由数据库,该路由数据库包含了到所有可达目的地的路由项,这些路由项包含下列信息:
             目的地址:主机或网络的地址。
             下一跳地址:为到达目的地,需要经过的相邻路由器的接口IP地址。
             出接口:本路由器转发报文的出接口。
             度量值:本路由器到达目的地的开销。
             路由时间:从路由项最后一次被更新到现在所经过的时间,路由项每次被更新时,路由时间重置为0。
             路由标记(Route Tag):用于标识外部路由,在路由策略中可根据路由标记对路由信息进行灵活的控制。关于路由策略的详细信息,请参见“IP路由分册”中的“路由策略配置”。

    3) RIP定时器
        RIP受四个定时器的控制,分别是UpdateTimeout、Suppress和Garbage-Collect。
            ® Update定时器,定义了发送路由更新的时间间隔。
            ® Timeout定时器,定义了路由老化时间。如果在老化时间内没有收到关于某条路由的更新报文,则该条路由在路由表中的度量值将会被设置为16。
            ® Suppress定时器,定义了RIP路由处于抑制状态的时长。当一条路由的度量值变为16时,该路由将进入抑制状态。在被抑制状态,只有来自同一邻居且度量值小于16的路由更新才会被路由器接收,取代不可达路由。
            ® Garbage-Collect定时器,定义了一条路由从度量值变为16开始,直到它从路由表里被删除所经过的时间。在Garbage-Collect时间内,RIP以16作为度量值向外发送这条路由的更新,如果Garbage-Collect超时,该路由仍没有得到更新,则该路由将从路由表中被彻底删除。

    4) 防止路由环路
        RIP是一种基于D-V算法的路由协议,由于它向邻居通告的是自己的路由表,存在发生路由环路的可能性。
        RIP通过以下机制来避免路由环路的产生:
             计数到无穷(Counting to infinity):将度量值等于16的路由定义为不可达(infinity)。在路由环路发生时,某条路由的度量值将会增加到16,该路由被认为不可达。
             水平分割(Split Horizon):RIP从某个接口学到的路由,不会从该接口再发回给邻居路由器。这样不但减少了带宽消耗,还可以防止路由环路。
             毒性逆转(Poison Reverse):RIP从某个接口学到路由后,将该路由的度量值设置为16(不可达),并从原接口发回邻居路由器。利用这种方式,可以清除对方路由表中的无用信息。
             触发更新(Triggered Updates):RIP通过触发更新来避免在多个路由器之间形成路由环路的可能,而且可以加速网络的收敛速度。一旦某条路由的度量值发生了变化,就立刻向邻居路由器发布更新报文,而不是等到更新周期的到来。

2. RIP的启动和运行过程
    RIP启动和运行的整个过程可描述如下:
        l 路由器启动RIP后,便会向相邻的路由器发送请求报文(Request message),相邻的RIP路由器收到请求报文后,响应该请求,回送包含本地路由表信息的响应报文(Response message)。
        l 路由器收到响应报文后,更新本地路由表,同时向相邻路由器发送触发更新报文,通告路由更新信息。相邻路由器收到触发更新报文后,又向其各自的相邻路由器发送触发更新报文。在一连串的触发更新广播后,各路由器都能得到并保持最新的路由信息。
        l RIP在缺省情况下每隔30秒向相邻路由器发送本地路由表,运行RIP协议的相邻路由器在收到报文后,对本地路由进行维护,选择一条最佳路由,再向其各自相邻网络发送更新信息,使更新的路由最终能达到全局有效。同时,RIP采用老化机制对超时的路由进行老化处理,以保证路由的实时性和有效性。

3. RIP的版本
    l RIP有两个版本:RIP-1和RIP-2。
    l RIP-1是有类别路由协议(Classful Routing Protocol),它只支持以广播方式发布协议报文。RIP-1的协议报文无法携带掩码信息,它只能识别A、B、C类这样的自然网段的路由,因此RIP-1不支持不连续子网(Discontiguous Subnet)。
    l RIP-2是一种无类别路由协议(Classless Routing Protocol),与RIP-1相比,它有以下优势:
             支持路由标记,在路由策略中可根据路由标记对路由进行灵活的控制。
             报文中携带掩码信息,支持路由聚合和CIDR(Classless Inter-Domain Routing,无类域间路由)。
             支持指定下一跳,在广播网上可以选择到最优下一跳地址。
             支持组播路由发送更新报文,减少资源消耗。
             支持对协议报文进行验证,并提供明文验证和MD5验证两种方式,增强安全性。
    l RIP-2有两种报文传送方式:广播方式和组播方式,缺省将采用组播方式发送报文,使用的组播地址为224.0.0.9。当接口运行RIP-2广播方式时,也可接收RIP-1的报文。

4. RIP的报文格式
    1) RIP-1的报文格式
        RIP报文由头部(Header)和多个路由表项(Route Entries)部分组成。在一个RIP报文中,最多可以有25个路由表项。
        RIP-1的报文格式如图所示。
            RIP-1的报文格式

        各字段的解释如下:
            ® Command:标识报文的类型。值为1时表示Request报文,值为2表示Response报文。
            ® Version:RIP的版本号。对于RIP-1来说其值为0x01。
            ® AFI(Address Family Identifier):地址族标识,其值为2时表示IP协议。
            ® IP Address:该路由的目的IP地址,可以是自然网段地址、子网地址或主机地址。
            ® Metric:路由的度量值。

    2) RIP-2的报文格式
        RIP-2的报文格式与RIP-1类似,如图所示。
        RIP-2的报文格式

        其中,与RIP-1不同的字段有:
             Version:RIP的版本号。对于RIP-2来说其值为0x02。
             Route Tag:路由标记。
             IP Address:该路由的目的IP地址,可以是自然网段地址、子网地址或主机地址。
             Subnet Mask:目的地址的掩码。
             Next Hop:如果为0.0.0.0,则表示发布此条路由信息的路由器地址就是最优下一跳地址,否则表示提供了一个比发布此条路由信息的路由器更优的下一条地址。

    3) RIP-2的验证
        RIP-2为了支持报文验证,使用第一个路由表项(Route Entry)作为验证项,并将AFI字段的值设为0xFFFF标识报文携带认证信息,如图所示。
        RIP-2的验证报文格式

        各字段的解释如下:
             Authentication Type:验证类型。值为2时表示明文验证,值为3时表示MD5验证。
             Authentication:验证字,当使用明文验证时包含了密码信息;当使用MD5验证时包含了Key IDMD5验证数据长度和序列号的信息。
        当RIP的版本为RIP-1时,虽然在接口视图下仍然可以配置验证方式,但由于RIP-1不支持认证,因此该配置不会生效。

5. TRIP
    TRIP(Triggered RIP,触发路由信息协议)是RIP协议在WAN(Wide Area Network,广域网)上的扩展,主要应用于拨号网络。

    1) 工作机制
        在WAN连接中,为了将路由管理开销减到最小,路由信息被当作触发更新发送而不是定期广播:
             取消路由信息的周期性发送。只有当路由表中数据有所变更,或者当下一跳不可达时,才发送路由更新。
             由于取消了周期性发送路由更新报文,因此需要采用确认和重发机制来保证更新报文在广域网上的成功发送和接收。

    2) 报文类型
        TRIP为此引入了3种新的报文类型,并通过RIP报文头部的Command字段来区分。
             Update Request(更新请求):类型值为9,请求对端发送所需要的路由表信息。
             Update Response(更新应答):类型值为10,包含对端所需要的路由更新信息。
             Update Acknowledge(更新确认):类型值为11,对收到的Update Response报文进行确认,表示已收到对端发送的路由更新信息。

    3) TRIP重传机制
             路由器向邻居路由器发送Update Request报文后,如果一直没有收到从邻居回复的Update Response报文,则每隔一段时间间隔向邻居重新发送Update Request报文,如果向邻居发送Update Request报文的次数超过了限制的次数仍没有收到Update Response报文,则当前路由器会认为邻居路由器不可达。
             路由器向邻居路由器发送Update Response报文后,如果一直没有收到从邻居回复的Update Acknowledge报文,路由器则每隔一段时间间隔向邻居重新发送Update Response报文;如果向邻居发送Update Response报文的次数超过了限制的次数仍没有收到Update Acknowledge报文,则当前路由器会认为邻居路由器不可达。

二. 配置RIP

1. RIP基本配置
    1) 创建RIP进程并进入RIP视图 
        [Router] rip [ process-id ]
    2) 在指定网段接口上使能RIP 
        [Router-rip-1] network network-address

2. RIP可选配置
    1) 配置接口工作在抑制状态 
        [Router-rip-1] silent-interface { all | interface-type interface-number }
    2) 使能RIP水平分割功能 
        [Router-Ethernet1/0] rip split-horizon
    3) 使能RIP毒性逆转功能
        [Router-Ethernet1/0] rip poison-reverse

3. RIPV2配置
    1) 指定全局RIP版本
        [Router-rip-1] version { 1 | 2 }
    2) 关闭RIPv2自动路由聚合功能 
        [Router-rip-1] undo summary
    3) 配置RIPv2报文的认证 
        [Router-Ethernet1/0] rip authentication-mode { md5 { rfc2082 key-string key-id | rfc2453 key-string } | simple password }