mininet
Mininet的安装
实验描述: 学习Mininet安装的方法
难易级别: 基础
实验课时: 2.0
-
任务目的
1、了解Mininet的基本概念与作用。
2、掌握Mininet的源码安装方法。 -
任务环境
设备名称 软件环境 硬件环境 主机 Ubuntu 14.04命令行版 CPU:1核 内存:2G 磁盘:20G
注:系统默认的账户为root/root@openlab,openlab/user@openlab。 -
任务内容
1、学习Mininet的概念和作用。
2、通过不同的方式安装Mininet。 -
实验原理
一、Mininet简介
Mininet是一个可以在有限资源的普通电脑上快速建立大规模SDN原型系统的网络仿真工具。该系统由虚拟的终端节点(End-Host)、OpenFlow交换机、控制器(也支持远程控制器)组成,这使得它可以模拟真实网络,可对各种想法或网络协议等进行开发验证。目前Mininet已经作为官方的演示平台对各个版本的OpenFlow协议进行演示和测试。
Mininet是基于Linux Container这一内核虚拟化技术开发出的虚拟化平台,其实现虚拟化主要是用到了Linux内核的Network namespace资源隔离机制。Linux的Network namespace机制可以让每个namespace拥有独立的网络设备、网络协议栈和端口等。Mininet正是利用了Linux这种Networknamespace机制,才可以在一台电脑上创建多台虚拟主机。此外,Mininet建立的网络拓扑的交换节点可以是OpenvSwitch、Linux Bridge等软件交换机,交换节点之间的链路采用Linux的vethpair(virtual Ethernet pair)机制实现,控制器可以部署在网络可达的任意地方。因此,Mininet可以定制任意灵活的SDN网络拓扑,为实验用户提供快捷可靠的实验环境。
Mininet架构按datapath的运行权限不同,分为kernel datapath和userspace datapath 两种,其中kernel datapath把分组转发的逻辑编译进入Linux内核,效率非常高;userspace datapath把分组转发逻辑实现为一个应用程序,叫做ofdatapath,效率虽不及kernel datapath,但更为灵活,更容易重新编译。
Mininet的kernel datapath架构如图1所示,控制器和交换机的网络接口都在root 命名空间中,每个主机都在自己独立的命名空间里,这也就表明每个主机在自己的命名空间中都会有自己独立的虚拟网卡eth0。控制器就是一个用户进程,它会在loopback上预留的6633端口监听来自交换机安全信道的连接。每个交换机对应几个网络接口,比如s0-eth0、s0-eth1以及一个ofprotocol进程,它负责管理和维护同一控制器之间的安全信道。
图 1 kernel datapath架构 Mininet的userspace datapath架构如图2所示,与kernel datapath架构不同,网络的每个节点都拥有自己独立的namespace。因为分组转发逻辑是实现在用户空间,所以多出了一个进程叫ofdatapath。另外,Mininet除了支持kernel datapath和userspace datapath这两种架构以外,还支持OVS交换机。OVS充分利用内核的高效处理能力,它的性能和kernel datapath相差无几。
图 2 userspace datapath架构 二、Mininet安装
Mininet的安装有三种方式:一种是从网上直接下载安装好Mininet的虚拟机镜像,然后在VMware或者VirtureBox上打开Mininet虚拟机即可。这种安装方法是最简单的,但是该方法不支持最新版本的OpenvSwitch。第二种是在本地安装Mininet源代码。该安装方法在安装过程中可以设置OpenvSwitch的版本。第三种是安装Mininet文件包,该安装方法也不支持最新版本的OpenvSwitch。推荐使用第二种安装方法,安装命令即参数解释如下:
1、 命令格式
./install.sh [options]2、 参数解释
典型的[options]主要有下面几种:
-
“-a”:完整安装,包括Mininet VM,还包括Open
vSwitch的依赖关系、OpenFlow、Wireshark分离器和POX等。默认情况下,这些工具将被安装在home目录中。 -
“-nfv”:安装Mininet核心文件及依赖、OpenFlow和Open vSwitch。
-
“-s mydir”:使用此选项可将源代码建立在一个指定的目录中,而不是home目录。
所以,可能会用到下面的某一个命令来安装Mininet:
# install.sh -a 完整安装(默认安装在home目录下) # install.sh -s mydir -a 完整安装(安装在其他目录) # install.sh -nfv 安装Mininet+用户交换机+OVS(安装在home目录下) # install.sh -s mydir -nfv 安装Mininet+用户交换机+OVS(安装在其他目录下) -
-
实验步骤
本次介绍的Mininet安装方法适用于本地虚拟机,EC2远程和本地安装,并适合在一个干净的Ubuntu上进行安装。不适用于从旧版本的Mininet或OVS升级。为支持新版本的OpenvSwitch,建议安装14.04及以上版本的Ubuntu。
步骤1 以root用户登录主机,以下命令全部以root身份运行。
步骤2 执行ll命令,查看平台预置的Mininet安装包,如下图所示。
![]()
步骤3 执行以下命令,查看当前Mininet版本,查询结果如下图所示。
# cd mininet # cat INSTALL \ | more![]()
说明:Mininet2.1.0p1及以后的版本可以原生支持OpenFlow1.3,所以我们这次安装的Mininet2.3.0d1版本支持OpenFlow1.3协议。
步骤4 源码树获取成功以后,执行以下命令安装Mininet。
# cd util # ./install.sh -a说明:若使用其它命令安装,在安装前请先执行apt-get update命令更新软件列表。
步骤5 安装完成以后,通过简单的命令测试Mininet的基本功能。执行以下命令:
# mn --test pingall![]()
步骤6 执行 mn —version ,查看安装好的Mininet版本。
![]()
Mininet的可视化应用
实验描述: 学习Mininet的可视化应用
难易级别: 基础
实验课时: 2.0
-
任务目的
1、熟悉Mininet可视化界面。
2、掌握自定义拓扑及拓扑设备设置的方法,实现自定义脚本。 -
任务环境
设备名称 软件环境(镜像) 硬件环境 控制器 Ubuntu 14.04桌面版
OpenDaylight LithiumCPU:2核 内存:4G 磁盘:20G 主机 Ubuntu 14.04桌面版
Mininet 2.2.0CPU:1核 内存:2G 磁盘:20G 注:系统默认的账户为root/root@openlab,openlab/user@openlab。
-
任务内容
1、在可视化界面上自定义创建拓扑,并设置设备信息。
2、通过可视化界面生成拓扑脚本方便使用。 -
实验原理
Mininet 2.2.0版本中内置了一个Mininet可视化工具Miniedit,使用Mininet可视化界面方便了用户自定义拓扑创建,为不熟悉Python脚本的使用者创造了更简单的环境,界面直观,可操作性强。Mininet在“/home/openlab/openlab/mininet/mininet/examples”目录下提供miniedit.py脚本,执行脚本后将显示Mininet的可视化界面,在界面上可进行自定义拓扑和自定义设置。可视化界面创建拓扑会生成一个python文件,创建的拓扑可以直接运行,也可以通过python文件启动。Miniedit的界面如图所示:
![]()
MiniEdit有一个简单的用户界面,在画布的左侧显示一排工具图标,并在窗口顶部显示一个菜单栏。左侧控件依次是Select、Host、Switch、Legancy switch、Legancy router、Netlink、Controller、Run、Stop。
(1)Select:该选择工具用于移动画布上的节点,单击并拖动任何现有的节点。要选择现有的节点或链接,只需将鼠标指针悬停在它上面,然后右键单击以显示所选元素的配置菜单,或者按Delete键以删除选定的元素。
(2)Host:该主机工具用于在画布上创建主机节点。单击该工具,然后单击画布上希望放置节点的任何位置。只要该工具保持选定状态,就可以通过单击画布上的任意位置继续添加主机。用户可以通过右键单击它并从菜单中选择“属性”来配置每个主机。
(3)Switch:该交换机工具用于在画布上创建支持OpenFlow交换机,这些交换机将连接到控制器。该工具的操作方式与Host工具相同,用户可以通过在菜单上右键单击选择“属性”来配置每个交换机。
(4)Legancy switch:该传统交换机工具用于创建具有默认设置的学习以太网交换机。交换机将独立运行,无需控制器。传统交换机不能被配置、设置生成树禁用功能,所以不能在环中连接传统交换机。
(5)Legancy router:该传统路由器工具用于创建独立运作且无需控制器的基本路由器。它基本上只是一个启用了IP转发的主机。传统路由器不能在MiniEdit GUI上配置。
(6)Netlink:该网络链路工具用于在画布上创建节点之间的联系。通过选择Netlink工具创建链接,然后单击一个节点并将链接拖到目标节点。用户可以通过右击选择菜单中的“属性”来配置每个链接的属性。
(7)Controller:该控制器工具用于创建控制器,可以添加多个控制器。默认情况下,MiniEdit创建一个Mininet OpenFlow控制器,它实现控制交换机的行为。控制器类型可以配置,用户可以通过右键单击每个控制器的“属性”来配置每个控制器。
(8)Run/Stop:运行按钮将运行显示在当前画布中的MiniEdit模拟场景,停止按钮将停止运行中的节点。当MininEdit仿真处于“运行”状态时,右键单击网络元素会显示操作功能。例如,打开终端窗口,查看交换机配置或将链接状态设置为“up”或“down”。 -
实验步骤
一、实验环境检查
步骤1. 选择控制器,单击终端图标,打开终端,执行 ifconfig 命令查看控制器IP,如下图所示。
![]()
步骤2. 登录主机1,执行ifconfig命令查看Mininet的IP地址,如下图所示。
![]()
二、通过可视化界面构建拓扑
步骤1. 选择主机1,执行如下命令启动Mininet可视化界面。
$ cd openlab/mininet/mininet/examples $ sudo ./miniedit.py![]()
Mininet可视化界面如下图所示。
![]()
步骤2. 添加如下图所示的网络组件,左击鼠标选择左侧的“线”,拖动鼠标连接网络组件,如下图所示。
![]()
说明:在用鼠标选择左侧的对应的网络组件,然后在空白区域单击鼠标左键即可添加网络组件。
步骤3. 鼠标悬停在控制器上,按住鼠标右键,选择Properties即可设置其属性。设置controller type为“remote controller”,并填写控制器的端口和IP地址,如下图所示。
![]()
步骤4. 单击“OK”,命令行执行信息显示如下。
![]()
步骤5. 鼠标悬停在主机上,按住鼠标右键,选择Properties即可设置其属性。在主机属性中自行设置主机的IP地址等,如下图所示。
![]()
步骤6. 单击“OK”,命令行执行信息显示如下。
![]()
![]()
步骤7. 鼠标悬停在交换机上,按住鼠标右键,选择Properties即可设置其属性。交换机属性配置页面如下图所示,本实验中交换机采用默认配置即可。
![]()
步骤8. 单击菜单栏中的“Edit”,选择“Preferences”,进入Preferences界面,勾选“Start CLI”和OpenFlow协议版本,如下图所示。
![]()
说明:可勾选“Start CLI”,这样的话,就可以命令行界面直接对主机等进行命令操作。
步骤9. 单击“OK”,命令行执行信息显示如下。
![]()
步骤10. 单击左下角“run”按钮,即可启动Mininet,运行设置好的网络拓扑,如下图所示。
![]()
步骤11. 查看终端页面显示的运行的拓扑信息,如下图所示。
![]()
步骤12. 选择“File -> Export Level 2 Script”,将其保存为Python脚本,如下图所示。
![]()
说明:以后直接运行Python脚本即可重现拓扑,重现拓扑后可在命令行直接操作。
步骤13. 在Mininet CLI中输入Mininet常用命令,查看拓扑中的节点和连接关系,主机之间互Ping测试拓扑连通性,如下图所示。
![]()
步骤14. 单击可视化界面的“X”图标,退出可视化。
说明:若无法退出,请切换到Mininet CLI中执行exit退出Mininet,将自动关闭Mininet可视化界面。
步骤15. 在“/home/openlab/openlab/mininet/mininet/examples”目录下,执行如下命令,运行脚本。
$ sudo python topo.py![]()
-

































































































浙公网安备 33010602011771号