**RIP 协议(Routing Information Protocol: 路由信息协议):**是一种分布式的基于距离向量算法的路由选择协议,是因特网的协议标准,最大优点是简单。

RIP 协议要求网络中每一个路由器都维护从它自己到其他每一个目的网络的唯一最佳距离记录(即一组距离),称为 “距离向量D-V(Distarce-Vector)”

RIP 使用跳数(Hop Count)作为度量(Metric)来衡量到达目的网络的距离。

  • 路由器到直连网络的距离定义为1。
  • 路由器到非直连网络的距离定义为所经过的路由器数加1。

RIP 允许一条路由最多只能包含 15 个路由器,因此距离为 16 表示网络不可达。所以 RIP 协议只适用于小互联网。

1. RIP 概述

RIP 认为好的路由就是“距离短”的路由,也就是通过路由器数量最少的路由

如图: RIP 认为 R1 到 R5 的好路由是: R1—>R4—>R5 尽管这条路由上各段链路的带宽都非常小

当到达同一目的网络有多条”距离相等”的路由时,可以进行等价负载均衡,也就是将通信量均衡地分布到多条等价的路由上。

RIP 包含以下三个要点:

  1. 和谁交换信息?

    仅和相邻路由器交换信息

  2. 交换什么信息?

    自己的路由表

  3. 何时交换信息?

    周期性交换(例如每30秒)

2. 距离向量算法过程

RIP 报文包含的信息就是路由表的全部信息,每两个路由表之间交换信息其实就是交换的 RIP 报文。

2.1. RIP 的基本工作过程

  1. 路由器刚开始工作时,只知道自己到直连网络的距离为1。

  2. 每个路由器仅和相邻路由器周期性地交换并更新路由信息。

  3. 若干次交换和更新后,每个路由器都知道到达本AS内各网络的最短距离和下一跳地址,称为收敛。

2.2. RIP 的路由条目的更新规则

  1. 修改相邻路由器发来的 RIP 报文中所有表项
    对地址为 C 的相邻路由器发来的 RIP 报文,修改此报文中的所有项目: 把”下一跳”字段中的地址改为 C,并把所有的”距离”字段+1。
  2. 对修改后的 RIP 报文中的每一个项目,进行以下步骤:
    原 D 路由表中若没有 Net ,则把该项目直接填入 D 路由表。
    原 D 路由表中若有 Net,则查看下一跳路由器地址
  3. 若原 D 路由表该项目到 Net 的下一跳也是 C,则用新的项目替换原路由表中的项目(路由表30s更新一次,以最新消息为准)
    若原 D 路由表该项目到 Net 的下一跳不是 X,而是 Y 路由。则比较距离,使用距离小的路由。若180s还没收到相邻路
  4. 由器 C 的更新路由表,则把X记为不可达的路由器,即把距离设置为16。返回

3. 特点

坏消息传的慢

“坏消息传播得慢”又称为路由环路或距离无穷计数问题,这是距离向量算法的一个固有问题。

R1说: “我到 N1的距离是16(表示无法到达)但R2,在收到R1的更新报文之前,还发送原来的报文,因为这时 R2,并不知道 R1,出了故障。R1 收到 R2,的更新报文后,误认为可经过 R1 到达 N1,于是更新自己的路由表,说: “我到网1的距离是3,下一跳经过 R2,”。然后将此更新信息发送给R2

可以采取多种措施减少出现该问题的概率或减小该问题带来的危害。

4. 仿真实验

实验网络拓扑图如下图所示:

启动路由器各个接口的 RIP 协议:

每个路由器和相邻路由器周期性地交换并更新路由信息:

通过 RIP 协议学习的路由:

各个路由器都可以得出到达目的网络的最短距离