哈工大计算机网络课程网络层协议详解之:距离向量路由算法与层次化路由算法

news2024/11/15 9:07:36

文章目录

  • 距离向量路由算法
    • Bellman-Ford算法举例
    • 距离向量路由算法
  • 层次化路由算法
    • 层次化路由
    • AS示例
    • 自治系统间(Inter-AS)路由任务

在上一节中我们介绍了路由算法中的链路状态路由算法,介绍它基于Dijkstra算法来实现,同时分析了其缺点。接下来,我们继续介绍另外两种路由算法:距离向量路由算法和层次化路由算法

距离向量路由算法

距离向量路由算法实际上是基于Bellman-Ford方程(动态规划的思想)来实现的。

同样的,这里先列举出后续算法介绍中会使用到的符号定义:

  • 令dx(y) = 从x到y最短路径的费用(距离)

    则dx(y) = minv{ c(x,v) + dv(y) }

    其中

    • minv表示 在x节点的所有邻居v中取最小值。
    • c(x,v)表示x到邻居v的费用(距离)。
    • dv(y)表示从邻居v到目的节点y的费用(距离)。

有了上述公式后,作为x节点就不需要知道整个网络的拓扑结构和路径费用,而只需要知道跟所有邻居节点间的费用,以及每个邻居节点到目的节点的最短路径费用即可。

Bellman-Ford算法举例

如下图所示,假设我们希望计算节点u到节点z的最短路径。

根据图上的路径费用,显然有:

  • dv(z) = 5
  • dx(z) = 3
  • dw(z) = 3

因此, 根据Bellman-Ford算法公式可以得到:

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
在这里插入图片描述

可以看出,在这种算法中,节点u不需要知道完整的网络拓扑,只需要知道跟所有邻居节点间的费用,以及每个邻居节点到目的节点的最短路径费用即可。

在上面的例子中,当节点u知道到达节点z的最短路径是从邻居节点x中获取的,就会把这个信息记录在转发表中。后续数据报达到需要转发到z节点上时,就会经过路由器的u->x的接口转发出去。

重点:节点获得最短路径的下一跳,该信息用于转发表中

距离向量路由算法

在上述公式:dx(y) = minv{ c(x,v) + dv(y) }中,c(x, v)的距离可以直接由到达邻居节点的路径费用获得,而dv(y)的获取,则需要其他算法步骤的支持,需要多次迭代计算获取。

我们设定Dx(y) 表示从节点x到节点y的最小费用估计, 因此,对于节点x的所有邻居节点,节点x维护一个距离向量Dx = [ Dx(y), y 属于N]。

此外,节点x还必须维护其所有邻居节点的距离向量:Dv = [ Dv(y): y属于N’]

也就是说,在距离向量路由算法中,每个节点计算得到的到其邻居节点的距离向量,都需要通告给其邻居节点。 相当于每个邻居节点,都有其邻居节点的距离向量Dx的记录。

此时,节点x维护的两个向量为:

  • 已知的到达每个邻居节点的费用:c(x, v)
  • 维护其所有邻居节点的距离向量:Dv = [ Dv(y): y属于N’]

有了上述两个信息之后,就可以进行核心逻辑的计算了。

核心思想

  • 每个节点不定时的将其自身的Dv估计发送给其邻居。

  • 当x接收到邻居的新Dv估计时,,即根据Bellman-Ford算法更新其自身的距离向量估计:

    在这里插入图片描述

​ 在更新完自身的距离向量估计后,同样的,会将该距离向量同步给其所有的邻 居节点,邻居节点接收到新的距离向量估计后,同样也会更新自己的。以此类 推地迭代下去。

  • Dx(y)将最终收敛于实际的最小费用dx(y)

算法特点

  • 异步迭代

    引发每次局部迭代的因素:

    • 局部链路费用改变
    • 来自邻居的距离向量Dv更新。
  • 分布式

    每个节点只有当Dv变化时才通告给其所有邻居。邻居在必要时(其Dv更新后发生改变)再通告它们的邻居。

有了上面的概念后,就可以给出距离向量路由算法的一个大致核心思想的描述:

在这里插入图片描述

层次化路由算法

在之前我们介绍的链路状态路由算法和距离向量路由算法,其核心思想都是要将整个网络抽象成一张图,然后借助于图算法来计算得到图中节点间的最短路径,最后映射到实际的网络中。

但是将任意规模网络抽象为一个图计算路由过于理想化,尤其对于大规模的网络,比如Internet网络。

