关于距离矢量路由协议中的一些知识

关于距离矢量路由协议中的一些知识

1、什么是距离矢量协议?

所谓矢量,就是既具有方向,又具有幅度(大小),IP路由本身就是一种矢量,其方向可以表示为出接口或者是下一跳的地址,幅度可以表示为度量值(开销)。

表现在RIP协议中,度量值代表的就是“路由”在传播过程中途经的路由器的跳数。

2、矢量路由协议是如何传播路由信息的?

路由更新消息A将AR 1路由器中的路由数据传播给AR 2,AR 2将数据存放进自己的路由数据中,但是,由于数据经过了AR 2以自身为中心的路由算法,所以A一开始存放进来的路由消息一定是与计算过后的数据不相同的。
关于距离矢量路由协议中的一些知识
例如,在RIP协议中,当从邻居收到一条路由信息后,会对路由信息加以修改,以反应本机到目的地址的距离,RIP协议的具体体现就是会修改路由信息的跳数(跳数加一)。经过修改后的路由信息会驻入本机的路由表,然后路由器继续将本机的路由表通告给与本机直连的邻居路由器。

查看下图,AR 2会把自己直连的关于 12.1.1.0 ,跳数为0跳的路由信息通告给它的邻居AR 3,AR 3收到这条路由信息后会把跳数加一,然后存进自己的路由表。所以AR 3中目的地址为 12.1.1.0 的路由的开销(跳数)为 1;AR 3继续把自己的路由表信息通告给AR 4,相同的,AR 4也会相应的加一条,所以这条路由从最初的0跳传播到AR 4的时候跳数就会增加到 2。
关于距离矢量路由协议中的一些知识

3、矢量路由协议的收敛

t 1 时间开始,各路由器的路由表中只有与自己直连网路相对应的路由,每经过一个 t 的时间,路由器就会向邻居路由器通告自己的路由信息。

在如图所示的拓扑中,t 3 时刻整个网络已经完成了收敛。
关于距离矢量路由协议中的一些知识

通过上面学习的知识,稍加思考,就会产生很多的问题。例如:

(1)我们知道,在路由器收到邻居的路由消息后,通过路由算法的计算,将新的路由信息加入路由表,并且再次通告给自己的邻居。所以说,如果R 3收到R 2中关于 12.1.1.0 网段的路由后加一跳存进自己的路由表中,向自己的邻居通告时又通告给R 2呢?这样是不是R 2中就会产生两条通往 12.1.1.0 网段的路由信息,并且下一跳完全不同。
关于距离矢量路由协议中的一些知识
(2)我们也知道,每通过 t 的时间,路由器才会完成自己的计算后把自己的路由信息通告出去。要知道,现实生活中的网络不可能如上面图片所示的一样简单,当网络很复杂的时候,收敛的时间就会很长很长,长到让人难以接受,尤其时网络中路由发生改动时,整个网络都要为之重新计算,再逐条通告。

(3)每个路由器接收到邻居路由器发来的路由信息后,都会自己通过计算后存进自己的路由表,然后再向邻居通告出去,所以说,每个路由器接收到的路由信息都是邻居路由器计算后得到的。因此,如果网络中有一个路由器计算出现了差错,那么后来接收到路由器都会承担这个错误。

4、路由环路

4.1 水平分割

在上面提到的问题(1)中,将从邻居收到的路由信息计算后又原路通告回去,这样就会造成路由的混乱,使得网络出现环路。

为了解决这一问题,在路由更新中启用了水平分割的规则:即路由器不会把从某一接口学到的路由通过同一接口通告出去

4.2 计数到无穷大

当如图所示的链路中断后,R 2检测到链路故障,于是向自己的邻居R 3与R 4发送路由更新,告知他们 10.1.1.0 网段不可达。现在我们假设同时发生了以下两件事:
(1)R 4在R 2发出路由更新前,就已经主动更新过了路由信息
(2)R 3在R 4发出路由更新前,已经接收到了R 2发出的 10.1.1.0 路由不可达的信息并且处理了此信息

也就是说,此时R 3已经从路由表中删除了 10.1.1.0 的路由信息,但是R 4由于提前更新了路由表,它不认为 10.1.1.0 的网段不可达,于是它把此信息处理后发送给了R 3,R 3自然会接受,并且认为 10.1.1.0 网段可以从R 4到达,跳数为3跳;R 3又会把这条路由信息发送给R 2,R 2也认为 10.1.1.0 网段可以通过R 3到达,跳数为 4 跳。于是,这条路由信息就在这个圈内一直重复下去了,并且,这三个路由器下的网段只要访问 10.1.1.0 网段,就会引发数据包转发环路。

为了方便理解上面的内容,这里科普一个路由信息的更新规则:当路由器收到一条与自己路由表内有相同目的地址的新路由信息时,会首先比较它们的下一跳,如果下一跳相同,直接替换新的路由;如果下一跳不同,则比较开销(跳数),开销小的会存放进路由表。

所以为了避免这种无限循环的的路由信息发生,在RIP中,设定了一个上限,当跳数达到16时,路由器就会视为此目标不可达,忽略这个信息。
关于距离矢量路由协议中的一些知识

holddown计时器

holddown计时器的机制为:若路由器先从邻居路由器学习到一条路由,然后这个邻居又告知它刚才告知的目标不再可达,此时路由器便会启动与这条链路挂钩的holddown计时器。在计时器到期之前,除了以下情况,路由器都不会再接收刚才所通告的网络的任何路由信息。(可以联系上图理解)
(1)又从刚才的邻居收到了相同的可达路由信息(在上图中可以理解为链路已经恢复)
(2)收到了另一个邻居通告的相同目的的路由信息,并且开销等于小于刚才的那条。(大于的话就很可能是由于环路引起的)

但是,holddown计时器虽然能解决环路问题,但由于在RIP中holddown计时器长达 180 秒,所以会很大程度延长网络的收敛时间。

另一个会出现的问题就是如下图,如果出现链路故障,R 2就会通告给R 3一条 10.1.1.0 网段不可达的信息,此时R 3启动了holddown计时器,不再接收任何关于 10.1.1.0 网段的路由(除非有上述的两种情况发生),但是实际上,R 3还可以从R 6到达 10.1.1.0 网段,但是由于从R 6收到的 10.1.1.0 网段的路由信息大于从R 2收到的,根据规则会不予理会,所以在计时器到期前,R 3都无法访问 10.1.1.0 网段。
关于距离矢量路由协议中的一些知识

文章提到的内同是学习中遇到的一部分对于理解矢量路由协议重要的知识,供参考。