一篇文章搞懂 SDN中Minint和Ryu的安装及使用

news2024/11/15 23:52:07

SDN

一、SDN介绍

一. 什么是SDN?

SDN字面意思是软件定义网络,其试图摆脱硬件对网络架构的限制,这样便可以像升级、安装软件一样对网络进行修改,便于更多的APP(应用程序)能够快速部署到网络上。

如果把现有的网络看成手机,那SDN的目标就是做出一个网络界的Android系统,可以在手机上安装升级,同时还能安装更多更强大的手机APP。

过去30年里,IP网络一直是全分布式的,战功卓著,解决了各种客户需求,今天SDN是为了未来更好更快的实现用户需求。并不是有什么需求通过传统方法不能做到,只是SDN做得更快、更好、更简单。

SDN的本质是网络软件化,提升网络可编程能力,是一次网络架构的重构,而不是一种新特性、新功能。SDN将比原来网络架构更好、更快、更简单的实现各种功能特性。

二.SDN解决什么问题?

IP网络的生存能力很强,得益于其分布式架构。看看IP的历史,当年美国军方希望在遭受核打击后,整个网络能够自主恢复,这样就不能允许网络集中控制,不能存在中心结点,否则在这个中心节点丢一颗核弹,整个网络就挂了。但正是这种全分布式架构导致了许多问题:

看看现在的IP网络管理多复杂,举个运营商部署VPN的例子:要配置MPLS、BFD、IGP、BGP、VPNV4、要绑定接口…且需要在每个PE上配置;当新增加一个PE时,还需要回去修改每个涉及到的PE。

现在各厂家的网络设备都太复杂了。如果您准备成为某个厂商设备的百事通,你需要掌握的命令行超过10000条,而其数量还在增加。 如果你准备成为IP骨灰级专家,你需要阅读网络设备相关RFC 2500篇,如果一天阅读一篇,你知道要看多久能看完?6年多!而这只是整个RFC的1/3,其数量还在增加。

此外,这些协议标准都是在解决各种各样的控制面需求,而这些需求都是需要经过需求提出、定义标准、互通测试、现网设备升级来完成部署,一般要个3~5年才能完成部署。这样的速度,已经Hold不住网络上运营业务的OTT们的各种快速网络调整需求,必须想办法解决这个问题。 很幸运,现在已经找到了解决以上问题的方法。没错,就是SDN !它是目前系统性的解决以上问题的最好方法。

三.传统网络概念和结构体系

传统网络数据控制与转发:
传统网络是分布式控制的架构,每台设备都包含独立的控制平面,数据平面。

传统网络是分布式控制的架构:

  • 这里的分布式控制指在传统IP网络中,用于协议计算的控制平面和报文转发的数据平面位于同一台设备中。

  • 路由计算和拓扑变化后,每台设备都要重新进行路由计算过程,并称为分布式控制过程。

  • 在传统IP网络中,每台设备都是独立收集网络信息,独立计算,并且都只关心自己的选路。

  • 这种模型的弊端就是所有设备在计算路径时缺乏统一性。

传统网络的管理平面、控制平面、数据平面:

  • 管理平面:管理设备(SNMP)

  • 控制平面:路由协议(IGP、BGP)

  • 数据平面:转发表(FIB)

  • OSS:Operation Support System,运营支撑系统。

  • NMS:Network Management Server,网络管理服务器。

传统网络架构:
== 传统网络分为管理平面、控制平面和数据平面. ==
管理平面主要包括设备管理系统和业务管理系统,设备管理系统负责网络拓扑、设备接口、设备特性的管理,同时可以给设备下发配置脚本。业务管理系统用于对业务进行管理,比如业务性能监控、业务告警管理等。
控制平面负责网络控制,主要功能为协议处理与计算。比如路由协议用于路由信息的计算、路由表的生成。
数据平面是指设备根据控制平面生成的指令完成用户业务的转发和处理。例如路由器根据路由协议生成的路由表对接收的数据包从相应的出接口转发出去。

  • 传统网络局限性:

    • 流量路径的灵活调整能力不足。
    • 网络协议实现复杂,运维难度较大。
    • 网络新业务升级速度较慢。
    • 传统网络通常部署网管系统作为管理平面,而控制平面和数据平面分布在每个设备上运行。

