RIP协议相关知识总结

时间:2024-05-21 11:15:54

以下均为本人查阅各方面的文献资料结合自身理解所转述,现以笔记的形式作个总结。
小生初学计算机网络,以下表述难免会有错误或不足之处,欢迎大家批评指正。

问题引入

我们首先引入一个问题,学习完以下相关知识点后可以试着解答这个问题:

请解释RIP协议为什么会有“好消息传得快,坏消息传得慢。”的现象?并延伸思考,为什么要将最大跳数进行了限制(15)和收敛慢的原因。

知识点

自治系统

自治系统(Autonomous System,AS):可以自我管理(网络)的一个系统,比如一个学校,一个公司,一个部门等。
RIP协议相关知识总结
在自治系统中,可以自己选择本系统内部的路由选择协议。

在本系统内部使用的协议称为内部网关协议(Interior Gateway Protocol,IGP)

目前最常用的有两种内部网关协议为:

  • RIP(Routing Information Protocol ,路由信息协议)
  • OSPF(Open Shortest Path First Protocol ,开放式最短路径优先协议)

RIP

RIP: Routing Information Protocol ,路由信息协议

距离向量路由选择算法

该协议采用的是距离向量路由选择算法,它是一种异步,迭代的分布式路由选择算法,常基于最短路径中的Bellman-Ford算法来实现。
可见,RIP是采用距离向量(DistanceVector)作为距离的度量。

这里的距离向量你不需要过度纠结,现在只需要知道这是一种带方向的度量(数值上并不体现方向,只是在我们感知上具有方向),
采用的单位。它度量的是路由 到 目标网络的距离。
首先定义 路由 与 直接相连的网络 的距离为 1跳,然后与非直接相连的网路的距离 可根据经过的路由数量进一步度量,即在“原来基础上” 加上经过的路由数量。
RIP协议相关知识总结
举例说明,如上图7.48:
路由R1到网络N1,N2的距离为1跳,到N3的距离为2跳,到N4为3跳;
路由R2到网络N2,N3的距离为1跳,到N1,N4的距离为2跳;
路由R3到网络N3,N4的距离为1跳,到N2的距离为2跳,到N1的距离为3跳。

到这里,我们应该比较清晰的领悟到RIP中的距离度量了。

RIP 允许经过的路由器的数目最多为 15,其最长路径距离为 16(此时是无穷距离,代表不可达)。

RIP中的信息交换

下面我们来看一下RIP中的信息交换

首先明确RIP是相邻路由之间的信息交换。

一问: 路由间交换的信息是什么?

交换的信息为它们已知的路由信息。这里的路由信息宏观意义上就是一张表格,每个路由上都维护着这样一个表格,表格内容大致如下所示:

目标网络 已知当前路由与目标网络的距离(跳数) 下一跳路由(已知以当前最短路径到达目标网络需要经过的下一个路由)
Net Distance R

RIP协议相关知识总结
上图中在路由旁边的表格(没有下一跳路由)是每个路由的初始路由表.
下方(b),( c),(d),(e)为路由经过第一轮信息交换后的路由表,(f)为经过n(n > 1)轮交换后的路由表:因为第一轮交换后R1到Net7的距离还是不确定的(认为是无穷距离),经过n轮交换后R1才获得到Net7的最短路径。

二问: 路由之间何时进行信息交换?

路由之间通常是按照 固定的时间间隔 进行信息交换,RIP规定10~30秒交换一次信息。除此之外,当网络拓扑结构发生变化时,需要向 其他路由 奔走相告。比如某路由器的关闭,增加,减少等都会引起网络拓扑结构发生变化,即这时也会发生路由信息交换。

三问: 路由之间是如何进行信息交换的呢?

这里明确 需要获得 每个路由器 到达每个目标网络的 最短距离,当然可能出现 某个路由 对某些网络 不可达的情况,这时就会有一个定义好的 无穷距离 来表示网络不可达。

信息交换过程中在不断维护着它们的路由表信息。我们知道对于每一个路由只能与它相邻的路由进行信息交换,所以在某个路由器更新它维护的路由表时,它要先接收到与它相邻的路由器的路由表。其中数据传送形式是报文,路由表包含在RIP报文中,通过UDP来传输。

RIP的报文格式如下图所示:

