当前位置: 首页> 汽车> 报价 > Mininet应用实践

Mininet应用实践

时间:2025/7/9 16:27:12来源:https://blog.csdn.net/qq_33067925/article/details/141233447 浏览次数: 0次

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的易用性和扩展性,可以创建基于多种数据中心场景下的网络拓扑,达到更好更全面的实验效果。

关键字:Mininet应用实践

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: