计算机网络|第五章:网络层:控制平面

news2024/11/29 6:35:21

目录

📚概述

📚路由选择算法⭐️

🐇链路状态路由选择算法

⭐️Dijkstra算法

🐇距离向量路由选择算法

⭐️DV算法

🐇LS与DV路由选择算法的比较

📚因特网中自洽系统内部的路由:OSPF

📚ISP之间的路由选择:BGP

🐇BCP的作用

⭐️通告BGP路由信息

⭐️确定最好的路由

📚SDN控制平面


📚概述

在本章中,我们将学习这些转发表和流表是如何计算、维护和安装的。在上一章我们了解到完成这些工作有两种可能的方法:

  • 每路由器控制:每台路由器中都包含转发和路由选择功能。每台路由器有一个路由选择组件,用于与其他路由器中的路由选择组件通信,以计算其转发表的值。

  •  逻辑集中式控制:通过“匹配加动作”抽象允许执行传统的IP转发以及其他功能的丰富集合,而这些功能先前是在独立的中间盒中实现的。

📚路由选择算法⭐️

  • 路由选择算法:其目的是从发送方到接收方的过程中确定一条通过路由器网络的好的路径。通常,一条好路径指具有最低开销的路径。
  • 主机通常直接与一台路由器相连,该路由器即为该主机的默认路由器第一跳路由器源主机默认路由器称为源路由器,目的主机默认路由器称为目的路由器
  • 一个分组从源主机到目的主机,从源路由器到目的路由器。 

第一种分类方法:(根据算法是集中式还是分散式来划分)

  • 集中式路由选择算法:用完整、全局性的网络信息计算出最短路径(最低费用路径)。也就是说,该算法以所有节点之间的连通性及所有链路的开销为输入。具有全局状态信息的算法通常被称为链路状态算法(LS)。
  • 分散式路由选择算法迭代、分布式的方式计算最短路径。​ 没有结点拥有关于网络链路的完整信息,每个结点仅有与其直接相连链路的信息即可工作 。通过迭代计算并与相邻结点交换信息,逐渐计算出最低费用路径,如距离向量算法(DV) ​ 。

第二种分类方法:(根据算法是静态的还是动态的来划分)

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

第三种分类方法:(根据算法是负载敏感还是负载迟钝的来划分)

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

🐇链路状态路由选择算法

由上可知,在链路状态算法中,网络拓扑和所有的链路开销都是已知的,也就是说可以用作LS算法的输入。

⭐️Dijkstra算法

Dijkstra算法计算从某节点(源节点,称为u)到网络中所有其他节点的最低开销路径。它是迭代算法,其性质是经算法的第k次迭代后,可知道到k个目的节点的最低开销路径。

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

针对Dijkstra算法本身,捞数据结构笔记(主要看图解):第十七章:贪婪算法 | 拓扑排序 | Dijkstra算法 | Kruskal算法 | Prim算法

如何防止链路状态算法中出现的振荡?

  • 确保并非所有的路由器都同时进行LS算法。我们希望即使路由器以相同周期运行LS算法,在每个节点上算法执行的时机也是不同的。
  • 研究人员注意到因特网上的路由器能够在它们之间进行自同步,也就是即使它们初始时以同一周期但在不同时刻执行算法,算法执行时机最终会在路由器上变成同步并保持。
  • 避免这种自同步的一种方法是,让每台路由器发送链路通告的时间随机化。

🐇距离向量路由选择算法

距离向量算法是一种迭代的、异步的、分布式算法,而LS算法是一种使用全局信息的算法。

  • 分布式每个节点要从一个或多个直接相连邻居接收某些信息,计算,将计算结果发给邻居。
  • 迭代:过程持续到邻居之间无更多信息交换。
  • 异步:不要求所有节点相互步伐一致操作。

⭐️DV算法

Bellman-Ford方程

d_x(y)=min_v \left \{c(x,v)+d_v(y) \right \}

关键就是那个公式,核心就是找最小。如下图:


路由选择环路,无穷计数问题:增加毒性逆转。欺骗费用无穷大。如果z通过y路由选择到目的地x,则z通告y,它(z)到x的距离是无限大。 解决两个直接相连无穷计数问题。

🐇LS与DV路由选择算法的比较

  • 报文复杂性:显然LS复杂得多,每条链路费用改变都要通知所有结点
  • 收敛速度:DV算法收敛较慢,且会遇到路由选择环路和无穷计数问题
  • 健壮性:路由器发生故障,LS结点仅计算自己的转发表,提供了一定健壮性;DV算法一个不正确的结点会扩散到整个网络