流量路径的调整需要通过在网元上配置流量策略来实现,但对于大型网络的流量进行调整,不仅繁琐而且还很容易出现故障;当然也可以通过部署TE隧道来实现流量调整,但由于TE隧道的复杂性,对于维护人员的技能要求很高。

传统网络协议较复杂,有IGP、BGP、MPLS、组播协议等,而且还在不断增加。

设备厂家除标准协议外都有一些私有协议扩展,不仅设备操作命令繁多,而且不同厂家设备操作界面差异较大,运维复杂。

传统网络中由于设备的控制面是封闭式的,且不同厂家设备实现机制也可能有所不同,所以一种新功能的部署可能会造成周期较长;且如果需要对设备软件进行升级,还需要在每台设备上进行操作,大大降低了工作效率。

四.SDN概述

SDN(Software Defined Network)软件定义网络
2006年,以斯坦福大学教授Nike Mckewn为首的团队提出了OpenFlow的概念,并基于OpenFlow技术实现网络的可编程能力(OpenFlow只是实现SDN的一个协议),是网络像软件一样灵活编程,SDN技术应运而生。
SDN的定义
SDN的定义是其字面意思,控制与转发分离,管理与控制分离只是满足SDN的一种手段,OpenFlow只是满足SDN的一种协议

SDN的分类
SDN的分类区别在于其实现的是控制与转发分离,还是管理与控制分离

  • SDN分类:

    • 控制与转发分离 (超广义)

    • 管理与控制分离 (广义)

  • SDN的三个主要特征:

    • 转控分离:网元的控制平面在控制器上,负责协议计算,产生流表;而转发平面只在网络设备上。

    • 集中控制:设备网元通过控制器集中管理和下发流表,这样就不需要对设备进行逐一操作,只需要对控制器进行配置即可。

    • 开放接口:第三方应用只需要通过控制器提供的开放接口,通过编程方式定义一个新的网络功能,然后在控制器上运行即可。

SDN控制器既不是网管,也不是规划工具:

网管没有实现转控分离:网管只负责管理网络拓扑、监控设备告警和性能、下发配置脚本等操作,但这些仍然需要设备的控制平面负责产生转发表项。

规划工具的目的和控制器不同:规划工具是为了下发一些规划表项,这些表项并非用于路由器转发,是一些为网元控制平面服务的参数,比如IP地址,VLAN等。控制器下发的表项是流表,用于转发器转发数据包。

五.SDN网络架构

SDN是对传统网络架构的一次重构,由原来分布式控制的网络架构重构为集中控制的网络架构。

SDN网络体系架构的三层模型

SDN三层模型

  • 应用层:这一层主要是体现用户意图的各种上层应用程序,此类应用程序称为协同层应用程序,典型的应用包括OSS(Operation support system 运营支撑系统)、Openstack等。传统的IP网络同样具有转发平面、控制平面和管理平面,SDN网络架构也同样包含这3个平面,只是传统的IP网络是分布式控制的,而SDN网络架构下是集中控制的。

  • 控制层:控制层是系统的控制中心,负责网络的内部交换路径和边界业务路由的生成,并负责处理网络状态变化事件。

  • 转发层:转发层主要由转发器和连接器的线路构成基础转发网络,这一层负责执行用户数据的转发,转发过程中所需要的转发表项是由控制层生成的。

  • 北向接口:应用层和控制层通信的接口,应用层通过控制开放的API,控制设备转发功能

  • 南向接口:控制层和数据层通信的接口,控制器通过OpenFlow或其他协议下发流表。

