Mininet应用实践

news2024/12/26 16:03:53

Mininet应用实践

一、实验目的

(1)能够运用mininet可视化工具创建网络拓扑结构。
(2)能够运用mininet交互界面创建网络拓扑结构。
(3)能够运用python脚本构建网络拓扑结构。

二、实验原理或预习内容

(1)计算机网络基础理论知识
(2)软件定义网络基础知识及应用

三、实验环境

(1)硬件环境需求
个人PC设备或远程虚拟服务器一台。
(2)软件环境需求
Windows10系统,Ubuntu20.04虚拟机(要图形化界面),python运行环境

四、实验内容

(1)任务概述
在使用Openstack任意实现版本的云平台上搭建二层网络,设置子网和路由,并将虚拟机连入网络。

以下是8行2列的表格。
步骤 主要内容
1.安装Mininet 源码安装
2.安装Ryu控制器 源码安装
3.运用mininet可视化工具创建网络拓扑结构 创建4元Fat-Tree。运行Miniedit.py脚本,拖拽组件。
4. 运用mininet交互界面创建网络拓扑结构 创建4元Fat-Tree。py 命令。
5. 运用python脚本构建网络拓扑结构 创建4元Fat-Tree。mn 命令。
6. Ryu控制器运行及拓扑结构可视化 ryu-manager; gui_topolopy。
7. 虚拟机间连通实验
(1)同一交换机内部的主机间连通性及通信带宽测试;
(2)相同汇聚交换机下不同机架的主机间测试;
(3)相同核心交换机不同汇聚交换机下的主机间测试。

(2)补充知识
(1)什么是Mininet?
 软件定义网络(SDN)的仿真工具。
 创建一个真实的虚拟网络,其中包含真实的工作组件,但运行在一台机器上,以便于测试。
 提供创建主机、交换机和控制器的能力。
(2)什么是Fat-Tree?
当前,Fat-Tree 是业界普遍认可的实现无阻塞网络的技术。其基本理念是:使用大量低性能的交换机,构建出大规模的无阻塞网络,对于任意的通信模式,总有路径让他们的通信带宽达到网卡带宽。Fat-Tree 的另一个好处是,它用到的所有交换机都是相同的,这让我们能够在整个数据中心网络架构中采用廉价的交换机。
Fat-Tree是以交换机为中心的拓扑。支持在横向拓展的同时拓展路径数目;且所有交换机均为相同端口数量的普通设备,降低了网络建设成本。
具体来说,Fat-Tree结构共分为三层:核心层、汇聚层、接入层。一个k元的Fat-Tree可以归纳为5个特征:

  1. 每台交换机都有k个端口;
  2. 核心层为顶层,一共有(k/2)^2个交换机;
  3. 一共有k个pod,每个pod有k台交换机组成。其中汇聚层和接入层各占k/2台交换机;
  4. 接入层每个交换机可以容纳k/2台服务器,因此,k元Fat-Tree一共有k个pod,每个pod容纳kk/4个服务器,所有pod共能容纳kk*k/4台服务器;
  5. 任意两个pod之间存在k条路径。
    在这里插入图片描述
    (3)更多信息
    http://mininet.org/
    https://www.sdnlab.com/

五、实验步骤和实验过程描述

1. 安装Mininet

sudo git clone git://github.com/mininet/mininet
cat mininet/INSTALL
./mininet/mininet/util/install.sh -a

测试mininet是否安装成功
sudo mn --switch ovsbr --test pingall
mn --version

注意:
(1) “git://”可改为“https://”。
(2) 由于GitHub网络问题,有4个git仓库不易下载(见第六部分的截图)。可修改install.sh脚本,注释掉这几个git clone命令,以别的方式获取。
(3) 创建miniedit.py的快捷方式后可快速启动可视化工具。
ln -s mnedit mininet/examples/miniedit.py
python3 mnedit

2. 安装Ryu控制器

sudo git clone git://github.com/osrg/ryu.git
pip3 install -r ryu/tools/pip-requires
sudo pip3 install --upgrade six
sudo python3 ryu/setup.py install
# 测试ryu是否安装成功
ryu-manager

注意:
(1) eventlet:pip3 install eventlet==0.30.2,也可能是其他版本,参考报错信息调整。

3. 运用mininet可视化工具创建网络拓扑结构

最新的Mininet内置了一个Mininet可视化工具miniedit。miniedit在mininet/mininet/examples目录下提供miniedit.py脚本,执行脚本后将显示Mininet的可视化界面,在界面上可进行自定义拓扑和自定义设置。

# 执行脚本打开可视化工具(参考“注意”创建快捷方式更方便)
sudo python3 mininet/mininet/examples/miniedit.py

用鼠标选择左侧的对应的网络组件,然后在空白区域单击鼠标左键即可添加网络组件。
在主机、交换机、控制器上点击鼠标右键,选择Properties即可设置其属性。
可以通过“Controller Type”选择远程控制器(如选择Ryu控制器)进行试验,填写正确的IP地址和控制器监听端口即可。
在“Edit”中选择“Preferences”。勾选“Start CLI”后就可以在命令行界面直接对主机等进行命令操作。交换机支持的OpenFlow协议版本可多选。
点击左下角“run”按钮,即可启动mininet,运行设置好的网络拓扑,可在命令行界面显示出运行的拓扑信息。在命令行输入“quit”后才能点击“stop”按钮。
使用图形界面设置好拓扑后,可以通过选择File-save保存为.mn文件供下次打开。也可以通过选择File-Export Level 2 Script,将其保存为python脚本,以后直接运行python脚本即可重现拓扑,重现拓扑后可在命令行直接操作。
这里添加1个默认控制器,8个交换机(2个核心交换机、4个汇聚交换机、4个边缘交换机),8个主机,并连接成4元Fat-Tree结构。

注意:
(1) Exception: Error creating interface pair (aa-bbbb,cc-dddd): RTNETLINK answers: File
exists 是因为没有清除以前倒入的配置文件。

# 清除mininet配置缓存
sudo mn -c

4. 运用mininet交互界面创建网络拓扑结构

在步骤3的结构中,删除交换机e10和主机h8及对应连接,再通过交互界面添加回去。
py net.addSwitch(‘e10’)
py e10.attach(‘e10-eth1’) # eth2-eth4同理
py net.addLink(e5,e10) # e6到e10的连接同理

py net.addHost(‘h8’)
py h8.cmd(‘ifconfig h8-eth0 10.0.0.8’)
py h8.IP()

py net.addLink(e10,h8) # e10到h7的连接同理

注意:
(1) 在python脚本中,addSwitch可以通过cls参数指定交换机类型,但交互界面好像不行?没有成功,导致已有交换机如e9和e10的交换机类型不一样。
(2) 可以通过 py dir(e10) 或 py help(e10) 查看e10可调用的函数。

5. 运用python脚本构建网络拓扑结构

ryu-manager ryu/ryu/app/simple_switch_13.py
mn --custom /home/xhm/mininet/fattree.py --topo=mytopo --controller=remote

6. Ryu控制器运行及拓扑结构可视化

ryu-manager ryu/ryu/app/simple_switch_13.py ryu/ryu/app/gui_topology/gui_topology.py --observe-links
在浏览器中打开127.0.0.1:8080,查看可视化的4元Fat-Tree。
mininet> pingall

注意:
(1) 若你在启动Ryu时使用了–observe-links参数,则Ryu会收到非常大量的包含LLDP协议报文的PacketIn消息,如果不对这一PacketIn消息进行特殊处理的话,很容易导致Ryu奔溃,无法正常工作!建议在simple_switch_13.py增加如下代码。

from ryu.lib.packet import ether_types
# _packet_in_handler(self, ev):
if eth.ethertype == ether_types.ETH_TYPE_LLDP: 
# ignore lldp packet
return

(2) pingall时,可能需要等待一段时间才能ping通。试试多pingall几次。

7. 虚拟机间连通实验

(1) 同一交换机内部的主机间连通性及通信带宽测试
以h1、h2为例:
h1 ping h2
iperf h1 h2
(2) 相同汇聚交换机下不同机架的主机间测试
以h1、h3为例:
h1 ping h3
iperf h1 h3
(3) 相同核心交换机不同汇聚交换机下的主机间测试
以h1、h5为例:
h1 ping h5
iperf h1 h5

六、运行结果截图

1.安装Mininet

在这里插入图片描述
在这里插入图片描述
由于GitHub网络问题,中间4个git仓库不易下载。可修改install.sh脚本,注释掉这几个git clone命令,以别的方式获取。
在这里插入图片描述

