Skip to content
Snippets Groups Projects
INSTALL 10.1 KiB
Newer Older
Bob Lantz's avatar
Bob Lantz committed

Mininet Installation/Configuration Notes
Bob Lantz's avatar
Bob Lantz committed

Bob Lantz's avatar
Bob Lantz committed

The supported installation methods for Mininet are 1) using
Bob Lantz's avatar
Bob Lantz committed
a pre-built VM image, and 2) native installation on Ubuntu or Debian.
(Other distributions may be supported in the future - if you would
like to contribute an installation script, we would welcome it!)

1. Easiest "install" - use our pre-built VM image!

The easiest way to get Mininet running is to start with one of our pre-built 
virtual machine images from http://openflow.org/mininet
Bob Lantz's avatar
Bob Lantz committed

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.
Bob Lantz's avatar
Bob Lantz committed

2. Native installation (experimental!) for Ubuntu 10.04 LTS
Bob Lantz's avatar
Bob Lantz committed

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.
Bob Lantz's avatar
Bob Lantz committed

WARNING: USE AT YOUR OWN RISK!

install.sh is a bit intrusive and may possibly damage your OS and/or
home directory, by creating/modifying several directories such as
mininet, openflow, openvswitch and noxcore. Although we hope it won't
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!
Bob Lantz's avatar
Bob Lantz committed

To install ALL of the software which we use for OpenFlow tutorials,
you may use
Bob Lantz's avatar
Bob Lantz committed

$ mininet/util/install.sh

This takes about 20-30 minutes.

Alternately, you can install just the pieces you need.

We recommend the following steps, in order:
Bob Lantz's avatar
Bob Lantz committed

[a) On Debian 5, first install a Mininet-compatible kernel:
Bob Lantz's avatar
Bob Lantz committed
    $ mininet/util/install.sh -k
   Reboot and run 'uname -r' to make sure you're running the new kernel.]

b) Install mininet and its dependencies:
    $ mininet/util/install.sh -n
    
c) Install OpenFlow 1.0 and associated useful software
Bob Lantz's avatar
Bob Lantz committed
    $ mininet/util/install.sh -f
d) Install Open vSwitch and its kernel module
Bob Lantz's avatar
Bob Lantz committed
    $ mininet/util/install.sh -vm
e) If you wish to install the version of NOX we use in the tutorial:
Bob Lantz's avatar
Bob Lantz committed
    $ 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.

Bob Lantz's avatar
Bob Lantz committed
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.
Bob Lantz's avatar
Bob Lantz committed
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
Bob Lantz's avatar
Bob Lantz committed
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:

Bob Lantz's avatar
Bob Lantz committed
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:
   
Bob Lantz's avatar
Bob Lantz committed
  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:
Bob Lantz's avatar
Bob Lantz committed
  # 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.)
Bob Lantz's avatar
Bob Lantz committed
  On Ubuntu and Debian, Mininet's dependencies and core files may also be 
  installed using mininet/util/install.sh -n
Bob Lantz's avatar
Bob Lantz committed
2. Installation script for Ubuntu/Debian Lenny
  If you are running Ubuntu 10.04 or Debian Lenny, you may be able to use the
Bob Lantz's avatar
Bob Lantz committed
  util/install.sh script to install a compatible Linux kernel as well as
  other software including the OpenFlow reference implementation, the Open
Bob Lantz's avatar
Bob Lantz committed
  vSwitch switch implementation, and the NOX OpenFlow controller. 
Bob Lantz's avatar
Bob Lantz committed
  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
Bob Lantz's avatar
Bob Lantz committed
  install.sh to install EVERYTHING we use for OpenFlow tutorials are:
Bob Lantz's avatar
Bob Lantz committed
  
Bob Lantz's avatar
Bob Lantz committed
  % cd
Bob Lantz's avatar
Bob Lantz committed
  % time ~/mininet/util/install.sh  # installs tons of stuff
Bob Lantz's avatar
Bob Lantz committed
  % sudo reboot  # to load new kernel
  % ~/mininet/util/install.sh -c  # to clean out unneeded kernel stuff

Bob Lantz's avatar
Bob Lantz committed
  This installs a lot of useful software, but it will take a while (30
  minutes or more, depending on your network connection, computer, etc..)
Bob Lantz's avatar
Bob Lantz committed
  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.
Bob Lantz's avatar
Bob Lantz committed

Bob Lantz's avatar
Bob Lantz committed
  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
Bob Lantz's avatar
Bob Lantz committed
  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.
      
Bob Lantz's avatar
Bob Lantz committed
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
Bob Lantz's avatar
Bob Lantz committed
  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.
Bob Lantz's avatar
Bob Lantz committed
  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.
    
Bob Lantz's avatar
Bob Lantz committed
  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,
Bob Lantz's avatar
Bob Lantz committed
  resulting in much slower switch shutdown.
  For scalable configurations, you might need to increase some of your
Bob Lantz's avatar
Bob Lantz committed
  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:
Bob Lantz's avatar
Bob Lantz committed
4. OpenFlow software and configuration requirements

  Mininet requires either the reference OpenFlow switch implementation
Bob Lantz's avatar
Bob Lantz committed
  (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!)
Bob Lantz's avatar
Bob Lantz committed
  
Bob Lantz's avatar
Bob Lantz committed
  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
Bob Lantz's avatar
Bob Lantz committed
  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
Bob Lantz's avatar
Bob Lantz committed
  as util/openflow-patches/controller.patch.
Bob Lantz's avatar
Bob Lantz committed
  
Bob Lantz's avatar
Bob Lantz committed
5. Other software dependencies
  On Ubuntu and Debian, other Mininet dependencies may be installed using
  the '-n' option of the install.sh script.

Bob Lantz's avatar
Bob Lantz committed
  To run the iperf test, you need to install iperf:
    sudo aptitude/yum install iperf
  We assume you already have ping installed. ;-)
  
Bob Lantz's avatar
Bob Lantz committed
  To use xterm or sshd with Mininet, you need the following:
    sudo aptitude/yum install sshd xterm screen
    
Bob Lantz's avatar
Bob Lantz committed
  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.
  
Bob Lantz's avatar
Bob Lantz committed
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.
  
Bob Lantz's avatar
Bob Lantz committed
  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.