【计算机网络:自顶向下方法】Chapter5 网络层:控制平面

news2024/11/17 13:39:48

本系列文章为笔者在学习b站中科大郑烇老师的计算机网络课程时(郑老师讲得很清晰!!),结合课程PPT与《计算机网络:自顶向下方法》(第七版)所作的学习笔记,部分图片源自课程PPT或书中,如有侵权,请联系作者删除。

笔记汇总

Chapter5

  • 笔记汇总
  • 5.1 路由选择算法
    • 5.1.1 路由的概念
    • 5.1.2 路由选择算法
      • 原则
      • 分类
    • 5.1.3 LS路由选择算法
      • 大致工作流程
      • 具体细节
      • 可能的震荡问题
    • 5.1.4 距离矢量路由选择算法
      • 主要思想
      • 特点
    • 5.1.5 LS和DV算法的比较

5.1 路由选择算法

5.1.1 路由的概念

按照某种指标,找到从源节点到目标节点的较好路径

  • 较好路径:按照某种指标,代价较小的路径
  • 指标:延迟、费用、队列长度等

网络为单位进行路由,一个网络的所有节点地址前缀相同,且物理上聚集,路由信息传输、计算和匹配的代价低。

由于到了网络中的路由器时意味着可以到达网络中的任意一台主机(由链路层解决),于是可以用路由器代表一个网络,且将路由器抽象成图上的节点路由器与路由器之间的代价抽象成边,把路由问题当成图的最短路问题

5.1.2 路由选择算法

原则

  • 正确性:算法必须是正确和完整的
  • 简单性:算法在计算机上应简单
  • 健壮性:算法能够适应通信量网络拓扑的变化
  • 稳定性:产生的路由不应该摇摆
  • 公平性:对每一个站点都公平
  • 最优性:某个指标的最优(如果代价太高,也可以不追求最优)

分类

第一种分类方式,根据算法是集中式还是分布式的来分

  • 集中式路由选择算法(全局)
    所有路由器有完整的网络拓扑结构和边的代价信息,如链路状态(Link State, LS)算法。
  • 分散式路由选择算法(分布式)
    路由器只知道与它有物理连接关系的邻居路由器到它的代价信息,迭代地与邻居交换信息,计算路由信息,如距离向量(Distance-Vector, DV)算法。

第二种分类方式,根据算法是静态的还是动态的来分

  • 静态路由选择算法
    路由随时间变化缓慢,人工调整。
  • 动态路由选择算法
    路由变化很快,周期性更新路由信息,根据链路代价的变化而辩护。

5.1.3 LS路由选择算法

大致工作流程

各点通过各种渠道获得整个网络拓扑结构链路代价等信息,然后使用LS路由选择算法(dijkstra算法),计算出本节点到其他所有节点的最优路径,得到路由表

具体细节

  • 发现相邻节点,获知对方地址
  • 测量到相邻节点的代价
  • 组装分组,描述相邻节点情况(节点名称,代价)
  • 将LS分组泛洪到整个网络中(序号、AGE年龄字段用于避免重复泛洪,如果序号之前在节点中出现过,则不对外发送,如果AGE年龄字段减为0,则丢弃该分组)
  • 通过LS分组获知整个网络拓扑结构和链路代价,用Dijkstra算法计算最短路(Dijkstra在这就不细讲了)

可能的震荡问题

如下图中的例子,假设链路的代价为链路实时流量,一开始x、y、z到w的路径均为顺时针方向,这会使得x到w的代价变小,在下一个计算周期时,将会把路径切换为逆时针方向,依次类推,路由将反复震荡
在这里插入图片描述

图片来源于《自顶向下》

5.1.4 距离矢量路由选择算法

主要思想

距离矢量算法是一种迭代的、异步的和分布式的算法的,其基本思想是:

  • 各路由器维护一张路由表
  • 各路由器与相邻路由器交换路由表
    定期测量与相邻节点的代价,定期交换路由表
  • 根据获得的路由信息,更新路由表
    使用Bellman-Ford方程进行更新:
    假设 d x ( y ) d_x(y) dx(y)为从x到y的最小路径代价,则 d x ( y ) = m i n v { c ( x , v ) + d v ( y ) } d_x(y)=min_v\{c(x, v) + d_v(y)\} dx(y)=minv{c(x,v)+dv(y)},其中 v v v x x x的相邻节点

