Mininet源码安装与验证

发布时间 2023-05-24 09:13:47作者: ChuenSan

Mininet源码安装与验证

实验目的

1、了解Mininet的基本概念与作用。
2、掌握Mininet的源码安装方法。
3、Mininet部署后的自我验证。

实验环境

支持OpenFlow1.0及OpenFlow1.3协议的Mininet源码安装与验证实验拓扑如下图所示。
image-20230524083824604

设备名称 软件环境 硬件环境
主机 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这种Network namespace机制,才可以在一台电脑上创建多台虚拟主机。此外,Mininet建立的网络拓扑的交换节点可以是Open vSwitch、Linux Bridge等软件交换机,交换节点之间的链路采用Linux的veth pair(virtual Ethernet pair)机制实现,控制器可以部署在网络可达的任意地方。因此,Mininet可以定制任意灵活的SDN网络拓扑,为实验用户提供快捷可靠的实验环境。

Mininet架构按datapath的运行权限不同,分为kernel datapath和userspace datapath两种,其中kernel datapath把分组转发的逻辑编译进入Linux内核,效率非常高;userspace datapath把分组转发逻辑实现为一个应用程序,叫做ofdatapath,效率虽不及kernel datapath,但更为灵活,更容易重新编译。

Mininet的kernel datapath架构如下图所示,控制器和交换机的网络接口都在root 命名空间中,每个主机都在自己独立的命名空间里,这也就表明每个主机在自己的命名空间中都会有自己独立的虚拟网卡eth0。控制器就是一个用户进程,它会在loopback上预留的6633端口监听来自交换机安全信道的连接。每个交换机对应几个网络接口,比如s0-eth0、s0-eth1以及一个ofprotocol进程,它负责管理和维护同一控制器之间的安全信道。

Mininet的userspace datapath架构如下图所示,与kernel datapath架构不同,网络的每个节点都拥有自己独立的namespace。因为分组转发逻辑是实现在用户空间,所以多出了一个进程叫ofdatapath。另外,Mininet除了支持kernel datapath和userspace datapath这两种架构以外,还支持OVS交换机。OVS充分利用内核的高效处理能力,它的性能和kernel datapath相差无几。image-20230524083955567

二、Mininet安装

Mininet的安装有三种方式:
第一种、从网上直接下载安装好Mininet的虚拟机镜像,然后在VMware或者VirtureBox上打开Mininet虚拟机即可。这种安装方法是最简单的,但是该方法不支持最新版本的Open vSwitch。
第二种、在本地安装Mininet源代码(继续看,后面有)。该安装方法在安装过程中可以设置Open vSwitch的版本。第三种是安装Mininet文件包,该安装方法也不支持最新版本的Open vSwitch。推荐使用第二种安装方法,安装命令即参数解释如下:

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升级。为支持新版本的Open vSwitch,建议安装14.04及以上版本的Ubuntu。

步骤1 以root用户登录主机,以下命令全部以root身份运行。

步骤2 执行ll命令,查看平台预置的Mininet安装包,如下所示。

# ll

image-20230524084123837

说明:如果本地没有安装包可以使用网络获取资源。 (源码获取)
# sudo apt-get update
# sudo apt-get install git
# git clone http://github.com/mininet/mininet.git

步骤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

|image-20230524084228560

步骤6 执行mn —version,查看安装好的Mininet版本。

# mn --version

image-20230524084239397