5-9 路由协议
5-9-4 路由协议RIP
RIP协议
RIP(Routing InformationProtocol,路由信息协议)
内部网关协议IGP,距离矢量路由协议。
华为设备上路由优先级为100。
开销值(cost)取决于跳数:最大15跳,16跳不可达,一般用于小型网络。
支持等价负载均衡和链路余,使用UDP520端口。
几个时钟:30s周期性更新路由表、180s无更新表示不存在、300s(180s + 120s = 300s = 5min)删除路由表。
- 更新定时器:RIP路由器每隔 30秒 向邻居发送一次完整的路由表信息,以确保所有路由器能够及时获取最新的路由状态。更新定时器控制RIP路由器向邻居路由器发送路由更新信息的时间间隔
- 无效/老化定时器:如果在 180秒 内没有收到某条路由的更新信息,则该路由会被标记为“无效”或“不可达”(将cost值设置为16,路由不可达),但不会立即从路由表中删除。老化定时器用于确定一条路由信息的有效时间
- 垃圾收集定时器:如果在 120秒 内仍未收到来自同一邻居的更新信息,该路由将被从路由表中彻底删除。当一条路由被标记为无效后,垃圾收集定时器开始计时。

RIPv1与RIPv2对比
| RIPv1 | RIPv2 | 备注 |
|---|---|---|
| 有类,路由更新不携带子网掩码 有类(即只支持ABC分类编址) |
无类,路由更新携带子网掩码 | 无论是RIPv1还是RIPv2,在配置时,都只能宣告主类网络号: network 10.0.0.0 network 172.16.0.0 network 192.168.1.0 而在路由更新时,RIPv1不带掩码,RIPv2携带掩码 |
| 广播更新 | 组播更新 | 224.0.0.9 |
| 周期性更新(30s) | 触发更新 | 即RIPv2路由变化是触发更新 |
| 不支持VLSM、CIDR | 支持VLSM、CIDR | 即RIPv2路由更新携带掩码 |
| 不提供认证 | 提供明文和MD5认证 | 即RIPv2更安全 |
| 不能关闭自动汇总 | 可以关闭自动汇总 | 即RIPv2在主类网络边界会自动汇总 auto summary |
距离矢量路由协议
使用距离矢量路由协议的路由器并不了解网络的拓扑。该路由器只知道:
- 自身与目的网络之间的距离。
- 应该往哪个方向或哪个接口转发数据包。

距离矢量路由协议特点
周期性地更新 (广播)整张路由表
- 距离Distance一多远
- 矢量Vector一哪个方向

RIP路由的度量值
RIP以跳数作为度量值,虽然简单,但事实上不科学,如下图:

查看RIP路由的度量值

路由优先级
不同的路由协议生成的路由条目,其优先级各不相同,如OSPF的路由条目优先级为10,RIP的路由条目优先级为100;同一路由协议产生的发往同一目的地址的路由条目,开销值更小决定哪一个条目更加优先

- 不同的厂商路由优先级的协定可能不同
- 华为定义的路由协议优先级如下表:
| 路由协议 | 优先级 |
|---|---|
| DIRECT | 0 |
| OSPF | 10 |
| IS-IS | 15 |
| STATIC | 60 |
| RIP | 100 |
| OSPF AS E | 150 |
| OSPF NSSA | 150 |
| IBGP | 255 |
| EBGP | 255 |
RIP防环机制
- 最大跳数:当一个路由条目发送出去会自动加1跳,跳数最大为15跳,16跳意味着不可达
- 水平分割:一条路由信息不会发送给信息的来源,即接收方不会将该条路由同步回发送方
- 反向毒化的水平分割:把从邻居学习到的路由信息设为16跳,再发送给那个邻居。
- 抑制定时器和触发更新:也可以防止环路。
例题
例题1

解析:
- A:RIP的最大跳数都是15,16代表不可达
- B:正确
- C:RIP都是使用跳数作为度量值/开销值
- D:RIPv1定时更新,RIPv2触发更新
例题2

解析:水平分割是RIP的防环机制,不会把路由发送给收到该路由的方向。
例题3

解析:掌握RIP路由基础,RIP最大跳数是15,16跳意味着不可达。
例题4

解析:RIPv1和RIPv2都基于跳数计算度量。
参考:路由信息协议RIP的基本工作原理
路由信息协议RIP简介
路由信息协议 RIP(Routing Information Protocol) 是内部网关协议中最先得到广泛使用的协议之一,其相关标准文档为 RFC 1058。
RIP要求自治系统内的每一个路由器都要维护从他自己到自治系统内其他每一个网络的距离记录。这是一组距离,称为距离向量D-V(DIstance-Vector)。
RIP使用跳数(Hop Count)作为度量(Metric)来衡量到达目的网络的距离。

- RIP将路由器到直连网络的距离定义为1,例如图中的路由器 R1 到其直连网络 N1 的距离为1。
- RIP将路由器到非直连网络的距离定义为所经过的路由器数加1,例如图中的路由器 R3 到其非直连网络 N2 的距离为2。
- RIP允许一条路径最多只能包含 15 个路由器,距离等于 16 时,相当于不可达。因此RIP只适用于小型互联网。
需要说明的是,有些厂商的路由器并没有严格按照RIP标准文档的规定来实现RIP。例如,思科路由器中的RIP将路由器到直连网络的距离定义为0,但这并不影响RIP的正常运行。
RIP:好的路由就是距离短的路由
RIP认为好的路由就是距离短的路由,也就是所通过路由器数量最少的路由。如图所示,从 R1 到 R5 可以走这条路由,也可以走这条路由。RIP认为 R1 到 R5 的好路由是图中只经过一个路由器 R4 的这条路由,尽管这条路由上各段链路的带宽都非常小。

再来看这个例子,下图中从 R1 到R6,可以走上面这条路由,也可以走下面这条路由,而这两条路由是等价的,RIP该如何选择?
当到达同一目的网络,有多条距离相等的路由时,RIP可以进行等价负载均衡,也就是将通信量均衡的分布到多条等价的路由上。

RIP的三个要点
和谁交换信息:仅和相邻路由器交换信息。我们来举例说明相邻路由器的概念。下图中 R1 与 R2 互为相邻路由器,因为它们是直连的,中间没有其他路由器。同理, R2 与 R3 也互为相邻路由器,但是 R1 与 R3 不是相邻路由器,因为它们之间还存在其它路由器。
笔者注:路由器如何得知谁和自己相邻?
- 初始请求与响应机制:当路由器启动RIP协议时,会通过广播或组播发送请求报文(Request Message)。该报文会被同一子网内所有支持RIP的路由器接收。相邻路由器收到请求后,会通过**响应报文(Response Message)**回复自身的路由表信息。路由器通过这种请求-响应交互,确认哪些设备是直接可达的邻居
- 基于直接连接的物理网络:RIP协议默认将**直连在同一物理网络(同一广播域)**的路由器视为相邻路由器。例如,若两台路由器通过以太网接口直接相连,它们会自动成为邻居,无需手动配置。RIP协议依赖网络的广播或组播特性,确保相邻路由器能直接接收彼此的报文。
- 周期性广播维护邻居关系:RIP路由器每30秒向相邻路由器广播一次路由表更新。若某台路由器在180秒(老化时间)内未收到邻居的更新,则认为该邻居失效,并触发路由表更新。这种周期性广播不仅用于路由信息同步,也是维持邻居关系存活的“心跳”机制。

