【SDN:逻辑上集中的控制平面,路由选择算法,LS路由工作过程,距离矢量路由选择(distance vector routing)】

本文主要是介绍【SDN:逻辑上集中的控制平面,路由选择算法,LS路由工作过程,距离矢量路由选择(distance vector routing)】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • SDN:逻辑上集中的控制平面
    • SDN的主要思路
    • SDN控制平面和数据平面分离的优势
    • SDN 架构: 数据平面交换机
  • 路由选择算法
    • 路由(route)的概念
    • 最优化原则(optimality principle)
    • 路由的原则
    • 路由算法的分类
    • LS路由工作过程(相当于一个上帝)
    • 链路状态路由选择(link state routing)
    • Dijkstra算法的讨论
    • 距离矢量路由选择(distance vector routing)
    • 距离矢量算法
    • 距离矢量路由选择(distance vector routing)

SDN:逻辑上集中的控制平面

一个不同的(通常是远程)控制器和CA交互,控制器决定分组
转发的逻辑(可编程),CA所在设备执行逻辑。
在这里插入图片描述

SDN的主要思路

  • 网络设备数据平面和控制平面分离
  • 数据平面-分组交换机
    • 将路由器、交换机和目前大多数网络设备的功能进一步抽象成:按照流表(由控制平面设置的控制逻辑)进行PDU帧、分组)的动作(包括转发、丢弃、拷贝、泛洪、阻塞)
    • 统一化设备功能:SDN交换机(分组交换机),执行控制逻辑

SDN控制平面和数据平面分离的优势

  • 水平集成控制平面的开放实现(而非私有实现),创造出好的产业生态,促进发展
  • 集中式实现控制逻辑,网络管理容易
  • 基于流表的匹配+行动的工作方式允许“可编程的”分组交换机
    网络操作系统上的应用可以收集信息。计算流表,按照南向接口来下发流表,网络可编程。通过网络操作系统上的网络应用,编程结果,形成流表,通过数据平面和控制平面的南向接口,将流表下发给分组交换机。南向接口将分组交换机当前控制器上报给SDN控制器

SDN 架构: 数据平面交换机

数据平面交换机

  • 快速,简单,商业化交换设备采用硬件实现通用转发功能
  • 流表被控制器计算和安装
  • 基于南向API(例如OpenFlow),SDN控制器访问基于流的交换机
  • 也定义了和控制器的协议 (e.g., OpenFlow)

路由选择算法

路由(route)的概念

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

最优化原则(optimality principle)

  • 汇集树
    - 此节点到所有节点的最优路径形成的树
    - 路由选择算法就是为所有路由器找到并使用汇集树
    在这里插入图片描述
    不可能会出现回路

路由的原则

  • 路由选择算法的原则
    • 正确性(correctness):算法必须是正确且完整的,能够正确找到目标站,在路由表中都能找到完整的表项
    • 简单性(simplicity):最优但是复杂的算法,时间延迟大,不实用
    • 健壮性(robustness):算法能够适应通信量和网络拓扑的变化

路由算法的分类

全局或者局部路由信息?
全局:

  • 所有的路由器拥有完整的拓扑和边的代价信息
  • “link state”算法
    分布式(各邻居到其它子网的信息,在我自己这里做一个汇集):
  • 路由器只知道与它物理连接关系的邻居路由器,和到相应邻居路由器的代价值
  • 迭代地与邻居交换路由信息,计算路由信息
  • “distance vector”算法
    静态还是动态的?
    静态:
  • 路由随时间变化缓慢
    动态:
  • 路由变化很快
    • 周期性更新
    • 根据链路代价的变化而变化
      非自适应算法(non-adaptive algorithm):不能适应网络拓扑和通信量的变化,路由表是事先计算好的
      自适应路由选择(adaptive algorithm):能适应网络拓扑和通信量的变化

LS路由工作过程(相当于一个上帝)

  • 配置LS路由选择算法的路由工作过程
  • 各点通过各种渠道获得整个网络拓扑, 网络中所有链路代价等信息(这部分和算法没关系,属于协议和实现)
  • 使用LS路由算法,计算本站点到其它站点的最优路径(汇集树),得到路由表
    在这里插入图片描述

链路状态路由选择(link state routing)

  • LS路由的基本工作过程
    1.发现相邻节点,获知对方网络地址
    在这里插入图片描述

    2.测量到相邻节点的代价(延迟,开销)
    在这里插入图片描述

    3.组装一个LS分组,描述它到相邻节点的代价情况
    在这里插入图片描述

    4.将分组通过扩散的方法发到所有其它路由器以上4步让每个路由器获得拓扑和边代价
    在这里插入图片描述
    在这里插入图片描述

    5.通过Dijkstra算法找出最短路径(这才是路由算法)
    在这里插入图片描述
    在这里插入图片描述

  • 有两类节点

    • 临时节点(tentative node) :还没有找到从源节点到此节点的最优路径的节点
    • 永久节点(permanent node) N’:已经找到了从源节点到此节点的最优路径的节点
  • 初始化

    • 除了源节点外,所有节点都为临时节点
    • 节点代价除了与源节点代价相邻的节点外,都为∞
  • 从所有临时节点中找到一个节点代价最小的临时节点,将之变成永久节点(当前节点)W

  • 对此节点的所有在临时节点集合中的邻节点(V)

  • 开始一个新的循环

例;

在这里插入图片描述

Dijkstra算法的讨论

算法复杂度: n节点

  • O(n2)
    在这里插入图片描述
    后面可能轻载变拥塞,变成重载路径。

