SDN-OpenDaylight与Mininet的原理、安装、使用

一、前言

        本文将介绍OpenDaylight与Mininet的原理并介绍他们的安装及简单的使用,本实验的环境为Liunx Ubuntu 16.04,已成功安装OVS,但没有安装Mininet。

二、原理

(一)OpenDaylight

        OpenDaylight是一个软件定义网络(SDN)控制器平台,旨在简化网络管理和编程。它提供了一个可扩展的、开放的、可定制的框架,使用户能够通过统一的接口来管理和编程网络设备,无论这些设备属于哪个供应商或厂商。

        OpenDaylight的工作原理涉及以下几个关键组件和概念:

        1. 控制平面(Controller Plane):OpenDaylight的核心是控制平面,它负责网络设备的管理和控制。控制平面向网络设备发送操作指令,并从设备收集状态信息。它还负责网络中各个设备之间的通信和协调。

        2. 数据平面(Data Plane):数据平面是网络设备的实际部分,它负责网络数据的转发。在SDN中,数据平面与控制平面分离,控制平面通过控制器来管理和配置数据平面上的设备。

        3. 协议支持:OpenDaylight支持多种协议与网络设备进行通信,其中包括OpenFlow、NETCONF、SNMP等。这些协议使OpenDaylight能够与不同类型的设备进行交互,并获取设备的状态信息或者发送配置命令。

        4. 插件和应用程序:OpenDaylight基于插件架构,可以通过插件将各种功能集成到控制器中。插件可以提供一些基本功能,如网络拓扑发现、路由计算等,也可以提供更高级的应用程序,如负载均衡、安全策略等。

        5. 网络编程接口:OpenDaylight提供了一组API和编程接口,使用户能够使用自己喜欢的编程语言进行网络编程。这些接口包括RESTful API、Java API等,使用户可以编写自己的应用程序,并与OpenDaylight控制器进行交互。

        总体来说,OpenDaylight的工作原理是通过控制平面来管理和控制网络设备,使用户能够通过统一接口进行网络管理和编程。它提供了灵活的插件体系和编程接口,可以根据用户的需求进行定制和扩展。

(二)Mininet

        Mininet是一个用于构建虚拟网络的工具,旨在支持网络原型设计、测试和教育。它提供了一个轻量级的、可定制的网络仿真环境,可以在单个主机上模拟多个网络设备和主机之间的通信。

        Mininet的工作原理如下:

        1. 虚拟化网络设备:Mininet使用Linux内核的虚拟化技术(如Linux容器或虚拟机)来创建虚拟网络设备。它可以创建虚拟的交换机、路由器和主机,并通过虚拟网络链路连接它们。

        2. 控制网络拓扑:使用Mininet的Python API或命令行接口,在主机上定义要模拟的网络拓扑。可以指定交换机、路由器、主机的数量,以及它们之间的连接方式(如拓扑结构、链路带宽等)。

        3. 虚拟网络运行环境:一旦定义网络拓扑,Mininet会在主机上创建相应数量的虚拟网络设备,并配置它们的网络参数。每个虚拟设备都在Linux内核中运行,并使用不同的命名空间(network namespace)来隔离它们的网络栈。

        4. 网络连接与通信:经过配置的虚拟网络设备可以通过Mininet创建的虚拟链路进行连接。Mininet使用虚拟以太网(veth)设备来模拟网络链路,并将链路连接到对应的虚拟设备上。这样,虚拟设备之间就可以进行网络通信。

        5. 控制与监控:Mininet提供了多种方式来控制和监控虚拟网络。用户可以使用Python API或CLI命令来执行网络设备的配置和管理操作。此外,Mininet还支持网络流量监控和数据包捕获等功能,可以方便地进行网络性能分析和故障排除。

        总体来说,Mininet的原理是通过虚拟化技术在单个主机上创建虚拟网络设备,并建立虚拟链路来连接它们。它提供了简单的接口和工具来定义和管理网络拓扑,以及监控和调试虚拟网络。这使得用户可以方便地进行网络原型设计、测试和教育。

三、实验需求

        ① 安装OpenDaylight

        ② 安装Mininet并创建拓扑

        ③ 使用OpenDayLight可视化Mininet创建的拓扑

四、实验步骤

