距离向量路由算法

一、距离向量路由算法特点

距离向量路由算法是一种迭代的、异步的和分布式的算法。
(1)分布式:每个节点都从其直接相连邻居接受信息,进行计算,再将计算结果分发给邻居。
(2)迭代:计算过程一直持续到邻居之间无更多信息交换为止。
(3)异步:不要求所有节点相同之间步伐一致地操作。
(4)自我终结:算法能自行停止。
最低费用表示:
d x _x x(y)=min v _v v{c(x,v)+d v _v v(y)}。
d x _x x(y):节点x到节点y地最低费用路径的费用;
v:节点x的邻居节点;
c(x,v)+d v _v v(y):x与某个邻居v之间的直接链路费用c(x,v)加上邻居v到y的最小费用,即x经v到节点y的最小路径费用。
在这里插入图片描述
我们来计算一下源节点u到目的节点z的最低费用路径。
源节点u有3个邻居:
邻居v:d v _v v(z)=5,c(u,v)=2;
邻居w:d w _w w(z)=3,c(u,w)=5;
邻居x:d x _x x(z)=3,c(u,x)=1;
则从u节点到z节点的最低费用路径的费用为:
B-F公式:
d u _u u(z)=min{d v _v v(z)+c(u,v),d w _w w(z)+c(u,w),d x _x x(z)+c(u,x)}=min{5+2,5+3,3+1}=4
即源节点u经相邻节点x到目的节点z的路径费用最低为4。

二、算法过程

对每个节点x
(1)在每个节点建立自己的距离向量表并初始化。
(2)在每个节点将自己维护的距离向量表向其邻居节点转发。
(3)每个节点收到邻居节点发送的距离向量表以后基于新的信息采用方程来更新自己的距离向量表。
(4)当自己的距离向量表发生变化时,将新的距离向量表发送给自己的邻居节点,如果与以前的向量表相同则不向其邻居节点转发,直到每个节点的距离向量表达到稳定为止。
在这里插入图片描述
假设图中只有3个节点,3个节点两两相连,因此可在每个节点建立自己的距离向量表。
在这里插入图片描述
上图为x节点的选路表。
节点x选路表中:
行:该节点的距离向量Dx和其邻居的距离向量Dv;
列:所有目的节点。
在初始化时由于每个节点只知道本路由器相连的链路费用,因此只有到相邻节点的最低路径费用有值,为对应的链路费用值。如下图
在这里插入图片描述
当每个节点完成自己的距离向量表后,会不断的向自己的邻居节点发送这个距离向量表。
每个节点收到邻居新的距离向量表后,会使用B-F公式更新自己的距离向量。若距离向量发生变化将新的距离向量通知给邻居。
当距离向量不在变化,则算法终止。
在这里插入图片描述
x、y、z三个节点向其邻居发送了自己的向量表之后,x节点收到了来自y节点和z节点的距离向量分别是201和710。分别将这两个向量放在第二行和第三行的第一列中。然后利用收到的新的信息来更新自己的距离向量。首先更新x节点到y节点的最低路径费用。根据B-F方程可是x节点到y节点最低路径费用为2,因此保持不变二x节点到z节点的最低路径费用可进一步减小为3即x节点先到y节点再到z节点。经过上述修改后x的向量表如第一行第二列所示。x节点新的距离向量与以前的发生了变化,因此x节点会将新的距离向量向其邻居节点y和z发送。依次类推,每个节点都不断更新自己的距离向量,直到不在发送变化为止。例如第二行第二列这里的y节点重新计算距离向量后发现这里的距离向量没有发生变化仍然是201,因此不再向其邻居节点发送。
我们观察到多次从邻居接受更新距离向量、重新计算选路表项、并向邻居发送更新通知的过程,一直持续到没有更新报文发出为止;算法进入静止状态,直到某个链路费用发生改变为止。

三、链路改变与链路故障

当一个节点检测到从它到邻居的链路费用发生变化时,就更新其距离变量,如果最低费用路径的费用发生变化,通知其邻居。
(1)某条链路费用减少时
在这里插入图片描述
如图所示,当y到x的链路费用从4变为1的情况。
t0时刻:y检测到x的链路费用从4变为1,更新其距离变量,并通知其邻居z。
t1时刻:在t1时刻,z收到来自y的更新报文,并更新自己的距离表,此时到节点x的最低费用减为2,并通知其邻居y。
t2时刻:在t2时刻y收到来自z的更新报文,并更新自己的距离表,此时到节点x的最低费用不变仍为1,不发送更新报文,算法静止。
因此当x与y之间费用减少,算法只需两次迭代到达静止状态。
(2)某链路费用增加时
在这里插入图片描述

