Mininet
一、安装Mininet
1、直接下载官网提供的含有Mininet的虚拟机镜像,地址:http://mininet.org/download/
2、通过源代码直接安装
1 | #在υbunt14.04或更高版本的环境下,获取源代码: |
3、软件包管理器直接安装
1 | #如果有mininet、OvS以前版本,先进行删除 |
Mininet文件结构:
- bin/mn:主运行文件,应用 Python程序编写,定义了MininetRunner类,执行 sudo mn即调用本程序,是模拟网络的主程序,为整个测试创建基础平台。
- mininet:核心代码基本都在这
- custom:放置自定义python文件,用来自定义拓扑
- util:放置辅助文件,包括安装脚本、文档辅助生成等
- examples:含有很多案例,包括miniedit可视化等
二、命令详解
- 网络构建启动参数
- –topo:
- –custom:
- –switch:
- –controller:
- –mac:
- 内部交互命令
- dump
- net
- nodes
- links
- dpctl
- iperf
- 外部运行参数
- -c:清除配置信息
- -h:帮助
–topo
- 单一拓扑:整个网络拓扑中交换机有且只有一个,其可以下挂一个或多个主机
sudo mn --topo=single,3
- 线性拓扑:交换机连接呈线形排列,且每个交换机所连接主机数目只有一个
sudo mn --topo=linear,4
- 树形拓扑:交换机连接成树形排列,且每个交换机所连接主机一般有多个
sudo mn --topo=tree,depth=2,fanout=2
(depth:交换机的深度,即交换机的层数,fanout:扇出,广度,即每一个交换机下挂几个节点) - 自定义拓扑:Python编写文件 file.py,执行此脚本即可创建定义的拓扑,
--custon
与--topo
联用sudo mn --custom file.py --topo mytopo
(file.py采用绝对路径,mytopo为file.py中自定义的类)
–switch
定义 mininet要使用的交换机(默认使用OVSK,即 OpenVSwitch交换机)
–controller
定义要使用的控制器,如果没有指定则使用 mininet中默认的控制器
连接远程控制器,可以指定存在于本机或者与之相连通设备上的控制器,指定远程控制器方法:
1 | sudo mn --controller=remote,--ip=[controller IP],--port=[port] |
--ip
和–port可以忽略,默认为本机ip和6653/6633端口
–mac
自动设置设备的MAC地址
让MAC地址易读,即设置交换机的MAC、主机MAC及IP地址从小到大排序,且设置简单唯一,不仅让机器容易获取,也容易让肉眼很容易识别其ID.使用方法:
1 | sudo mn --topo=tree,depth=2,fanout=2,--mac |
内部交互命令
使用mn默认创建网络,使用一系列命令査看并验证网络系统的链路健壮性.
1 | *** No default OpenFlow controller found for default switch! |
- py指令的意义是在现有的网络中动态扩展其他网络
py help(节点名)
:查询相关节点的帮助,如py help(h1)
- 注意dpctl指令的作用范围为全局
注:在内部交互中如需要输入shell命令,只需在shell命令前加上sh
即可
三、Mininet可视化
Miniedit可视化,直接在界面上编辑任意拓扑,生成 python自定义拓扑脚本,简单方便.
Mininet2.2.0+内置 miniedit.在mininet/examples下提供 miniedit.py脚本,执行脚本后显示可视化界面,可自定义拓扑及配置属性.
- 前提条件:安装python-tk:
sudo apt install python-tk
四、实验一:玩转流表
掌握 OpenvSwitch下发流表操作;掌握添加、删除流表命令以及设备通信的原理
Mininet创建一个默认树形拓扑并指定Mininet的控制器进行基本的添加、删除流表操作,使网络实现网络通信和不通信.
链接脚本exper1.py
文件:
1 | #!/usr/bin/python |
整个网络的拓扑如下:
- 其中Controller采用ryu远程控制器(该控制器在本地搭建)
步骤:
1 | #首先创建ryu远程控制器 |
- 注:dpctl是对全局的交换机起作用,添加删除都是全局的
- 想要h3和h1或h2通信,需要添加3号端口(s1交换机的3号端口)与1号端口(s2之间的1号端口)之间的的通信
- 流表具有优先级,一般来说控制器下发的流表是高于用户自己添加到流表
五、实验二:模拟多数据中心带宽实验
- 通过 Minnett模拟搭建基于不同数据中心的网络拓扑;
- 掌握多数据中心网络拓扑的构建;
- 熟悉网络性能测试工具 Iperf,根据实验测试SDN网络的性能;
- 通过程序生成真实网络流量
应用价值:
- 树状拓扑结构容错能力强
- 降低数据中心成本消耗
- 提供重新排列的全带宽无阻碍路径
- 提高带宽利用率
- 分析数据中心网络流量性能
- 为真实数据中心和仿真测试床提供有用信息
流量模拟:
网络性能评估中—个巨大的挑战就是如何生成真实的网络流量,可以通过程序来创造人工的网络流量,通过建立测试环境来模拟真实的状况.此应用主要以数据中心网络为目标场景,在 mininet仿真环境中尽可能地还原数据中心内部的真实流量情况.