【计算机网络】网络层(一)几类路由算法介绍(非全部)

简介: 本文是个人学习计算机网络中网络层的几个路由算法的笔记。有最短路径、洪泛、距离矢量路由、链路状态路由。
注:本文首发于稀土掘金。该平台的作者 逐光而行 也是本人。

前置知识——有连接的服务和无连接的服务

无连接的服务

  • packet(包)被称为数据报(datagram),整个网络被称为数据报网络
  • 性质:无需事先确定路径

但是包在传输中途会动态选择路径,起作用的是一系列路由算法

有连接的服务

  • 整个网络被称为virtual-circuit network(虚电路网络)
  • 性质:需要事先确定一条路径

用到标签交换

有无连接服务的异同比较

(非完全照搬原书,只列举了我认为最重要的几点)

条目 数据报网络 虚电路网络
寻址 每一个包都包含完整的源和目的地址(因为要自力更生的嘛,重要信息不能丢) 每个包需包含简短的VC号
状态信息 对每个连接的每条虚电路,都需要用路由表保存信息
路由失效带来的影响 无,除非包自己丢失 所有会经过该路由的包都失效
服务质量 如果事先能保证分配足够的资源就容易
拥塞控制 同上

路由算法

评价路由算法的几大指标

  • 正确性(correctness)
  • 简单性 simplicity
  • 健壮性 robustness
  • 稳定性 stability
  • 公平性 fairness
  • 效率 efficiency

路由算法的两大分类

  • 非适应性算法(静态路由)
  • 适应性算法(动态路由)

在实际应用中是两种相结合的

(正所谓存在即合理。如果一方有压倒性优势,而另一方毫无用处可言,那后者不就早就消失了么,我们也不需要再学习了)

优化原则

在深入学习具体的路由算法之前,我们还需要知道一些理论基础及其指导。
比如:如果从I到K有条最优路径,而J在这条路上,那么J到K的最优路径也是这条。

再比如,有一个很重要的概念,叫 sink tree

(查了一下中译本,翻译为汇集树,我个人比较喜欢叫它下沉树)。

它是从所有源地到某个给定目的地的最佳路由的 集合 ,

目的地就是根结点,它没有圈,可以看做是从根向外发散出去的。

这些路由算法的目的也是为了找到这个汇集树。

最短路径算法(SPA)

这会用到Dijkstra提出的最短路径算法
image.png
以书中示例为例(考试中不需要画这么多图,只需要动态修改一个图就可以了)

假设要求从A到D的最短路径。从A出发,给每个途径的点都标注一个二元组信息。其中,数字表示从A到该点的最短路径,符号表示该点的上一跳(即,沿着目前最短的路径,是经过哪个点才来到这个点的)。

这样记录的好处就是,如果有多个入度指向当前点,每次只需要把二元组中的数值与最新的路径权重相加,一比较,就可以得知当前点的最短路径。依次这样不断推演和更新下去,直到到达目标点。

注意:如果有更小的路径,才更新,否则如果新的路径和原来的一样甚至更长,就忽略了。

弄好之后可以把这个图转化为 某个结点的 路由表
以A的路由表为例:

目标 下一跳 路径
A 0
B B 2
C B 9
D B 10

转化方法也很简单,只需要倒过来看。由于A到其本身设为无。比如A到10,就抄表格中D的二元组里的数据10,D的上一跳是H,H的上一跳是F,就顺藤摸瓜一直往上找,直到某个点的上一跳是A,也就是说这个点是A的下一跳。

以上思路用于示例中的简单图可能有点大材小用了,但是对于复杂的图确实会很有效。

洪泛算法 Flooding

  • 用途:如其名,用于分流。

一般不用于传用户数据,而是传一些系统信息,允许冗余(尤其是需要火速送达的,重复了没关系,送不到最致命,所以需要像泄洪一样一泻千里,争取覆盖)

几点注意事项:

  • 每个包的头部会有一个跳计数器,初值一般赋为路径长度(如果不知道路径长度,就考虑最坏的情况:整个网络的长度),传播途中该值会递减,减至0则包被丢弃。
  • 还是应尽量避免同一个包数据被多次以洪泛的形式传播。所以可以让源路由记录每个包的序列号,并且让之后的路由都维护一张列表,如果发现该序号已存在,说明它已经被传过了,就不需要再传。 不过为了防止这个列表无限大,还应该记录一个列表的项数k,表示直到k的所有项均已被观察过。因此只需要比较seq和k两个参数(而且k以前的数据也不需要记录)。

