Skip to content
Snippets Groups Projects
README 2.12 KiB
Newer Older
Bob Lantz's avatar
Bob Lantz committed

Bob Lantz's avatar
Bob Lantz committed
    Mininet: A Simple Virtual Testbed for OpenFlow
                        aka
Bob Lantz's avatar
Bob Lantz committed
How to Squeeze a 1024-node OpenFlow Network onto your Laptop

(Extremely Experimental Development Version 0.1, December 2009)

---

Mininet creates simple OpenFlow test networks by using process-based
virtualization and network namespaces.

Bob Lantz's avatar
Bob Lantz committed
Simulated hosts (as well as switches and controllers with the user
datapath) are created as processes in separate network namespaces. This
allows a complete OpenFlow network to be simulated on top of a single
Linux kernel.
Bob Lantz's avatar
Bob Lantz committed

Bob Lantz's avatar
Bob Lantz committed
Mininet provides a set of Python classes and functions which enable
creation of OpenFlow networks of varying sizes and topologies.

Bob Lantz's avatar
Bob Lantz committed
In order to run Mininet, you must have:

* A Linux 2.6.26 or greater kernel compiled with network namespace support
Bob Lantz's avatar
Bob Lantz committed
  enabled. (Debian 5.0 or greater should work)
Bob Lantz's avatar
Bob Lantz committed

Bob Lantz's avatar
Bob Lantz committed
* The OpenFlow reference implementation (either the user or kernel
  datapath may be used, and the tun or ofdatapath kernel modules must be
  loaded, respectively)
Bob Lantz's avatar
Bob Lantz committed

Bob Lantz's avatar
Bob Lantz committed
* Python, bash, ping, iperf, etc.
Bob Lantz's avatar
Bob Lantz committed

* Root privileges (required for network device access)
Bob Lantz's avatar
Bob Lantz committed

* The netns program (included as netns.c), or an equivalent program
Bob Lantz's avatar
Bob Lantz committed
  of the same name, installed in an appropriate path location
Bob Lantz's avatar
Bob Lantz committed
  
Bob Lantz's avatar
Bob Lantz committed
* mininet.py installed in an appropriate Python path location
Bob Lantz's avatar
Bob Lantz committed

Currently mininet includes:

Bob Lantz's avatar
Bob Lantz committed
- A simple node infrastructure (Host, Switch, Controller classes) for
Bob Lantz's avatar
Bob Lantz committed
  creating virtual OpenFlow networks
Bob Lantz's avatar
Bob Lantz committed
	
Bob Lantz's avatar
Bob Lantz committed
- A simple network infrastructure (class Network and its descendants
  TreeNet, GridNet and LinearNet) for creating scalable topologies and
  running experiments (e.g. TreeNet(2,3).run(pingTest) )
Bob Lantz's avatar
Bob Lantz committed
- Some simple tests which can be run using someNetwork.run( test )
Bob Lantz's avatar
Bob Lantz committed
	
Bob Lantz's avatar
Bob Lantz committed
- A simple command-line interface which may be invoked on a network using
  .run( Cli )
Bob Lantz's avatar
Bob Lantz committed

- A 'cleanup' script to get rid of junk (interfaces, processes, etc.)
  which might be left around by mininet. Try this if things stop
Bob Lantz's avatar
Bob Lantz committed
  working!
Bob Lantz's avatar
Bob Lantz committed
  
Bob Lantz's avatar
Bob Lantz committed
- Examples (in examples/ directory) to help you get started.
Bob Lantz's avatar
Bob Lantz committed

Bob Lantz's avatar
Bob Lantz committed
Batteries are not included (yet!) 

However, some preliminary installation notes are included in the INSTALL
file. Good luck!
Bob Lantz's avatar
Bob Lantz committed

---
Bob Lantz
rlantz@cs.stanford.edu