特点

  • 分布式
    每个节点需要从一个或多个直接邻居获取路由信息,然后将其计算结果分发给它的邻居
  • 迭代
    过程要持续到收敛为止,即所有邻居之间都没有有用信息交换
  • 异步
    各节点间的计算是独立的,步伐不需要一致
  • 好消息传得快
    好消息的传播以每一个交换周期前进一个路由器的速度进行(好消息指的是某个路由器接入或有更短的路径),如下图例子,当路由器A接入互联网中时,B获取其最短路径长度并向C方向扩散,一个周期一个路由器。
    在这里插入图片描述
图片来源于课程PPT
  • 坏消息传的慢
    无穷计算的问题,考虑下图例子,当路由器A退出互联网时,B到A的直接链路不可达,但是C向B发送的路由信息却显示可达,于是B从C更新(这显然是不对的),导致传播速度将非常缓慢。
    在这里插入图片描述
图片来源于课程PPT

5.1.5 LS和DV算法的比较

  • 消息复杂度(DV胜出)
    LS:有 n n n个节点, E E E条链路,发送报文 O ( n E ) O(nE) O(nE)
    DV:只和邻居交换路由信息

  • 收敛时间(LS胜出)
    LS: O ( n 2 ) O(n^2) O(n2)朴素算法, O ( n l o g n ) O(nlogn) O(nlogn)优化算法,有可能产生震荡
    DV:收敛较慢,可能存在路由环路,无穷计算问题

  • 健壮性(LS胜出)
    当路由器故障时,
    LS:节点会向其邻居通告不正确的链路代价,由于每个节点只计算自己的路由表,路由计算在某种程度上是可分离的,故错误信息影响较小,较局部。
    DV:节点可以通过交换路由信息向任意或所有目标节点通告不正确的链路代价,通过邻居的邻居扩散到整个网络。

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

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

相关文章

gitee 奇安信代码卫士使用

注册 gitee 账号后,push 一个项目,或者 fork 一个别人的项目,这里 fork 了一个 java-sec-code 靶场,使用的是个人版,像是低配版的 fortify 在项目的 服务 项下,选择奇安信代码卫士 创建分析 新建分析&…

【Java|golang】2373. 矩阵中的局部最大值

给你一个大小为 n x n 的整数矩阵 grid 。 生成一个大小为 (n - 2) x (n - 2) 的整数矩阵 maxLocal ,并满足: maxLocal[i][j] 等于 grid 中以 i 1 行和 j 1 列为中心的 3 x 3 矩阵中的 最大值 。 换句话说,我们希望找出 grid 中每个 3 x …

操作系统笔记、面试八股(一)—— 进程、线程、协程

文章目录1. 进程、线程、协程1.1 进程1.1.1 进程间的通信方式1.1.2 进程同步方式1.1.3 进程的调度算法1.1.4 优先级反转1.1.5 进程状态1.1.6 PCB进程控制块1.1.7 进程的创建和撤销过程1.1.8 为什么要有进程1.2 线程1.2.1 为什么要有线程1.2.2 线程间的同步方式1.3 协程1.3.1 什…

创建Firebase项目并接入Firebase推送: Firebase Cloud Messaging (FCM)

1.FCM简介:Firebase Cloud Messaging (FCM) 是一种跨平台消息传递解决方案,可供您可靠地传递消息,而且还是免费的服务。支持 Android,IOS,Web,Flutter,Unity.消息类型可以使用 FCM 向客户端发送两种类型的消息:通知消息…

CEC2017:鱼鹰优化算法(Osprey optimization algorithm,OOA)求解cec2017(提供MATLAB代码)

一、鱼鹰优化算法简介 鱼鹰优化算法(Osprey optimization algorithm,OOA)由Mohammad Dehghani 和 Pavel Trojovsk于2023年提出,其模拟鱼鹰的捕食行为。 鱼鹰是鹰形目、鹗科、鹗属的仅有的一种中型猛禽。雌雄相似。体长51-64厘米…

Allegro如何设置铜皮避让的优先级操作指导

Allegro如何设置铜皮避让的优先级操作指导 在用Allegro进行PCB设计的时候,时常需要使用动态铜皮进行设计,当两块动态铜皮存在交集的时候,避让就会存在一个优先级,如下图 上方的铜皮避让调了下方的铜皮,上方的铜皮被避让了 如何调整让下方的铜皮避让上方的铜皮,如下图 具…

入门JAVA第十六天 数据库

一 、数据库技术学习内容与方法 1.1学习内容 1 Oracle 数据库 目前最好的关系型数据库 基本的CRUD命令。 SQL语句。select(R),update(U),detele(D),insert(C) 2 MySQL数据库 中小型醒目非常好用的关系型数据库。 灵活,小巧。 3 扩展软件开发流程中数据库设计原则 …

