计算机网络:自顶向下第八版学习指南笔记和课后实验--网络层(控制平面)

网络层:控制平面

记录一些学习计算机网络:自顶向下的学习笔记和心得
Github地址,欢迎star ⭐️⭐️⭐️⭐️⭐️

控制平面作为一种网络范围的逻辑,不仅控制沿着从源主机到目的主机的端到端路径间的路由器如何转发数据报,而且控制网络层组件和服务如何配置和管理

概述

  • 转发表(基于目的地转发的场景)和流表(泛化转发的场景)
  • 计算、维护和安装流表以及转发表
    • 每路由器控制
      • 每台路由器具有一个路由选择组件,用于和其他路由器路由选择组件通信
    • 逻辑集中式控制
      • 逻辑集中式控制器计算并分发转发表以供每台路由器使用
      • 该控制器与每台路由器中的控制代理(CA)进行交互,CA一般只具有与控制器通信并按照控制器命令行事这一种功能
      • 与每路由器控制中的CA不同,这些CA之间不能直接相互交互,也不能主动参与计算转发表

路由选择算法介绍以及划分

  • 路由选择算法目的是从发送方到接收方的过程中确定一条通过路由器网络的好路径(最低开销的路径)

  • 根据集中式和非集中式来划分

    • 集中式路由选择算法
      • 用完整的、全局的网络知识计算出从源到目的地之间的最低开销路径
      • 集中式算法具有关于连通性和链路开销方面的完整信息
      • 具有全局状态信息的算法常被称作链路状态(LS)算法,该算法必须知道网络中每条链路的开销
    • 分散式路由选择算法
      • 路由器以迭代、分布式的方式计算最低开销路径,没有节点拥有关于所有网络链路开销的完整信息
      • 每个节点仅有与其直接相连链路的开销知识,然后通过迭代计算过程以及相邻节点的信息交换来确定最低开销路径
      • 距离向量(DV)算法,分散式路由选择算法,每个节点维护到网络中所有其他节点的开销(距离)的向量
  • 根据静态和动态来划份

    • 静态路由选择算法,路由随时间变化非常缓慢,通常是人工进行调整
    • 动态路由选择算法,随着网络流量负载或拓扑发生变化而改变路由选择路径
      • 易受到诸如路由选择循环、路由振荡之类问题的影响
  • 根据负载敏感和负责迟钝来划分

    • 负载敏感算法,链路开销会动态地变化以反映出底层链路的当前拥塞水平
    • 负载迟钝算法,某条链路的开销不明确反应当前或最近的拥塞水平(主流)

链路状态路由选择算法(LS)

  • 通过链路状态广播算法,向每个节点向网路中所有其他节点广播链路状态分组,每个分组包含它所连接的链路的标识和开销
  • 每个节点都具有网络的统一、完整视图,然后每个节点都能够运行LS算法并计算出相同的最低开销路径集合
  • 链路状态路由选择算法(LS):Dijkstra算法
    • Djkstra算法计算出某节点到所有其他节点的最低开销路径
  • 当同一链路两个方向负载不同时,会出现振荡情况
    • 该情况不仅出现在LS中,它出现在任何使用拥塞或基于时延的链路测度算法中
    • 让所有路由器并非同时运行LS算法来解决这种问题
    • 为了避免自同步,将通告时间随机化

距离向量算法DV

  • 距离向量算法是一种迭代的、异步的和分布式算法
    • 分布式:每个节点都要从相邻节点获取信息、计算然后向邻居分发
    • 迭代:此算法一直持续到没有信息交换为止
    • 异步:不要求所有节点相互之间步伐一致
  • Bellman-Ford算法
  • 节点唯一具有的信息是它到直接相连邻居的链路开销它从这些邻居接收到的信息,每个节点具有初始路由选择表
  • 从邻居接受更新距离向量、重新计算路由选择表项和通知邻居到目的地的最低开销路径的开销,循环往复直到没有更新,该算法进入静止状态
  • 为了避免路由选择环路
    • 如果z通过y路由到达x,则z将通告y,z到x的距离是无穷大的即,Dz(x)为无穷
    • 只要z经y路由选择到x,z就持续这样做

