SDN实训报告-基于SDN的Qos差分服务

news2024/11/15 20:59:36

1 实训概述

        本次为期一周的实训旨在通过基于SDN架构的实现差分服务需求来提升我们的技能。我们在实训中广泛运用了一些重要的技术手段,包括Django、QOS、OpenDaylight和OpenvSwitch等。

        在实训过程中,我们将重点放在SDN的基本操作上,通过实际操作和实践,我们能够更好地理解SDN架构的工作原理和应用场景。同时,我们也深入研究了与SDN和Qos等相关技术相关的知识,从而更好地掌握了如何在实际项目中应用这些技术。

        通过这次实训,我们不仅能够通过实际操作来加深对SDN的理解,还能够积累实践经验,并且了解到了与SDN和Qos相关的最新技术和趋势。这不仅为我们今后在SDN领域的学习和工作奠定了良好的基础,而且也提升了我们解决实际问题的能力和技术水平。

2 系统描述

2.1 课题简介

        本课题目标为基于SDN架构的框架上实现对服务质量的差分服务。在SDN架构的基础上,应用层利用Django项目通过SDN北向接口向由Java语言编写,基于OpenDaylight架构的控制器下发信息,ODL通过Openflow南向接口转发成flow表和meter表下发到交换机,并进行流量限速测试。

2.2 模块简介

        启动控制器并设置交换机,成功对接后查看topo结构,启动Django服务并访问Django web服务,在qos可编程服务上面进行操作,调用接口进行odl与ovs连接,并下发流表和meter表,qos验证流量限速测试。

2.2.1 Django

        Django是高水准的Python编程语言驱动的一个开源模型.视图,控制器风格的Web应用程序框架,它起源于开源社区。使用这种架构,程序员可以方便、快捷地创建高品质、易维护、数据库驱动的应用程序。

2.2.2 QOS

        服务质量QoSQuality of Service)用于评估服务方满足客户服务需求的能力。通过配置QoS,对企业的网络流量进行调控,避免并管理网络拥塞,减少报文的丢失率,同时也可以为企业用户提供专用带宽或者为不同的业务(语音、视频、数据等)提供差分服务。

2.2.3 Meter

        Meter表即计量表,任意流表项可以在它的指令集中定义一个计量,以测量和控制相关流的速率,可以实现一些简单的Qos,并且可以结合端口队列来实现复杂的Qos框架。在此实验中主要用来做速率限制并被流表所引用。

2.2.4 OpenFlow

        OpenFlow是第一个开放的南向接口协议,也是目前最流行的南向协议。它提出了控制与转发分离的架构,规定了SDN转发设备的基本组件和功能要求,以及与控制器通信的协议。

2.2.5 Open vSwitch

        Open vSwitch简称OVS,OVS是一个支持多层数据转发的高质量虚拟交换机,主要部署在服务器上,相比传统交换机具有很好的编程扩展性,同时具备传统交换机实现的网络隔离和数据转发功能,运行在每个实现虚拟化的物理机器上,并提供远程管理。

2.2.6 Open Daylight

        Open Daylight是一个高度可用、模块化、可扩展、支持多协议的控制器平台,可以作为SDN管理平面管理多厂商异构的SDN网络。它提供了一个模型驱动服务抽象层( MD-SAL),允许用户采用不同的南向协议在不同厂商的底层转发设备上部署网络应用。

3 主要模块的详细设计

3.1 分层技术选择

3.1.1 数据层模块

    数据平面使用OpenvSwitch交换机,通过OpenFlow南向接口协议与控制器进行交互。

3.1.2 控制层模块

        控制平面是由Java语言编写,基于OpenDaylight架构的控制器,通过OpenFlow南向接口协议及OVSDB与数据平面交互,通过HTTP REST API与应用层进行交互。

3.1.3 应用层模块

应用层是通过Python语言编写以及应用前后端Django架构,展现网络中的拓扑发现,下发Qos服务规则。

3.2 逻辑架构

        应用层面使用相应的SDN APP进行操作,可以进行拓扑发现、链路监测、Qos服务规则设置等操作;应用层面的操作实现通过SDN控制器实现,在SDN控制器中部署拓扑管理、链路状态检测、流规则配置、Qos规则配置等功能,最终将Qos服务规则下发至数据平面。

        其逻辑架构可表示如下图:

3.3 关键技术

3.3.1 OpenFlow协议

        OpenFlow是一种网络通信协议,属于数据链路层,能够控制网上交换器或路由器的转发平面(forwarding plane),借此改变网络数据包所走的网络路径。整个OpenFlow协议架构由控制器(Controller)、OpenFlow交换机(OpenFlow Switch)、以及安全通道(Secure Channel)组成。控制器对网络进行集中控制,实现控制层的功能;OpenFlow交换机负责数据层的转发,与控制器之间通过安全通道进行消息交互,实现表项下发、状态上报等功能。

        OpenFlow允许从远程控制网络交换器的数据包转送表,透过新增、修改与移除数据包控制规则与行动,来改变数据包转送的路径。比起用访问控制表(ACLs) 和路由协议,允许更复杂的流量管理。同时,OpenFlow允许不同供应商用一个简单,开源的协议去远程管理交换机(通常提供专有的接口和描述语言)。

        OpenFlow协议用来描述控制器和交换机之间交互所用信息的标准,以及控制器和交换机的接口标准。协议的核心部分是用于OpenFlow协议信息结构的集合。

        OpenFlow协议支持三种信息类型:Controller-to-SwitchAsynchronousSymmetric,每一个类型都有多个子类型。Controller-to-Switch信息由控制器发起并且直接用于检测交换机的状态。Asynchronous信息由交换机发起并通常用于更新控制器的网络事件和改变交换机的状态。Symmetric信息可以在没有请求的情况下由控制器或交换机发起。

3.1.2 sFlow技术(本次未使用)

        采样流sFlowSampled Flow)是一种基于报文采样的网络流量监控技术,主要用于对网络流量进行统计分析。与数据包采样技术(如RMON)不同,sFlow是一种导出格式,它增加了关于被监视数据包的更多信息,并使用嵌入到网络设备中的sFlow代理转发被采样数据包,因此在功能和性能上都超越了当前使用的RMONRMON IINetFlow技术。

        sFlow系统包含一个嵌入在设备中的sFlow Agent和远端的sFlow Collector。其中,sFlow Agent通过sFlow采样获取接口统计信息和数据信息,将信息封装成sFlow报文,当sFlow报文缓冲区满或是在sFlow报文缓存时间(缓存时间为1秒)超时后,sFlow Agent会将sFlow报文发送到指定的sFlow CollectorsFlow CollectorsFlow报文进行分析,并显示分析结果。

        sFlow报文采用UDP封装,缺省目的端口号为知名端口6343sFlow报文共有4种报文头格式,分别为Flow sampleExpanded Flow sampleCounter sampleExpanded Counter sample。其中Expanded Flow sampleExpanded Counter samplesFlow version 5新增内容,是Flow sampleCounter sample的扩展,但不前向兼容。所有的Extended的采样内容必须使用Expanded采样报文头封装。

        sFlow系统的示意图如下:

 3.1.3 Meter计量表

        Meter表主要用来进行网络限速,网络限速有很多种方式,比如网卡限速,队列限速,Meter表限速。其中Meter表限速是颇具代表性的限速方式。因为网卡限速和队列限速都是传统网络的限速方式,而Meter表是SDN架构下的限速方式。

        Meter表即计量表,任意流表项可以在它的指令集中定义一个计量,以测量和控制相关流的速率,可以实现一些简单的Qos,并且可以结合端口队列来实现复杂的Qos框架。在此实验中主要用来做速率限制并被流表所引用。

3.4 控制层设计

3.4.1控制层结构

        控制层由拓扑及链路状态检测、流规则配置以及Qos规则配置组成,均需通过控制器与上下层的报文交互实现。

3.4.2拓扑及链路状态检测

        控制器与交换机之间建立稳定的OpenFlow连接,并利用控制器收集交换机的拓扑信息来实现;它可以详细、直观的表示出当前的拓扑状态,保证后续的路由计算、转发等更加稳定、高效。

        当系统开始运行后,控制器将周期性的收集来自OpenFlow协议上报的各个交换机数据,并通过LLDP报文探测交换机间链路信息。控制器通过部署的sFlow collector收集交换机端口流量统计信息,并开放出接口提供给上层应用调用。

