RIP 技术深度解析
一、RIP 概述
1.1 定义与定位
RIP 是 Routing Information Protocol (路由信息协议)的简称。它是一种较为简单的内部网关协议 IGP ( Interior Gateway Protocol ),主要应用于规模较小的网络中。对于更为复杂的环境和大型网络,一般不使用 RIP 协议。
RIP 是一种基于距离矢量( Distance-Vector )算法的协议,它通过 UDP 报文进行路由信息的交换,使用的端口号为 520 。
RIP 使用跳数(Hop Count )来衡量到达目的地址的距离,称为度量值。在 RIP 中,缺省情况下,设备到与它直接相连网络的跳数为 0 ,通过一个设备可达的网络的跳数为 1 ,其余依此类推。也就是说,度量值等于从本网络到达目的网络间的设备数量。为限制收敛时间, RIP 规定度量值取 0 ~15 之间的整数,大于或等于 16 的跳数被定义为无穷大,即目的网络 或主机不可达。由于这个限制,使得 RIP 不可能在大型网络中得到应用。
为提高性能,防止产生路由循环,RIP 支持水平分割 和毒性逆转 功能。
1.2 发展历程
RIP 经历了多个版本的演进。最初的 RIP 版本存在诸多局限性,如不支持可变长子网掩码(VLSM)、以广播形式发送路由更新等。随着网络技术的发展,RIP 版本 2(RIPv2)应运而生,它引入了支持 VLSM、组播更新(224.0.0.9)等功能,有效提升了协议的实用性和灵活性,在一定程度上满足了更复杂网络环境的需求。
二、各版本特点
2.1 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 的报文格式
2.2 RIP-2 特点?
RIP-2(即 RIP version2 )是一种无分类路由协议( Classless Routing Protocol ),报文格式
如 图 2 所示。

图 2 RIP-2 的报文格式
与 RIP-1 相比,RIP-2 有以下优势:
1. 支持外部路由标记(Route Tag ),可以在路由策略中根据 Tag 对路由进行灵活的控
制。
2. 报文中携带掩码信息,支持路由聚合和 CIDR ( Classless Inter-Domain Routing )。
3.支持指定下一跳,在广播网上可以选择到最优下一跳地址。
4.支持组播路由发送更新报文,只有支持 RIP-2 的设备才能收到协议报文,减少资源消
耗。
5.支持对协议报文进行验证,并提供明文验证和 MD5 验证两种方式,增强安全性。
RIP-2 有两种报文传送方式:广播方式和组播方式,缺省将采用组播方式发送报文,使用
的组播地址为 224.0.0.9 。当接口运行 RIP-2 广播方式时,也可接收 RIP-1 的报文。
三、RIP 定时器有哪些?
3.1 主要使用三个定时器:
更新定时器(Update timer):它定时触发更新报文的发送,更新周期默认为 30 秒。
老化定时器(Age timer):RIP 设备如果在老化时间内没有收到邻居发来的路由更新报文,则认为该路由不可达。180s。
垃圾收集定时器:如果在垃圾收集时间内不可达路由没有收到来自同一邻居的更新,则该路由将被从路由表中彻底删除。120s。
3.2 三个定时器之间的关系:
RIP 的更新信息发布是由 Update 定时器控制的,默认为每 30 秒发送一次。每一条路由 表项对应两个定时器:老化定时器和垃圾收集定时器。当学到一条路由并添加到路由表中 时,老化定时器启动。如果在默认 180 秒后没有收到邻居发来的更新报文,则把该路由的度量值置为 16(表示路由不可达),并启动垃圾收集定时器,如果在默认 120 秒内仍然没有 收到更新报文,垃圾收集定时器超时后在路由中删除该表项。
3.3 华三设备RIP定时器技术:
通过调整 RIP 定时器可以改变 RIP 网络的收敛速度。
RIP 受四个定时器的控制,分别是 Update 、 Timeout 、 Suppress 和 Garbage-Collect 。缺省情况下,Garbage-collect 定时器的值为 120 秒, Suppress 定时器的值为 120 秒, Timeout 定时
器的值为 180 秒, Update 定时器的值为 30 秒
Update 定时器,定义了发送路由更新的时间间隔。
Timeout 定时器,定义了路由老化时间。如果在老化时间内没有收到关于某条路由的更新报
文,则该条路由在路由表中的度量值将会被设置为 16 。
Suppress 定时器,定义了 RIP 路由处于抑制状态的时长。当一条路由的度量值变为 16 时,
该路由将进入抑制状态。在被抑制状态,只有来自同一邻居且度量值小于 16 的路由更新才会被路由器接收,取代不可达路由。
Garbage-Collect 定时器,定义了一条路由从度量值变为 16 开始,直到它从路由表里被删除
所经过的时间。在 Garbage-Collect 时间内, RIP 以 16 作为度量值向外发送这条路由的更新,如果 Garbage-Collect 超时,该路由仍没有得到更新,则该路由将从路由表中被彻底删除。
四、RIP的一些运行机制
4.1 水平分割
水平分割(Split Horizon )指的是 RIP 从某个接口学到的路由,不会从该接口再发回给邻居设备。这样不但减少了带宽消耗,还可以防止路由环路。

