|
|
|
@@ -1,12 +1,14 @@
|
|
|
|
|
|
|
|
|
|
Mininet Installation/Configuration Notes
|
|
|
|
|
|
|
|
|
|
Mininet 1.0.0
|
|
|
|
|
Mininet 2.0.0d1
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
The supported installation methods for Mininet are 1) using
|
|
|
|
|
a pre-built VM image, and 2) native installation on Ubuntu or Debian.
|
|
|
|
|
a pre-built VM image, and 2) native installation on Ubuntu. You
|
|
|
|
|
can also easily create your own Mininet VM image (3).
|
|
|
|
|
|
|
|
|
|
(Other distributions may be supported in the future - if you would
|
|
|
|
|
like to contribute an installation script, we would welcome it!)
|
|
|
|
|
|
|
|
|
@@ -20,10 +22,15 @@ Boot up the VM image, log in, and follow the instructions on the wiki page.
|
|
|
|
|
An additional advantage of using the VM image is that it doesn't mess with
|
|
|
|
|
your native OS installation or damage it in any way.
|
|
|
|
|
|
|
|
|
|
2. Native installation (experimental!) for Ubuntu 10.04 LTS
|
|
|
|
|
2. Native installation on Ubuntu
|
|
|
|
|
|
|
|
|
|
If you are running Ubuntu 10.04 LTS (or possibly Debian 5), you may be
|
|
|
|
|
able to use our handy install.sh script, which is in mininet/util.
|
|
|
|
|
If you're reading this, you've probably already done it, but the command to
|
|
|
|
|
download the Mininet source code is;
|
|
|
|
|
|
|
|
|
|
git clone git://openflow.org/mininet.git
|
|
|
|
|
|
|
|
|
|
If you are running Ubuntu, you may be able to use our handy install.sh script,
|
|
|
|
|
which is in mininet/util.
|
|
|
|
|
|
|
|
|
|
WARNING: USE AT YOUR OWN RISK!
|
|
|
|
|
|
|
|
|
@@ -34,240 +41,39 @@ do anything completely terrible, you may want to look at the script
|
|
|
|
|
before you run it, and you should make sure your system and home
|
|
|
|
|
directory are backed up just in case!
|
|
|
|
|
|
|
|
|
|
To install Mininet itself, the OpenFlow reference implementation, and
|
|
|
|
|
Open vSwitch, you may use:
|
|
|
|
|
|
|
|
|
|
$ mininet/util/install.sh -fnv
|
|
|
|
|
|
|
|
|
|
This should be reasonably quick and the following command should work
|
|
|
|
|
after the installation:
|
|
|
|
|
|
|
|
|
|
$ sudo mn --test pingall
|
|
|
|
|
|
|
|
|
|
To install ALL of the software which we use for OpenFlow tutorials,
|
|
|
|
|
you may use
|
|
|
|
|
including NOX classic, the OpenFlow WireShark dissector, the oftest
|
|
|
|
|
framework, and other potentially useful software (and to add some stuff
|
|
|
|
|
to /etc/sysctl.conf which may or may not be useful) you may use
|
|
|
|
|
|
|
|
|
|
$ mininet/util/install.sh
|
|
|
|
|
$ mininet/util/install.sh -a
|
|
|
|
|
|
|
|
|
|
This takes about 20-30 minutes.
|
|
|
|
|
This takes about 20 minutes on our test system.
|
|
|
|
|
|
|
|
|
|
Alternately, you can install just the pieces you need.
|
|
|
|
|
3. Creating your own Mininet/OpenFlow tutorial VM
|
|
|
|
|
|
|
|
|
|
We recommend the following steps, in order:
|
|
|
|
|
Creating your own Ubuntu Mininet VM for use with the OpenFlow tutorial
|
|
|
|
|
is easy! First, create a new Ubuntu VM. Then, run
|
|
|
|
|
|
|
|
|
|
[a) On Debian 5, first install a Mininet-compatible kernel:
|
|
|
|
|
$ mininet/util/install.sh -k
|
|
|
|
|
Reboot and run 'uname -r' to make sure you're running the new kernel.]
|
|
|
|
|
$ wget https://raw.github.com/mininet/mininet/util/vm/install-mininet-vm.sh
|
|
|
|
|
$ time install-mininet-vm.sh
|
|
|
|
|
|
|
|
|
|
b) Install mininet and its dependencies:
|
|
|
|
|
$ mininet/util/install.sh -n
|
|
|
|
|
|
|
|
|
|
c) Install OpenFlow 1.0 and associated useful software
|
|
|
|
|
$ mininet/util/install.sh -f
|
|
|
|
|
|
|
|
|
|
d) Install Open vSwitch and its kernel module
|
|
|
|
|
$ mininet/util/install.sh -vm
|
|
|
|
|
|
|
|
|
|
e) If you wish to install the version of NOX we use in the tutorial:
|
|
|
|
|
$ mininet/util/install.sh -x
|
|
|
|
|
|
|
|
|
|
Note: NOX development is progressing over time, so after you complete
|
|
|
|
|
the tutorial you may wish to install the latest and greatest NOX from
|
|
|
|
|
noxrepo.org.
|
|
|
|
|
|
|
|
|
|
Good luck! Some additional installation notes are provided below, for
|
|
|
|
|
the brave and/or Linux-savvy, or those who are trying to understand what
|
|
|
|
|
is installed and why.
|
|
|
|
|
Good luck!
|
|
|
|
|
|
|
|
|
|
p.s. Note that only one instance of Mininet is currently supported on a single
|
|
|
|
|
machine - that's one reason we recommend using a VM to run it.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
Mininet Manual Installation Notes
|
|
|
|
|
|
|
|
|
|
These installation notes assume you understand how to do things like
|
|
|
|
|
compile kernels, apply patches, configure networks, write code, etc.. If
|
|
|
|
|
this is unfamiliar territory, or if you run into trouble, we recommend
|
|
|
|
|
using one of our pre-built virtual machine images (see above.)
|
|
|
|
|
|
|
|
|
|
If you wish to try to create a VM to run Mininet, you may also wish
|
|
|
|
|
to look at the Wiki page:
|
|
|
|
|
|
|
|
|
|
http://openflow.org/foswiki/bin/view/OpenFlow/MininetVMCreationNotes
|
|
|
|
|
|
|
|
|
|
0. Obtaining Mininet
|
|
|
|
|
|
|
|
|
|
If you're reading this, you've already done it, but the command to
|
|
|
|
|
download mininet is:
|
|
|
|
|
|
|
|
|
|
git clone git://openflow.org/mininet.git
|
|
|
|
|
|
|
|
|
|
1. Core Mininet installation
|
|
|
|
|
|
|
|
|
|
The core Mininet installation requires gcc, make, python,
|
|
|
|
|
and setuptools. On Ubuntu and Debian you may install them with:
|
|
|
|
|
|
|
|
|
|
# aptitude install gcc make python setuptools
|
|
|
|
|
|
|
|
|
|
To install Mininet itself, with root privileges:
|
|
|
|
|
|
|
|
|
|
# cd mininet
|
|
|
|
|
# make install
|
|
|
|
|
|
|
|
|
|
This places the mininet package in /usr/lib/python-*/site-packages/,
|
|
|
|
|
so that 'import mininet' will work, and installs the primary mn
|
|
|
|
|
script (mn) as well as its helper utility (mnexec.)
|
|
|
|
|
|
|
|
|
|
On Ubuntu and Debian, Mininet's dependencies and core files may also be
|
|
|
|
|
installed using mininet/util/install.sh -n
|
|
|
|
|
|
|
|
|
|
2. Installation script for Ubuntu/Debian Lenny
|
|
|
|
|
|
|
|
|
|
If you are running Ubuntu 10.04 or Debian Lenny, you may be able to use the
|
|
|
|
|
util/install.sh script to install a compatible Linux kernel as well as
|
|
|
|
|
other software including the OpenFlow reference implementation, the Open
|
|
|
|
|
vSwitch switch implementation, and the NOX OpenFlow controller.
|
|
|
|
|
|
|
|
|
|
Many different installation options are possible by passing different
|
|
|
|
|
options to install.sh; install.sh -h lists them all.
|
|
|
|
|
|
|
|
|
|
Assuming the mininet source tree is installed in ~/mininet, the steps to run
|
|
|
|
|
install.sh to install EVERYTHING we use for OpenFlow tutorials are:
|
|
|
|
|
|
|
|
|
|
% cd
|
|
|
|
|
% time ~/mininet/util/install.sh # installs tons of stuff
|
|
|
|
|
% sudo reboot # to load new kernel
|
|
|
|
|
% ~/mininet/util/install.sh -c # to clean out unneeded kernel stuff
|
|
|
|
|
|
|
|
|
|
This installs a lot of useful software, but it will take a while (30
|
|
|
|
|
minutes or more, depending on your network connection, computer, etc..)
|
|
|
|
|
|
|
|
|
|
Probably the minimal semi-useful configuration would be to install
|
|
|
|
|
Mininet itself, kernel support if necessary, and either the
|
|
|
|
|
reference OpenFlow switch or Open vSwitch. This could be installed
|
|
|
|
|
as follows:
|
|
|
|
|
|
|
|
|
|
% sudo ~/mininet/util/install.sh -knvm
|
|
|
|
|
|
|
|
|
|
Respectively, this installs kernel support, core mininet dependencies,
|
|
|
|
|
Open vSwitch, and the Open vSwitch kernel module. If a new kernel was
|
|
|
|
|
installed, then a reboot may be required.
|
|
|
|
|
|
|
|
|
|
If install.sh cannot be used for some reason (e.g. you're on Fedora
|
|
|
|
|
or some other Linux - please don't say CentOS) or if you don't want to
|
|
|
|
|
install all of these components (they're useful!), the kernel and
|
|
|
|
|
OpenFlow software requirements are described in steps [3] and [4],
|
|
|
|
|
which follow.
|
|
|
|
|
|
|
|
|
|
If you successfully used install.sh, congratulations! You're basically
|
|
|
|
|
done. Proceed to step [6] for additional advice.
|
|
|
|
|
|
|
|
|
|
3. Linux Kernel requirements
|
|
|
|
|
|
|
|
|
|
Mininet requires a kernel built with network namespace support enabled,
|
|
|
|
|
i.e. with CONFIG_NET_NS=Y, such as the kernel shipped with
|
|
|
|
|
Ubuntu 10.04 LTS, currently 2.6.32. On Ubuntu 10.04, you should not need
|
|
|
|
|
to install or build a custom kernel, although 2.6.33+ is faster at
|
|
|
|
|
tearing down virtual ethernet pairs.
|
|
|
|
|
|
|
|
|
|
For Ubuntu and Debian, we provide a 2.6.33 kernel package which you may be
|
|
|
|
|
able to install using "util/install.sh -k". Note our kernel package
|
|
|
|
|
requires an ext2 or ext3 root file system, so it won't work if you have
|
|
|
|
|
a default Ubuntu install, which uses ext4.
|
|
|
|
|
|
|
|
|
|
If your kernel wasn't compiled with CONFIG_NET_NS=Y, you will need to
|
|
|
|
|
build and install a kernel that does! >= 2.6.33 works better, but may
|
|
|
|
|
be harder to get working, depending on your Linux distribution.
|
|
|
|
|
|
|
|
|
|
A script for building Debian packages for 2.6.33.1 is provided in
|
|
|
|
|
mininet/util/kbuild. You may wish to read it, as it applies patches
|
|
|
|
|
to enable 2.6.33.1 to build under debian-stable, and to enable the
|
|
|
|
|
tun driver to work correctly with Mininet.
|
|
|
|
|
|
|
|
|
|
Earlier kernels (e.g. 2.6.29) work with CONFIG_NET_NS enabled and no
|
|
|
|
|
additional patches, but are much slower at removing veth interfaces,
|
|
|
|
|
resulting in much slower switch shutdown.
|
|
|
|
|
|
|
|
|
|
For scalable configurations, you might need to increase some of your
|
|
|
|
|
kernel limits. Sample params are in util/sysctl_addon, which can be
|
|
|
|
|
appended to /etc/sysctl.conf (and modified as necessary for your
|
|
|
|
|
desired configuration):
|
|
|
|
|
|
|
|
|
|
sudo su -c "cat sysctl_addon >> /etc/sysctl.conf"
|
|
|
|
|
|
|
|
|
|
To save the config change, run:
|
|
|
|
|
|
|
|
|
|
sudo sysctl -p
|
|
|
|
|
|
|
|
|
|
4. OpenFlow software and configuration requirements
|
|
|
|
|
|
|
|
|
|
Mininet requires either the reference OpenFlow switch implementation
|
|
|
|
|
(from openflowswitch.org) or Open vSwitch (openvswitch.org) to be
|
|
|
|
|
installed. "make test" requires the reference user space
|
|
|
|
|
implementations as well as Open vSwitch. Note the reference kernel
|
|
|
|
|
implementation is not currently included in OpenFlow 1.0.
|
|
|
|
|
|
|
|
|
|
On Ubuntu and Debian, the install.sh script may be used with the '-f'
|
|
|
|
|
option to install the OpenFlow reference implementation, the '-v' option
|
|
|
|
|
to build Open vSwitch, and the '-m' option to install the Open vSwitch
|
|
|
|
|
kernel module into /lib/modules (note: you must build Open vSwitch first!)
|
|
|
|
|
|
|
|
|
|
Mininet will automatically load and remove kernel module dependencies
|
|
|
|
|
for supported switch types, using modprobe and rmmod - but these
|
|
|
|
|
modules must be in a location where modprobe can find them (e.g.
|
|
|
|
|
something like /lib/modules/`uname -r`/kernel/drivers/net/)
|
|
|
|
|
|
|
|
|
|
The reference OpenFlow controller (controller(8)) only supports 16
|
|
|
|
|
switches by default! If you wish to run a network with more than 16
|
|
|
|
|
switches, please recompile controller(8) with larger limits, or use a
|
|
|
|
|
different controller such as nox. A patch to controller(8) is included
|
|
|
|
|
as util/openflow-patches/controller.patch.
|
|
|
|
|
|
|
|
|
|
5. Other software dependencies
|
|
|
|
|
|
|
|
|
|
On Ubuntu and Debian, other Mininet dependencies may be installed using
|
|
|
|
|
the '-n' option of the install.sh script.
|
|
|
|
|
|
|
|
|
|
To run the iperf test, you need to install iperf:
|
|
|
|
|
|
|
|
|
|
sudo aptitude/yum install iperf
|
|
|
|
|
|
|
|
|
|
We assume you already have ping installed. ;-)
|
|
|
|
|
|
|
|
|
|
To use xterm or sshd with Mininet, you need the following:
|
|
|
|
|
|
|
|
|
|
sudo aptitude/yum install sshd xterm screen
|
|
|
|
|
|
|
|
|
|
Some examples may have additional requirements - consult the specific
|
|
|
|
|
example file for details.
|
|
|
|
|
|
|
|
|
|
The install.sh script has an '-x' option to install the version of
|
|
|
|
|
NOX from the OpenFlow tutorial.
|
|
|
|
|
|
|
|
|
|
6. Other notes and recommendations
|
|
|
|
|
|
|
|
|
|
If you did not install certain useful packages and you wish to later,
|
|
|
|
|
it may be possible to install them using install.sh.
|
|
|
|
|
|
|
|
|
|
Mininet should be run either on a machine with
|
|
|
|
|
no other important processes, or on a virtual machine (recommended!)
|
|
|
|
|
|
|
|
|
|
Multiple concurrent Mininet instances are not supported!
|
|
|
|
|
|
|
|
|
|
Good luck!
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
Historical information on OpenFlow 0.8.9 and the reference kernel module:
|
|
|
|
|
|
|
|
|
|
The kernel reference implementation has been deprecated, but it may
|
|
|
|
|
be possible to get it work with Mininet.
|
|
|
|
|
|
|
|
|
|
To switch to the most recent OpenFlow 0.8.9 release branch (the most
|
|
|
|
|
recent one with full NOX support and kernel datapath support) in your
|
|
|
|
|
OpenFlow git tree:
|
|
|
|
|
|
|
|
|
|
git checkout -b release/0.8.9 remotes/origin/release/0.8.9
|
|
|
|
|
|
|
|
|
|
A patch to enable datapath.c to compile with recent kernels
|
|
|
|
|
is included in util/openflow-patches/datapath.patch.
|
|
|
|
|
|
|
|
|
|
In OpenFlow 1.0, switch port numbering starts at 1 (for better or for worse.)
|
|
|
|
|
To run with previous versions of OpenFlow, it may be necessary
|
|
|
|
|
to change SWITCH_PORT_BASE from 1 to 0 in node.py.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|