3.4.3 流规则配置

        当交换机通过OpenFlow协议与控制器建立连接后,控制器下发基础流表至交换机,匹配ARP请求报文发送至控制器。控制器接收到ARP请求报文后进行广播操作,并通过端口-MAC对应关系学习主机位置信息,下发转发流表项匹配目的主机信息,转发至对应端口,从而实现基础的二层转发功能。

3.4.5 Qos规则配置

        控制器提供接口下发Qos规则配置,先下发Meter表项,指定限制速率。Meter表项下发成功后,下发流表项匹配Qos对应交换机端口,实现主机间通信限速功能

3.5 应用层设计

3.5.1 应用层需求

       应用层主要需要实现如下功能:

  • 对控制层获取到的拓扑信息、链路状态信息、网络状态的展示。
  • 通过APP界面对控制器下发Qos规则,并由控制器下发至转发设备。

3.5.2 Django框架

        Django是高水准的Python编程语言驱动的一个开源模型.视图,控制器风格的Web应用程序框架,它起源于开源社区。使用这种架构,程序员可以方便、快捷地创建高品质、易维护、数据库驱动的应用程序。这也正是OpenStackHorizon组件采用这种架构进行设计的主要原因。另外,在Dj ango框架中,还包含许多功能强大的第三方插件,使得Django具有较强的可扩展性 [2]  Django 项目源自一个在线新闻 Web 站点,于 2005 年以开源的形式被释放出来。Django 框架的核心组件有:

  •  用于创建模型的对象关系映射
  •  为最终用户设计较好的管理界面;
  •  URL 设计;
  • 设计者友好的模板语言;
  •  缓存系统。

        Django的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件可以很方便的以插件形式服务于整个框架,Django有许多功能强大的第三方插件,你甚至可以很方便的开发出自己的工具包。这使得Django具有很强的可扩展性。它还强调快速开发和DRY(Do Not Repeat Yourself)原则。

4 程序运行与测试

4.1 Qos相关程序及运行

Step1 启动控制器

  • 进入sdn-qos目录,并执行tar-zxvf解压karaf压缩包

        注:此为解压完成效果

  • 进入bin目录并启动kara

        注:此为karaf启动效果

Step2 设置OVS参数

        进入交换机查看名称

 配置ovs用户态:

 配置ovsopenflow版本并完成对接:

对接ovsodl 

验证ovsodl是否对接成功

 在ODL中查看拓扑结构

Step3 Django服务及配置

  • 创建名为qospython环境,并指向python 3.8

  • 执行cd命令并进入项目

  • 安装依赖

  • 启动web服务,并对8080端口进行监听、映射

  •  修改settings.py 文件中allowed_hosts改为【“*”】(允许所有设备)

  •  查看网页结果

连接成功

调用接口进行ODLOVS连接

1.代码如下:

运行结果如下:

2. 代码如下:

运行结果如下:

查看ODLOVS的本地IP和浮动IP

编辑Django 的web代码

1.代码如下:

运行结果如下:

2. 代码如下:

运行结果如下:

  • 查看ODLOVS的本地IP和浮动IP

  • 调用接口进行ODLOVS连接

  • 连接成功

  • 查看openflowid,并下发流表

  • 下发成功

Step4:实验现象

  • 在交换机上查看下发的流表

  • host1上执行ethtool -k eth0 tx off

  • host2上使用UDP协议、5M带宽、持续传输60秒并间隔十秒输出

5 实训总结

        在这次为期一周的实训中,我们实践了基于SDN架构的差分服务需求,运用了Django、Qos、sflow、OpenDaylight、OpenvSwitch等技术工具。

        首先,我们按照应用层-控制层-数据层的架构选择了SDN协议和主要模块。然后,我们深入学习和理解了每个模块,并根据控制层和应用层的需求进行了实际应用,最终成功实现了基于SDN架构的差分服务。

        通过这次实训,我巩固了对SDN架构的认识,并学习了与Qos服务相关的技术,比如sflow和meter表。此外,这次实训还使我掌握了一些基础的SDN项目开发内容,为我今后在可编程化网络领域的学习、实践和工作奠定了基础。

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

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