比如,考虑将网络规模6亿多节点的网络抽象成一张图:

  • 图算法计算复杂度无法估量
  • 计算得到的路由表几乎无法存储
  • 路由计算过程中的信息(e.g. 链路状态分组、Dv距离向量)交换量巨大,这些信息在路由器间交换时,本身就会占用链路带宽的。最极端情况可能会把链路带宽都耗尽,导致淹没路由!

同时,单一将整个网络用同一种路由算法来计算,也存在一定缺陷,比如管理自治的问题:

  • 每个网络的管理(比如运营商、企业网络管理者)可能都期望自主控制其网内的路由。不能说所有网络都采用一种单一的方式来进行路由设计。
  • 正式因为管理自治,像我们现在的网络,将不同自治下的网络互联在一起,构成一个更大的网络,也正是被叫做互联网的原因。

显然,当网络规模较大时,单一抽象成图结构来表示网络结构是不可行的。那么怎么解决大规模网络,管理自治等问题下,设计出更合适的路由算法呢?这就是本节层次化路由算法的由来。

层次化路由

层次化路由实际上就是把我们的网络结构再进行一层抽象,比如我们之前的路由算法是将整个网络抽象成一张图,在图中计算节点间的最短路径,而在层次化路由中,将整个网络结构,依据管理自治性的要求,把一个区域内的或者是一个组织内的路由器聚合在一起。为这个区域定义一个唯一性的标识就是:自治系统 (autonomous systems),对应的自治系统的编号是一个16位的编号,称为自治系统号。

有了这种层次后,我们的路由就可以分成两类,一类是自治系统内部,可以按照前面介绍的路由算法(e.g. 链路状态路由、距离向量路由算法等)进行计算。另一类相当于把自治系统看作一个整体,考虑跨自治系统之间的路由要怎么处理。

按照上述的层次路由思想:

  • 同一个AS内的路由器运行相同的路由协议(算法)。自治系统内部路由协议也叫做:”intra-AS" routing protocol。
  • 不同自治系统内的路由器可以运行不同的AS内部路由协议。每个自治系统内的路由协议只知道它自治系统内网络拓扑结构和相关信息

有了层次的概念后,在一个AS内部可以运行相同的路由协议,但是不同的AS之间需要如何来进行路由呢?为了解决这个问题,就需要引入网关路由器(gateway router) 的概念

网关路由器的特点:

  • 位于AS“边缘”
  • 通过物理链路连接其他AS的网关路由器
    • 因为该路由器跟其他自治区域相连接,所以可以根据该路由器与其他自治区域进行路由信息交换。
    • 自治系统内的路由器解决自治系统内的路由信息交换,而网关路由器可以实现更高一层的,跨越自治区域的路由信息交换。

有了网关路由器的概念后,后续我们分析路由,就可以分为自治区域内部的路由交换和自治区域间的路由交换两种不同的层次来考虑。

AS示例

在这里插入图片描述

如上图所示,这里有3个自治系统AS1、AS2、AS3互联在一起。可以想象,作为层次化路由来说,任何一个自治区域内的路由器,它的转发表要靠两层协议来进行确定:

  • 一方面,在自治区域内部,根据区域内部的路由协议(算法)来确定区域内部路由信息的转发表。
  • 另一方面,在自治区域间,当我们的数据需要发往自治区域外,且需要经过多个自治系统到达目的系统时,就需要路由器根据自治区域间的路由协议(算法)来确定自治系统间的路由转发信息。
  • 因此,如上图所示,区域内的路由器转发表由两部分路由算法决定。

作为跨自治系统间的路由信息,实际上需要自治系统内部的路由算法和自治系统间的路由算法共同来确定。

自治系统间(Inter-AS)路由任务

在这里插入图片描述

如上图所示,有三个自治系统互联在一起。

假设AS1内某路由器收到一个目的地址在AS1之外的数据报,此时需要考虑:

  • 路由器应该将数据报转发给哪个网关路由器呢?
    • 比如上图AS1中路由器1c和1b分别连接着另外两个网络AS3和AS2,那么AS1的路由器就需要根据目的地址,判断应该转发给哪个网关路由器。

为了让AS1的路由器拥有这些信息,AS1的路由器必须学会:

  • 学习到哪些目的网络可以通过AS2到达,哪些可以通过AS3到达。

而这些信息怎么获取到呢?我们上面介绍过,网关路由器负责通过自治系统间的路由协议,来与不同自治系统间进行路由信息的交换。因此,为了让自治系统内的其他路由器也拥有该信息,就需要网关路由器在自身获取到自治系统间的路由转发信息后,广播给自治系统内的其他路由器。

