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

article/2025/10/3 0:22:47

文章目录

  • 前言
  • 一、路由算法引入
  • 二、静态路由
  • 三、动态路由
    • 1.链路状态(LS)路由算法
    • 2.距离向量(DV)路由算法
  • 总结


前言


提示:以下是本篇文章正文内容

一、路由算法引入

路由器的功能:
在这里插入图片描述
路由算法(协议)确定去往目的网络的最佳路径,转发表确定在本路由器如何转发分组

将实际中的路由器之间的关系抽象成图
在这里插入图片描述

图: G = (N, E)

N = 路由器集合= { u, v, w, x, y, z }

E = 链路集合 ={ (u,v), (u,x), (v,x), (v,w), (x,w), (x,y), (w,y), (w,z), (y,z) }

费用(Costs):链路的费用,C(u,v) = 2

路由算法: 寻找源到目的最小费用路径的算法

路由器分组转发是通过路由表转发的,而路由表是通过各种算法得到的,从能否随网络的通信量或拓扑自适应地进行调整变化来划分,路由算法可分为两大类:静态路由与动态路由

二、静态路由

静态路由:需要手工配置,路由更新慢,优先级高,不适用于大型网络

三、动态路由

路由器间彼此交换信息,按照路由算法优化出路由表项

动态路由算法分为全局信息和分散信息

全局信息所有路由器掌握完整的网络拓扑和链路费用信息,链路状态(LS)路由算法

分散(decentralized)信息:路由器只掌握物理相连的邻居以及链路费邻居间信息交换、运算的迭代过程,距离向量(DV)路由算法

1.链路状态(LS)路由算法

Dijkstra 算法:所有结点(路由器)掌握网络拓扑和链路费用,通过“链路状态广播”使所有结点拥有相同信息,计算从一个结点(“源” )到达所有其他结点的最短路径获得该结点的转发表,k次迭代后,得到到达k个目的结点的最短路径

符号标记:
(1)c(x,y): 结点x到结点y链路费用;如果x和y不直接相连,则=∞

(2)D(v): 从源到目的v的当前路径费用值

(3)p(v): 沿从源到v的当前路径, v的前序结点

(4)N’: 已经找到最小费用路径的结点集合

算法描述:

1 初始化:
2 N’ = {u}
3 for 所有结点v
4 if v毗邻u
5 then D(v) = c(u,v)
6 else D(v) = ∞
7
8 Loop
9 找出不在 N’中的w ,满足D(w)最小
10 将w加入N’
11 更新w的所有不在N’中的邻居v的D(v) :
12 D(v) = min( D(v), D(w) + c(w,v) )
13 /*到达v的新费用或者是原先到达v的费用,或者是
14 已知的到达w的最短路径费用加上w到v的费用 */
15 until 所有结点在N’中 (loop 8)

示例一:
在这里插入图片描述

在这里插入图片描述
找出到目的地址的路径,求出最短路径即可

示例二:
在这里插入图片描述
在这里插入图片描述
u的最终最短路径树:
在这里插入图片描述

u的最终转发表:

目的链路
v(u,v)
x(u,x)
y(u,x)
w(u,x)
z(u,x)

算法分析:假设有n个结点
1.每次迭代: 需要检测所有不在集合N’中的结点w
2.n(n+1)/2次比较: O(n2)
3.更高效的实现: O(nlogn)
存在震荡(oscillations)可能

2.距离向量(DV)路由算法

Bellman-Ford方程(动态规划):

假设,dx(y):=从x到y最短路径的费用(距离)
则有:
在这里插入图片描述
核心思想:每个结点不定时地将其自身的DV估计发送给其邻居,当x接收到邻居的新的DV估计时, 即依据B-F更新其自身的距离向量估计:Dx(y) ← minv{c(x,v) + Dv(y)} for each node y ∊ N,Dx(y)将最终收敛于实际的最小费用 dx(y),结点获得最短路径的下一跳, 该信息用于转发表中

在这里插入图片描述
每个结点的作用:
x维护距离向量(DV): Dx = [Dx(y): y є N ]
结点x:已知到达每个邻居的费用: c(x,v),维护其所有邻居的距离向量: Dv = [Dv(y): y є N ]