(一)OpenDaylight的安装及使用

        步骤一:更新源

       步骤二:安装JDK 1.8

        步骤三:配置JDK环境变量

                1 命令如下:

               2 profile中环境配置如下:

                  3)检查JDK环境:

         注:检查JDK环境应与实验环境相匹配,特别注意java-1.8.0-openjdk环境的具体版本应与镜像版本一致,例如我的镜像版本为amd64,则需要用java-1.8.0-openjdk-amd64i386镜像版本则需要java-1.8.0-openjdk-i386等;

        步骤四:安装OpenDayLight并启用

        (1)下载OpenDayLight

        (2)解压压缩包

        3)进入解压后的文件夹并启动ODL

        (4)进入webOpenDayLight

         注:此时,由于环境中并没有安装mininet,更没有在mininet中创建拓扑,因此需要安装mininet,本次采用直接使用命令的方式安装。

(二)Mininet的安装及使用

        步骤一:安装Mininet并创建拓扑

         1)下载并安装Mininet

         2)测试Mininet是否正常

        步骤二:查看ODL的效果

(三)通过mininet执行python脚本创建指定拓扑

        步骤一:确定指定拓扑图及链路需求

        需要创建的拓扑图如下:

        S3-H3链路要求:带宽为10,延迟5ms,最大队列大小为1000k,损耗率为10%,并使能htb算法的流量管理功能

        步骤二:编写Python脚本

       使用vim创建一个名称为姓名全拼(XJY)的python文件,并写入创建要求拓扑所需代码

       步骤三:修改该python文件为可执行文件

       步骤四:执行命令运行脚本,效果如下

五、常见错误及解决方式 

1)故障一git命令不存在

        故障原因:该现象一般是由于Ubuntu16.04中并没有安装git指令,因此会报相应错误。

         解决方案:使用apt install git安装gir命令即可

2)故障二:使用apt相关命令时文件夹被锁定

         故障原因:这种情况通常是由于缓存文件夹被占用导致的

         解决方案:删除文件夹即可,具体指令为:rm -rf +/文件(夹)路径

(3)故障三:当执行命令脚本时可能会出现如下报错:

       故障原因:这是由于ovs中缺少进行虚拟控制器测试的工具导致的,可通过执行如下命令解决:

sudo apt-get install openvswitch-testcontroller  

sudo ln /usr/bin/ovs-testcontroller /usr/bin/controller  

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

天猫数据分析工具(天猫实时数据)

后疫情时代,聚会、聚餐与送礼热度上涨,酒类产品既作为送礼首选又作为佐餐饮品的热门选手也受此影响迎来消费小高峰。在此背景下,白酒市场也开始复苏并不断加快速度。 根据鲸参谋电商数据分析平台的相关数据显示,2023年1月份至4月…

C# 简述.NET中堆和栈的区别

目录 一,引言 二,.NET的堆栈 三,.NET中的托管堆 四,.NET中的非托管堆 五、堆栈、托管堆和非托管堆的比较 六,总结 一,引言 .NET提供了垃圾回收机制,使程序员从内存管理中被解放出来。但这…

4.2 x64dbg 针对PE文件的扫描

通过运用LyScript插件并配合pefile模块,即可实现对特定PE文件的扫描功能,例如载入PE程序到内存,验证PE启用的保护方式,计算PE节区内存特征,文件FOA与内存VA转换等功能的实现,首先简单介绍一下pefile模块。 …

【Web3】Web3连接到以太坊网络(测试网、主网)

目录 什么是Web3 Web3项目连接以太坊网络 1.下载Web3 2.实例化Web3对象 3.infura 获取连接以太坊网络节点 4.添加网络节点 什么是Web3 web3.js开发文档:web3.js - Ethereum JavaScript API — web3.js 1.0.0 documentation web3.js 中文文档 : web3.js - 以…

Mysql 幻读,当前读和快照读

什么是幻读 幻读指当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户在读取该范围的数据行时,会发现有新增行数据; mysql 在RR(可重复读)隔离级别利用间隙锁机制下一定程度上解决了幻读。 这里的一定程度…

Android Studio实现内容丰富的安卓美食管理发布平台

如需源码可以添加q-------3290510686,也有演示视频演示具体功能,源码不免费,尊重创作,尊重劳动。 项目编号079 1.开发环境 android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端: 1.注册登录 2.查看公告 3.查…

更改VS code Jupyter 插件的默认快捷键

更改vscode 中Jupyter插件的默认快捷键,解放插入空行的系统快捷键 替换Jupyter默认快捷键 更改vscode 中Jupyter插件的默认快捷键,解放插入空行的系统快捷键打开keyboard shortcuts 设置方法一方法二 更换快捷键 end Jupyter 插件很好的在VS code中集成了…

异地远程访问本地SQL Server数据库【无公网IP内网穿透】

文章目录 1.前言2.本地安装和设置SQL Server2.1 SQL Server下载2.2 SQL Server本地连接测试2.3 Cpolar内网穿透的下载和安装2.3 Cpolar内网穿透的注册 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 转载自cpolar极点云文章:无需公网IP…