概括来说,只要涉及到跨自治系统间的目的网络的传输、获取数据等都是自治系统间的路由任务。

接下来,我们以路由器1d的转发表为入口,看看该转发表在跨自治系统间时如何设置。

假设AS1学习到(通过AS间路由协议)某一子网X可以通过AS3(网关1c)到达,但不能通过AS2到达。

对于上午自治系统间的路由信息,对于自治系统AS1来说,需要通过路由器1c向所有内部路由器传播该可达性信息。在有了上层自治系统间的路由信息后,接下来需要解决的就是自治系统内的路由信息计算了。

对于AS1的路由器1d来说,需要利用AS1的内部路由协议(算法),计算出其到达路由器1c的最小费用路径接口,比如此时是接口l。

计算得到这个信息后,就可以将该转发信息添加到转发表中:

  • 在转发表中添加记录:(x, l)

另一种场景,如果AS1可以通过多个自治系统到达子网x的话,此时为了配置转发表,路由器1d必须确定应该将去往子网x的数据报转发给哪个网关,也就是应该送到AS3自治系统的3a还是AS2自治系统的2a。

这里就涉及到自治系统间路由的另外一个任务:实现在多个网关间进行选择最短路径。 实现上述选择的协议就是热土豆路由协议

热土豆路由协议:将分组发送给最近的网关路由器。

从名字不难看出,热土豆算法应该是一种自私的算法,就是将烫手的山芋赶快扔出去。

理解:热土豆路由选择会使用AS内部选择协议(如OSPF),用于计算最低开销路径。当存在多条最低开销路径时,就会根据NEXT-HOP的开销选择路由。

在这里插入图片描述

目前层次化路由的策略,尤其是在比较大规模的网络结构中,是一种比较有效的路由策略。事实上,像我们现在使用最广泛的Internet网络,使用的正是这种层次化路由的策略。接下来我们会继续介绍Internet网络路由以及Internet网络按照层次化的方式,自治系统内和自治系统间采用什么样的路由协议。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/712443.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Jmeter接口测试断言详解

目录 前言: 响应断言 Apply to (响应断言的应用范围) 要测试的响应字段(可通过取样器结果查看) 响应断言:模式匹配 Json断言 前言: 在JMeter中进行接口测试时,断言是一个非常重要的概念。断言允许我们验证接口的响应是否符…

十七、docker学习-docker-compose安装nginx反向代理

compose安装nginx反向代理 IDEA安装docker插件 idea安装docker插件。Dockerfile、docker-compose.yml文件大部分内容会有提示信息。方便开发人员编写配置文件。 https://plugins.jetbrains.com/plugin/7724-docker/versions基础镜像 docker pull 1.21.0-alpine docker pull…

一文读懂SQL中的Aggregate(聚合) 函数和Scalar(标准)函数

目录 前言: 一、SQL Aggregate 函数 1、AVG() 函数 2、count()函数 3、MAX() 函数 4、MIN() 函数 5、SUM() 函数 6、SQL GROUP BY 语法 7、SQL HAVING 子句 8、SQL EXISTS 运算符 9、SQL UNION 操作符 二、SQL Scalar 函数 1、SQL UCASE() 函数 2、SQ…

Swift 周报 第三十二期

文章目录 前言新闻和社区现已提供新的设计资源visionOS SDK 现已发布 提案Swift论坛推荐博文话题讨论关于我们 前言 本期是 Swift 编辑组自主整理周报的第二十三期,每个模块已初步成型。各位读者如果有好的提议,欢迎在文末留言。 欢迎投稿或推荐内容。…

力扣 -- 174. 地下城游戏