根据B-F方程:
du(z) = min { c(u,v) + dv(z), c(u,x) + dx(z), c(u,w) + dw(z) }
= min {2 + 5,1 + 3,5 + 3}
= 4
最短路径由该结点的到邻居的最小费用再加上邻居的最短距离向量

特点:
(1)异步迭代: 引发每次局部迭代的因素:局部链路费用改变 和 来自邻居的DV更新

(2)分布式: 每个结点只当DV变化时才通告给邻居,邻居在必要时(其DV更新后发生改变)再通告它们的邻居

每个结点必做的工作
在这里插入图片描述

链路费用变化:
结点检测本地链路费用变化,更新路由信息,重新计算距离向量,如果DV改变,通告所有邻居

(1)当路径费用减小
在这里插入图片描述
更新过程:
t0 : y检测到链路费用改变 ,更新DV,通告其邻居

t1 : z收到y的DV更新,更新其距离向量表,计算到达x的最新最小费用,更新其DV,并发送给其所有邻居

t2 : y收到z的DV更新, 更新其距离向量表,重新计算y的DV,
未发生改变,不再向z发送DV.

路径费用减小传播速度较快

(2)当路径费用增加
在这里插入图片描述
会产生无穷计数问题,传播速度慢

跟新过程:
在这里插入图片描述

解决办法:

1.毒性逆转(poisoned reverse): 如果一个结点(Z)到达某目的(X)的最小费用路径是通过某个邻居(Y),则:通告给该邻居结点到达该目的的距离为无穷大
在这里插入图片描述

2.定义最大度量(maximum metric): 定义一个最大的有效费用值,如15跳步, 16跳步表示∞

在这里插入图片描述

总结

提示:这里对文章进行总结:


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

相关文章

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

路由跳转之前, 会触发的一个函数 叫前置路由守卫 语法: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地…

路由协议是什么?路由协议在网络中有哪些作用

目录 前言 干货来啦~ 说点想说的 前言 "薄荷,我今天在做一个实验,感觉好复杂啊!而且这里面好多路由协议,我都不知道我的实验对不对呢!"小曼又可怜巴巴地找到我 “你做的是什么实验啊!” “…

【路由】静态路由

静态路由 1、静态路由的概念1.1、概念1.2、注意事项1.3、弊端 2、静态路由的配置须知2.1、出接口为BMA类型2.2、出接口为P2P类型2.3、出接口为NBMA类型 3、默认路由3.1、概念3.2、实验场景3.3、适用场景3.4、注意事项 4、浮动静态路由4.1、静态路由负载均衡的实验场景4.2、静态…

什么是前端路由?

什么是路由? 路由这个概念最先是后端出现的。在以前用模板引擎开发页面时,经常会 看到这样: http://hometown.xxx.edu.cn/bbs/forum.php 有时还会有带.asp或.html的路径,这就是所谓的SSR(Server Side Render), 通…

路由是什么

中秋节公司放假3天,第一天去公司加班,第二天宅了一天,今天第三天,也是中秋节,还是继续宅着… 言归正传,本文站在初学者的角度,尽量通俗的讲解什么是路由,它有什么作用。 如下网络拓…

什么是路由策略?路由策略和策略路由有什么区别? 如何配置路由策略?

对于IP网络工程师来说,路由策略的部署随处可见,无论在运营商IP网络还是在企业网中,路由策略的应用都是非常普遍的。同时,在网络规划中,路由策略的规划也是一个核心的内容。为了方便大家更好的掌握和应用路由策略&#…

什么是路由选择?

路由选择包括两类:①静态路由选择 ②动态路由选择 # 因特网所采用的路由选择协议的主要特点 自适应:动态路由选择,能较好地适应网络状态的变化。 分布式:因特网中的各路由器通过相互间的信息交互,共同完成路由信息的…

路由的基本概念

一、什么是路由 1、路由器的作用:网络中的路由器负责为数据包选择转发路径。 2、路由表:每个路由器中有一个路由表,路由表则是若干条路由信息的一个集合。 3、路由条目的各个字段进行解释: ①Destination/Mask :表示目标IP地…

什么是路由?

介绍 路由是指路由器从一个接口上收到数据包,根据数据包的目的地址进行定向并转发到另一个接口的过程。路由发生在OSI网络参考模型中的第三层即网络层。 路由引导分组转送,经过一些中间的节点后,到它们最后的目的地。作成硬件的话&#xff…