Golang的trace性能分析

文章目录 一、trace概述二、trace的使用方式代码中trace采集通过pprof采集 三、trace分析细节trace的web界面trace中需要关注的关注GC的频率关注goroutine调度情况关注goroutine的数量理想情况 四、GC分析当前服务GC情况设置GOGC设置GOMEMLIMITGC阈值的讨论GC的特点 五、gorout…

前端学习——jsDay5

对象 对象使用 小练习 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"width…

Spring Boot中的请求参数绑定及使用

Spring Boot中的请求参数绑定及使用 在Web应用程序中&#xff0c;请求参数绑定是非常重要的操作。Spring Boot框架使得请求参数绑定变得非常简单&#xff0c;通过使用注解和预定义的类可以轻松地实现此操作。本文将介绍Spring Boot中的请求参数绑定及其使用。 请求参数绑定 在…

银河麒麟服务器v10 sp1 部署 Net6.0 项目

上一篇已经部署了Net6.0环境&#xff0c;本节将实现Net6.0程序部署&#xff0c;打开或新建项目&#xff0c;修改appsettings.json配置&#xff1a; 添加&#xff1a;"urls": "http://*:8061",//linux部署使用&#xff0c;端口可根据需求修改为自己的 在项…

关于数据库SQL优化

简介 在项目上线初期&#xff0c;业务数据量相对较少&#xff0c;SQL的执行效率对程序运行效率的影响可能不太明显&#xff0c;因此开发和运维人员可能无法判断SQL对程序的运行效率有多大。但随着时间的积累&#xff0c;业务数据量的增多&#xff0c;SQL的执行效率对程序的运行…

简要介绍 | 基于深度学习的姿态估计技术

注1&#xff1a;本文系“简要介绍”系列之一&#xff0c;仅从概念上对基于深度学习的姿态估计技术进行非常简要的介绍&#xff0c;不适合用于深入和详细的了解。 注2&#xff1a;"简要介绍"系列的所有创作均使用了AIGC工具辅助 基于深度学习的姿态估计技术 背景介绍 …

前端 | windows安装nvm管理node.js

文章目录 01 nvm介绍02 安装03 设置镜像04 安装与版本管理05 基础使用 01 nvm介绍 nvm&#xff0c;即node version manager&#xff0c;是一个方便切换和管理node.js版本的工具。 安装nvm前的注意事项&#xff1a; 卸载掉现有的node.js所有安装目录避免出现空格和中文选用管理…

用vue3+elementplus做的一个滚动菜单栏的组件

目录 起因概览设计及解决思路1.滚动条竖起来2.绑定菜单3.吸附优化 组件全部代码 起因 在elementplus中看到了滚动条绑定了slider&#xff0c;但是这个感觉很不实用&#xff0c;在底部&#xff0c;而且横向滚动&#xff0c;最常见的应该是那种固定在左上角的带着菜单的滚动条&a…

Windows 10睡眠失效解决办法

第一步 检查是否有程序阻止睡眠 打开终端,执行如下命令 powercfg /requests如果返回结果不为空说明有程序阻止睡眠 找到对应的程序将其退出即可 如果返回结果为空则进行下一步 第二步 检查网易UU加速器 如果你安装了UU加速器 打开网易UU加速器 打开系统设置,将休眠不断…

MySQL压测实战

写作目的 最近看到一句话是MySQL的TPS是4000&#xff0c;这句话是不严谨的&#xff0c;因为没有说服务器的配置。所以自己买了个服务器做了一个压测。希望自己对数据有一个概念。 注意&#xff1a;服务器不同结果不同&#xff0c;结果不具有普适性。 服务器配置 配置参数CPU…

【数据结构】堆的实现(向下调整和向上调整法)和堆排序的实现

目录 一、堆的概念引入 二、小堆的实现 首先&#xff0c;我们会跟线性表一样建立一个动态数组来存堆的数据 ①、堆的初始化--HeapInit ②、小堆的向下调整法的实现 ③、堆排序的实现 ④、堆的插入和向上调整法 ⑤、删除堆顶数据 ⑥、获取堆顶 三、时间复杂度总结&#…

网络安全进阶学习第六课——服务器解析漏洞

文章目录 1、概念2、Apache解析漏洞 CVE-2017-157153、Apache AddHandler解析漏洞4、IIS6 解析漏洞&#xff08;;&#xff09;5、IIS6 解析漏洞&#xff08;*.asp/目录&#xff09;6、IIS7 解析漏洞&#xff08;ISAP或CGI的模式下&#xff09;7、nginx解析漏洞&#xff08;cgi.…