SDN网络部署方式

  • Underlay的网络
    所有的转发行为都由控制器通过OpenFlow协议或定制的BGP协议将转发表下发给转发器,转发器仅仅执行动作,没有单独控制面
  • Overlay的网络
    这种网络的转发器一般都是传动设备,不支持OpenFlow,或者私有定制协议不能部署时,就要用隧道技术,基础网络还是传统网络形式,通过路由协议打同各个节点,但是在服务器接入点,才用隧道技术将数据报文进行封装或者解封装。对传统网络来说见到的就是普通数据报文,转发即可。隧道技术实际上就是报文的马甲,迷惑网络设备,让设备以为时自己人,但实际上报文的心是虚拟化的心。现一般才用Vxlan,GRE,NVGRE等隧道技术,而这些新增的协议,也需要升级现有网络设备才能支持(不支持上述协议的网络设备)。穿马甲索然能够在不进行大改造的情况下增加新的功能,但无疑会降低网络性能。

六.SDN的价值

网络业务快速创新:
SDN的可编程性和开放性,使得我们可以快速开发新的网络业务和加速业务创新。如果希望在网络上部署新业务,可以通过针对SDN软件的修改实现网络快速编程,业务快速上线。

img

SDN网络关键的地方是在网络架构中增加了一个SDN控制器,把原来的分布式控制平面集中到一个SDN控制器上,由这个集中的控制器来实现网络集中控制。SDN网络架构具备3个基本特征:转控分离、集中控制、开放接口。

SDN通过在网络中增加一个集中的SDN控制器,可以简化网络和快速进行业务创新。但是其本质的技术原理是通过SDN控制器的网络软件化过程来提升网络可编程能力。通信平面仍包含管理平面、控制平面和数据平面,SDN网络架构只是把系统的三个平面的功能进行了重新分配,传统网络控制平面是分布式的,分布在每个转发设备上,而SDN网络架构则是把分布式控制平面集中到一个SDN控制器内,实现集中控制,而管理平面和数据平面并没有太多什么变化。

SDN网络具备快速网络创新能力,如果这个新业务有价值则保留,没有价值可以快速下线。不像传统网络那样,一个新业务上线需要经过需求提出、讨论和定义开发商开发标准协议,然后在网络上升级所有的网络设备,经过数年才能完成一个新业务。SDN使得新业务的上线速度从几年提升到几个月或者更快。

简化网络:
SDN的网络架构简化了网络,消除了很多IETF的协议。协议的去除,意味着学习成本的下降,运行维护成本下降,业务部署快速提升。这个价值主要得益于SDN网络架构下的网络集中控制和转控分离。

因为SDN网络架构下的网络集中控制,所以被SDN控制器所控制的网络内部很多协议基本就不需要了,比如RSVP协议、LDP协议、MBGP协议、PIM组播协议等等。原因是网络内部的路径计算和建立全部在控制器完成,控制器计算出流表,直接下发给转发器就可以了,并不需要协议。未来大量传统的东西向协议会消失,而南北向控制协议比如Openflow协议则会不断的演进来满足SDN网络架构需求

网络设备白牌化:
基于SDN架构,如果标准化了控制器和转发器之间的接口,比如OpenFlow协议逐渐成熟,那么网络设备的白牌化将成为可能,比如专门的OpenFlow转发芯片供应商,控制器厂商等,这也正是所谓的系统从垂直集成开发走向水平集成。

垂直集成是一个厂家供应从软件到硬件到服务。水平集成则是把系统水平分工,每个厂家都完成产品的一个部件,有的集成商把他们集成起来销售。水平分工有利于系统各个部分的独立演进和更新,快速进化,促进竞争,促进各个部件的采购价格的下降。

业务自动化:
SDN网络架构下,由于整个网络归属控制器控制,那么网络业务网自动化就是理所当然的,不需要另外的系统进行配置分解。在SDN网络架构下,SDN控制器可以自己完成网络业务部署,提供各种网络服务,比如L2VPN、L3VPN等,屏蔽网络内部细节,提供网络业务自动化能力。