2.安装Ryu控制器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.运用mininet可视化工具创建网络拓扑结构

在这里插入图片描述

4. 运用mininet交互界面创建网络拓扑结构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5. 运用python脚本构建网络拓扑结构

见6

6. Ryu控制器运行及拓扑结构可视化

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

7. 虚拟机间连通实验

(1) 同一交换机内部的主机间连通性及通信带宽测试

在这里插入图片描述
(2) 相同汇聚交换机下不同机架的主机间测试

在这里插入图片描述
(3) 相同核心交换机不同汇聚交换机下的主机间测试
在这里插入图片描述

七、实验结论与体会

运用Mininet可视化界面方便了用户自定义拓扑创建,为不熟悉python脚本的使用者创造了更简单的环境,界面直观,可操作性强。
运用Mininet交互界面创建网络拓扑结构比较不如其他两种创建方式方便,适合在网络已运行时做少量对网络的动态修改。
运用python脚本创建4元Fat-Tree时,可以通过改变代码中定义的L1变量来设置核心交换机的数量,并通过添加额外的交换机和链路来构成更复杂的数据中心网络拓扑。随着边缘交换机的增加,主机个数也随之增长,利用Mininet的易用性和扩展性,可以创建基于多种数据中心场景下的网络拓扑,达到更好更全面的实验效果。

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

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

相关文章

EmguCV学习笔记 VB.Net 2.2 Matrix类

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 EmguCV学习笔记目录 Vb.net EmguCV学习笔记目录 C# 笔者的博客网址:VB.Net-CSDN博客 教程相关说明以及如何获得pdf教程…

*(论文解读)Prompt-Based Distribution Alignment for Unsupervised Domain Adaptation

Prompt-Based Distribution Alignment for Unsupervised Domain Adaptation 用于UDA的基于提示的分布对齐(二区论文) 摘要 近年来,尽管大型视觉语言模型(VLM)在大规模的下游任务中取得了前所未有的成功,…

HTML标签简明通俗教程

HTML标签简明通俗教程 基本知识 HTML:是超文本标记语言(Hyper Text Markup Language)的缩写,它是用于创建网页的标准标记语言。标签是构成HTML文档的基本单位。 【HTML中的标签(tag)和元素(e…

一款手机壳凭什么卖800元?Casetify品牌策略全解析 | 品牌出海

Casetify官网 巴黎奥运会,张怡宁的手机壳火了。 张怡宁在现场观战并使用手机的照片在网上流传,不是因为这位奥运前冠军,而是她的手机壳。这款满是「花花绿绿」图案的手机壳,迅速被网友发掘出是Casetify品牌的名为「炫彩花卉」的…

Windosw下Visual Studio2022编译OpenCV

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库。它提供了一系列用于处理图像和视频的算法和函数,包括图像处理、特征检测、物体识别、人脸识别等。OpenCV支持多种编程语言,如C、Python、Ja…

从源码到应用:医疗陪诊系统与在线问诊小程序开发详解

在数字化医疗时代,医疗陪诊系统与在线问诊小程序的开发成为了医疗机构和技术公司关注的焦点。接下来,小编将与您一同深入了解。 一、医疗陪诊系统的核心功能 医疗陪诊系统旨在为患者提供更贴心的医疗服务,通过专业人员陪同患者完成就医过程。…

谷歌如何增加网站被收录的机会?

要增加网站被搜索引擎收录的机会,你需要采取一些有效的措施,要确保网站的内容质量高,内容质量不高的内容,哪怕被收录了,之后也是有很大概率会掉的,必须确保内容对用户是有价值的,并且是原创的&a…

ppt文件批量设置打开权限密码的方法

为PPT文件批量设置打开权限密码,可以通过Office软件内置的功能或借助第三方软件来实现。对于少量文件可以用PPT内置的密码设置功能实现,但是对于文件比较多的情况下必须要用到第三方的软件来进行批量设置,以下是一些方法。 一、使用Office软件…

立式报工台助力MES系统打造智能硬件解决方案

信息化与自动化的深度结合,使得企业在生产效率、质量控制以及资源管理等方面得以大幅提升。制造执行系统MES作为连接企业管理层与生产现场的重要桥梁,正在愈发得到重视。为了进一步强化MES系统的功能与应用,立式报工台作为一种新兴的智能硬件…

【网络】TCP协议面向字节流和粘包问题

目录 面向字节流 粘包问题 解决粘包问题的方法 个人主页:东洛的克莱斯韦克-CSDN博客 面向字节流 TCP是一种面向字节流的协议,这意味着TCP并不将传输的数据视为独立的消息或报文,而是将其视为一个连续的字节序列。在TCP连接中,发…

通过AI帮我分析实现的2019销售季度对比叠加图

话不多说,看效果 1)先准备销售表内容:高手自测.xlsx 2)向kimi上传文件,并提问 3)得出结果,代码如下: import pandas as pd from pyecharts.charts import Bar, Line, Overlap from pyecharts import options as opts# 读取Excel文件 df pd.read_excel(高手自测3.xlsx)# 数据预…