LS和DV路由选择算法比较

  • 报文复杂度:LS每次链路状态发生改变就要向所有节点发送新的链路开销,DV算法仅当新的链路开销导致与该链路相连的最低开销路径发生变化时才传播新的开销
  • 收敛速度:DV慢,且在收敛时会遇到路由选择环路以及无穷计数问题
  • 健壮性:
    • LS,路由计算在某种程度上是分离的,提供了一定的健壮性
    • DV,一个不正确值会扩散到整个网络

因特网自治系统内部路由选择:OSPF

  • 随着路由器数目变得巨大,成本和规模将会高的不可实现

  • 因特网时ISP的网络,每个ISP都有自己的路由器网络

  • 引入自治系统(AS)

    • 每个AS由一组在相同管理控制下的路由器组成,通常在一个ISP和互联他们的链路构成一个AS
    • 一个ISP可以拆分为多个AS
    • 每个AS都有唯一的ASN号标识
    • 一个自治系统AS内部的路由选择算法叫做自治系统内部路由选择协议
  • 开放最短路优先(OSPF)

    • OSPF是一种链路状态协议,洪泛链路状态信息和Dijkstra最低开销路径算法,使用OSPF,一台路由器构建了一幅关于整个自治系统的完整拓扑图
    • OSPF提供了一种机制来让网络管理员为给定的链路权值集合确定最低开销的路由选择
    • 管理员设置不同的权重来实现不同的功能,最少跳等
    • OSPF路由器向AS内所有路由器广播路由选择信息,即使状态未发生改变,它也周期性的广播链路状态(增加了健壮性)
    • OSPF通告包含在IP报文中,对OSPF其上层协议的值为89,因此OSPF必须自己实现诸如可靠报文传输、链路状态广播等功能
    • OSPF的优点:
      • 安全:能够鉴别OSPF路由器之间的交换
      • 多条相同开销的路径:存在多条相等开销路径时,无需选择单一路径承载所有流量
      • 单播和多播路由选择的综合支持
      • 支持在单个AS中的层次结构:一个OSPF自治系统能够层次化配置多个区域
        • 每个区域,一台或多台区域边界路由器负责为该区域以外的分组提供路由选择
        • 每个AS中,只有一个OSPF区域被配置为主干区域,主干区域为该AS中其余区域之间的流量提供路由选择
        • 该主干包含所有的区域边界路由器和部分非边界路由器
        • AS中的路由选择要求,分组先到达区域边界路由器,然后通过主干区域到达目的区域的区域边界路由器,进而到最终目的地

ISP之间的路由选择:BGP

  • 当分组跨越多个AS进行路由时,需要一个自治系统间路由选择协议

  • 在因特网中所有的AS运行相同的AS间路由选择协议,称为边界网关协议

  • BGP将因特网中数以千计的ISP粘合起来(因特网中协议唯一可能竞争者是IP协议)

  • BGP是一种分布式和异步的协议

BGP作用

  • 每个路由器具有一台转发表,对于位于相同AS的目的地而言,转发表表项由AS内部路由协议决定,对于AS外部的目的地由AS间协议决定

  • BGP中分组路由到一个CIDR化的前缀,其中每个前缀代表一个子网或一个子网的集合

    • (x,i)形式
    • x代表前缀(138.16.68/22),i代表路由器的接口之一的接口号
  • BGP需要完成

    • 从邻居AS获得前缀的可达性信息,BGP允许每个子网向因特网其余所有部分通告它的存在,BGP确保因特网中过的所有AS知道该子网
    • 确定到该前缀的最好的路由,一台路由器可能直到多条通往同一前缀的不同路由,路由器本地运行一个BGP路由选择过程(使用从相邻路由器获得的的前缀可达信息),该最好的路由基于策略以及可达性信息来确定
  • 通告BGP路由信息

    • 每个AS内部每台路由器要么是一台网关路由器,要么是一台内部路由器
      • 网关路由器位于AS边缘,它链接到其他AS的一台或多台路由器
      • 内部路由器仅连接在他自己AS中的主机和路由器
    • 在BGP中每台路由器使用179端口的半永久TCP链接交换路由选择信息
    • 每条直接连接以及所有通过该链接发送的BGP报文称为BGP链接
    • 跨越两个AS的BGP链接称为外部BGP链接(eBGP)
    • 相同AS内部的BGP链接称为内部BGP链接(iBGP),iBGP不总是与物理链路相对应
  • 确定最好的路由

    • 路由器通过BGP链接通告前缀时,前缀包括一些BGP属性,前缀及其属性称为路由
    • 两个重要的属性是AS-PATHNEXT-HOP
      • AS-PATH包含通告已经通过的AS的列表
        • BGP路由器还通过该属性检测和防止通告环路(在通告中发现了它自己,拒绝该通告)
      • NEXT-HOP是AS-PATH起始的路由器接口的IP地址
    • 热土豆路由选择
      • 从所有可能的路由中选择到开始该路由的NEXT-HOP路由器具有最小开销的路由
      • 相同AS内部的两台路由器到达一个目的地可能具有不同AS路径
      • 转发表增加AS向外前缀时,AS间路由选择协议和AS内部路由选择协议都要用到
    • 路由器选择算法
      • 实际的BGP路由选择算法更为复杂
        • 进入BGP路由选择算法的输入是到某前缀的所有路由的集合,该前缀是已被路由器学习和接受的,仅有一条时选择该路由,否则顺序调用以下规则
          • 路由被指派一个本地偏好值作为其属性之一,它取决于该AS的网络管理员,最高本地偏好值路由被选择
          • 最短AS-PATH路由,如果该规则是唯一规则,BGP将使用距离向量算法决定路径,其中距离测度使用的是AS跳的跳数,而不是路由器跳数
          • 使用热土豆路由选择,最靠近NEXT-HOP路由器的路由
          • 使用BGP标识符选择路由
  • IP任播

    • BGP还常被用作实现IP任播服务,DNS常使用该服务
      • CDN为他的多台服务器指派相同的IP地址,并使用BGP来通告这些服务器的IP地址,而处于不同的客户访问该IP会被引导至不同的不同的服务器(最近)
      • DNS中,根服务器具有13个IP地址,但是每一个IP地址具有多台服务器,这些服务器分布在各地,用户访问这些根服务器时将通过IP任播路由到最近的根服务器

SDN控制平面

  • 控制分组在网络的SDN使能设备中转发网络范围逻辑
  • SDN四个关键特征
    • 基于流的转发:能够基于运输层、网络层或链路层中任意数量的首部字段值进行;SDN控制平面的工作是计算、管理和安装所有网络交换机中的流表项
    • 数据平面和控制平面分离
      • 数据平面由网络交换机组成,执行”匹配+操作“的规则
      • 控制平面由服务器以及决定和管理交换机流表的软件组成
    • 网络控制功能:位于数据平面交换机外部,控制平面本身有两个组成
      • 一个SDN控制器(网络操作系统)
        • 控制器维护准确的网络状态信息,为网络控制应用程序提供这些信息
        • 提供方法来让应用程序能够监视、编程和控制下面的网络设备
        • 控制器是逻辑上集中,通常由几台服务器实现
      • 若干网络控制应用程序:
    • 可编程的网络:
      • 运行在控制平面上的网路控制应用程序,使用了SDN控制器提供的API来定义和控制网络设备的数据平面
  • SDN促进了网络的分类,让计算硬件、系统软件和应用程序的分类,为计算机网络领域的创新提供了丰富、开放的生态系统

SDN控制器

  • 通信层:SDN控制器和受控网络设备之间的通信,需要一个协议来传送控制器与这些设备之间的信息(OpenFlow)
  • 网络状态管理层:由SDN控制平面所作出的最终控制决定,具有各类最新状态信息
  • 对于网络控制应用程序的接口:控制器通过他的”北向“接口和应用程序交互,该API允许应用程序在状态管理层之间读/写网络状态和流表,当状态改变事件出现时,应用程序能够注册进行通告

