距离向量路由算法

article/2025/10/2 23:02:03

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

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


http://chatgpt.dhexx.cn/article/H9SV0ZFX.shtml

相关文章

分簇路由算法 LEACH算法

1.1 什么是分簇路由算法 在无线传感器网络路由算法中,分簇路由算法具有能量消耗低、稳定性高和扩展性好等优点。分簇路由算法中分簇就是分组,即按照特定的应用要求将网络中的所有节点分成不同的小组,每个小组就是一个簇。每个簇由一个簇头和多…

路由选择算法

网络层的主要功能是将分组从源端机器经选定的路由送到目的端机器。在大多数子网中,分组的整个旅途需经过多次转发。无线广播网络是惟一明显的例外。但即使在这里,如果源端和目的端在同一网络中,仍然有路由选择的问题:路由选择算法…

路由算法入门

路由算法是提高路由协议功能,尽量减少路由时所带来开销的算法。 路由器使用路由算法来找到到达目的地的最佳链路。 网络可以抽象成图来理解 路由算法分类: 静态路由是指由用户或网络管理员手工配置的路由信息。 动态路由是指路由器能够自动地…

路由算法(全网最细)

正文开始 文章目录 正文开始[toc]1.路由算法综述2.静态路由算法3.距离-向量路由算法(RIP)4.链路状态路由算法(OSPF)5.层次路由 1.路由算法综述 路由器转发分组是通过路由表转发的,而路由表是通过各种算法得到的。主机通常直接与一台路由器相…

计算机网络基础——路由算法

路由控制有各种各样的算法,其中最具代表性的有两种,是距离向量算法(Distance-Vector)和链路状态算法(Link-State) 一、距离向量算法 距离向量算法是根据距离(代价)和方向决定目标网…

计算机网络(十三)——路由算法

文章目录 1. 概述2. 路由选择算法2.1 链路状态路由选择算法(LS)2.2 距离向量路由选择算法(DV)2.3 DV和LS算法的对比 网络层由数据平台和控制平台两个部分组成。接下来我们将对控制平台进行讨论。 1. 概述 重点 转发表和流表是如…

计算机网络——网络层学习笔记(中):路由算法

路由选择算法 1、路由算法概述 路由算法(协议)确定去往目的网络的最佳路径 转发表确定在本路由器如何转发分组。 网络抽象:图 图:G(N,E) N路由器集合,E链路集合 关键问题:源到目的的最小费用路径是什…

路由算法(Dijkstra, Bellman-Ford算法)

文章目录 前言一、路由算法引入二、静态路由三、动态路由1.链路状态(LS)路由算法2.距离向量(DV)路由算法 总结 前言 提示:以下是本篇文章正文内容 一、路由算法引入 路由器的功能: 路由算法(协议)确定去往目的网络的最佳路径,转发表确定在本…

前置路由守卫和后置路由守卫

路由跳转之前, 会触发的一个函数 叫前置路由守卫 语法:router.beforeEach((to, from, next) > {这里可以写路径的跳转判断/有无token值的情况分析}) 作用 : 防止别人猜到网址的hash值后直接跳过登录就可以查看数据 里面的3个参数: to : 到哪里去 …

华为路由器的递归路由、迭代路由

一、什么是路由递归? 路由必须有直连的下一跳才能够指导转发,但是路由生成时下一跳可能不是直连的,因此需要计算出一个直连的下一跳和对应的出接口,这个过程就叫做路由递归。路由递归也被称为路由迭代。 【AR1】ip route-static …

什么是动态路由如何使用动态路由

文章目录 什么是动态路由和概述动态路由特点动态路由如何实现动态路由协议选择依据:度量值收敛动态路由协议分类什么是RIPRIP的基本概念路由表的形成RIP的度量值与更新时间RIP协议防环机制RIP路由协议版本区别RIP配置命令 什么是动态路由和概述 动态路由是与静态路…

路由策略概述

文章目录 1.Route-Policy2.Route-Policy的基本概念3.基础配置3.1创建一个Route-Policy节点3.2(可选)配置if-match语句3.3(可选)配置apply语句 4.Filter-Policy5.IP前缀列表 路由策略(Routing Policy)是一套用于对路由信息进行过滤、属性设置等操作的方,法,通过对路由的控制,可以…

1.路由迭代

** 路由迭代 ** 原因: 路由必须有直连的下一跳才能指导转发 在下一跳不是直连邻居的时候 就需要计算出直连邻居的下一跳 图例: 如图 R1想去往R3的192.168.2.0网段 中间要经过非直连的R2 静态路由该怎么写? 简单的想 两条静态 不就够了么 R…

路由守卫的详解

路由守卫总共有7个 全局路由守卫: beforeEach 前置守卫 affterEach 后置守卫 beforeResolve 解析守卫 路由的守卫 beforeRouterEnter 进入组件之前触发,在Created前面 beforeRouterUpdated 路由更新但是内容不会改变 beforeRouterLeave 离开之前触发,在beforeDestory之前…

路由选择算法总结

文章目录 一、路由算法1.静态路由与动态路由①静态路由算法(非自适应路由算法)②动态路由算法(自适应路由算法) 2.链路状态(LS)算法3.距离向量(DV)算法 二、层次路由与自治系统层次路由方法自治系统(Autono…

什么是浮动路由及作用

目录 一、浮动路由介绍 二、配置步骤及命令 一、浮动路由介绍 浮动路由指的是配置两条静态路由,默认选取链路质量优(带宽大的)作为主路径,当主路径出现故障时,由带宽较小的备份路径顶替主路径。 作用:保持…

路由基本概念(路由优先级、路由表、路由转发)

目录 路由基本概念 什么是路由 实现路由的设备 实现路由的依据 路由表包含内容(华为设备) 路由信息(路由表)的来源 路由进表的规则 路由报文转发机制 路由转发流程 路由高级特性 路由递归 等价路由(负载分…

vue 路由懒加载

1. 路由懒加载如何实现 当打包构建应用时,JavaScript 包会变得非常大,影响页面加载。如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就会更加高效 当前,我们使用如下…

路由引入基本概念

目录 路由引入概念 基本概念 路由引入的初始度量值 路由引入概念加深 路由引入的方式 路由引入场景 单点单向引入场景 双点单向引入 单点双向引入 双点双向引入 路由引入概念 基本概念 路由引入(import注入、redistribute重发布) 为什么需要路…

Vue路由详解

目标 1.能够说出什么是路由 2.能够说出前端路由的实现原理 3.能够使用Vue-Router实现前端路由 4.能够实现嵌套路由,动态路由 5.能够实现命名路由以及编程式导航 6.理解并实现后台管理案例 1.路由的概念 路由的本质就是一种对应关系,比如说我们在url地…