jenkins工具配置

上一篇(https://blog.csdn.net/abc666_666/article/details/141207741)文章我们介绍了基于docker安装jenkins的过程,本文将介绍如何配置jenkins的相关全局工具如maven、 jdk以及git等 配置的页面如下: 打开后的页面如下&#xff…

JookDB和MobaXterm下载安装使用

文章目录 1.使用背景2.MobaXterm的下载安装使用3.JooKDB的下载安装使用 1.使用背景 由于xshell和xftp等工具都是收费的,即使有破解版但是有的公司里不让用盗版的软件。可以使用MobaXterm来替代。 同理可使用JooKDB来代替收费的navicat 来连接数据库。 2.MobaXterm…

机器学习深度学习中的搜索算法浅谈

机器学习&深度学习中的搜索算法浅谈 搜索算法是计算机科学中的核心算法,用于在各种数据结构(如数组、列表、树、图等)中查找特定元素或信息。这些算法不仅在理论上具有重要意义,还在实际应用中扮演着关键角色。本文将详细探讨…

vulnhub靶机:DC-4

目录 导入靶机 信息收集 发现IP 目录扫描 端口扫描 访问 web 弱口令爆破 反弹shell 获得交互式 shell 提权 使用 hydra 暴力破解 SSH 连接 jim 用户 登录charles账户 使用 teehee 创建 root 用户 导入靶机 点击重试 然后网卡换成 NAT模式,开启靶机 信息…

web前端之实现霓虹灯背景魔术卡、旋转的背景动画、模糊效果、边框、变量、filter

MENU 前言效果图htmlstyle 前言 代码段定义一个名为Magic Card的卡片&#xff0c;并通过一系列CSS属性和动画效果来美化和增强该卡片的视觉效果。 效果图 html <div class"card">Magic Card </div>style 代码 property --rotate {syntax: "<a…

EasyCVR视频汇聚平台:深度解析GB/T 28181协议下的视频资源整合与应用

随着安防技术的快速发展和智慧城市建设的推进&#xff0c;视频监控系统作为公共安全、城市管理、企业运营等领域的重要基础设施&#xff0c;其重要性和应用范围不断扩大。在这一过程中&#xff0c;GB/T 28181作为国家标准中关于视频监控设备通信协议的规范&#xff0c;正逐渐受…

DatawhaleAI夏令营 多模态大模型

任务讲解 此次的任务和一般以模型为中心的任务不同&#xff0c;是以数据为核心的。要求在官方给定的数据集的基础上进行数据清洗和数据合成&#xff0c;生成更为优质的数据集&#xff0c;以提高多模态模型的性能。&#xff08;此次的模型以图文能力为主&#xff09; 我们将会…

搜维尔科技:驾驶模拟器背后的技术: Varjo的虚拟/混合现实 (VR/XR)提供独特的优势,最终加快汽车开发创新的步伐

专业驾驶模拟器广泛应用于车辆开发&#xff0c;帮助汽车行业在开发过程的早期做出更好的设计决策。总体目标是为测试驾驶员提供最真实的驾驶体验&#xff0c;包括动态动作和声音&#xff0c;并测试控制算法或辅助系统等功能。环境越真实&#xff0c;驾驶员的体验就越接近最终车…

[vue] pdf.js / vue-pdf 文件花屏问题

vue-pdf内核也是pdf.js&#xff0c;修改方式一样 在pdf.worker.js中加入几行代码&#xff0c;追加到”precinct.zeroBitPlanesTree zeroBitPlanesTree;“之后。 for (var l 0; l < layerNumber; l) {if (readBits(1) ! 0) {throw new JpxError("Invalid tag tree&qu…