网络路径流量优化:
通常传统网络的路径选择依据是通过路由协议计算出的“最优”路径,但结果可能会导致“最优”路径上流量拥塞,其他非“最优”路径空闲。当采用SDN网络架构时,SDN控制器可以根据网络流量状态智能调整网络流量路径,提升网络利用率。

二、SDN的搭建

实验环境

Ubuntu20.04.5LTS
git 2.25.1
python 3.8.10
pip 22.3.1

一、安装mininet

1.git克隆源码
sudo apt-get install git
git clone https://github.com/mininet/mininet.git
cd mininet
2.安装mininet
cd util
sudo ./install.sh

如果使用以上命令安装OpenVswitch不成功,可以尝试依次输入以下命令:

sudo apt-get install openvswitch-switch
#启动ovs:service openvswitch-switch start
sudo ovs-vsctl show
3.测试安装成功
输入sudo mn命令,创建最小网络拓扑。可以看到新建了两台主机,1个Open (V)switch交换机,增加了两条链路,创建了一台控制器。

二、安装RYU

RYU是一款开源SDN控制器,基于python语言编写,支持OpenFlow协议。它的安装大致可以分为以下几个步骤:

1.下载RYU源代码
sudo git clone https://github.com/osrg/ryu.git
2.安装RYU依赖包
sudo pip install -r tools/pip-requiresments.txt
3.安装RYU
RYU的依赖安装完成后,通过执行sudo python3 setup.py install命令安装RYU

三、SDN的使用

一、mininet的使用

1.mn常用命令

mn启动之后的一些常用命令:

序号命令功能
0help打印帮助信息
1nodes查看所有节点信息
2net查看网络拓扑信息
3dump输出节点信息
4h1 ping h2测试主机间的连通性
5iperfTCP打流
6iperfudpUDP打流
7xterm打开xterm窗口
8py运行py
9sh运行shell
10host cmd在主机内执行命令,如h1 ifconfig
11exit/quit退出Mininet
2.创建拓扑
序号拓扑类型名称含义
0linear指直线,一个交换机配一个主机,而主机和交换机的个数都可以任意指定。拓扑呈直线型。
1minimal指最小的,是默认的mininet拓扑,默认一个 交换机挂两个主机,不跟参数。
2reversed指颠倒、反的,这种类型的拓扑与single的拓扑一致。
3single指单个,这种类型的拓扑只有一个交换机,而主机的个数可以任意指定。拓扑呈星型。
4torus较为复杂,适用于需要非常稳定,高冗余量的拓扑,具体解释看下方
5tree树,这种类型的拓扑显然呈数状,交换机呈树杈状分散开来,最下面一层的交换机挂两个主机。tree后面的参数是指树的个数。
0、linear
sudo mn --topo=linear,3

在这里插入图片描述

1、minimal

sudo mn --topo=minimal

在这里插入图片描述


2、reversed

sudo mn --topo=reversed,3

在这里插入图片描述

3、single

sudo mn --topo=single,3 

在这里插入图片描述

4、torus

环形拓扑图的创建选项要用到参数n,m(n,m 均要求大于等于 3),生成 nm 个 openflow 交换机,每个交换机连接一台主机,交换机之间保持与另外 4 台交换机连接,生成不同于完全网络的双向环形网络结构,主要为网络结构复杂,稳定性要求非常高的网络做冗余考虑。构建33的环形拓扑结构图的构造命令如下

mn --topo=torus,3,3

5、tree

定义深度depth,定义广度fanout。例如depth=2,fanout=2,就是**交换机(不包含主机)**有两层,除第一层外每个下挂两个单位。

sudo mn --topo=tree,3

在这里插入图片描述

假如输入depth=3,fanout=3,就在原来的基础上s1(第一层)下挂三个交换机(第二层),然后第二层的每个交换机下面再下挂三个交换机(第三层),第三层的每个交换机下挂三个主机。

6.自定义拓扑

需要用python编写文件file.py,执行此脚本即可创建自定义拓扑,需要**–custom与–topo联用**,在这里给出一个使用自带的例子建立一个自定义拓扑,至于具体如何编写我们将会在以后进行说明。

