目录
一、路由信息协议RIP
1.距离向量:
2.跳数:
3.基本工作原理:
三个要点:
4.基本工作过程:
(1)初始状态:
(2)交换并更新信息
(3)收敛
5.更新规则
6.RIP协议的问题
一、路由信息协议RIP
路由信息协议RIP是互联网中最早使用的协议,他是基于距离向量的。
注意:RIP协议使用UDP进行封装,所以RIP协议属于应用层协议。
1.距离向量:
RIP要求自治系统AS内的每一个路由器都要维护从它自己到AS内其他每一个网络距离的记录,这是一组距离,称为“距离向量D-V”。
2.跳数:
RIP使用跳数作为度量来衡量到目的网络的距离。
如果是直连网络,那么距离就等于1。
如果是非直连网络,那么每经过一个路由器距离就加1。
RIP协议中一条路径最多只能包含15个路由器,距离等于16时就相当于不可达。所以,RIP协议只适合用于小型网络。
也就是说距离最小为1,最大为15。
比如:
图中对于R1路由器,要到达目的网络192.168.1.0/24和目的网络10.0.0.0/30,因为都是直连网络,所以距离都等于1;要到达目的网络10.0.1.0/30,因为是非直连网络,中间经过路由器R2,所以在1的基础上加1,所以距离为2,同样地,到达目的地网络192.168.2.0/24的距离为3。
注意:有些路由器的RIP将路由器到直连网络的距离定为0。
3.基本工作原理:
RIP认为到达目的网络的路径中通过的路由器数量最少的路径最好,即距离最小。
如果到达同一目的网络有多条距离相等的路由时,就会进行等价负载均衡,即将通信量均衡地分布到多条等价的路由上。
三个要点:
RIP协议的三个要点是和谁交换信息,交换什么信息以及何时交换信息。
和谁交换信息:RIP协议中,仅和相邻的路由器交换信息。
例如上图中,路由器R1和R2会交换信息,同时R2还会和R3交换信息,但是R1和R3不是相邻路由器,所以不会交换信息。
交换什么信息:交换自己的路由表。
何时交换信息:周期性交换信息(如:每隔30秒发送一次RIP更新报文)。
综上所述,RIP协议中仅相邻的路由器周期性交换并更新自己的路由表。
4.基本工作过程:
(1)初始状态:
我们之前有提到过,在路由器刚开始工作时只知道与自己直连的网络,所以路由器只知道自己到直连网络的距离为1。
(2)交换并更新信息
图中,对于路由器R1,路由器R2和路由器R3都为它的相邻路由器;
对于路由器R2,路由器R1和路由器R3和路由器R4都为它的相邻路由器;
对于路由器R3,路由器R1和路由器R2和路由器R4都为它的相邻路由器;
对于路由器R4,路由器R2和路由器R3都为它的相邻路由器。
根据RIP协议的要点可以得出,每个路由器会若干次交换并更新自己的路由信息。
(3)收敛
在若干次交换和更新后,每个路由器都可以知道在本AS内到达各网络的最短距离和下一跳地址。这就是收敛。
5.更新规则
前面提到路由器会交换并更新自己的路由信息,那么具体是怎么交换和更新的?
A、B各自的路由表如图,假设现在路由器A的RIP更新报文的发送周期到了,则路由器A将自己路由表的信息封装到更新报文中发送给路由器B。
图中我们故意将A的路由表的下一跳全部写为问号,这是因为A将自己的路由表信息给B时会将表中的下一跳都改为A,也就是说B无需关心A路由表里的这些内容。
B接收到的A的路由表如图:其中距离在原有基础上都加1,因为这个过程相当于通过了路由器A,下一跳统一变为A。
随后B根据收到的改造后的A的路由表(后面简称为A路由表,但要注意这是改造后的A路由表)更新自己的信息。如图:
首先我们可以看到在B的路由表里面没有关于到达N1网络的条目,现在发现可以通过路由器A到达N1网络,于是将该条目加进去。这条规则叫“发现新的网络直接添加” 。
其次,我们在B的路由表的下一跳里面发现了有关于A的下一跳,即到达N7网络的条目,距离为6。在传来的A的路由表里面也有关于N7的条目,但是距离变为了7,于是将R2的路由表中的该条目的距离改为7。这条规则叫“到达目的网络,相同的下一跳,更新为最新信息” 。
现在A的路由条目还剩N3、N5、N9三条,很明显可以看到在B的路由表里里面,它们的下一跳都不是A。首先关于N3的条目,可以看到N3条目在B的路由表里面的距离为9,但是在A的路由表里面距离为6;在工作原理部分,我们有说RIP协议认为好的路由就是到达同一个目的网络通过的路由器数量最少的路径,所以应该把B路由表里的N3条目距离更新为6,且下一跳更新为A。这条规则叫“到达目的网络,不同的下一跳,新路由有优势,更新” 。
N5条目在两个路由表里虽然下一跳不同,但是距离都为5,在基本原理部分有提到过,有到达同一目的网络多条距离相等的路由时进行等价负载均衡。于是将A中关于N5网络的条目直接添加到B中。这条规则叫“到达目的网络,不同的下一跳,等价负载均衡” 。
最后,N9条目在A路由表里面的距离为6,但是在B路由表里面为5,秉持着好的路由原则,B路由表关于该条目的信息不发生变化。这条规则叫“到达目的网络,不同的下一跳,新路由有劣势,不更新” 。于是,最终的B更新后的路由表就如图所示:
总结:RIP协议中,一个路由器A给相邻的路由器B发送装有自己路由表信息的RIP更新报文,路由器B会接受到改造后的路由表A,即距离全部加1,并且下一跳全部变为A。
更新可以先从到达的目的网络入手,如果发现新网络直接进行添加;如果是B表中已有的网络,则从下一跳入手,下一跳相同就进行更新;下一跳不同就从距离入手,谁距离短就用谁,距离一样就进行添加。
6.RIP协议的问题
RIP协议存在一个坏消息传的慢的问题。该问题又叫做路由环路或者距离无穷计数问题。这是基于距离向量算法的一个固有问题
首先需要注意的是,RIP协议中的交换并不是意思时间到了相邻的路由器同时交换,它们有可能是有先后顺序的。实际上,每个路由器都有一个RIP更新报文发送周期,它们的时间不一定相等。
我们从示例中进行详细说明,如图:
假设R1和R2已经交换过路由信息,那么R1表中现在就有到达N3网络的条目。
但是现在R2与直连网络N3的链路出现了故障。R2检测到该故障后,就会将自己表中N3网络条目的距离改为16,表示该网络不可达。然后R2就等待自己的RIP更新报文发送周期到时后,将自己的路由信息发送给R1。
但是R1在未收到R2的更新后的路由表的信息时,关于N3的条目的距离仍然为2。
那么根据前面所说的,现在假设R1的更新周期先到时,它就会将自己的路由信息传给R2。R2收到后会误认为可以通过R1到达N3网络,于是将自己表中的N3条目改为3。
后面就会出现两个路由器不停地传递这个错误的条目,并且每次到达N3网络条目距离都会增加1,一直增加到16,才会发现网络不可达。而在中间这个过程R1和R2就会产生路由环路。
对于这种问题,有多种措施可以减少该问题出现的概率及带来的危害。(注意:是减少该问题而不是解决该问题。说明这种问题无法彻底避免。)
一个就是在跳数部分提到的,路由距离达到16即不可达。上面这个示例也体现了这个措施的好处,虽然中间出现了路由环路,但是距离到达16后,双方就都知道该网络不可达了。
第二个,就是当路由表发生变化时,立即发送更新报文(也叫“触发更新”),不用等待更新周期。(这一块不知道大家是否想起了之前说的超时重传与立即重传)文章来源:https://www.toymoban.com/news/detail-691558.html
还有就是让路由器记录收到某特定路由信息的接口,而不让同一路由信息再通过此接口反方向传送。(比如上图中的路由器,我们将两个路由器的左边接口都叫接口0,右边都叫接口1,那么R1就只能从接口1接收关于N3网络的路由信息,但是不能再从该接口发送该信息)。文章来源地址https://www.toymoban.com/news/detail-691558.html
到了这里,关于计网第四章(网络层)(七)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!