计算机网络——30SDN控制平面
SDN控制平面
SDN架构
数据平面交换机
- 快速、简单,商业化交换设备采用硬件实现通用转发功能
- 流表被控制器计算和安装
- 基于南向API,SDN控制器访问基于流的交换机
- 定义了哪些可以被控制哪些不能
- 也定义了和控制器的协议

SDN控制器(网络OS)
- 维护网络状态信息
- 通过上面的北向API和网络控制应用交互
- 通过下面的南向API和网络交换机交互
- 逻辑上集中,但是在实现上通常由于性能、可拓展性、容错性以及鲁棒性采用分布式方法实现

控制应用
网络控制应用:
- 控制的大脑:采用下层提供的服务(SDN控制器提供的API)实现网络功能
- 路由器、交换机
- 接入控制防火墙
- 负载均衡
- 其他功能
- 非绑定:可以被第三方提供,与控制器厂商以通常上不同,与分组交换机厂商也可以不同

SDN控制器里的原件

通信层:SDN控制器和SDN交换机之间进行通信
网络范围的状态管理层:网络链路、交互设备和服务的状态:分布式数据库
网络控制应用的界面层:抽象API
OpenFlow协议
- 控制器和SDN交换机交互的协议
- 采用TCP来交换报文
- 加密可选
- 3种OpenFlow报文类型
- 控制器 > 交换机
- 异步(交换机 > 控制器)
- 对称

控制器 - 交换机报文
一些关键的控制器到交换机的报文
- 特性:交换机查询交换机特性,交换机应答
- 配置:交换机查询/设置交换机的配置参数
- 修改状态:增加删除修改OpenFlow表中的流表
- packet-out:控制器可以将分组通过特定的端口发出
- 分组进入:将分组(和它的控制)传给控制器,见来自控制器的packet-out报文
- 流移除:在交换机上删除流表项
- 端口状态:通告控制器报文端口的变化
幸运的是,网络管理员不需要直接通过创建/发送流表来编程交换机,而是采用在控制器上的app自动运算和配置
控制 - 数据平面交互的例子

- S1, 经历了链路失效,采用OpenFlow报文通告控制器:端口状态报文
- SDN 控制器接收OpenFlow报文,更新链路状态信息
- Dijkstra路由算法应用被调用(前面注册过这个状态变化消息)
- Dijkstra路由算法访问控制器中的网络拓扑信息,链路状态信息计算新路由
- 链路状态路由app和SDN控制器中流表计算元件交互,计算出新的所需流表
- 控制器采用OpenFlow在交换机上安装新的需要更新的流表
OpenDaylight()ODL控制器