如图所示,假设x与y之间的链路费用从4增加到60。
链路费用变化前:
Dy(x)=4,Dy(z)=1,Dz(y)=1,Dz(x)=5
t0时刻:在t0时刻,y检测到链路费用从4变为60。更新到x的最低路径费用
d y _y y(x)=min{d x _x x(x)+c(y,x),d z _z z(x)+c(y,z)}=min{0+60,1+5}=6
经节点z到x费用最低,此新费用错误,发给节点z。
t1时刻;t1时刻z收到新费用,更新其到x的最低路径费用
d z _z z(x)=min{d x _x x(x)+c(y,z),d y _y y(x)+c(z,y)}=min{0+50,1+6}=7
经节点y到x费用最低,发给节点y。
t2时刻:y收到新费用,更新到x的最低路径费用
d y _y y(x)=min{d x _x x(x)+c(y,x),d z _z z(x)+c(y,z)}=min{0+60,1+7}=8
经节点z到x费用最低,发给节点z。
以此节点y或节点z的最低费用不断更新。
这里就产生了选路循环:为到达x,y通过z选路,z又通过y选路。即目的地为x的分组到达y或z后,将在这两个节点之间不停地来回反复,直到转发表发送改变为止。
上述循环将持续44次迭代,直到z最终算出它经由y地路径费用大于50为止。并确定z到x地最低费用路径是zx,y到x地最低费用路径是yzx。
通过上述两个变化我们可知链路费用减少地好消息传播的快,而链路费用增加的坏消息传播很慢。甚至当链路费用增加很大时会出现“计数到无穷”问题。

四、链路状态路由算法和向量路由算法对比

(1)消息复杂度
链路状态路由算法(LS):需要知道每条链路的费用,需发送O(nE)个报文;当一条链路的费用发生变化时,必须通知所有节点。
距离向量路由算法(DV):迭代时,仅在两个直接相连邻居之间交换报文;当链路费用改变时,只有该链路相连的节点的最低费用路径发生改变时,才传播已经、改变的链路费用。
(2)收敛速度
LS:需要O(nE)个报文和O(n 2 ^2 2)的搜寻。
DV:收敛较慢。可能会遇到选路回环,或计数到无穷的问题。
(3)健壮性:当一台路由器发生故障、操作错误或受到破坏时
LS:路由器向其连接的一条链路广播不正确费用,路由计算基本独立(仅计算自己的转发表),有一定健壮性。
DV:一个节点可向任意或所有目的节点发布其不正确的最低费用路径,一个节点的计算值会传递给它的邻居,并间接地传递给邻居的邻居。

距离向量路由算法是一种基于距离信息的路由算法,它将网络中的每个节点视为一个独立的实体,通过交换路由表中的距离向量信息来确定最佳路径。该算法具有以下优点和缺点: 优点: 1. 简单易实现:距离向量路由算法的实现相对简单,只需要节点之间周期性地交换距离向量即可。 2. 分布式计算:每个节点只需了解与其直接相连的邻居节点的距离信息,从而可以进行分布式计算,减少了对整个网络状态的全局感知需求。 3. 容错性强:算法具有自适应性,当网络发生变化时,节点可以通过交换距离向量来适应新的拓扑结构,并选择新的最佳路径。 缺点: 1. 收敛速度慢:由于节点之间只交换局部信息,导致距离向量算法的收敛速度相对较慢。在网络发生变化时,可能需要较长的时间才能达到稳定状态。 2. 计算开销大:距离向量算法需要节点周期性地交换距离向量信息,这会导致较大的计算和带宽开销。特别是在大型网络中,这种开销会更加显著。 3. 发散问题:当网络中存在环路时,距离向量算法可能会出现发散问题,即节点之间的距离向量信息会无限增长,导致算法无法收敛。 需要注意的是,距离向量路由算法已经逐渐被更为高效的路由算法(如链路状态路由算法)所取代。它仍然被用于一些小型或简单的网络环境中。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值