距离矢量路由(DVR)

  • 别名:distributed Bellman-Ford routing algorithm
  • 使用场景:是最早的阿帕网路由算法,也在RIP(routing information protocol)协议下用于互联网
  • 基本思想

当前结点探测相邻结点对目标结点的到达情况,再结合自身与相邻结点的距离,来对自身到目标结点的距离进行合理推断(简单理解就是将两段距离相加)

  • 特性

该算法算自己到自己的距离时会绕大圈,故路由表中的该项需手动修正。

以下以中译本电子书中提到的例子为例,介绍是如何通过该算法得出新路由表的:

image.png

image.png

将上图2的表倒过来画,更直观

J

To A B C D E F G H I J K L
A 0 12 25 4 14 23 18 17 21 9 24 29
(delay is) 8 8 20 33 48 22 31 26 25 29 17 32 37
I 24 36 18 27 7 20 31 20 0 11 22 33
(delay is)10 34 46 28 37 17 30 41 30 10 21 32 43
H 20 31 19 8 30 19 6 0 14 7 22 9
(delay is) 12 32 43 31 20 42 31 18 12 26 19 34 21
K 21 28 36 24 22 40 31 19 22 10 0 9
(delay is)6 27 34 42 30 28 46 37 25 28 16 6 15

最后注意:从J到J的结果要进行修正,为0

将以上结果整理即可得出上图2所示的路由表。

无限计算问题

  • 特点:好消息传播得非常快,对坏消息反应迟钝
  • 原因:路由收敛速度慢
  • 核心问题:当X告诉Y附近有一条路径时,Y不知道自己是否已在这条路径上(当网络出现故障时,不断地获取并递增更新自己告诉邻居的值,最终导致值无限增大)

(注:小蓝书中提到后继很多想解决这个问题的算法都是有名无实。不过这本书写成于10年,这十几年间也许已有了重大突破,所以我在网上找到了一篇论文,粗略看了一下,还挺有道理的)
链接如下:
An Effective Solution to Count-to-Infinity Problem for both Complex and Linear Sub-Networks

链路状态路由(LSR)(综合了前面几个)

取代了距离矢量路由算法,也是当今最广泛使用的算法

以下是算法步骤:(可以简单理解为不断和周围交换信息)

认识邻居,了解环境

在每一个端到端的线上发送一个特殊的HEELO包,如果邻居不回复,说明已挂或不存在;否则就是还活着,对方会回应自己的 名字 。这个名字是作为一个唯一标识,不能重复。

对每一个邻居设置距离或成本开销度量

成本开销可默认为网络运营商提供的值。一般都与链路带宽呈负相关。这样会使得路由倾向于选择高容量的路径。

建立链路状态包

里面携带了自己获取的关于周围环境的所有信息,便于之后和邻居交换信息。
示例如下:

image.png

接下来的内容也会细细解释一下为什么需要这几部分。

分发链路状态包

这里用了洪泛算法去分发消息。

有几个问题:

  • 为了保持洪泛在可控范围内,需要一个seq。
Q:如果seq重复了怎么办呢?

A: 将seq设为32位的,产生一个重复的值需要137年

  • 如果某个路由坏了,seq值丢失,或者seq的值被改了,那之后的包后继路由就不认了怎么办?

A:这就是需要age的原因。

age的设置是这样的:

  • 每过去一秒递减1
  • 在洪泛期间每经过一个路由减1。

当该值减为0时,相关信息会被丢弃。


- 使得算法更健壮的改进方法,如图所示: ![image.png](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d95905bbe45e485b9d0eebb5ff52ad3a~tplv-k3u1fbpfcp-watermark.image?) 当一些包到达路由,在进行洪泛前, 两个**从同一个源头来的**相继的包会被比较。 - 如果它们的seq完全一样,就扔掉其中一个 - 如果它们的seq不一样,就扔掉旧的(先来的那个) ### 计算到其他路由的最短路径 用最短路径算法。
总的来说,链路状态路由算法被广泛应用。比如IS-IS链路状态协议和OSPF协议都有它的身影。 (注:IS-IS:intermediate system-intermediate system OSPF:open shortest path first 这两个协议几乎相同,不同点在于前者可以同时携带多个网络层协议的信息,而后者不能 )
相关文章
|
1月前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
眼疾识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了4种常见的眼疾图像数据集(白内障、糖尿病性视网膜病变、青光眼和正常眼睛) 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,实现用户上传一张眼疾图片识别其名称。
129 5
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
|
11天前
|
算法 安全 大数据
【算法合规新时代】企业如何把握“清朗·网络平台算法典型问题治理”专项行动?
在数字化时代,算法推动社会发展,但也带来了信息茧房、大数据杀熟等问题。中央网信办发布《关于开展“清朗·网络平台算法典型问题治理”专项行动的通知》,针对六大算法问题进行整治,明确企业需落实算法安全主体责任,建立健全审核与管理制度,并对算法进行全面审查和备案。企业应积极自查自纠,确保算法合规透明,防范风险,迎接新机遇。
|
2天前
|
传感器 算法 物联网
基于粒子群算法的网络最优节点部署优化matlab仿真
本项目基于粒子群优化(PSO)算法,实现WSN网络节点的最优部署,以最大化节点覆盖范围。使用MATLAB2022A进行开发与测试,展示了优化后的节点分布及其覆盖范围。核心代码通过定义目标函数和约束条件,利用PSO算法迭代搜索最佳节点位置,并绘制优化结果图。PSO算法灵感源于鸟群觅食行为,适用于连续和离散空间的优化问题,在通信网络、物联网等领域有广泛应用。该算法通过模拟粒子群体智慧,高效逼近最优解,提升网络性能。
|
2天前
|
机器学习/深度学习 数据采集 算法
基于GWO灰狼优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目基于MATLAB2022a,展示了时间序列预测算法的运行效果(无水印)。核心程序包含详细中文注释和操作视频。算法采用CNN-GRU-SAM网络,结合灰狼优化(GWO),通过卷积层提取局部特征、GRU处理长期依赖、自注意力机制捕捉全局特征,最终实现复杂非线性时间序列的高效预测。
|
1月前
|
机器学习/深度学习 数据采集 算法
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目基于MATLAB2022a实现时间序列预测,采用CNN-GRU-SAM网络结构。卷积层提取局部特征,GRU层处理长期依赖,自注意力机制捕捉全局特征。完整代码含中文注释和操作视频,运行效果无水印展示。算法通过数据归一化、种群初始化、适应度计算、个体更新等步骤优化网络参数,最终输出预测结果。适用于金融市场、气象预报等领域。
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
|
1月前
|
机器学习/深度学习 算法 PyTorch
深度强化学习中SAC算法:数学原理、网络架构及其PyTorch实现
软演员-评论家算法(Soft Actor-Critic, SAC)是深度强化学习领域的重要进展,基于最大熵框架优化策略,在探索与利用之间实现动态平衡。SAC通过双Q网络设计和自适应温度参数,提升了训练稳定性和样本效率。本文详细解析了SAC的数学原理、网络架构及PyTorch实现,涵盖演员网络的动作采样与对数概率计算、评论家网络的Q值估计及其损失函数,并介绍了完整的SAC智能体实现流程。SAC在连续动作空间中表现出色,具有高样本效率和稳定的训练过程,适合实际应用场景。
208 7
深度强化学习中SAC算法:数学原理、网络架构及其PyTorch实现
|
1月前
|
存储 监控 算法
局域网网络管控里 Node.js 红黑树算法的绝妙运用
在数字化办公中,局域网网络管控至关重要。红黑树作为一种自平衡二叉搜索树,凭借其高效的数据管理和平衡机制,在局域网设备状态管理中大放异彩。通过Node.js实现红黑树算法,可快速插入、查找和更新设备信息(如IP地址、带宽等),确保网络管理员实时监控和优化网络资源,提升局域网的稳定性和安全性。未来,随着技术融合,红黑树将在网络管控中持续进化,助力构建高效、安全的局域网络生态。
50 9
|
1月前
|
传感器 算法
基于GA遗传优化的WSN网络最优节点部署算法matlab仿真
本项目基于遗传算法(GA)优化无线传感器网络(WSN)的节点部署,旨在通过最少的节点数量实现最大覆盖。使用MATLAB2022A进行仿真,展示了不同初始节点数量(15、25、40)下的优化结果。核心程序实现了最佳解获取、节点部署绘制及适应度变化曲线展示。遗传算法通过初始化、选择、交叉和变异步骤,逐步优化节点位置配置,最终达到最优覆盖率。
|
3月前
|
安全 搜索推荐 网络安全
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
94 11
|
3月前
|
存储 缓存 网络协议
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点、状态码、报文格式,GET、POST的区别,DNS的解析过程、数字证书、Cookie与Session,对称加密和非对称加密