题目链接:174. 地下城游戏 - 力扣(LeetCode) 下面是用动态规划的思想解决这道题的过程,相信各位小伙伴都能看懂并且掌握这道经典的动规题目滴。 参考代码: class Solution { public:int calculateMinimumHP(vector&…

【上海海事大学806】23上岸学姐经验分享

今天很荣幸请到了一位23上岸上海海事大学的学姐来给大家做一期经验分享!!!我之前也有做过关于上海海事大学806的一些真题解析以及重点勾画,希望能帮到大家, 一、学姐经验分享 很荣幸你能看到我的考研经验分享&#x…

第七章 版本控制器——git

第七章 版本控制器——git 一、git的历史二、git的特点与发展1、git的特点2、git与github 二、git的安装与注册1、git的安装2、git的使用(1)github注册(2)创建远端仓库(3)将远端仓库镜像复制到本地仓库指令…

LIS实验室信息管理系统功能模块(Oracle数据库、Client/Server架构)

一、系统框架简介 1、技术框架 (1)总体框架: ♦SaaS架构的Client/Server应用 ♦服务可伸缩,多服务协同 ♦服务可拆分,功能易扩展 (2)技术细节: ♦体系结构:Client/Serv…

零基础小白暑假QT实训1

一.前言 今天就要开始暑假短学期的实训了,本来课堂也要求记笔记,这里我就开始分享我将来五天的学习过程吧。 二.QT安装过程 首先,提供一下我的链接: 本来上传到我的阿里云盘了的,结果压缩包不给分享,抱歉…

互联网高可用架构探讨 | 京东云技术团队

高可用指标与问题 高可用,英文单词High Availability,缩写HA,它是分布式系统架构设计中一个重要的度量。业界通常用多个9来衡量系统的可用性,如下表: 既然有可用率,有一定会存在不可用的情况。系统宕机一般…

【动态规划上分复盘】下降路径最小和|礼物的最大价值

欢迎 前言一、动态规划五部曲二、下降路径最小和思路:动态规划解法具体代码如下 三、礼物的最大价值思路:动态规划具体代码如下: 总结 前言 本文主要讲述动态规划思路的下降路径最小和以及礼物的最大价值两道题。 一、动态规划五部曲 1.确定状态表示&a…

61. 旋转链表

61. 旋转链表 原题链接:完成情况:解题思路:参考代码: 原题链接: 旋转链表 https://leetcode.cn/problems/rotate-list/ 完成情况: 解题思路: 参考代码: package 西湖算法题解_…

【C语言】指针进阶[中](函数指针、函数指针数组、指向函数指针数组的指针)

简单不先于复杂,而是在复杂之后。 目录 1. 函数指针 1.1 函数指针的用途 2. 函数指针数组 3. 指向函数指针数组的指针 1. 函数指针 这里的 * 可以省略: 因为函数指针本质上是一个指针,存储了一个函数的地址,因此可以通过函数指针调用对…

解锁虚拟人IP“悦小满”新玩法,怎么用动捕设备化身多重身份?

在数字时代,虚拟人IP成为文化产业与数字技术、数字平台相融合的产物。虚拟人IP是文化IP文化产业发展的新内核。 广东网络广播电视台顺应时代发展,推出了全球首个粤语虚拟偶像“悦小满”,具备着Z世代所喜爱的2.5次元的3D虚拟形象,…

React 企业级开发必备, 我来带你快速入门 !

目录 一、为什么我来安利你学习 React? 二、使用 React 的前置工作 三、简易 demo 学开发 3.1、jsx语法 3.2、函数式组件 demo 3.3、简单类组件定义 3.4、复杂类组件定义 3.4.1、state 写法一:复杂式 写法二:简便式 3.4.2、props 类型限制…

界面干净整洁的windows桌面清单软件有哪些

无论是工作还是日常生活,我们都有各种各样的任务需要完成。然而,如果不进行有效的规划和管理,很容易导致遗漏和拖延,影响工作效率。而一个界面干净整洁的Windows桌面清单,能够帮助我们更好地规划和安排待办事项&#x…

优雅编码:WebStorm引领你迈向开发巅峰

目录 引言WebStrom的优点WebStorm的缺点自用插件推荐总结: WebStorm 官网 引言 WebStorm 是一款功能强大的集成开发环境(IDE),它提供了许多功能和工具,帮助开发人员优雅编码。 因为我是一个前端开发工程师,…

力扣 -- 面试题 17.16. 按摩师

题目链接&#xff1a;面试题 17.16. 按摩师 - 力扣&#xff08;LeetCode&#xff09; 下面是用动态规划的思想解决这道题的过程&#xff0c;相信各位小伙伴都能看懂并且掌握这道经典的动规题目滴。 参考代码&#xff1a; class Solution { public:int massage(vector<int…

哪款恢复数据的软件好用,数据恢复成功率高吗

我们的日常工作中免不了出现误删或者因为系统崩溃而丢失重要的文件的情况&#xff0c;这些文件的丢失会对我们的工作生活造成或多或少的损失。其实我们可以利用一些专业的软件来恢复这些丢失的数据。 许多网友会有疑问&#xff0c;哪款恢复数据的软件好用&#xff0c;数据恢复成…

2021-04-29 VSC++:吻合日。

缘由https://bbs.csdn.net/topics/399168383 void 吻合日() {//缘由https://bbs.csdn.net/topics/399168383int n 0, n1 0, y 0, y1 0, h 0, h1 0,z 0, j 0, x 0, t 0;std::cin >> n >> y >> h;z 自适年一月一日周一值(n) h;y1 y; t 返回月的…