RIP协议相关知识总结
当路由器接收到相邻路由器发送过来的报文时,它会一个一个的取出报文中包含的各路由表的信息,然后与自身路由表信息进行对比:

  • 当与原始记录相同时,此时相邻路由器的目标网络相同,距离都是1,此时没有下一跳,该条记录保持不变,如下图中的路由器R1和R2,对于目标网络Net1,此时Net1这条记录保持不变。

  • 对于其他RIP的记录,因为要以相邻路由器为下一跳来到达目标网络,此时需要将取出的目标网络信息 中的距离+1,然后进行比较,看一下这个相邻路由能否缩短到达目标网络的距离。
    路由器和网络如下图所示,假设此时路由器R1的报文记录中的有这么一条目标网络信息:Net6 ,4,R4。收到R3发来的报文,其中的一条目标网络记录为Net6,1,–。这时就要生成一个Net6,2,R3来和Net6,4,R4比较。比较结果很明显,R1路由表中的Net6会更新成:Net6,2,R3。

  • 如果是一个新的目标网络则直接加入本路由器的路由表中。

总之,对比时,如果记录中没有目标网络,则插入。有目标网络,就看能不能减小与目标网络的距离,能缩小与目标网络的距离即更新。

RIP协议相关知识总结

RIP的优缺点

优点
格式简单,额外开销小,比较容易实现。

缺点
(1) RIP限定的距离最大为16,对很大的自治系统就难以适应;

(2)RIP 传输的是整个路由表,随着全球因特网的爆炸式增长,路由表的记录项也随之
大大增加,则开销也急剧地增长;

(3)RIP 好消息传得快,坏消息传得慢:

  • 好消息传的快:如果某个新网络加入,邻居路由获知后很快就可以广播出去。
  • 坏消息传的慢:如果某个时刻某个路由器与某个目标网络链路出现了故障,当前路由就会将与出现链路故障的目标网络中的距离置为16(无穷距离)。本来应该立即更新其他所有的路由器获知这个情况,但是在距离向量选择过程中需要花费一定的时间。以至于某些路由没来得及更新,当未及时更新的信息通过报文发送出去,别的路由接收后,就以为可以通过这个未及时更新信息的路由来到达那个出了故障的目标网络。以此循环反复下去,经过很多次更新,直到发现即将更新的向量距离达到了定义的无穷距离(16)才获知那个目标网络不可达。这就使得坏消息传得慢。这种情况如下图所示:
    RIP协议相关知识总结
    B和C一直问下去,直到它们当中其中一个距离达到15跳时,另一个人再问一下(15+1 = 16)才发现那个目标网络是不可达的。

这里无穷距离定义的是16,如果是定义的更大呢?可想而知坏消息会传递的更慢。

如果定义的更小呢?那么RIP只能适用于更小型的网络了。

收敛

全部路由 获取到 正确消息 的过程。其中花费的时间为收敛时间。

收敛了不代表不再进行信息交换,交换还是随着网络的变化而不断进行变化。

问题解答

(1) 解释RIP协议为什么会有“好消息传得快,坏消息传得慢。”的现象:
因为好消息被某个路由获知后,通过邻居之间的信息交换可以快速广播出去。
而对于坏消息,部分路由信息没有及时被更新,把它们称为无效路由,无效路由仍被错误地作为有效路由进行广播,使得无效路由之间进行循环的信息交换,直到距离达到设定的无穷距离(16)才得知正确的信息。
(2)对最大跳数进行限制的原因:是为了让坏消息不会因无效路由的信息交换而陷入死循环,利于坏消息更快的被收敛。收敛慢的原因:路由信息交换是周期性的广播,这影响了收敛效率;一个路由既可从另一个路由接收信息也可以发送自身信息给刚才那个给它发送信息的路由,这使得无效路由当作有效路由来使用,容易出现不正确信息的循环交换,使得收敛变得更缓慢。

ps:感觉答的很迷糊,自己理解的还不够深刻。欢迎大佬批评指正以及补充!

参考资料

  1. 新世纪高等学校计算机系列教材 佟震亚 杨风暴 编著 陶世群 校《计算机网络与通信》
  2. Github Naixes: notes/网络协议.md
  3. 计算机网络第四章部分课后题详解