严格模式和非严格模式下的this指向问题

一、全局环境 1.函数调用 非严格模式:this指向是Window // 普通函数 function fn () { console.log(this, this); } fn() // 自执行函数 (function fn () { console.log(this, this); })() 严格模式:this指向是undefined //…

866363-70-4,N3-C5-NHS ester,叠氮-C5-NHS 主要物理性质分享

●外观以及性质:Azido-Aca-NHS淡黄色或无色油状,叠氮化物可以与炔烃、DBCO和BCN进行铜催化的点击化学反应。NHS酯可以与胺基反应,形成稳定的酰胺键。●中文名:叠氮-C5-NHS ester,6-叠氮己酸活性酯●英文名:…

「TCG 规范解读」PC 平台相关规范(2)

可信计算组织(Ttrusted Computing Group,TCG)是一个非盈利的工业标准组织,它的宗旨是加强在相异计算机平台上的计算环境的安全性。TCG于2003年春成立,并采纳了由可信计算平台联盟(the Trusted Computing Platform Alli…

CentOS 7安装N卡驱动和CUDA和cuDNN

前言系统一开始是CentOS 7.6,安装依赖时yum给的内核文件的版本号和uname -r的结果不一样,这时不能直接装依赖,装上后后面装驱动时会报错找不到内核头文件(最开始我直接装依赖了,以为高版本兼容低版本,然后装驱动时报错…

番外11:使用ADS对射频功率放大器进行非线性测试3(使用带宽5MHz的WCDMA信号进行ACLR测试)

番外11:使用ADS对射频功率放大器进行非线性测试3(使用带宽5MHz的WCDMA信号进行ACLR测试) 其他测试: 番外9:使用ADS对射频功率放大器进行非线性测试1(以IMD3测试为例) 番外10:使用AD…

前端工程构建问题汇总

1.less less-loader安装失败问题 npm install less-loader --save --legacy-peer-deps 加上–legacy-peer-deps就可以了 在NPM v7中,现在默认安装peerDependencies,这会导致版本冲突,从而中断安装过程。 –legacy-peer-deps标志是在v7中引…

MyBatis Plus Invalid bound statement 终极解决方案

MyBatis Plus Invalid bound statement 终极解决方案一、项目1.1 编码部分1.1.1 实体类1.1.2 dao层1.1.3 mapper.xml1.2 环境配置1.3 问题描述二、解决方案2.1 手动指定mapper.xml资源路径匹配规则2.2 使用mybatis自动配置2.3 测试效果三、附件一、项目 1.1 编码部分 1.1.1 实…

imx6ull_SPI

SPI简介 SPI 是Motorola 公司推出的一种同步串行接口技术,是一种高速、全双工的同步通信总线。SPI 以主从方式工作,通常是有一个主设备和一个或多个从设备,一般SPI 需要4 根线,但是也可以使用三根线(单向传输) 这四根线如下&…

torch函数合集

torch.tensor() 原型:torch.tensor(data, dtypeNone, deviceNone, requires_gradFalse) 功能:其中data可以是:list,tuple,NumPy,ndarray等其他类型,torch.tensor会从data中的数据部分做拷贝(而不是直接引用),根据原始数据类型生成相应类型的torch.Tenso…

RestTemplate Java调用restful接口

目录1. GET请求相关方法(1)getForObject(2)getForEntity2. POST请求相关设置请求头和请求体:HttpEntity(1)postForLocation(2)postForObject(3)po…

pyqt实现聊天机器人

环境要求 通过调用openai接口实现聊天机器人功能,支持各种参数得调整,文章末尾有各个参数得说明 python3.9pyqt5环境安装 pip install pyqt5 pip install openai pip install pyinstaller源码如下: chat.py import sys from PyQt5.QtWid…

Cortex-A7中断控制器GIC

Cortex-A7中断控制器GIC 中断号 芯片内部的中断都会引起IRQ InterruptGIC将所有的中断源(最多1020个中断ID)分为三类: SPI(SharedPeripheralInterrupt)共享中断,外部中断都属于SPI中断 [ID32-1019]PPI(PrivatePeripheralInterrupt)私有中断 [ID16-31]SGI(Software-…

【MySQL】基础操作:登录、访问、退出和卸载

一、MySQL简介 MySQL数据库最初是由瑞典MySQL AB公司开发,2008年1月16号被Sun公司收购。2009年,SUN又被Oracle收购。MySQL是目前IT行业最流行的开放源代码的数据库管理系统,同时它也是一个支持多线程、高并发、多用户的关系型数据库管理系统。…