图 3 水平分割原理图
如 图 3 所示, RouterB 目的地址是 10.0.0.0 的路由信息通告给 RouterA 后, RouterA 不会
再把到网络 10.0.0.0 的路由发回给 RouterB 。
4.2 毒性逆转
毒性逆转(Poison Reverse )指的是 RIP 从某个接口学到路由后,将该路由的开销设置为 16 (即指明该路由不可达),并从原接口发回邻居设备。利用这种方式,可以清除对方路由表中的无用路由。
RIP 毒性逆转可以防止产生路由环路。

图 4 毒性逆转原理图
如 图 4 所示,在不配置水平分割的情况下, RouterB 会向 RouterA 发送从 RouterA 学到 的路由,并且 RouterA 到网络 10.0.0.0 的路由开销值为 1 。如果 RouterA 到网络 10.0.0.0 的 路由变成不可达,同时 RouterB 没有收到 RouterA 的更新报文,而继续向 RouterA 发送到达网络 10.0.0.0 路由信息,则会导致路由环路。
如果 RouterA 在接收到从 RouterB 发来的路由后,向 RouterB 发送一个这条路由不可达的消息,这样 RouterB 就不会再从 RouterA 学到这条可达路由,因此就可以避免上述环路的发生。
注意:如果毒性逆转和水平分割都配置了,简单的水平分割行为(从某接口学到的路由再从这
个接口发布时将被抑制)会被毒性逆转行为代替。
4.3触发更新
触发更新的原理是,路由信息发生变化时,立即向邻居设备发送触发更新报文,通知变化的路由信息。
触发更新缩短了收敛时间,触发更新可以缩短网络收敛时间,在路由表项变化时立即向其他设备广播该信息,而不必等待定时更新。

