diff --git a/INSTALL b/INSTALL index 36b9d58..9ed6878 100644 --- a/INSTALL +++ b/INSTALL @@ -10,12 +10,12 @@ Preliminary Mininet Installation/Configuration Notes This places the mininet package in /usr/lib/python-2.5/site-packages/, so that 'import mininet' will work. -- Installation is simplest with a distribution that includes a kernel - which supports the CLONE_NETNS unshare flag by default. Debian 5.0+ does - (e.g. current debian-testing release); Ubuntu doesn't. If your kernel - doesn't support it, you will need to build and install a kernel that - does! If you are using OpenVSwitch, 2.6.33 works best. For the reference - kernel switch, 2.6.30 is compatible. +- Mininet requires a kernel built with support for the CLONE_NETNS unshare + flag by default. + + If your kernel doesn't support it, you will need to build and install a + kernel that does! If you are using Open vSwitch, 2.6.33 works best. For + the reference kernel switch, 2.6.30 should be compatible. - Mininet should probably be run either on a machine with no other important processes, or on a virtual machine. @@ -62,5 +62,3 @@ Preliminary Mininet Installation/Configuration Notes sudo sysctl -p --- - - diff --git a/README b/README index 057aa81..a252fcd 100644 --- a/README +++ b/README @@ -3,7 +3,7 @@ aka How to Squeeze a 1024-node OpenFlow Network onto your Laptop -(Extremely Experimental Development Version 0.1, December 2009) +Development Release, March 2010 --- @@ -15,52 +15,51 @@ 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. -Mininet provides a set of Python classes and functions which enable -creation of OpenFlow networks of varying sizes and topologies. +Although Mininet may be invoked directly from the command line, it also +incorporates a handy Python API, in the form of classes and functions +which enable creation of OpenFlow networks of varying sizes and topologies. In order to run Mininet, you must have: * A Linux 2.6.26 or greater kernel compiled with network namespace support - enabled. (debian-testing seems to have such a kernel, but it doesn't - work for compiling nox, unfortunately.) 2.6.33 or greater is recommended - for faster switch shutdown. + enabled (see INSTALL for additional information.) -* The OpenFlow reference implementation (either the user or kernel - datapath may be used, and the tun or ofdatapath kernel modules must be - loaded, respectively) +* An OpenFlow implementation (either the reference user or kernel + space implementations, or Open vSwitch.) Appropriate kernel modules + (e.g. tun and ofdatapath for the reference kernel implementation) must + be loaded. * Python, bash, ping, iperf, etc. * Root privileges (required for network device access) -* The netns program (included as netns.c), or an equivalent program - of the same name, installed in an appropriate path location - -* mininet.py installed in an appropriate Python path location - Currently mininet includes: - A simple node infrastructure (Host, Switch, Controller classes) for creating virtual OpenFlow networks -- 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) ) +- A simple network infrastructure (Mininet class) supporting parametrized + topologies (Topo subclasses.) For example, a tree network may be created + with the command -- Some simple tests which can be run using someNetwork.run( test ) - -- A simple command-line interface which may be invoked on a network using - .run( Cli ). It provides useful diagnostic commands, as well as the - ability to send a command to a node. For example, + # mn --topo tree,depth=2,fanout==3 + +- Basic tests, including connectivity (ping) and bandwidth (iperf) + +- A command-line interface (CLI class) which provides useful + diagnostic commands, as well as the ability to send a command to a + node. For example, mininet> h11 ifconfig -a tells host h11 to run the command 'ifconfig -a' -- A 'cleanup' script to get rid of junk (interfaces, processes, files in +- A 'cleanup' command to get rid of junk (interfaces, processes, files in /tmp, etc.) which might be left around by mininet. Try this if things stop working! + # mn -c + - Examples (in examples/ directory) to help you get started. Batteries are not included (yet!) @@ -71,5 +70,3 @@ file. Good luck! --- Bob Lantz rlantz@cs.stanford.edu - - diff --git a/netns.c b/netns.c deleted file mode 100644 index 036423c..0000000 --- a/netns.c +++ /dev/null @@ -1,24 +0,0 @@ -/* netns: run a command in a network namespace. - * Simplified from netunshare.c on lxc.sf.net -*/ - -#include -#include -#include - -int main(int argc, char *argv[]) -{ - if (unshare(CLONE_NEWNET) == -1) { - perror("unshare"); - return 1; - } - - if (argc) { - execve(argv[1], &argv[1], __environ); - perror("execve"); - return 1; - } - - return 0; -} -