距离矢量路由选择(distance vector routing)

  • 动态路由算法之一
  • 每个节点定期测量与邻居距离矢量,选代价最小的。
  • 代价及相邻节点间代价的获得
    • 跳数(hops), 延迟(delay),队列长度
    • 相邻节点间代价的获得:通过实测
  • 路由信息的的更新
    找到一个最小的代价,和相应的下一个节点Z,到达节点B经过此节点Z,并且代价为A-Z-B的代价
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

距离矢量算法

异步式,迭代:每次本地迭代被以下事件触发:

  • 我到邻居链路代价发生变化
  • 邻居将距离矢量传给我,这个距离矢量变化了,就导致我对距离矢量做迭代更新。
    分布式:
  • 每个节点只是在自己的DV改变之后向邻居通告

距离矢量路由选择(distance vector routing)

  • DV的特点
    好消息传得快,坏消息传得慢。
    • 好消息:某个路由器接入或有更短的路径
    • 坏消息的传播速度非常慢(无穷计算问题)可能形成环路

在这里插入图片描述

这篇关于【SDN:逻辑上集中的控制平面,路由选择算法,LS路由工作过程,距离矢量路由选择(distance vector routing)】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/972120

相关文章

找完工作该补充的东西

首先: 锻炼身体,包括乒乓球,羽毛球,都必须练习,学习,锻炼身体等是一个很重要的与人交际沟通的方式; 打牌,娱乐:会玩是一个人很重要的交际沟通的法宝; 摄影:这个是一个兴趣爱好,也是提高自己的审美,生活品质,当然也是与人沟通的重要途径; 做饭:这个的话就是对自己,对朋友非常有益的一件事情;

C/C++的编译和链接过程

目录 从源文件生成可执行文件(书中第2章) 1.Preprocessing预处理——预处理器cpp 2.Compilation编译——编译器cll ps:vs中优化选项设置 3.Assembly汇编——汇编器as ps:vs中汇编输出文件设置 4.Linking链接——链接器ld 符号 模块,库 链接过程——链接器 链接过程 1.简单链接的例子 2.链接过程 3.地址和

(超详细)YOLOV7改进-Soft-NMS(支持多种IoU变种选择)

1.在until/general.py文件最后加上下面代码 2.在general.py里面找到这代码,修改这两个地方 3.之后直接运行即可

工作流Activiti初体验—流程撤回【二】

已经玩工作流了,打算还是研究一下撤回的功能。但是流程图里面并不带撤回的组件,所以需要自己动态改造一下,还是延续上一个流程继续试验撤回功能。《工作流Activiti初体验【一】》 完整流程图 我们研究一下分发任务撤回到发起任务,其他环节的撤回类似 撤回的原理大概如下: 将分发任务后面的方向清空,把发起任务拼接到原来的判断网关,然后结束分发任务,这样流程就到发起任务了 此时的流程如上图,

工作流Activiti初体验【一】

在这里记录一下我的Activiti历程:(以下示例不涉及真实业务,所有逻辑均建立在学习的基础上) bpmn图 发起任务我设置了一个权限组user1,只要是这个权限的用户都可以发起任务 分发任务我设置了一个用户组,用户组中每个用户都可以处理这步流程,只要有一个人处理这步任务,分发的流程就算结束了 分发任务这一环节还有个判断,允许任务下发和不允许任务下发 任务分发完成则来到子流程,每个被分

代码随想录算法训练营:12/60

非科班学习算法day12 | LeetCode150:逆波兰表达式 ,Leetcode239: 滑动窗口最大值  目录 介绍 一、基础概念补充: 1.c++字符串转为数字 1. std::stoi, std::stol, std::stoll, std::stoul, std::stoull(最常用) 2. std::stringstream 3. std::atoi, std

人工智能机器学习算法总结神经网络算法(前向及反向传播)

1.定义,意义和优缺点 定义: 神经网络算法是一种模仿人类大脑神经元之间连接方式的机器学习算法。通过多层神经元的组合和激活函数的非线性转换,神经网络能够学习数据的特征和模式,实现对复杂数据的建模和预测。(我们可以借助人类的神经元模型来更好的帮助我们理解该算法的本质,不过这里需要说明的是,虽然名字是神经网络,并且结构等等也是借鉴了神经网络,但其原型以及算法本质上还和生物层面的神经网络运行原理存在

vue子路由回退后刷新页面方式

最近碰到一个小问题,页面中含有 <transition name="router-slid" mode="out-in"><router-view></router-view></transition> 作为子页面加载显示的地方。但是一般正常子路由通过 this.$router.go(-1) 返回到上一层原先的页面中。通过路由历史返回方式原本父页面想更新数据在created 跟mounted

Java研学-RBAC权限控制(八)

九 登录登出 1 登录作用   判断员工是否有权限访问,首先得知道现在操作的人是谁,所以必须先实现登录功能 2 登录流程   ① 提供登录页面,可输入用户名与密码信息,并添加执行登录的按钮。(登录页面不能被拦截)   ② 给按钮绑定点击事件(异步操作,POST请求)   ③ 事件中发送登录请求,使用 AJAX 方式提交。(使用 AJAX 原因:用户体验更好,既可保留用户刚输入的用户名和密码

大林 PID 算法

Dahlin PID算法是一种用于控制和调节系统的比例积分延迟算法。以下是一个简单的C语言实现示例: #include <stdio.h>// DALIN PID 结构体定义typedef struct {float SetPoint; // 设定点float Proportion; // 比例float Integral; // 积分float Derivative; // 微分flo