- ODL Lithium 控制器
- 网络应用可以在SDN 控制内或者外面
- 服务抽象层SAL:和内部以及外部的应用以及服务进行交互
- 控制应用和控制器分离(应用app在控制器外部)
- 意图框架:服务的高级规范:描述什么而不是如何
- 相当多的重点聚焦在分布式核心上,以提高服务的可靠性,性能的可扩展性
SDN面临的挑战
- 强化控制平面:可信、可靠、性能可扩展性、安全的分布式系统
- 对于失效的鲁棒性: 利用为控制平面可靠分布式系统的强大理论
- 可信任,安全:从开始就进行铸造
- 网络、协议要满足特殊任务的需求,例如实时性,超高可靠性、超高安全性
- 要满足互联网络范围内的扩展性而不是仅仅在一个AS的内部部署,全网部署
相关文章:
计算机网络——30SDN控制平面
SDN控制平面 SDN架构 数据平面交换机 快速、简单,商业化交换设备采用硬件实现通用转发功能流表被控制器计算和安装基于南向API,SDN控制器访问基于流的交换机 定义了哪些可以被控制哪些不能 也定义了和控制器的协议 SDN控制器(网络OS&#…...
Obsidian插件-高亮块(Admonition)
在插件市场里面搜索Admonition并安装插件,就可以使用高亮块了。 添加高亮块 用法稍微有一些不同。按照下面的格式,输入Markdown就可以创建一个高亮块。 内容内容内容输入*ad-*会出现相应的类型可以选择...
jHipster 之 webflux-前端用EventSource处理sse变成了批量处理而非实时处理
现象: const eventSource new EventSource(API_URL5);eventSource.onmessage streamEvent > {console.log(a message is come in--------->);const content streamEvent.data;console.log(Received content: content);};前端用EventSource 处理webflux的…...
原型链-(前端面试 2024 版)
来讲一讲原型链 原型链只存在于函数之中 四个规则 1、引用类型,都具有对象特性,即可自由扩展属性。 2、引用类型,都有一个隐式原型 __proto__ 属性,属性值是一个普通的对象。 3、引用类型,隐式原型 __proto__ 的属…...
网络套接字补充——UDP网络编程
五、UDP网络编程 1.对于服务器使用智能指针维护生命周期;2.创建UDP套接字;3.绑定端口号,包括设置服务器端口号和IP地址,端口号一般是2字节使用uint16_t,而IP地址用户习惯使用点分十进制格式所以传入的是string类型…...
自动化测试 —— Pytest fixture及conftest详解
前言 fixture是在测试函数运行前后,由pytest执行的外壳函数。fixture中的代码可以定制,满足多变的测试需求,包括定义传入测试中的数据集、配置测试前系统的初始状态、为批量测试提供数据源等等。fixture是pytest的精髓所在,类似u…...
Scala第十四章节(隐式转换、隐式参数以及获取列表元素平均值的案例)
章节目标 掌握隐式转换相关内容掌握隐式参数相关内容掌握获取列表元素平均值的案例 1.隐式转换和隐式参数介绍 隐式转换和隐式参数是Scala中非常有特色的功能,也是Java等其他编程语言没有的功能。我们可以很方便地利用 隐式转换来丰富现有类的功能。在后续编写Ak…...
VsCode的json文件不允许注释的解决办法
右下角找到注释点进去 输入Files: Associations搜索出此项 改为项为*.json值为jsonc保存即可 然后会发现VsCode的json文件就允许注释了...
利用图像识别进行疾病诊断
利用图像识别进行疾病诊断是人工智能和机器学习技术在医疗领域的一个重要应用。图像识别技术可以通过分析医学影像(如X光片、CT扫描、MRI、超声波图像等)来辅助医生诊断疾病。以下是图像识别在疾病诊断中的关键步骤和挑战: 数据收集与预处理…...
大数据学习-2024/3/28-excel文件的读写操作
借助第三方模块:inxlrd,xlwt pip 第三方模块包管理工具 –> winr --> cmd --> 打开操作系统 –> python --> 查看默认的解释器版本 --> exit() –> pip list --> 查看第三方模块的列表 pip36 list --> 查看3.6版本安装的第三方模块列表 –> pip[…...
k8s 如何获取加入节点命名
当k8s集群初始化成功的时候,就会出现 加入节点 的命令如下: 但是如果忘记了就需要找回这条命令了。 kubeadm join 的命令格式如下:kubeadm join --token <token> --discovery-token-ca-cert-hash sha256:<hash>--token 令牌--…...
黑群晖基于docker配置frp内网穿透
前言 我的黑群晖需要设置一下内网穿透来外地访问,虽然zerotier的p2p组网已经很不错了,但是这个毕竟有一定的局限性,比如我是ios的国区id就下载不了zerotier的app,组网不了 1.下载镜像 选择第一个镜像 2.映射文件 配置frpc.ini&a…...
多线程基础:线程通信内容补充
多线程基础:线程通信内容补充 文章目录 多线程基础:线程通信内容补充前言一、wait(), notify(), notifyAll()二、join()三、Lock 和 Condition四、并发集合和原子变量1、并发集合2、原子变量 总结 前言 前文内容中讲了线程通信的内容,但是不…...
使用Jenkins打包时执行失败,但手动执行没有问题如ERR_ELECTRON_BUILDER_CANNOT_EXECUTE
具体错误信息如: Error output: Plugin not found, cannot call UAC::_ Error in macro _UAC_MakeLL_Cmp on macroline 2 Error in macro _UAC_IsInnerInstance on macroline 1 Error in macro _If on macroline 9 Error in macro FUNCTION_INSTALL_MODE_PAGE_FUNC…...
OpenCV图像滤波、边缘检测
OpenCV图像滤波 一、引言 在数字图像处理中,滤波是一种重要的技术,用于消除图像中的噪声、改善图像质量或提取特定信息。OpenCV(开源计算机视觉库)提供了丰富的滤波函数,可以方便地对图像进行各种滤波操作。本文将介…...
前端项目在本地localhost可以调取到拍照或麦克风等设备,但是在局域网内IP+端口号访问项目时访问不到设备
前端项目在本地localhost可以调取到拍照或麦克风等设备,但是在局域网内IP端口号访问项目时访问不到设备,调取navigation.mediaDevices时本科可以获取到mediaDevices列表,局域网内ip端口访问时获取不到mediaDevices。 原因: 存在…...
flutter生成二维码并截图保存到图库
引入库:flutter_screenutil、image_gallery_saver、qr_flutter弹窗布局 import dart:async; import dart:typed_data; import package/generated/l10n.dart; import package:jade/configs/PathConfig.dart; import package:jade/utils/ImageWaterMarkUtil.dart; im…...
EasyExcel Converter实现java对象和excel单元格转换
在EasyExcel中,Converter接口用于定义如何在Java对象和Excel单元格之间进行转换。 也就是说EasyExcel可以根据数据库中的值来填充Excel中对应的文本内容。 比如数据库1,2,3可以填充到excel中:男,女,其他 使用easyExcel的之前&a…...
stamac Ethernet DTS配置
目录 Demo 配置 compatible reg interrupts & interrupt-names phy-mode phy-handle Snps,reset-gpio...
Svg Flow Editor 原生svg流程图编辑器(四)
系列文章 Svg Flow Editor 原生svg流程图编辑器(一) Svg Flow Editor 原生svg流程图编辑器(二) Svg Flow Editor 原生svg流程图编辑器(三) Svg Flow Editor 原生svg流程图编辑器(四…...
告别Armoury Crate臃肿困扰:GHelper革新性华硕笔记本硬件控制方案带来性能突破
告别Armoury Crate臃肿困扰:GHelper革新性华硕笔记本硬件控制方案带来性能突破 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and…...
基于RIME-CNN-LSSVM回归模型的优化与预测应用——以MATLAB环境为例
RIME-CNN-LSSVM回归 基于霜冰优化算法优化卷积神经网络(CNN)结合最小二乘向量机(LSSVM)的数据回归预测(可以更换为分类/单、多变量时序预测/回归,前私我),Matlab代码,可直接运行,适合小白新手 程序已经调试好,无需更改…...
生信分析效率翻倍:fastp多线程+UMI处理技巧全解析(含实战案例)
生信分析效率翻倍:fastp多线程UMI处理技巧全解析(含实战案例) 在肿瘤基因检测和ctDNA测序领域,数据预处理环节往往成为整个分析流程的瓶颈。传统工具在处理海量测序数据时,不仅耗时长达数小时,还经常面临内…...
Qwen2.5-7B-Instruct入门指南:7B模型对输入token长度的鲁棒性压力测试
Qwen2.5-7B-Instruct入门指南:7B模型对输入token长度的鲁棒性压力测试 1. 项目概述 Qwen2.5-7B-Instruct是阿里通义千问系列的旗舰级大模型,相比1.5B和3B轻量版本,7B参数规模带来了质的飞跃。这个模型在逻辑推理、长文本创作、复杂代码编写…...
EEGLAB进阶实战:从原始EEG到ERP成分的精准提取与可视化分析
1. EEGLAB入门:理解ERP分析的核心流程 第一次接触EEGLAB时,我被它强大的功能和复杂的界面弄得晕头转向。经过多次实战,我发现理解ERP分析的完整流程是关键。就像做菜需要先备料再烹饪一样,EEG数据处理也需要遵循特定步骤。 原始EE…...
用Multisim/TINA-TI仿真带你玩转一阶到二阶有源滤波器:从传递函数到实际频响曲线全验证
从仿真到实践:一阶与二阶有源滤波器的可视化验证指南 在模拟电路设计中,滤波器是信号处理的基础模块。许多初学者虽然能推导传递函数,却难以将理论公式与实际电路行为建立直观联系。本文将用Multisim和TINA-TI两款主流仿真工具,带…...
C++的std--ranges代码生成
C20引入的std::ranges库彻底改变了代码生成的范式,它将函数式编程与现代C特性结合,让开发者能以声明式语法高效生成和处理数据流。这一特性不仅提升了代码可读性,还通过编译期优化显著提升性能。下面从三个关键角度解析其代码生成能力。范围适…...
OpenClaw网关配置详解:Qwen3-32B镜像的端口与安全设置
OpenClaw网关配置详解:Qwen3-32B镜像的端口与安全设置 1. 为什么需要关注网关配置? 上周我在本地部署Qwen3-32B模型时,遇到了一个尴尬的问题:凌晨3点被安全团队电话叫醒,原因是OpenClaw的测试端口被扫描到异常流量。…...
深入解析 ValueError: DataFrame 形状无法确定的三大实战解决方案
1. 从报错信息看DataFrame形状问题 第一次遇到ValueError: could not determine the shape of object type DataFrame这个错误时,我正急着处理一个Excel数据导入任务。当时用pd.read_excel读取文件后直接扔进PyTorch模型,结果程序直接罢工。这个报错字面…...
macOS专属方案:OpenClaw+nanobot镜像的5个效率技巧
macOS专属方案:OpenClawnanobot镜像的5个效率技巧 1. 为什么选择OpenClawnanobot组合 作为一个长期使用macOS的开发者,我一直在寻找能够提升日常工作效率的自动化工具。直到遇到OpenClaw和nanobot这个组合,才真正找到了适合个人使用的智能助…...
