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

news2024/12/28 20:21:13

一、前言

        本文将介绍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  

 

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

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

相关文章

【抖音小游戏】 Unity制作抖音小游戏方案 最新完整详细教程来袭【持续更新】

前言 【抖音小游戏】 Unity制作抖音小游戏方案 最新完整详细教程来袭【持续更新】一、相关准备工作1.1 用到的相关网址1.2 注册字节开发者后台账号 二、相关集成工作2.1 下载需要的集成资源2.2 安装StarkSDK和starksdk-unity-tools工具包2.3 搭建测试场景 三、构建发布3.1 发布…

2.5 DNS 应用 -- 1. DNS 概述

2.5 DNS 应用 -- 1. DNS 概述 DNS:Domain Name SystemDNS分布式层次式数据库DNS根域名服务器TLD和权威域名解析服务器本地域名解析服务器 DNS 查询迭代查询递归查询 DNS记录缓存和更新 DNS:Domain Name System Internet上主机/路由器的识别问题 IP地址域…

基于matlab处理 RGB-D图像数据以构建室内环境地图并估计相机的轨迹(附源码)

一、前言 视觉同步定位和映射 (vSLAM) 是指计算摄像机相对于周围环境的位置和方向,同时映射环境的过程。 您可以使用单眼摄像头执行 vSLAM。但是,深度无法准确计算,估计的轨迹未知,并且随着时间的推移而漂…

红帽恪守对开源的承诺:对 git.centos.org 变更的回应

导读红帽上周宣布了限制源代码访问性的政策,称其企业发行版 RHEL (Red Hat Enterprise Linux) 相关源码仅通过 CentOS Stream 公开,付费客户和合作伙伴可通过 Red Hat Customer Portal 访问到源代码。 此举引发了巨大争议,红帽甚至被指责 “背…

大数据开发环境-Hbase

1.启动之前需要确保hadoop启动 # 查看 Hadoop 是否已经正常启动 : start-all.sh jps 2.启动Hbase

运输层:TCP可靠传输

1.运输层:TCP可靠传输 笔记来源: 湖科大教书匠:TCP可靠传输 声明:该学习笔记来自湖科大教书匠,笔记仅做学习参考 TCP实现可靠传输的方式:以字节为单位的滑动窗口 发送方将31 ~ 41号报文段发送 假设32 ~ 3…

React04-Hooks 详解

一、Hooks 1. Hooks 简介 Hooks,可以翻译成钩子。 在类组件中钩子函数就是生命周期函数,Hooks 主要用在函数组件。 在 react 中定义组件有2种方式:class 定义的类组件和 function 定义的函数组件。 在类组件中,钩子函数可以给…

学生适合用什么台灯护眼?暑假适合孩子学习的台灯分享

又要临近暑假了,孩子们又要开始整天围着手机、电视、平板等等,想想就感觉到头疼。也有些家长趁着暑假期间给孩子报一下兴趣班,培养一下孩子的技能和情操。不过也要注意孩子的视力健康,不少孩子就是因为在暑假期间没有注意用眼习惯…

Camtasia 2023.1.0免费版电脑视频录制和剪辑软件

Camtasia Studio是一套专业的屏幕录像软件,同时包含Camtasia 录像器、Camtasia Studio(编辑器)、Camtasia 菜单制作器、Camtasia 剧场、Camtasia 播放器和Screencast的内置功能。Camtasia 是一款专门捕捉屏幕影音的工具软件。它能在任何模式下…

企业金蝶云星空服务器数据库中了locked勒索病毒如何应对

近日,很多企业的金蝶云星空财务账套被locked勒索病毒攻击,财务系统内的许多重要数据被加密,无法正常打开,计算机内的所有文件的扩展名全部都变成了.locked后缀勒索病毒,导致服务器数据库被锁定。这种情况的出现与企业的…

云原生之深入解析K8S Istio Gateway服务的架构分析与实战操作

一、概述 Istio 提供一种简单的方式来为已部署的服务建立网络,该网络具有负载均衡、服务间认证、监控、网关等功能,而不需要对服务的代码做任何改动。 istio 适用于容器或虚拟机环境(特别是 k8s),兼容异构架构&#x…

6.1 计算机网络应用模式

6.1 计算机网络应用模式 计算机网络应用模式与计算机网络的发展密切相关,大体可以分为三个阶段 以大型机为中心的应用模式(mainframe-centric) 该应用模式也称为分时共享(time-sharing)模式,也就是面向终端…

配置IOC的方式(配置文件和注解)

目录 背景实现xml方式实现结果&#xff1a; 注解方式实现效果&#xff1a; 升华 背景 我们已经学些了IOC概念和原理详情请见 一篇文章解释清楚IOC和DI 下面说如何实现IOC容器的效果。 实现 首先引入jar包 <dependency><groupId>org.springframework</groupId…

Prometheus - Concept

一 Prometheus 是什么 Prometheus 是一个开源的 监控和报警系统 。该系统内置和基于时间序列地抓取、存储、查询、绘图数据、报警。 现在是一个开源项目&#xff0c;继 K8S 后的第二个云原生计算基金会的托管项目&#xff0c;可见其火爆程度。 二 Prometheus 的特征 Promet…

异构系统的对接互通,天翎低代码平台有高招

编者按&#xff1a;企业内部里&#xff0c;最难的就是跨系统、跨应用的对接问题&#xff0c;系统之间的阻隔是影响业务效率的重要原因之一&#xff0c;如今随着技术的发展&#xff0c;这个问题上天翎低代码平台在异构系统对接方面提供多元化、多层次的方式让企业高效低成本的打…

python处理yaml、ini和execl文件

一、yaml的初步了解 YAML 是一个被广泛使用的数据序列化和配置语言&#xff0c;后缀可以为yaml或yml, 支持#注释&#xff0c;通过缩进表示层级&#xff0c;区分大小写&#xff0c;读取出来之后是一个字典列表 yaml 的用途&#xff1a; 用于做配置文件 &#xff08;yaml &…

【每天40分钟,我们一起用50天刷完 (剑指Offer)】第十八天 18/50【层序遍历二叉树(两个队列一个遍历上一层,一个记录下一层)】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

数字虚拟人物制作为多个行业中的智能应用场景赋能

虚拟人物制作的广义定义为数字化外形的虚拟人物&#xff0c;是“虚拟”(存在于非物理世界中)“数字”(由计算机图形学、图形染、动作捕捉、深度学习、语音合成等计算机手段创造及使用)“人”(具有多重人类特征&#xff0c;如外貌、人类表演/交互能力等)的综合产物。 制作一个虚…

Hbase drop 表卡住没有响应

在实际工作中遇到过重新创建一个hbase的hive外部表&#xff0c;在 disable table_name; drop table_name 在drop table_name卡住 最后有提示报错。 建议各位查看下表有无lock的情况&#xff0c; 查看和释放hbase lock可以通过如下方式来查看 pid获取&#xff1a; 在 Ma…

idea支持vue文件-设置对vue的支持

一、idea支持.vue文件 这一步其实就是安装vue.js插件&#xff0c;具体路径为&#xff1a;File ----> Settings ----> Plugins ----> 输入vue&#xff0c;点击搜索结果里的vue.js右边的install按钮&#xff0c;安装成功后重启idea&#xff0c;这样idea就能识别.vue文件…