图 5 触发更新原理图
如 图 5 所示,网络 11.4.0.0 不可达时, RouterC 最先得到这一信息。通常,更新路由信息会定时发送给相邻 Router ( RIP 协议每隔 30 秒发送一次)。但如果在 RouterC 等待更新周期到来的时候,RouterB 的更新报文传到了 RouterC , RouterC 就会学到 RouterB 的去往网络11.4.0.0 的错误路由。这样 RouterB 和 RouterC 上去往网络 11.4.0.0 的路由都指向对方从而形成路由环路。如果 RouterC 发现网络故障之后,不再等待更新周期到来,就立即发送路由更新信息给路由器 B ,使路由器 B 的路由表及时更新,则可以避免产生上述问题。
触发更新还存在另外一种方式:当下一跳不可用之后(如因为链路故障)需要及时通告给其它设备,此时要把该路由的 cost 设置为 16 然后发布出去,此更新也叫做路由毒杀/路由毒害。
五、RIP 如何做路由聚合?
路由聚合的原理是,同一个自然网段内的不同子网的路由在向外(其它网段)发送时聚合成一个网段的路由发送。RIP-1 的协议报文中没有携带掩码信息,故 RIP-1 发布的就是自然掩码的路由。RIP-2 支持路由聚合,因为 RIP-2 报文携带掩码位,所以支持子网划分。在 RIP-2 中进行路由聚合可提高大型网络的可扩展性和效率,缩减路由表。
路由聚合有两种方式:
基于 RIP 进程的有类聚合:
比如,对于 10.1.1.0/24 ( metric=2 )和 10.1.2.0/24 ( metric=3 )这两条路由,会聚合成
自然网段路由 10.0.0.0/8 ( metric=2 )。 RIP Version2 聚合是按类聚和的,聚合得到最优的
metric 值。
基于接口的聚合:
用户可以指定聚合地址。
比如,对于 10.1.1.0/24 ( metric=2 )和 10.1.2.0/24 ( metric=3 )这两条路由,可以在此
接口上配置聚合路由 10.1.0.0/16 ( metric=2 )。
六、RIP 的运行过程?
RIP 的运行过程如下:
(1)路由器启动 RIP 后,便会向相邻的路由器发送请求报文( Request message ),相邻的
RIP 路由器收到请求报文后,响应该请求,回送包含本地路由表信息的响应报文( Response message)。
(2)路由器收到响应报文后,更新本地路由表,同时向相邻路由器发送触发更新报文, 通告路由更新信息。相邻路由器收到触发更新报文后,又向其各自的相邻路由器发送触发更 新报文。在一连串的触发更新广播后,各路由器都能得到并保持最新的路由信息。
(3)路由器周期性向相邻路由器发送本地路由表,运行 RIP 协议的相邻路由器在收到报文后,对本地路由进行维护,选择一条最佳路由,再向其各自相邻网络发送更新信息,使更新的路由最终能达到全局有效。同时,RIP 采用老化机制对超时的路由进行老化处理,以保证路由的实时性和有效性。
七、对路由信息控制技术?
7.1 配置接口附加度量值:
附加度量值是在 RIP 路由原来度量值的基础上所增加的度量值(跳数),包括发送附加度量值和接收附加度量值。
发送附加度量值:不会改变路由表中的路由度量值,仅当接口发送 RIP 路由信息时才会添加到发送路由上。
接收附加度量值:会影响接收到的路由度量值,接口接收到一条合法的 RIP 路由时,在将其加入路由表前会把度量值附加到该路由上,当附加度量值与原路由度量值之和大于 16,该条路由的度量值取 16 。
7.2 配置 RIP-2 路由聚合:
RIP-2 将多条路由聚合成一条路由时,聚合路由的 Metric 值将取所有路由 Metric 的最小值。
7.3 在 RIP-2 中,有两种路由聚合方式:
自动路由聚合和手工配置聚合路由。
7.4 禁止 RIP 接收主机路由
禁止接收主机路由仅对 RIPv2 有效,对 RIPv1 无效。
在某些特殊情况下,路由器会收到大量来自同一网段的主机路由。这些路由对于路由寻址没有多少作用,却占用了大量的资源,此时可配置 RIP 禁止接收主机路由,以节省网络资源。
7.5 配置 RIP 发布缺省路由
用户可以配置 RIP 以指定度量值向邻居发布一条缺省路由。
7.6 配置 RIP 对接收/发布的路由进行过滤
路由器提供路由信息过滤功能,通过指定地址前缀列表,可以配置入口或出口过滤策略,对接收和发布的路由进行过滤。在接收路由时,可以指定只接收来自某个邻居的 RIP 报文。
7.7 配置 RIP 协议优先级
在路由器中可能会运行多个 IGP 路由协议,如果想让 RIP 路由具有比从其它路由协议学来的路由更高的优先级,需要配置小的优先级值。优先级的高低将最后决定 IP 路由表中的路由是通过哪种路由算法获取的最佳路由。
7.8 配置 RIP 引入外部路由
如果在路由器上不仅运行 RIP ,还运行着其它路由协议,可以配置 RIP 引入其它协议生成的路由,如 OSPF 、 IS-IS 、 BGP 、静态路由或者直连路由。
八、代码
R1(config)#router rip
R1(config-router)#version 2
R1(config-router)#network 192.168.1.0
R1(config-router)#network <R1与R2连接的网络地址>