计算机网络(自顶向下)学习笔记——路由选择算法

简介: 本章学习路由选择算法,有部分内容未进行笔记的记录,想要了解的小伙伴可以查阅《计算机网络—自顶向下方法》这本书

第五章—路由选择算法

5.1、路由的概念

路由:按照某种指标(传输延迟,所经过的站点数目等)找到一条 从源节点到目标节点的较好路径

  • 较好路径: 按照某种指标较小的路径
  • 指标:站数, 延迟,费用,队列长度等, 或者是一些单纯指标的加权平均
  • 采用什么样的指标,表示网络使用者希望网络在什么方面表现突出,什 么指标网络使用者比较重视

以网络为单位进行路由(路由信息通告+路由计算)

  • 网络为单位进行路由,路由信息传输、计算和匹配的代价低
  • 前提条件是:一个网络所有节点地址前缀相同,且物理上聚集
  • 路由就是:计算网络 到其他网络如何走的问题

路由的原则

  • 路由选择算法的原则

    • 正确性(correctness):算法必须是正确的和完整的,使分 组一站一站接力,正确发向目标站;完整:目标所有的 站地址,在路由表中都能找到相应的表项;没有处理不 了的目标站地址;
    • 简单性(simplicity):算法在计算机上应简单:最优但复杂 的算法,时间上延迟很大,不实用,不应为了获取路由 信息增加很多的通信量;
    • 健壮性(robustness):算法应能适应通信量和网络拓扑的 变化:通信量变化,网络拓扑的变化算法能很快适应; 不向很拥挤的链路发数据,不向断了的链路发送数据;
    • 稳定性(stability):产生的路由不应该摇摆
    • 公平性(fairness):对每一个站点都公平
    • 最优性(optimality):某一个指标的最优,时间上,费用 上,等指标,或综合指标;实际上,获取最优的结果代 价较高,可以是次优的

对路由选择算法的一种广义分类方式是根据 该算法是全局式的还是分散式的来加以区分:

  • 全局式路由选择算法:具有全局状态信息的算法常被称作 链路状态算法(Link State,LS)
  • 分散式路由选择算法:以迭代、分布式的方式计算出最低费用路径。距离向量(Distance-Vector,DV)算法:就是分散式路由选择算法

路由选择算法的第二种广义分类方式是根据算法是静态的还是动态的进行分类:

  • 静态路由选择算法:变化缓慢,通常人工干预
  • 动态路由选择算法:网络流量负载或拓扑发生变化时改变路由选择路径、周期性运行或直接响应变化、也容易受路由选择循环、路由震荡等问题的影响

路由选择算法的第三种分类方式是根据它是负载敏感的还是负载迟钝的进行划分:

  • 负载敏感算法:链路费用动态变化来反映链路拥塞水平
  • 负载迟钝算法:链路费用与拥塞无关,当今因特网路由选择算法基本都是迟钝的

5.2、链路状态路由选择算法

链路状态路由选择算法叫做 Dijkstra 算法

Dijktra 算法计算从某结点(源结点,我们称之为 u) 到网络中所有其他结点的最低费用路径 Dijkstra 算法是迭代算法,其性质是经算法的第 次迭代后,可知道到 个目的结点的最低 费用路径,在到所有目的结点的最低费用路径之中,这条路径具有个最低费用我们定义下列记号:

  • D( v) :到算法的本次迭代,从源结点到目的结点 的最低费用路径的费用
  • p(v): 从源到 沿着当前最低费用路径的前一结点(凹的邻居)
  • N': 结点子集;如果从源到 的最低费用路径已确知,v在 N' 中

该全局路由选择算法由一个初始化步骤和其后的循环组成 循环执行的次数与网络中 结点个数相同 一旦终止,该算法就计算出了从源结点 到网络中每个其他结点的最短 路径。

例题:计算从 到所有可能目的地的最低费用路径

image-20221215202043338

上题网络产生的最低路径费用路径和u中的转发表

image-20221215202918356

5.3、距离向量路由选择算法

距离向 (Distance- Vector, DV) 算法是一种迭代的、异步的和分布式的算法.

每个x结点 D~x~(y) 开始,对在 N 中的所有结点,估计从它自己到结点 y 的最低费用路径的费用 。令 D~x~ = [D(y); y∈N]是结点 x 的距离向量,该向量是从 x 到在 N 中的所有其他结点 y 的费用估计的向量。使用 DV 算法,每个结点 x 维护下 列路由选择信息:

  • 对于每个邻居v,从 x 到直接相连邻居 v 的费用为 c(x v)
  • 结点 x 的距离向量,即 = [D~x~(Y): Y∈N], 包含了 x 到 N 中所有目的地 的费 用的估计值。 它的每个邻居的距离向量,即对 x 的每个邻居v,有 D~v~=[D (y): Y∈N]

在该分布式、异步算法中,每个结点不时地向它的每个邻居发送它的距离向量副本 当结点 x 从它的任何一个邻居 v 接收到一个新距离向量,它保存 v 的距离向量,然后使用 Bellman- Ford 方程更新它自己的距离向盘如下: D~x~(Y) = min{c(x ,v) + D(y) } I对中的每个结点

LS 和 DV 路由选择算法的比较

  • 消息复杂度(DV胜出)

    • LS: 有 n 节点, E 条链路,发送 报文O(nE)个 :局部的路由信息;全局传播
    • DV: 只和邻居交换信息 :全局的路由信息,局部传播
  • 收敛时间(LS胜出)

    • LS: O(n2) 算法: 有可能震荡
    • DV: 收敛较慢 :可能存在路由环路 、 count-to-infinity 问题
  • 健壮性: 路由器故障会发生什么 (LS胜出)

    • LS:

      • 节点会通告不正确的链路代价
      • 每个节点只计算自己的路由表
      • 错误信息影响较小,局部,路由较 健壮
    • DV:

      • DV 节点可能通告对全网所有节点 的不正确路径代价
      • 距离矢量
      • 每一个节点的路由表可能被其它节 点使用
      • 错误可以扩散到全网

5.4、层次路由选择

规模:随着路由器数目变得很大,涉及路由选择信息的计算、存储及通信(例如 LS 更新或最低费用路径的变化)的开销将高得不可实现

管理自治:一个组织应该当按自己愿望运行管理其网络

这两个问题都可以通过将路由器组织进自治系统 (Autonomous System , AS) 来解决, 每个 AS 由一组通常处在相同管理控制下的路由器组成(例如,由相同的 ISP 运营或属于 相同的公司网络)

自治系统内部路由选择协议( intra- autonomous system routing protocol):在一个自治系统内运行的路由选择算法

5.5、因特网中自治系统内部的路由选择: RIP

AS 内部路由选择协议用于确定在一个 AS 内执行路由选择的方式 AS 内部路由选择 协议又称为内部网关协议 (interior gateway protocol)

有两个路由选择协议曾被广 泛用于因特网上自治系统内的路由选择:路由选择信息协议 (Routing Infonnation Protocol , RIP)开放最短路优先 (Open Shortest Path First , OSPF)

下图中的表:从源 A 到每个叶子子网的跳数:

image-20221215205753664

一条路径的最大费用被限制为 15 ,因此 RIP 的使用限制在网络直径不超过 15 跳的自治系统内。

在RIP中, 路由选择更新信息在邻居之间通过使用 RIP 晌应报文( RIP response message) 来交 换,大约每 30 秒相互交换一次 台路由器或主机发出的响应报文包含了一个该 AS 的多达 25 个目的子网的列表,以及发送方到其中每个子网的距离 响应报文又被称作 RIP 通告( RIP advertisement)

一台路由器超过180s没有从邻居听到报文,该邻居要么死记要么链路中断

        RIP可以修改本地路由选择表,向活着的邻居发送RIP通告
        也可以使用RIP请求报文请求邻居到目的地的费用
RIP被当做一个应用进程来实现,能在一个标准socket上发送个接收报文,并且使用一个标准的运输层协议
    路由器在UDP上用端口520相互发送RIP请求/响应报文。意思是RIP使用一个运输层协议实现网络层功能

5.6、困特网中自治系统内部的路由选择: OSPF

  • 安全: 所有的OSPF报文都是经过认证的 (防止恶意的攻击)
  • 允许有多个代价相同的路径存在 (在RIP协议中只有一个)  对于每一个链路,对于不同的TOS有多重代价矩阵

    • 例如:卫星链路代价对于尽力而为的服务代价设置比较低,对实 时服务代价设置的比较高
    • 支持按照不同的代价计算最优路径,如:按照时间和延迟分别计 算最优路径
  • 对单播和多播的集成支持:

    • Multicast OSPF (MOSPF) 使用相同的拓扑数据库, 就像在OSPF中一样
  • 支持在单个路由选择域内的层次结构

5.7、自治系统间的路由选择: BGP

边界网关协议 (Broder Gateway Protocol , BGP): 跨越多个 AS 的源和目的对之间是如何确定路径的。

BGP基础:

  • 跨越两个 AS BGP 会话称为外部 BGP (eBGP) 会话 (external BGP session)
  • 在同一个AS 中的两台路由器之间的 BGP 会话称为内部 BGP (iBGP) 会话( internal BGP session)

BGP 为每个 AS 提供了进行以 下工作的手段:

 1. 从相邻 AS 处获得子网可达性信息 
 2. 向本 AS 内部的所有路由器传播这些可达性信息 
 3. 基于可达性信息和 AS 策略,决定到达子网的"好"路由

当一台路由器通过BGP会话通告一个前缀时,它在前缀中包括一些属性。带属性的前缀称为一条路由,BGP对等方彼此通告路由

  • AS-PATH:该属性包含了前缀通告已经通过的AS,当一个前缀传送到一个AS时,AS将其ASN增加到AS-PATH中

    • 路由器使用AS-PATH属性检测和防止循环通告
    • 路由器使用AS-PATH在多条路径中选择相同的前缀
  • NEXT-HOP:是一个开始某AS-PATH的路由器接口

    • 路由器使用该属性正确地配置它们的转发表
    • 使用NEXT-HOP值和AS内部路由选择算法,路由器能确定到每条对等链路的路径的费用,用热土豆路由选择决定适当的接口

BGP路由选择:

BGP使用eBGP和iBGP向在AS中的所有路由器发布路由,路由器可能知道到达任何一条前缀的多条路由。消除规则从上到下:

  • 选择具有最高本地偏好值(管理员决定)的路由
  • 选择具有最短AS-PATH的路由
  • 最靠近NEXT-HOP路由器的路由,最靠近指最低费用路径最低,由AS内部算法决定(hot potato routing)
  • 使用BGP标识符选择路由
目录
相关文章
|
21天前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
221 55
|
11天前
|
机器学习/深度学习 算法
基于改进遗传优化的BP神经网络金融序列预测算法matlab仿真
本项目基于改进遗传优化的BP神经网络进行金融序列预测,使用MATLAB2022A实现。通过对比BP神经网络、遗传优化BP神经网络及改进遗传优化BP神经网络,展示了三者的误差和预测曲线差异。核心程序结合遗传算法(GA)与BP神经网络,利用GA优化BP网络的初始权重和阈值,提高预测精度。GA通过选择、交叉、变异操作迭代优化,防止局部收敛,增强模型对金融市场复杂性和不确定性的适应能力。
145 80
|
2天前
|
机器学习/深度学习 算法 PyTorch
深度强化学习中SAC算法:数学原理、网络架构及其PyTorch实现
软演员-评论家算法(Soft Actor-Critic, SAC)是深度强化学习领域的重要进展,基于最大熵框架优化策略,在探索与利用之间实现动态平衡。SAC通过双Q网络设计和自适应温度参数,提升了训练稳定性和样本效率。本文详细解析了SAC的数学原理、网络架构及PyTorch实现,涵盖演员网络的动作采样与对数概率计算、评论家网络的Q值估计及其损失函数,并介绍了完整的SAC智能体实现流程。SAC在连续动作空间中表现出色,具有高样本效率和稳定的训练过程,适合实际应用场景。
20 7
深度强化学习中SAC算法:数学原理、网络架构及其PyTorch实现
|
30天前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
160 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
5天前
|
机器学习/深度学习 算法
基于遗传优化的双BP神经网络金融序列预测算法matlab仿真
本项目基于遗传优化的双BP神经网络实现金融序列预测,使用MATLAB2022A进行仿真。算法通过两个初始学习率不同的BP神经网络(e1, e2)协同工作,结合遗传算法优化,提高预测精度。实验展示了三个算法的误差对比结果,验证了该方法的有效性。
|
8天前
|
机器学习/深度学习 数据采集 算法
基于PSO粒子群优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目展示了基于PSO优化的CNN-GRU-SAM网络在时间序列预测中的应用。算法通过卷积层、GRU层、自注意力机制层提取特征,结合粒子群优化提升预测准确性。完整程序运行效果无水印,提供Matlab2022a版本代码,含详细中文注释和操作视频。适用于金融市场、气象预报等领域,有效处理非线性数据,提高预测稳定性和效率。
|
6天前
|
算法 网络协议 Python
探秘Win11共享文件夹之Python网络通信算法实现
本文探讨了Win11共享文件夹背后的网络通信算法,重点介绍基于TCP的文件传输机制,并提供Python代码示例。Win11共享文件夹利用SMB协议实现局域网内的文件共享,通过TCP协议确保文件传输的完整性和可靠性。服务器端监听客户端连接请求,接收文件请求并分块发送文件内容;客户端则连接服务器、接收数据并保存为本地文件。文中通过Python代码详细展示了这一过程,帮助读者理解并优化文件共享系统。
|
29天前
|
机器学习/深度学习 人工智能 算法
深入解析图神经网络:Graph Transformer的算法基础与工程实践
Graph Transformer是一种结合了Transformer自注意力机制与图神经网络(GNNs)特点的神经网络模型,专为处理图结构数据而设计。它通过改进的数据表示方法、自注意力机制、拉普拉斯位置编码、消息传递与聚合机制等核心技术,实现了对图中节点间关系信息的高效处理及长程依赖关系的捕捉,显著提升了图相关任务的性能。本文详细解析了Graph Transformer的技术原理、实现细节及应用场景,并通过图书推荐系统的实例,展示了其在实际问题解决中的强大能力。
155 30
|
17天前
|
JSON 算法 Java
Nettyの网络聊天室&扩展序列化算法
通过本文的介绍,我们详细讲解了如何使用Netty构建一个简单的网络聊天室,并扩展序列化算法以提高数据传输效率。Netty的高性能和灵活性使其成为实现各种网络应用的理想选择。希望本文能帮助您更好地理解和使用Netty进行网络编程。
35 12
|
24天前
|
机器学习/深度学习 算法 信息无障碍
基于GoogleNet深度学习网络的手语识别算法matlab仿真
本项目展示了基于GoogleNet的深度学习手语识别算法,使用Matlab2022a实现。通过卷积神经网络(CNN)识别手语手势,如"How are you"、"I am fine"、"I love you"等。核心在于Inception模块,通过多尺度处理和1x1卷积减少计算量,提高效率。项目附带完整代码及操作视频。

热门文章

最新文章