- 路由信息协议RIP(Routing Information Protocol)是内部网关协议IGP中最先得到广泛使用的协议之一,其相关标准文档为RFC 1058。
- RIP要求自治系统AS内的每- -个路由器都要维护从它自己到AS内其他每-一个网络的距离记录。这是一组距离,称为 “距离向量D-V(Distance-Vector)”。
- RIP使用 跳数(Hop Count)作为度量(Metric)来衡量到达目的网络的距离。
- 路由器到直连网络的距离定义为1。
- 路由器到非直连网络的距离定义为所经过的路由器数加1。
- 允许一条路径最多只能包含15个路由器。 “距离”等于16时相当于不可达。因此,RIP只适用于小型互联网。
- RIP认为 好的路由 就是 “距离短” 的路由,也就是 所通过路由器数量最少的路由。
- 当到达同一目的网络有多条 “距离相等” 的路由时,可以进行 等价负载均衡。
RIP包含以下三个要点:
- 和谁交换信息:仅和相邻路由器交换信息
- 交换什么信息:自己的路由表
- 何时交换信息:周期性交换(例如每30秒)
RIP的基本工作过程
- 路由器刚开始工作时,只知道自己到直连网络的距离为1。
- 每个路由器仅和相邻路由器周期性地交换并更新路由信息。
- 若干次交换和更新后,每个路由器都知道到达本AS内各网络的最短距离和下- -跳地址,称为收敛。
- RIP的路由条目的更新规则
在C要把路由表信息转发给D时。
路由器C的表到达各目的网络的下一条都记为问号,可以理解为路由器D并不需要关心路由器C的这些内容。
假设路由器C的RIP更新报文发送周期到了,则路由器C将自己路由表中的相关路由信息封装到RIP更新报文中发送给路由器D
- 路由器根据接收到的路由更新报文进行什么操作,就是我们要学习的RIP协议路由条目更新规则。
- 总体上来说,明确一个原则,为了更好的转发数据报,提升数据报转发的效率,才进行路由器表更新,否则不更新。
在D接收到C发送来的数据报后,首先会对C发送过来的路由表进行改造,改造主要是:
将路由表的所有下一跳改为C(因为是C发来的路由表,要走该路由表路径,下一条必须为C)
将所有距离+1,同上理由,要走该条路径,必须再走到C,而C是相邻路由器,距离要+1。
- 当目的网络、下一跳相同时,新的数据替代旧的数据。(说明是下一条路径的最新数据,有利于数据正确转发,更新)
- 当出现了新的目的网络,添加一条新的数据。(能够到达新的目的网络有,有利于转发,更新)
- 当目的网络相同,下一跳不同,并且距离小于路由表已有数据时,更新数据。(能够到达的目的网络有了新的、更短的距离路径,有利于提高转发效率,更新)
- 当目的网络相同,下一跳不同,并且距离等于路由表已有数据时,添加数据。(有利于进行等价均衡负载,提升效率,添加)
- 当目的网络相同,下一跳不同,并且距离大于路由表已有数据时,不进行更新。(不利于提高转发效率,不进行处理)
练习:
RIP存在 “坏消息传播得慢” 的问题
由于N1出现故障,RI路由器将N1的距离设置为16(16距离就是认为的不可到达距离)。
此时R2根据以前RIP协议获得的路由器情况,发送更新请求给R1,而此时R1的更新情况,也就是N1的更新情况还没发给R2。
此时R1的路由器表先收到R1的路由器表后会根据上面说的更新规则进行更新,将N1到R2的距离更新为3。此时数据就是被谣言误导的。
此后,两路由器之间会一直以被误导的数据进行循环更新路由数据,指导双方距离达到16(认为不可达)时,才会选择放弃传输。
在此过程中,就会出现路由环路,导致路由器间被占用长达数分钟的时间
“坏消息传播得慢” 又称为 路由环路或距离无穷计数问题,这是 距离向量算法的一个固有问题。
可以采取多种措施 减少 出现该问题的概率或减小该问题带来的危害。
- 限制最大路径距离为15(16表示不可达)
- 当路由表发生变化时就立即发送更新报文(即 “触发更新”),而不仅是周期性发送
- 让路由器记录收到某特定路由信息的接口,而不让同一路由信息再通过此接口向反方向传送(即 “水平分割”)
- 但是,就算采取了上述措施,由于向量计算算法的本质决定,坏消息传得慢问题还是有可能会出现。
RIP协议小结: