DJ4-5 路由算法:LS 和 DV

这篇具有很好参考价值的文章主要介绍了DJ4-5 路由算法:LS 和 DV。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、迪杰斯特拉算法

1. 术语定义

2. 算法描述

3. 举例说明

4. 构建从源节点到目的节点的路径

5. 构建最低费用路径树

6. 构建转发表

二、距离向量路由算法

1. 术语定义

2. 举例说明

3. 距离向量表

4. 更新距离向量表

5. 举例说明

三、距离向量路由算法 PLUS

1. 链路费用改变与链路故障

2. 毒性逆转

3. 毒性逆转的 BUG

四、LS 算法和 DV 算法比较

1. 消息复杂度

2. 收敛速度

3. 健壮性


一、迪杰斯特拉算法

迪杰斯特拉算法属于 LS 算法。

1. 术语定义

DJ4-5 路由算法:LS 和 DV

2. 算法描述

DJ4-5 路由算法:LS 和 DV

3. 举例说明

计算从 u 到所有可能目的节点的最低费用路径。

DJ4-5 路由算法:LS 和 DV

计算过程如表,表中的每一行表示一次迭代结束时的算法变量值。

DJ4-5 路由算法:LS 和 DV

- 代表无穷,/ 代表已经加入集合 N' 。

4. 构建从源节点到目的节点的路径

DJ4-5 路由算法:LS 和 DV

5. 构建最低费用路径树

最低费用路径树不同于最小生成树。最小生成树保证连接所有节点的路径权值之和最小,而最低费用路径树只是保证源节点到各目的节点的路径权值之和最小。因此,最小生成树不用指出一个源节点,而最低费用路径树必须指出一个源节点。源节点的不同,会导致最低费用路径树的不同。

根据目的节点找出顺序及其前驱节点,可以画出从源节点 u 到所有目的节点的最低费用路径树。

DJ4-5 路由算法:LS 和 DV

根据得到的最低费用路径树,可以生成源节点 u 的转发表。

6. 构建转发表

DJ4-5 路由算法:LS 和 DV

默认路由 * :用于表示所有具有相同下一跳的表项。即将下一跳相同的项合并为一项,用 * 表示目的节点。默认路由的优先级最低:转发分组时,只有找不到对应表项时,才使用默认路由。

二、距离向量路由算法

1. 术语定义

最低费用路径的费用表示

DJ4-5 路由算法:LS 和 DV

2. 举例说明

所有 d 值都是邻居节点告诉源节点的,源节点只知道它与邻居节点的直接链路的链路费用。

DJ4-5 路由算法:LS 和 DV

3. 距离向量表

DJ4-5 路由算法:LS 和 DV

初始时 x 并不知道 y 和 z 的距离向量,因此都设置为无穷。

DJ4-5 路由算法:LS 和 DV

4. 更新距离向量表

DJ4-5 路由算法:LS 和 DV

5. 举例说明

初始节点只知道自己到邻居节点的链路费用。

DJ4-5 路由算法:LS 和 DV

开始后,节点将自己的距离向量表发送给邻居,同时接收邻居的距离向量表。然后,根据邻居的距离向量表来更新自己的距离向量。

注意:c(x, z) 等数值来源于图,Dy 和 Dz 来源与邻居的距离向量表。此外,这一时刻的 Dx 由 BF 公式计算而得,跟上一时刻的 Dx 值无关(不需要和上一时刻的 Dx 值比大小)!因此,更新的 Dx 值可能更大也可能更小。

DJ4-5 路由算法:LS 和 DV

只要自己的距离向量更新了,就需要发送给自己的邻居节点,同时也要接收邻居节点发来的更新的距离向量。

DJ4-5 路由算法:LS 和 DV

第二次没有需要更新的距离向量,因此不会再发送给邻居节点,从而算法终止。

DJ4-5 路由算法:LS 和 DV

总结:

① 多次重复从邻居节点接收更新的距离向量,并重新计算距离向量,再向邻居节点发送更新的距离向量,一直持续到没有更新的距离向量发出为止。

② 算法进入暂时的静止状态,直到某个链路的费用发生改变为止。

③ 再次重复 ① 的操作。

三、距离向量路由算法 PLUS

1. 链路费用改变与链路故障

当一个节点检测到它与邻居节点之间的链路费用发生变化时,就用 BF 公式重新计算其距离向量。若距离向量发生变化,则通知其邻居节点。

(1)某链路费用减少时的情况

DJ4-5 路由算法:LS 和 DV

说明:节点之间链路费用减少的 好消息 在网络中能迅速传播。

(2)某链路费用增加时的情况

DJ4-5 路由算法:LS 和 DV

Q:为什么计算出来的新费用是错的?

A:由于链路费用改变,Dz(x) 已经不等于 5 了,但 y 还是使用了旧的 Dz(x) 。

DJ4-5 路由算法:LS 和 DV

产生选路回环:为到达 x, y 通过 z 选路,z 又通过 y 选路。即目的地为 x 的分组到达 y 或 z 后,将在这两个节点之间不停地来回反复,直到转发表发生新的改变为止。

DJ4-5 路由算法:LS 和 DV

说明:链路费用增加的 坏消息 传播得很慢!当链路费用增加的很大时,会出现 计数到无穷 问题。如链路费用 c(y,x) 变为 10000,c(z,x) 变为 9999 时。

2. 毒性逆转

解决 计数到无穷 的方法:毒性逆转。

毒性逆转:假如 z 为了实现最低路径费用而需要通过 y 去到达 x,则 z 告诉 y :它到 x 的距离是无穷大的,从而 y 将不会再经过 z 到 x 。

假设 y 计算出它到达 x 的最低费用路径为:y→z→...→x,而 z 计算出它到达 x 的最低费用路径为:z→y→...→x,则会产生选路循环。因此,如果 z 到 x 需要经过 y,则让 y 到 x 的时候一定不要经过 z,因为无论如何 y 经 z 到 x 的费用都会比 y 到 x 的大(因为 z 到 x 包含了 y 到 x)

DJ4-5 路由算法:LS 和 DV

y 内心 OS:还不如俺自己去找 x 。

DJ4-5 路由算法:LS 和 DV

前两步还是和之前一样的操作,不过引入毒性逆转后,x 或 y或 z 需要根据自己的下一跳来通知邻居节点其某个距离向量为无穷。

DJ4-5 路由算法:LS 和 DV

链路费用的改变打破了原本的安宁!

DJ4-5 路由算法:LS 和 DV

z 根据 y 更新的距离向量来更新自己的距离向量。

DJ4-5 路由算法:LS 和 DV

虽然 z 的距离向量改变了,但由于该路径还是会经过 y,对于 y 仍应该是无穷,因此不必再通知 y 了,从而又进入了暂时静止状态。

3. 毒性逆转的 BUG

Q:毒性逆转可以完全解决计数到无穷的问题吗?

A:不能。如果是三个以上节点的环路,则不能被毒性逆转技术检测到。

DJ4-5 路由算法:LS 和 DV

Dz(a) 的路径为:z→y→...→a,进一步这条路为:z→y→x→...→a,但是 z 只知道自己的下一跳是谁,而不知道自己的下一跳又去经过了 x,因此基于下一跳的毒性逆转策略失效了。

其它解决环路的方法:

  • 定义最大度量,以防止计数至无穷大
  • 抑制计时器
  • 水平分割
  • 路由毒化
  • 触发更新

四、LS 算法和 DV 算法比较

1. 消息复杂度

LS 算法:知道网络每条链路的费用,需发送 O(nE) 个报文;当一条链路的费用变化时,必须通知所有节点。

DV 算法:迭代时,仅在两个直接相连邻居之间交换报文;当链路费用改变时,只有该链路相连的节点的最低费用路径发生改变时,才传播已改变的链路费用。

 

 

2. 收敛速度

LS 算法:需要 O(nE) 个报文和 O(n2) 的搜寻,可能会振荡。

DV 算法:收敛较慢。可能会遇到选路回环,或计数到无穷的问题。

3. 健壮性

Q:当一台路由器发生故障、操作错误或受到破坏时,会发生什么情况?

LS 算法:路由器向其连接的一条链路广播不正确费用,路由计算基本独立(仅计算自己的转发表),有一定健壮性。

DV 算法:一个节点可向任意或所有目的节点发布其不正确的最低费用路径,一个节点的计算值会传递给它的邻居,并间接地传递给邻居的邻居。一个不正确的计算值会扩散到整个网络。文章来源地址https://www.toymoban.com/news/detail-428193.html

到了这里,关于DJ4-5 路由算法:LS 和 DV的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • DJ4-7 请求分页存储管理方式

    目录 4.7.1  请求分页中的硬件支持 1、页表机制 2、缺页中断机构 4.7.2  内存分配策略和分配算法 1、最小物理块数的确定 2、物理块的分配策略 3、物理块的分配算法 4.7.3  调页策略 1、系统应当在何时把一个页面装入内存? 2、从何处调入页面? 3、页面调入过程? 4.7.4  页面

    2024年02月07日
    浏览(38)
  • 《算法导论》学习(四)---- 矩阵乘法的Strassen(斯特拉森)算法

    矩阵乘法可以采用分治的策略。 这里提供了两个分治策略的解决 n ∗ n n*n n ∗ n 矩阵之间乘法的算法 但是着两个方法的缺点是只能是两个 n ∗ n n*n n ∗ n 矩阵的乘法,同时n必须为2的幂 之后也对这两个算法进行了时间复杂度上的分析 对于 n ∗ n n*n n ∗ n 矩阵A,B,C(n为2的

    2023年04月09日
    浏览(46)
  • 【数据结构】最短路径算法实现(Dijkstra(迪克斯特拉),FloydWarshall(弗洛伊德) )

    最短路径问题 :从在带权有向图G中的某一顶点出发,找出一条通往另一顶点的最短路径,最短也就是沿路径各边的权值总和达到最小。 单源最短路径问题:给定一个图G = ( V , E ) G=(V,E)G=(V,E),求源结点s ∈ V s∈Vs∈V到图 中每个结点v ∈ V v∈Vv∈V的最短路径 针对一个带权

    2024年02月04日
    浏览(50)
  • IO进程线程,文件与目录,实现linux任意目录下ls -la

    注意文件的名字、路径是如何输入的。 函数opendir打开目录,struct dirent,struct stat这些结构体的含义。          readdir()函数是一个用于读取目录内容的系统调用或库函数,在类Unix操作系统中(如Linux)广泛使用。它用于遍历目录,并逐个获取目录中的条目(文件和子目录

    2024年02月10日
    浏览(40)
  • linux系统报错:ls: 正在读取目录‘.‘: 输入/输出错误

    在linux系统的“/mnt”目录下挂载了一个硬盘,然后拷贝服务器上的数据到该硬盘,在拷贝数据过程中报错:“本地文件为只读文件,无法拷贝到所挂载的硬盘下面”。于是我打开挂载硬盘的所在目录查看目录是否存在,\\\"ls\\\"看了下文件,发现“ls”命令无法使用,报错“ls: 正在

    2024年02月12日
    浏览(45)
  • Linux_ls查看文件与目录的命令,参数大全

    1.ls        不加任何参数,表示查询当前目录下的文件/文件夹 2.ls        后面加上路径,表示查询该路径下的文件/文件夹 3.ls -a        -a参数,表示查询所有的文件/文件夹,也包括以.开头的隐藏文件  4. ls -l         -l参数,表示查询文件的详细信息 7.ls -l         后

    2024年02月09日
    浏览(44)
  • Linux下基本指令 -> ls指令 查看目录结构和文件信息

    ​  博主: 星尘不会落  博主主页:https://blog.csdn.net/zhanghgh  如果编写的博客中有任何错误,请指出,我会第一时间核实并更改。  该博客可能会随着博主的技术增进而改进。  Linux ls(英文全拼: list directory contents )命令用于显示指定工作目录下之内容(列出目前工作

    2024年02月07日
    浏览(49)
  • 【Shell 命令集合 磁盘管理 】Linux 列出目录中的文件和子目录 ls命令使用教程

    Shell 命令专栏:Linux Shell 命令全解析 ls命令是Linux系统中常用的一个命令,用于列出目录中的文件和子目录。它的作用是显示当前工作目录中的文件和目录列表。 当我们在终端输入ls命令时,系统会将当前目录中的文件和子目录的名称以及相关信息显示出来。这些信息包括文

    2024年02月08日
    浏览(109)
  • Linux ls命令教程:如何有效地列出文件和目录(附案例详解和注意事项)

    ls 是Linux中的基本命令之一,任何Linux用户都应该知道。 ls 命令列出文件系统中的文件和目录,并显示有关它们的详细信息。它是所有Linux发行版都安装的GNU核心实用程序包的一部分。 ls 命令在所有Linux发行版中都是可用的,包括但不限于Ubuntu, Debian, Fedora, CentOS等。如果你发现

    2024年02月04日
    浏览(53)
  • Linux 系统查看当前正在运行的某个进程的详细执行脚本和目录ls -l /proc/PID/cwd和 ls -l /proc/PID/exe

    首先使用 ps 命令查看当前正在运行的某个进程的 PID,例如: 这个命令会列出所有包含 your_process_name 信息的进程ID(也就是PID)和进程名称。你需要根据进程的名称来找到你想要查看的进程对应的PID。 然后进入 /proc 目录,你可以使用以下命令查看该 PID 对应的执行脚本: 其

    2024年02月11日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包