交换什么信息:路由器自己的路由表。
何时交换信息:周期性交换。例如每 30 秒发送一次 RIP 更新报文。
RIP的基本工作过程
路由器刚开始工作时,只知道自己到直连网络的距离为1。
每个路由器仅和相邻路由器周期性地交换并更新路由信息。
若干次交换和更新后,每个路由器都知道到达本AS内各网络的最短距离和下一跳地址,称为收敛。
举例说明RIP的基本工作过程
路由器刚开始工作时,只知道自己到直连网络的距离是1。如图所示,这是各路由器刚开始工作时各自的路由表,其中包含的路由条目都是到达各自直连网络的信息,其距离都是1。

之后每个路由器仅和相邻路由器周期性的交换并更新路由信息。如图所示, R1 和 R2 互为相邻路由器, R1 和 R3 互为相邻路由器, R2 和 R3 互为相邻路由器, R2 和 R4 互为相邻路由器, R3 和 R4 也互为相邻路由器。

相邻路由器之间周期性的交换并更新路由信息。若干次交换和更新后,每个路由器都知道到达本自治系统内各网络的最短距离和下一跳地址,这称为收敛,如图所示。

RIP的路由条目更新规则
路由器 C 和 D 互为相邻路由器,它们之间周期性的交换并更新路由信息。这是路由器 C 的路由表。其中到达各目的网络的下一跳都记为问号。可以理解为路由器 D 并不需要关心路由器 C 的这些内容,这是路由器 D 的路由表。

假设路由器 C 的RIP更新报文发送周期到了,则路由器 C 将自己路由表中的相关路由信息封装到RIP更新报文中,发送给路由器 D 。

我们可以简单的理解为,路由器 C 将自己的路由表发送给了路由器D,路由器D收到后对其进行改造,将到达各目的网络的下一跳都改为C,距离都增加1。

这样的操作很容易理解,因为路由器 C 告诉 D它可以到达这些目的网络,那么路由器 D 作为 C 的邻居路由器,当然也就可以通过 C 来到达这些目的网络,只是比 C 到达这些目的网络的距离大1。
路由器 D 现在可以根据改造好的路由表来更新自己先前的路由表了。

- 到达目的网络相同的下一跳,最新的消息应该更新:路由器 D 原来到达网络 N2 的距离是2,下一跳经过路由器 C 的转发。现在路由器 D 知道了到达网络 N2 仍然经过 C 的转发,距离变为了5,也就是说 C 与 N2 之间的网络拓扑发生了变化,于是将自己这条路由条目中的距离更新为5。更新路由表的理由可总结为:到达目的网络相同的下一跳,最新的消息应该更新。
- 发现了新的网络——添加:路由器 D 原来不知道网络 N3 的存在,现在路由器 D 知道了可以通过路由器 C 到达网络N3,于是将该路由条目添加到自己的路由表中。更新路由表的理由可总结为:发现了新的网络——添加。
- 到达目的网络不同的下一跳,新路由有优势,应该更新:路由器 D 原来到达网络 N6 的距离是8,下一跳,经过路由器 F 的转发。现在路由器 D 知道了到达网络N6,如果通过 C 来转发,则距离可缩短为5,于是将自己这条路由条目中的距离修改为5,下一跳修改为C。更新路由表的理由可总结为:到达目的网络不同的下一跳,新路由有优势,应该更新。
- 到达目的网络不同的吓一跳,但距离相等,进行等价负载均衡:路由器D原来到达网络 N8 的距离是4,下一跳,经过路由器 E 的转发。现在路由器 D 知道了到达网络N8,还可以通过 C 来转发,距离也为4,于是将该路由条目添加到自己的路由表中。更新路由表的理由可总结为:到达目的网络不同的吓一跳,但距离相等,进行等价负载均衡。
- 到达目的网络不同的想一跳,新路由劣势不应该更新:路由器 D 原来到达网络 N9 的距离是4,下一跳经过路由器 F 的转发。现在路由器 D 知道了到达网络N9,如果通过 C 来转发,则距离扩大为6,于是不使用这条路由条目来更新自己的路由表。不更新路由表的理由可总结为:到达目的网络不同的想一跳,新路由劣势不应该更新。
习题
习题1
接下来请同学们参看我们之前的这个举例,来完成这道习题。

