首页 理论教育 距离向量路由协议的探讨

距离向量路由协议的探讨

时间:2022-04-25 理论教育 版权反馈
【摘要】:距离向量路由协议的探讨曲 伟一、引言网络数据在通信过程中,为通信结点寻找一条最佳路径是非常重要的,通常都是通过路由器来完成这项工作。动态路由协议主要分为三类:距离向量路由算法,链路状态路由算法,平衡混合路由算法。

距离向量路由协议的探讨

曲 伟

一、引言

网络数据在通信过程中,为通信结点寻找一条最佳路径是非常重要的,通常都是通过路由器来完成这项工作。在路由器中,有两种方法可以选择,一种是设置静态路由,二是通过动态路由协议来完成,因为静态路由需要人工配置,工作量大,不够灵活,因此,动态路由在实际应用中显得尤为重要。动态路由协议主要分为三类:距离向量路由算法,链路状态路由算法,平衡混合路由算法。其中,距离向量算法也称为Bellman-Ford算法,主要用跳数等参数的大小来计算最佳路由。要求每个路由器周期性发送其路由表全部或部分信息(仅发送到邻近结点上),来维护路由器的路由表,下面将主要讨论距离向量算法中存在的问题和解决方法。

二、距离向量协议的工作过程

在网络中,从一个站点到达另一个站点可能存在多条路由,如图1所示,从站点A到站点B就存在两条路由,距离向量路由算法的宗旨是根据相应的参数,计算各条路由的综合代价,然后根据计算出的代价选取最佳路由放到路由表中,通常代价越小,路径越优秀。在计算过程中,不同的距离向量协议采用不同的参数,常见的有如下几个:(1)跳数(2)带宽(3)延迟(4)负载(5)可靠性(6) MTU。在常见的几种动态路由协议中,RIP(路由信息协议)和IGRP(内部网关路由协议)都是距离向量路由协议,简称为DV(Distance Vector)协议,其中RIP协议是根据跳数来计算代价的;而IGRP是根据其余五个参数来计算的,计算出的代价是一个复合度量值。

img3

图1

在纯距离路由向量协议环境中,要求每个路由器周期性广播发送整个路由表给自己的邻居,收到路由表的邻居路由器,查看其中的每个路由表项,对自身的路由表做出相应的修改,并记下该路由的来源,即连接发送路由表的邻居的端口,在这个过程中,收到路由表的路由器完全相信自己的邻居,这个过程被称为“谣言规则”。我们以RIP协议为例,如图2中所示,每一个路由器中都含有一张路由表,记录着到各个网段的距离,其中直连网段的距离为0。在网络初始化的时候,每个路由器中只含有自己的直连网段,因为DV算法中每个路由器要发送自身全部的路由表给所有的邻居,所以,在初始化过程中,各个路由器都向周围发送自己的路由表,当路由器收到邻居发来的更新,首先将各个网段的代价加1,然后与自身的路由表相比较,如果更新中有比自己路由表代价小的路径,则更新自身的路由表。路由表项中除了记录目标网段和代价外,还记录了第一跳的出口,这也是路由器相信的端口,除非有更优秀的路由,在周期性的更新中,路由器会无条件相信这个端口的路由信息。通过从B中学到的消息,A学到了到达10.3.0.0和10.4.0.0两个未知网段的路由,并且通过累加来计算到未知网段距离值,例如:10.3.0.0是B的直连网段,距离为0,当A收到B的路由表时距离为1,同样,10.4.0.0的距离在A中应该是2。

当网络稳定以后,各个路由器都从邻居那儿学到了到达其他未知网段的路由,形成图3所示的路由表。

三、问题的提出

从DV协议的工作过程中看出,距离向量路由算法要求每一个路由器周期性向自己的邻居发送全部的路由表,所以,与链路状态协议相比,距离路由向量协议发送更新流量更多,只是不向所有的路由器发送,而只发送到自己的邻居而已,当网络规模变大后,DV协议的收敛将会变慢,并且在出现问题的时候处理方法不够灵活。如图4中所示:假设10.4.0.0网段出现问题,C探测到并停止向e0发送数据,而且将路由表中10.4.0.0对应的距离值改为down,然而因为周期性发送,A和B还没有收到通知,这时A和B仍然认为自己可以到达10.4.0.0,如果在C通知B之前, A和B先发送更新给C,由于B中现在的路由比C中的路由更好,所以C相信B,并将10.4.0.0 e00改为10.4.0.0s02,然后C再发送更新给B,因为B这条路由是从C学来的,所以B依然相信C将路由表更新为10.4.0.0e03。随着路由表周期性更新的继续,这种状况会不停地进行下去,造成路由环路,除非有外力,这种情况会造成路由表代价无限增大,形成计数到无穷,在传送数据的过程中会消耗掉路由器的大量带宽,是我们所不希望看到的。

img4

图2

img5

图3

四、解决问题的办法

根据提出的路由环路问题,究其原因主要有两条,一是“谣言规则”;二是路由更新的周期性发送,因为这两个原因,造成路由信息的不同步,从而形成路由环路。如果我们通过一定的手段,消除这两个不利的因素,问题也就迎刃而解。

综合了路由器的工作过程和造成问题的原因,在距离向量路由算法的使用过程中一般是通过如下手段消除路由环路问题的:

(1)水平分割:当从一个路由器学习到某条路由后,该路由不能再传向原路由器,即当路由器在传送路由表的时候不再是传送整个路由表,而是有选择的传送。

(2)路由毒化:一旦网络出现问题,便将代价置为无穷,即代价为16,则路由器再收到不正确路由更新时,不会随之改变。当然实际实现起来,路由毒化一般是与“水平分割”相结合的,称为“带逆向毒化的水平分割”,当网络出现问题时,如图4所示,当B收到10.4.0.0网段出问题的路由更新时,便逆向毒化C中关于10.4.0.0的路由代价为无穷,显然这样做违反了“水平分割”原则,但却是客观存在。

(3)抑制时钟:当一个路由器探测到一个网段不能访问,便将到达该网段的路由项改为“possibly down”,并启用一个时钟,在时钟超时之前,除非收到更好的路由,否则收到任何等值的或者更高代价的路由是不会采用的。

img6

图4

(4)触发更新:当路由器监测到问题时,立即通告周围路由器,该网段不可达,不必等待周期性更新,这样减少了网络的收敛时间。

当然,要解决路由环路的问题,还必须将这几个措施有机地结合起来,如图5所示A,B,D和E都能到达10.4.0.0,只要B监测到10.4.0.0失效,立刻删除对应的路由项,并触发更新到A和D,毒化10.4.0.0的路由项,即将代价置为16,D和A收到更新后,立刻启用时钟,标记对应路由为possibly down,D和A依次发送更新给E,E也启用时钟,A和D收到更新后逆向毒化B,E同样逆向毒化A和D。

img7

图5

经过上述的步骤,基本解决了路由环路的问题,减少了网络的收敛时间,提高了带宽的有效利用率。

〔作者单位:山东省广播电视局〕

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