OpenFlow协议

  • OpenFlow协议运行在SDN控制器和SDN控制的交换机或其他实现OpenFlow API的设备之间
  • 运行在TCP之上,使用6653默认端口
  • 控制器流向受控交换机重要报文:
    • 配置:该报文允许控制器查询并设置交换机的配置参数
    • 修改状态:该报文由控制器使用,以增加/删除或修改交换机流表中的表项,并设置交换机端口特性
    • 读状态:从交换机的流表和端口收集统计数据和计算器的值
    • 发送分组:在受控交换机从特定的端口发送一个特定的报文
  • 受控交换机流向控制器重要报文:
    • 流删除:通知控制器已删除一个流表项
    • 端口状态:通知端口状态变化
    • 分组入:一个分组不与所有流表项匹配,这个分组被发给控制器进行额外处理

ICMP:因特网控制报文协议

  • ICMP被主机和路由器用来彼此沟通网络层的信息
  • ICMP的最典型用途是差错报告
  • ICMP作为有效载荷承载在IP报文段中
  • 指明上层协议为ICMP的IP数据报,分解出该数据报内容给ICMP
  • ICMP报文由一个类型字段和一个编码字段,并且包含引起该ICMP报文首次生成的IP数据报的首部和前8个字节(以便发送方能确定引起该差错的数据报)
  • ICMPv6还增加了新兴IPv6功能所需的新类型和编码
    • 分组太大
    • 未被认可的IPv6选项
    • 。。。

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

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

相关文章

php中文乱码或html中文乱码