📚因特网中自洽系统内部的路由:OSPF

自洽系统(AS):

  • 每个AS由一组通常处在相同管理控制下的路由器组成。
  • 通常在一个ISP中的路由器以及互联它们的链路构成一个AS。
  • 在相同AS中的路由器都运行相同的路由选择算法并且有彼此的信息。在一个自洽系统内运行的路由选择算法叫作自洽系统内部路由选择协议
  • AS内部路由选择协议,又称内部网关协议
    • 路由选择信息协议RIP,通常设置在下层ISP中
    • 开放最短优先OSPF,通常设置在上层ISP中
  • OSPF核心:使用洪泛链路状态信息的LS协议 + Dijkstra最低费用路径算法。各条链路费用(权值)是管理员配置的。OSPF是基于链路状态的。
  • 使用OSPF,一台路由器构建了整个AS的拓扑图,然后在本地运行Dijkstra算法。
  • 使用OSPF,路由器向AS内所有其他路由器广播路由选择信息。即使链路未发生变化,也要周期性广播链路状态(at least 30 minutes at a time)
  • OSPF报文由IP直接承载,优点:
    • 安全:能够鉴别OSPF路由器之间的交换,仅有受信任的路由器能参与AS内的OSPF协议。包括使用MD5加密
    • 多条相同费用路径:无需仅选择单一路径承载所有流量。
    • 对单播与多播路由选择的综合支持:支持单播多播路由选择。
    • 支持在单个路由选择域内的层次结构:
      • 具有按层次结构构造一个自治系统的能力。
      • 一个OSPF自洽系统可以配置成多个区域,每个区域运行自己的OSPF链路状态路由选择算法,一个区域内每台路由器可以向该区域其他路由器广播链路状态。
      • 一个区域内,一台或多台区域边界路由器负责为流向该区域以外的分组提供路由选择。
      • AS内只有一个OSPF区域配置成主干区域,为其他区域之间的流量提供路由选择。
      • 该主干包含AS内所有区域边界路由器,也可能包含一些非边界路由器。
      • 在AS中的区域间的路由选择要去分组先路由到一个区域边界路由器,然后通过主干路到位于目的区域的区域边界路由器,从而再路由到最终目的地

📚ISP之间的路由选择:BGP

因为AS间路由选择协议涉及多个AS之间的协调,所以AS通信必须运行相同的AS间路由选择协议,在因特网中,所有AS运行相同的AS间路由选择协议,称为边界网关协议(BGP)。

🐇BCP的作用

作为一种AS间的路由选择协议,BGP为每台路由器提供了一种完成以下任务的手段:

  • 从邻居AS获得前缀的可达性信息:特别是,BGP允许每个子网向因特网其余部分通告它的存在。一个子网高声宣布『我在这!』,而BGP确保因特网中所有AS知道该子网。如果没有BGP的话,每个子网都将是隔离的孤岛。
  • 确定到该前缀的“最好的”路由:一台路由器可能知道两条或更多条到特定前缀的不同路由。为了确定最好的路由,该路由器将本地运行一个BGP路由选择过程。该最好路由将基于策略以及可达性信息来确定。

⭐️通告BGP路由信息

  • 如上图,AS3包括一个具有前缀x的子网。
  • 对于每个AS,每台路由器要么是一台网关路由器,要么是一台内部路由器:
    • 网关路由器是位于AS边缘的路由器(1c),直接连接到其他AS中的一台或多态路由器。
    • 内部路由器仅连接在它自己AS中的主机和路由器(1a)。

  • 在BGP中 ,每对路由器通过使用179端口的半永久TCP连接交换路由选择信息。
  • 每条直接连接以及所有通过该连接发送的BGP报文,称为BGP连接。此外,跨越两个AS的BGP连接称为外部BGP(eBGP)连接,而在相同AS中的两台路由器之间的BGP会话称为内部BGP(iBGP)连接。

⭐️确定最好的路由

相关BGP术语

  • 前缀及其属性称为路由。两个较为重要的属性是AS-PATH和NEXT-HOT。
    • AS-PATH该属性包含了前缀通告已经通过的AS,当一个前缀传送到一个AS时,AS将其ASN增加到AS-PATH中。路由器使用AS-PATH属性检测和防止循环通告 路由器使用AS-PATH在多条路径中选择相同的前缀
    • NEXT-HOP是AS-PATH起始的路由器接口的IP地址,路由器使用该属性正确地配置它们的转发表。使用NEXT-HOP值和AS内部路由选择算法,路由器能确定到每条对等链路的路径的费用,用热土豆路由选择决定适当的接口 。