相关文章

Introduction to linear optimization exercise 第二章课后题答案 6-10

文章目录 2.62.7 2.6 解答: (a) 设 y y y 是 C C C 中的一点,多面体 Λ { ( λ 1 , … , λ n ) ∈ R n ∣ ∑ i 1 n λ i A i y , λ 1 , … , λ n ≥ 0 } \Lambda\left\{(\lambda_1, \dots, \lambda_n)\in R^n\mid \sum_{i1}^n \lambda_i\textb…

【企业架构设计模式】MITRE 设计模式

定义: 软件中的设计模式(通常)是简短的描述,用于捕捉过去证明是成功的实践。它们不是具体的软件,而是在某些情况下应用的一种模板。它们通常不是规定性的,而是建议性的,并且包括关于何时最适合使…

Vue组件库Element-常见组件-对话框

Dialog 对话框 在保留当前页面信息的状态下&#xff0c;直接弹出对话框&#xff0c;告知用户并承载相关操作 具体代码关键如下&#xff1a; <template><div><el-row><!-- button 按钮 --><el-button>默认按钮</el-button><el-button…

Windows下编译安装VTK

本文旨在记录在Windows下编译安装VTK的流程。 零、环境 操作系统Windows 10编译器Visual Studio 2019 CommunityCMake3.24.2 一、下载代码 git clone https://github.com/Kitware/VTK.git cd ./VTK/ git checkout -b v9.0.0 v9.0.0 二、编译安装 Where is the source cod…

Redis【实战篇】---- 用户签到

Redis【实战篇】---- 用户签到 1. 用户签到 - BitMap功能演示2. 用户签到 - 实现签到功能3. 用户签到 - 签到统计4. 额外加餐 - 关于使用BitMap来解决缓存穿透的方案 1. 用户签到 - BitMap功能演示 我们针对签到功能完全可以通过mysql来完成&#xff0c;比如说以下这张表 用户…

1.数据类型

1、课后作业 1.给同桌讲讲交换两个变量的值 算法&#xff08;不管他愿不愿听&#xff09; 2.依次咨询问并获取用户的姓名、年龄、性别&#xff0c;并打印用户信息 可以先自己写一下&#xff0c;在参考一下我的代码&#xff1a; <!DOCTYPE html> <html lang"en&q…

【SLAM14讲】05 李群与李代数

在 SLAM 中位姿是未知的&#xff0c;而我们需要解决什么样的相机位姿最符合当前观测数据这样的问题。 一种典型的方式是把它构建成一个优化问题&#xff0c;求解最优的 R, t&#xff0c;使得误差最小化。 旋转矩阵自身是带有约束的&#xff08;正交且行列式为 1&#xff09;。它…

Zhong__Linux系统磁盘空间扩容和转移

时间&#xff1a;2023.07.07 环境&#xff1a;Ubuntu/Centos 目的&#xff1a;分配闲置空间到指定分区/将分区空间转移到指定分区 说明&#xff1a; 作者&#xff1a;Zhong QQ交流群&#xff1a;121160124 欢迎加入&#xff01; 在安装Ubuntu/Centos/Stream等系统时 有时对…

测试3年经验不到,来面试开口要25K,面完连10K都不想给···

前言 近期公司发展的不错&#xff0c;打算扩招&#xff0c;也面试了不少人&#xff0c;由于公司不是很大所以公司大部分的人员都是我面试的。 前两天来了一个测试工作才3年不到的小伙儿面试&#xff0c;前面问了一点测试基础的东西&#xff0c;还是能答上来的&#xff0c;不过…

趟路:centos7.6安装opengauss5.0.0企业版

版本选取 # 下载opengauss安装介质&#xff0c;截止2023年7月份最新版本长期支持版&#xff08;LTS&#xff1a;Long Term Support&#xff09;是5.0.0版本&#xff1b;此外&#xff0c;还有预览版3.1.1&#xff1b;这里建议安装openGauss 5.0.0 (LTS)。企业版&#xff1a;更像…

Windows故障转移集群

Windows2012作为根域 两台Windows2008加入域 创建三台Windows 分别是Windows2012和两台Windows2008 并选择其环境 创建三个十g的卷&#xff0c;连接至Windows2012 清理三台主机的后台数据 然后修改三台主机的IP 本机IP要相对应 Windows2008-1主机IP 第二块网卡不需要填写网…

液滴接触角边界曲线识别—巧用Ovito

关注 M r . m a t e r i a l , \color{Violet} \rm Mr.material\ , Mr.material , 更 \color{red}{更} 更 多 \color{blue}{多} 多 精 \color{orange}{精} 精 彩 \color{green}{彩} 彩&#xff01; 主要专栏内容包括&#xff1a; †《LAMMPS小技巧》&#xff1a; ‾ \textbf…

Navicat 连接orcal11g

Navicat 连接orcal11g orcal12g 在不安装客户端的情况下是可以连接上的&#xff0c;orcal11g不行 1、下载客户端 官网传送门 传送门 csdn下载 传送门 2、配置客户端 解压下载的文件到D:\Program Files\PremiumSoft\Navicat Premium 16\instantclient_11_2 相同的可以备份原…

基于springboot+Mybatis+mysql+vue疗养中心管理系统

基于springbootMybatismysqlvue疗养中心管理系统 一、系统介绍二、功能展示1.登陆2.信息管理3.膳食管理4.护理管理5.床位管理6.后勤管理7.后勤管理 三、其它系统实现四.获取源码 一、系统介绍 系统主要功能&#xff1a; 信息管理模块&#xff1a;包括入住登记、退住登记、档案…

锐浪报表 Grid++Report 打印数据表图像

锐浪报表 GridReport 打印数据表时&#xff0c;特别是需要在Cell中打印图像时。例如&#xff1a; 二、图像的保存方式 1、图像以文件形式。保存在指定目录中。 2、数据表中&#xff0c;图像字段&#xff0c;仅保存图像的完整文件名&#xff08;指定目录&#xff09;。 3、打印表…

Windows Server 配置(七)VPN服务器的安装

VPN服务器的安装 VPN服务器是双网卡或多网卡的配置&#xff0c;一块网卡连接内网&#xff0c;另一块连接外网&#xff0c;同时外网或远程的客户端可以通过建立VPN连接访问到内网资源。 两块网卡分别设置好地址&#xff0c;外网网卡的地址是否能做的&#xff0c;或者是在路由器…

19 区域生长用于图像分割(matlab程序)

1.简述 区域生长法 区域生长的基本思想是将具有相似性质的像素集中起来构建成分割区域。以一组种子点开始&#xff0c;将与种子性质相似(如灰度级)的领域像素附加到生长区域的每个种子上 算法步骤 a.随机选取图像中的一个像素作为种子像素&#xff0c;并将其表示出来 b.检索种…

说一说spring boot服务的健康检测

一、判断服务的健康状态 服务健康与否&#xff0c;对我们的重要性&#xff0c;主要是体现在应用部署与服务调用。具体可以是如下&#xff1a; consul/nacos 服务注册中心api网关docker/k8s 容器部署发版结果应用监控 服务注册中心要对外提供服务&#xff0c;仅限于健康的节点…

天猫厨房大电市场分析(淘宝天猫数据)

如今&#xff0c;消费者对于厨房电器的需要不断增长&#xff0c;厨房电器领域的发展规模也越来越大。在国内市场中&#xff0c;由于中国人在烹饪时喜欢煎炒烹炸&#xff0c;油烟较重&#xff0c;因此&#xff0c;以油烟机和燃气灶为代表的厨房大电也成为千家万户不可少的厨用电…

2023黑马头条.微服务项目.跟学笔记(四)

2023黑马头条.微服务项目.跟学笔记 四 自媒体文章-自动审核今日内容介绍1.自媒体文章自动审核流程2.内容安全第三方接口2.1 概述2.2 准备工作2.3 文本内容审核接口2.4 图片审核接口2.5 项目集成 3.app端文章保存接口3.1 表结构说明3.2 分布式id3.3 思路分析3.4 feign接口 4.自媒…