img

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

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

相关文章

pcdn边缘云常见sla有哪些?如何避免被白嫖

PCDN(Point-to-Point Content Delivery Network)边缘云常见的SLA(Service Level Agreement)规则包括高峰期离线、服务时间、重传延时、限速等。这些规则是为了保证服务质量和用户体验。下面将详细解释这些规则,并提供一…

51单片机:点亮一个LED灯

1.新建工程 选择AT89C52&#xff0c;在Atmel下显示的是See Microchip 并不需要添加启动文件到文件夹中。 添加main.c文件&#xff0c;c比cpp效率高&#xff0c;.asm汇编即更底层 程序编写好后 nop(); 该函数在这个头文件里面 #include <INTRINS.H> #include <R…

flex 盒子布局 align-items: start; flex-wrap: wrap; justify-content: space-between;

flex 盒子布局 align-items: start; flex-wrap: wrap; justify-content: space-between; 总盒子 .allboc {display: flex;width: 100%;align-items: start;flex-wrap: wrap;justify-content: space-between; }左边 justify-content: flex-start; .blog-articles {display: fl…

3588 pwm android12 的操作,包含 NDK native C++

问题&#xff1a; 客户需要在android12 的界面上操作板卡上的 PWM 蜂鸣器设备。 过程&#xff1a; 1 了解一下 3588 android12 源码的 关于PWM 的驱动。 设备树找不到 pwm 但是&#xff0c; 还不知道&#xff0c;android12 最终包含的 设备树是哪个&#xff0c;但是经过我的…

鸿蒙OS开发:【Stage模型应用程序包结构】

Stage模型应用程序包结构 为了让开发者能对应用程序包在不同阶段的形态更有清晰的认知&#xff0c;分别对开发态、编译态、发布态的应用程序结构展开介绍。 开发态包结构 在DevEco Studio上[创建一个项目工程]&#xff0c;并尝试创建多个不同类型的Module。根据实际工程中的…

数据分析(二)——导入外部数据,导入Excel数据,CSV文件,txt文件,HTML网页,数据抽取,DataFrame对象的loc属性与iloc属性

一.导入外部数据 1.导入.xIs或.xIsx文件 pd.read_ excel(io,sheet_ name,header) 1.1常用参数说明 ●io:表示.xIs或.xIsx文件路径或类文件对象 ●sheet name:表示工作表&#xff0c;取值如下表所示 ●header:默认值为0&#xff0c;取第一行的值为列名&#xff0c;数据为除列…

C++ 结构体内存对齐

定义了两个结构体 typedef struct Cmd {uint8_t ua;uint8_t ub;uint8_t uc;uint32_t ue; } Cmd_t;typedef struct Cmd_tag {uint8_t value;uint8_t data[1]; // 将 data 定义为指向 Cmd_t 结构体的指针 } tag_t;在实际使用中&#xff0c;看见前人的代码是&#xff0c;new 一块内…

【Qt问题】windeployqt如何提取Qt依赖库

往期回顾 【Qt问题】Qt Creator 如何链接第三方库-CSDN博客 【Qt问题】Qt 如何带参数启动外部进程-CSDN博客 【Qt问题】VS2019 Qt win32项目如何添加x64编译方式-CSDN博客 【Qt问题】windeployqt如何提取Qt依赖库 考虑这个问题主要是&#xff1a;当我们的程序运行好之后&#…

BI报表大用处 揭秘BI报表在行业中的变革力量

BI报表&#xff0c;即商业智能报表&#xff0c;是一种利用商业智能技术将企业中的数据转换为有意义的信息和可视化展示的报告。它通过将企业内部的大量数据转化为直观、易于理解的图表和指标&#xff0c;帮助决策者快速捕捉关键业务信息&#xff0c;识别趋势和模式&#xff0c;…

【深度学习】Diffusion扩散模型的逆扩散问题

1、前言 上一篇&#xff0c;我们讲了Diffusion这个模型的原理推导。但在推导中&#xff0c;仍然遗留了一些问题。本文将解决那些问题 参考论文&#xff1a; ①Variational Diffusion Models (arxiv.org) ②Tutorial on Diffusion Models for Imaging and Vision (arxiv.org…

训练集、测试集与验证集:机器学习模型评估的基石

在机器学习中&#xff0c;为了评估模型的性能&#xff0c;我们通常会将数据集划分为训练集&#xff08;Training Set&#xff09;、验证集&#xff08;Validation Set&#xff09;和测试集&#xff08;Test Set&#xff09;。这种划分有助于我们更好地理解模型在不同数据上的表…

React 第三十六章 Scheduler 任务调度

Scheduler 用于在 React 应用中进行任务调度。它可以帮助开发人员在处理复杂的任务和操作时更好地管理和优化性能。 关于 Scheduler 在React 如何渲染的可以参考 React 第三十四章 React 渲染流程 下面我们根据流程图先简单的了解 Scheduler 的调度过程 Scheduler 维护两个队…

机器人SCI期刊,中科院3区,收稿范围广泛!

一、期刊名称 Journal of Intelligent & Robotic Systems 二、期刊简介概况 期刊类型&#xff1a;SCI 学科领域&#xff1a;计算机科学 影响因子&#xff1a;3.3 中科院分区&#xff1a;3区 出版方式&#xff1a;开放出版 版面费&#xff1a;$2990 三、期刊征稿范围…

基于springboot实现的家具销售电商平台

开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&…

05-13 周一 量化是什么

05-13 周一 量化是什么 时间版本修改人描述2024年5月13日11:27:25V0.1宋全恒新建文档2024年5月14日16:21:20V1.0宋全恒了解 简介 神经网络在运行时有较高的计算成本&#xff0c;而且随着大模型时代的到来&#xff0c;知识由一个巨大的LLM存储&#xff0c;为了获取知识&#xf…

别再找了!吐血整理ChatGPT 3.5/4.0新手使用手册

引领科技潮流的ChatGPT早已名声在外&#xff0c;如今获取ChatGPT已变得触手可及&#xff0c;但很多人还多次提问如何使用chatgpt&#xff0c;为了避免陷入误区&#xff0c;本文旨在为广大ChatGPT爱好者提供一份实用的指南。 因此&#xff0c;帮助大家更好地掌握其使用技巧&…

免费PPT模板下载,无套路。

身在职场做好PPT是一项必备技能&#xff0c;如何快速做出好看又高级的PPT&#xff0c;收藏好这6个网站&#xff0c;不管你是工作总结、毕业论文、个人简历、企业宣传都能找到合适的模板&#xff0c;最重要的是可以免费下载。 1、菜鸟图库 ppt模板免费下载|ppt背景图片 - 菜鸟图…

请收好,这份思科备考攻略很细节

对于网络工程师来说&#xff0c;思科认证无疑是一块金字招牌。它不仅代表着专业技能&#xff0c;更是职业发展的加速器。 今天我们不聊选思科认证还是华为认证&#xff0c;只能说是各有各的好&#xff0c;如果你已经选择了思科认证&#xff0c;那么这份备考攻略将为你提供一些实…

C++笔试强训day22

目录 1.添加字符 2.数组变换 3.装箱问题 常规一维优化&#xff1a; 1.添加字符 链接 因为lenA < lenB < 50&#xff0c;因此可以无脑暴力解题&#xff1a; 遍历所有符合条件的匹配方法&#xff0c;找出最小的不同的数量&#xff0c;即最大的相同的数量 #include &…

Python-VBA函数之旅-vars函数

目录 一、vars函数的常见应用场景 二、vars函数使用注意事项 三、如何用好vars函数&#xff1f; 1、vars函数&#xff1a; 1-1、Python&#xff1a; 1-2、VBA&#xff1a; 2、推荐阅读&#xff1a; 个人主页&#xff1a;https://myelsa1024.blog.csdn.net/ 一、vars函数…