BGP路由选择

  • BGP使用eBGP和iBGP向在AS中的所有路由器发布路由,路由器可能知道到达任何一条前缀的多条路由。消除规则从上到下:
    • 选择具有最高本地偏好值(管理员决定)的路由。
    • 选择具有最短AS-PATH的路由:AS的跳数
    • 最靠近NEXT-HOP路由器的路由,最靠近指最低费用路径最低,由AS内部算法决定(hot potato routing):热土豆路由。
    • 使用BGP标识符选择路由。

📚SDN控制平面

  • SDN是一种网络架构,它将网络控制平面(Control Plane)与数据转发平面(Data Plane)分离开来,使得网络管理员可以通过集中式的软件控制器来管理整个网络。
  • 传统的网络架构中,网络设备(如交换机、路由器等)通常自己负责决策并执行数据包的转发。而在 SDN 中,网络设备只负责数据包的转发,而决策逻辑则由集中式的控制器来完成
  • 这样做的好处在于,网络管理员可以通过集中式的控制器来实现对整个网络的管理和控制,从而提高网络的可靠性、安全性和灵活性。

SDN 的主要作用包括:

  • 简化网络管理:SDN 可以将网络管理集中到一个控制器中,从而简化网络管理流程,提高管理效率。
  • 提高网络灵活性:SDN 可以根据需求动态地调整网络拓扑结构,从而满足不同的应用需求。
  • 提高网络安全性:SDN 可以通过集中式的控制器来实现对网络流量的监控和管理,从而提高网络的安全性。
  • 降低网络成本:SDN 可以通过集中式的控制器来优化网络资源的利用,从而降低网络成本。

参考教程:

  • 中科大郑烇、杨坚全套《计算机网络(自顶向下方法 第7版)》
  • 计算机网络简明教程及仿真实验

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

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

相关文章

chatgpt赋能python:Python取消关机:让你摆脱关机的烦恼

Python取消关机:让你摆脱关机的烦恼 作为一名有10年Python编程经验的工程师,我深知电脑在工作中的重要性和关机时带来的不便。有的时候你可能会忘记保存数据,或是需要长时间运行的程序正在进行,而突然被迫关机是非常让人头疼的。…

chatgpt赋能python:Python是炒股的好工具吗?——一个有10年python编程经验的工程师的分析

Python 是炒股的好工具吗?—— 一个有10年python编程经验的工程师的分析 作为一个有10年python编程经验的工程师,我深深地了解了Python的能力和潜力。 它不仅是一种流行的编程语言,还是一个强大的功能开发平台。它包括很多库,如P…

Maven高级——继承与聚合——继承关系实现

将Maven拆分成多个项目之后又会引发新的问题,继承与聚合就是用来解决这些问题。 这里的继承就像java中类和类之间的继承一样,工程之间也是可以实现继承的。 继承解决的问题 在之前拆分的三个模块中每个都配置了一个lombok的依赖,每一个mav…

【ARMv8 SIMD和浮点指令编程】NEON 减法指令——减法也好几种

向量减法包括常见的普通加指令,还包括长减、宽减、半减、饱和减、按对减、按对加并累加、选择高半部分结果加、全部元素加等。 1 SUB 减法(向量),该指令从第一个源 SIMD&FP 寄存器中的相应向量元素中减去第二个源 SIMD&…

旧改快讯--宝安又一项目计划失效:有效期内专规未获批

西井工业区城市更新单元计划(失效)公告 西井工业区城市更新单元原列入了《2019年深圳市宝安区城市更新单元五批计划》,更新单元计划有效期3年9个月,自2019年8月12日起至2023年5月11日止;该项目在计划有效期内更新单元规…

GAN培训挑战:用于彩色图像的DCGAN

GAN培训挑战:用于彩色图像的DCGAN 1. 效果图2. 原理2.1 用于彩色图像的 DCGAN2.3 准备数据2.4 生成器2.5 鉴别器2.6 DCGAN模型及回调函数2.7 GAN培训挑战2.8 未能聚合(Non-convergence)2.9 模式崩溃(Mode collapse)2.1…

chatgpt赋能python:Python取元素里的数字

Python取元素里的数字 Python是一种高级编程语言,它的使用范围非常广泛,在数据科学、人工智能、网络编程等领域都有很多应用。在Python程序中,我们经常需要从字符串或列表中提取数字,这篇文章将介绍在Python中如何取元素里的数字…

Anolis OS8 磁盘扩容

最近学习的时候,使用Vmware安装了AnolisOS8进行测试,随着学习的深入,组件安装越来越多,磁盘不够用了,但是安装的组件又太多,重新装个虚拟机又得重新装各种组件。所以决定对磁盘进行扩容,在这里做…

chatgpt赋能python:Python如何只提取文本中的数字?

Python如何只提取文本中的数字? 随着数字化时代的到来,数字成为了我们生活中不可或缺的一部分。我们每天都需要处理大量的数字,比如账单、统计数据等等,这些数字都散落在各个文本中。如果我们需要将这些数字提取出来,…

计算机视觉:目标检测理论及实战

有关锚框的部分可以看我的另一篇文章:点击这里。下文不再赘述 文章目录 多尺度目标检测多尺度锚框 数据集单发多框检测(SSD)模型设计类别预测层边界框预测层连结多尺度的预测高和宽减半块基本网络块完整的模型 训练导入数据集定义损失函数Utils函数(用于为每个锚框标…

【内网穿透】Linux本地搭建GitLab服务器

文章目录 前言1. 下载Gitlab2. 安装Gitlab3. 启动Gitlab4. 安装cpolar内网穿透5. 创建隧道配置访问地址6. 固定GitLab访问地址6.1 保留二级子域名6.2 配置二级子域名 7. 测试访问二级子域名 转载自cpolar极点云文章:Linux搭建GitLab私有仓库,并内网穿透实…

chatgpt赋能python:Python取款:让你的银行账户管理更智能

Python取款:让你的银行账户管理更智能 介绍 Python不仅是一种全球广泛应用的计算机编程语言,而且还拥有很多适合财务管理和数据处理的工具,用于提高效率和减少错误。本文将重点介绍如何使用Python自动管理银行账户的取款,以及它…

chatgpt赋能python:Python句点:为什么它如此重要?

Python句点:为什么它如此重要? 介绍 Python是一种高级编程语言,它以简单且易理解的语法而闻名。Python中有一种符号——句点(.),它在Python中扮演着非常重要的作用。在本文中,我们将深入研究P…

chatgpt赋能python:Python只取小数

Python只取小数 Python是一种高级编程语言,被广泛应用于数据科学、人工智能、Web开发等领域。在数据分析和计算中,往往需要只保留小数,本文将介绍如何使用Python只取小数,并提供相关代码。 什么是小数? 在数学中,小…

Golang每日一练(leetDay0086) 回文链表、删除链表节点

目录 234. 回文链表 Palindrome Linked-list 🌟 237. 删除链表中的节点 Delete Node In a Linked-list 🌟🌟 🌟 每日一练刷题专栏 🌟 Rust每日一练 专栏 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练…

安卓逆向 -- Frida环境搭建(HOOK实例)

一、开启抓包程序Postern和Charles 二、目标分析 打开jadx,把apk拖拽进去,全局搜索"pwd",挨个分析,明显来自于这条代码,后面是md5,可以判断pwd加密是md5,我们hook该地方 三、Frida环…

【23种设计模式】观察者模式(Observer Pattern)

个人主页:金鳞踏雨 个人简介:大家好,我是金鳞,一个初出茅庐的Java小白 目前状况:22届普通本科毕业生,几经波折了,现在任职于一家国内大型知名日化公司,从事Java开发工作 我的博客&am…

二叉树的链式结构 - C语言(含有大量递归)

目录: 🍔前言 🍔二叉树链式结构的实现 🍟基本构架 😍代码: 🍔二叉树的遍历 🍟前序遍历 🍟中序遍历 🍟后序遍历 🍟层序遍历 &#x1f53…

chatgpt赋能python:Python快捷键:轻松运行你的代码

Python快捷键:轻松运行你的代码 Python是一种广泛使用的编程语言,因为它易于学习、易于使用,并提供了许多强大的库和框架。但是,在日常使用中经常需要重复与代码交互的操作,这可能会降低编程效率。使用Python快捷键可…

day43:1049. 最后一块石头的重量 II; 474. 一和零; 494.目标和:有多少种方式装满背包

01背包 [1049. 最后一块石头的重量 II (与416分割等和子集类似)](https://leetcode.cn/problems/last-stone-weight-ii/submissions/436837708/)1. dp数组以及下标名义2. 递归公式3. dp数组如何初始化4. 遍历顺序:从后往前遍历5. 代码 494.目标和:有多少种方式装满背包1. dp数组…