答案

习题2

解析:在RIP协议中,距离 16 被定义为目的网络不可达,因此 R2 无法到达 net 1,而 1 也无法通过 R2 到达net 1。
RIP存在“坏消息传得慢”问题
下面我们介绍锐步协议存在的坏消息传得慢的问题。如图所示,假设 R1 到达其直连网络 N1 的链路出现了故障,当 R1 检测出该故障后,会将到达 N1 的路由条目中的距离修改为16,表示 N1 不可达,并等待RIP更新周期到时候发送该路由信息给R2。

而此时 R2 的路由表中关于 N1 的路由条目仍然是先前通过RIP协议获取到的,也就是到达 N1 的距离为2,且下一跳通过 R1 转发。

假设 R2 的RIP更新周期先到,也就是 R2 的这条路由信息先到达R1,而 R1 的这条路由信息后到达R2。

当 R1 收到 R2 的这条路由信息后,就会被该谣言误导,认为可以通过 R2 到达N1,距离为3(笔者注:到达目的网络相同的下一跳,最新的消息应该更新,于是R1的16这条故障消息被忽视),并在自己的 RIP 更新周期到时候将这条路由信息发送给R2。

当 R2 收到 R1 的这条路由信息后,被该谣言误导,认为可以通过 R1 到达N1,距离为4,并在自己的 RIP 更新周期到时候将这条路由信息发送给R1。

当 R1 收到 R2 的这条路由信息后,被该谣言误导,认为可以通过 R2 到达N1,距离为5,并在自己的RIP更新周期到时后,将这条路由信息发送给R2。

很显然,只有当 R1 和 R2 的路由表中到达 N1 的路由条目中的距离都增加到 16 后, R1 和 R2 才都知道 N1 不可达,也就是才收敛。

在该过程中, R1 和 R2 之间会出现路由环落时间长达数分钟。

有关路由环路的问题,我们在之前的静态路由配置的相关课程中已经介绍过了,此处就不再赘述了。
坏消息传得慢,又称为路由环路或距离无穷计数问题。这是距离向量算法的一个固有问题,可以采取多种措施减少出现该问题的概率或减少该问题带来的危害。例如:
- 触发更新:限制最大路径距离为15(16表示不可达)。当路由表发生变化时,就立即发送更新报文即触发更新,而不仅是周期性发送
- 水平分割:让路由器记录收到某特定路由信息的接口,而不让同一路由信息再通过此接口向反方向传送,即水平分割。
请注意,使用上述措施后也不能彻底避免路由环路问题,这是距离向量算法的本质所决定的。
习题

解析:
根据题目所给R3,检测到网络 20 一点二点零,斜线 25 不可达,可知 R3 与该网络是直连的。如图所示,

又根据题目所给 R1 、R2、R3 采用 RIP 协议交换路由信息,且均已收敛,可知先前他们各自的路由表中关于该目的网络的路由条目如下所示,

再根据题目所给 R3 检测到网络201.1.2/25 不可达,并向 R2 通告一次新的距离向量,可知 R3 与该网络之间的链路出现了故障。当 R3 检测到该故障时,将自己到达该网络的路由条目中的距离修改为16,表示该网络不可达,并向 R2 发送关于这条路由条目的通告。 R2 收到后更新自己相应的路由条目,将距离修改为16。

最后,根据题目所给则 R2 更新后这句话可知, R1 给 R2 发送了关于该路由条目的 RIP 更新报文,而 R2 听信了该谣言,误认为到达该目的网络可以通过 R1 的转发,距离为3。

本节小结

需要说明的是,本节课我们介绍了RIP最基本的工作原理,并不涉及RIP的全部细节,例如RIP相关报文的封包格式、RIP中涉及到的一些定时时长等。目前基于 IPv4 的 RIP 有版本 1 和版本 2 两个版本,还有基于 IPv6 的 RIP NG,有兴趣可以自行查阅相关文档。