参考gpt 一、在PHP中解决中文乱码问题的常见方案有以下几种: 设置字符编码: 在你的PHP代码中,可以使用header函数设置正确的字符编码。常见的字符编码是UTF-8,可以使用以下代码将页面的字符编码设置为UTF-8: header(Co…

do{ __HAL_RCC_GPIOH_CLK_ENABLE(); }while(0);

使用STM32 HAL库,专门用于在STM32微控制器上启用GPIOH (GPIO端口H)时钟。在此代码片段中,宏__HAL_RCC_GPIOH_CLK_ENABLE()用于启用GPIOH的时钟。do-while(0)结构通常用作为宏定义创建单行代码块的技巧。以这种方式使用do-while(0)结构允许宏像函数调用一…

3.3 右值引用:移动语义与完美转发

一、移动语义的引入 1.浅拷贝带来的问题 对于存在资源(文件,指针)类型成员的类对象,在执行拷贝的时候存在资源管理的问题,这是浅拷贝导致的。 此时我们可以重写拷贝构造实现深拷贝,解决资源管理的问题。 但是有的时候拷贝并不…

python实现 Qlearning算法 完整的输入输出测试数据

Q-learning是一种强化学习算法,用于解决基于动作-奖励机制的问题。以下是一个简单的 Python 实现 Q-learning 算法的示例,以解决一个简单的迷宫问题。 import numpy as np# 创建迷宫示例,用数字表示迷宫状态 # 0表示可通行的空格&#xff0c…

Mybatis Plus 多个SQL分布在多个Jar包如何全部加载

目录 1、问题 2、解决办法 3、还是不行怎么办(是的,我的就是两个项目一个行,一个还不行) 4、原因 1、问题 系统有多个JAR包,各自配置了不同的SQL XML配置文件,启动项目POM里也已经配置做了依赖&#xf…

疑难杂症汇总

linux安装32位库 sudo apt-get install libc6-dev-i386 sudo apt-get install lib32z1 带gdb调试bochs 安装相关依赖: sudo apt install build-essential libx11-dev libxrandr-dev libsdl1.2-dev vgabios bximage 安装脚本:进入bochs目录执行即可 …

【JavaScript】Set方法

基本用法 ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。 Set本身是一个构造函数,用来生成 Set 数据结构。 const s new Set();[2, 3, 5, 4, 5, 2, 2].forEach(x > s.add(x));for (let i of s) {co…

【QT】QDockWidget控件的使用

目录 1.概述 2.常用函数介绍 3.QDockWidget布局相关 4.QDockWidget的使用注意事项 5.使用场景 6.简单应用示例代码 1.概述 QDockWidget类提供了一个小部件,可以停靠在QMainWindow中,也可以作为桌面上的顶级窗口浮动。 QDockWidget提供了dock Widg…

EMC测试与整改实践?|深圳比创达电子

电磁兼容(EMC)测试和整改是当今社会对电磁兼容(EMC)意识日益深入的表现,EMC测试与整改随着社会对电磁环境要求的不断提高,越来越受到重视,下面就EMC测试与整改实践进行一下详细介绍。 一、什么是EMC测试? EMC测试是指在一定的电…

减速机振动相关标准 - 笔记

参考标准:国家标准|GB/T 39523-2020 减速机的振动标准与发动机不同,摘引: 原始加速度传感器波形 可以明显看到调幅波 它的驱动电机是300Hz~2000Hz范围的。这个采样时间是5秒,看分辨率至少1024线。可分出500条谱线。 频谱部分 …

干货分享 | 如何在TSMaster中对常用总线报文信号进行过滤?

TSMaster软件平台支持对不同总线(CAN、LIN、FlexRay)的报文和信号过滤,过滤方法一般有全局接收过滤、数据流过滤、窗口过滤、字符串过滤、可编程过滤,针对不同的总线信号过滤器的使用方法也基本相同。今天重点和大家分享一下关于T…

魔众文库系统v5.8.0版本发布:水印、分类与移动端升级,打造更高效文档管理体验

魔众文库系统迎来了全新的v5.8.0版本更新!此次更新不仅对水印功能进行了升级,还新增了辅助分类样式,同时优化了移动端体验。让我们一起来看看这次更新的亮点吧! 一、水印功能全新升级 在v5.8.0版本中,魔众文库系统的…

【开题报告】基于SpringBoot+Vue.js的社区管理系统的设计与实现

1.研究背景 社区管理系统是近年来随着社区发展和居民需求增加而兴起的一种信息化管理工具。传统的社区管理方式存在信息传递不畅、居民参与度低、管理效率低下等问题,因此需要引入现代化的信息技术手段来改善社区管理工作。 Spring Boot是一个轻量级的Java后端开发…

Spring学习?这一篇文章就够,史上最全!

文章目录 前言一、IOC概述及底层原理1.概述和原理 二、思路分析三、IOC操作bean管理(基于xml,使用的是IDEA2022.3.3,maven仓库)1.xml实现bean管理(1)创建对象(2)注入属性&#xff08…

[HTML]Web前端开发技术3(HTML5、CSS3、JavaScript )超链接,target,scrolling,marginwidth,frameborder,iframe——喵喵画网页

希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,佬佬会看到更多有趣的博客哦!!! 喵喵喵,你对我真的…

【极客公园 IF 2024】王小川:AGI时代产品创新的起点,从PMF到TPF

文章目录 01 国王与画匠,寻找 AI Native 的寓言02 PMF 考核用户量,TPF 要看测试集03 新时代的创业者,首先要是大模型的超级玩家04 今天的大模型是「快思考」,AI 需要「慢思考」05 理想上慢一步,落地上快三步06 百川创业…

c语言:[输出函数]与[输入函数]|要点简述

一、【输出函数】 printf() 与 puts()的不同点 1、printf()函数 printf()支持单个字符%c的输出,以及字符串%s的输出。 (1)如果是以%c的形式输出,是一个字符一个字符的输出。因此,要用一个循环语句,把字符逐个输出。 (2)而用%…

骨传导耳机和气传导耳机有什么区别?谁更值得入手?

先说答案,骨传导耳机和气传导耳机的佩戴方式和传声方式不同,并且骨传导耳机相比于气传导耳机更值得入手。 一、骨传导耳机和气传导耳机有什么区别 1、佩戴方式不同 骨传导耳机采用一体式耳挂佩戴或耳夹式佩戴,气传导耳机采用分体式耳挂设计…

羊大师揭秘,皮肤保湿不如喝点羊奶?

羊大师揭秘,皮肤保湿不如喝点羊奶? 在寒冷的冬季,人们常常会发现自己的皮肤变得干燥、粗糙,甚至出现裂纹。而这时候,大家或许很难联想到喝点羊奶能够改善这一问题。但是小编羊大师发现,事实上羊奶确实可以…

前端开发中的webpack打包工具

前端技术发展迅猛,各种可以提高开发效率的新思想和框架层出不穷,但是它们都有一个共同点,即源代码无法直接运行,必须通过转换后才可以正常运行。webpack是目前主流的打包模块化JavaScript的工具之一。 本章主要涉及的知识点有&am…