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连接的网络地址>
相关推荐
Bruce_Liuxiaowei29 分钟前
常见高危端口风险分析与防护指南
网络·网络安全·端口·信息搜集
tmacfrank1 小时前
Android 网络全栈攻略(四)—— TCPIP 协议族与 HTTPS 协议
android·网络·https
liulilittle1 小时前
深度剖析:OPENPPP2 libtcpip 实现原理与架构设计
开发语言·网络·c++·tcp/ip·智能路由器·tcp·通信
cui_win1 小时前
【内存】Linux 内核优化实战 - net.ipv4.tcp_tw_reuse
linux·网络·tcp/ip
biass1 小时前
jenkins角色权限
运维·jenkins
tomorrow.hello1 小时前
Jenkins Pipeline(二)
运维·jenkins
2501_916013741 小时前
iOS 多线程导致接口乱序?抓包还原 + 请求调度优化实战
websocket·网络协议·tcp/ip·http·网络安全·https·udp
做一个AC梦1 小时前
Docker安装失败:Docker Desktop installation failed
运维·docker·容器
Shan12051 小时前
浅谈Docker Kicks in的应用
运维·docker·容器
M1A11 小时前
TCP/IP协议精解:IP协议——互联网世界的邮政编码系统
后端·网络协议·tcp/ip