距离向量路由算法

您所在的位置:网站首页 rip路由表计算 距离向量路由算法

距离向量路由算法

2023-07-20 12:20| 来源: 网络整理| 查看: 265

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

距离向量路由算法是一种迭代的、异步的和分布式的算法。 (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:一个节点可向任意或所有目的节点发布其不正确的最低费用路径,一个节点的计算值会传递给它的邻居,并间接地传递给邻居的邻居。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3