Statistics
| Branch: | Tag: | Revision:

mininet / README.md @ 377d1b1c

History | View | Annotate | Download (4.64 KB)

1 f7d6c9e7 Bob Lantz
Mininet: Rapid Prototyping for Software Defined Networks
2
========================================================
3 015aaa21 Bob Lantz
4 d49aaf0f Bob Lantz
*The best way to emulate almost any network on your laptop!*
5 95d9a374 Bob Lantz
6 377d1b1c Bob Lantz
Mininet 2.2.0b1
7 95d9a374 Bob Lantz
8 73da7204 Brandon Heller
### What is Mininet?
9 95d9a374 Bob Lantz
10 ead9f830 Bob Lantz
Mininet emulates a complete network of hosts, links, and switches
11
on a single machine.  To create a sample two-host, one-switch network,
12
just run:
13 95d9a374 Bob Lantz
14 eb3b74ea Bob Lantz
  `sudo mn`
15 95d9a374 Bob Lantz
16 ead9f830 Bob Lantz
Mininet is useful for interactive development, testing, and demos,
17
especially those using OpenFlow and SDN.  OpenFlow-based network
18
controllers prototyped in Mininet can usually be transferred to
19
hardware with minimal changes for full line-rate execution.
20 4744aa2b Bob Lantz
21 73da7204 Brandon Heller
### How does it work?
22 9a17de91 Bob Lantz
23 ead9f830 Bob Lantz
Mininet creates virtual networks using process-based virtualization
24
and network namespaces - features that are available in recent Linux
25 dabc0b81 Bob Lantz
kernels.  In Mininet, hosts are emulated as `bash` processes running in
26 ead9f830 Bob Lantz
a network namespace, so any code that would normally run on a Linux
27
server (like a web server or client program) should run just fine
28
within a Mininet "Host".  The Mininet "Host" will have its own private
29
network interface and can only see its own processes.  Switches in
30
Mininet are software-based switches like Open vSwitch or the OpenFlow
31
reference switch.  Links are virtual ethernet pairs, which live in the
32
Linux kernel and connect our emulated switches to emulated hosts
33
(processes).
34 95d9a374 Bob Lantz
35 73da7204 Brandon Heller
### Features
36 95d9a374 Bob Lantz
37 73da7204 Brandon Heller
Mininet includes:
38 4744aa2b Bob Lantz
39 4885cb24 Bob
* A command-line launcher (`mn`) to instantiate networks.
40 4744aa2b Bob Lantz
41 ead9f830 Bob Lantz
* A handy Python API for creating networks of varying sizes and
42
  topologies.
43 ff4b4143 Bob Lantz
44 4885cb24 Bob
* Examples (in the `examples/` directory) to help you get started.
45 95d9a374 Bob Lantz
46 ead9f830 Bob Lantz
* Full API documentation via Python `help()` docstrings, as well as
47
  the ability to generate PDF/HTML documentation with `make doc`.
48
49
* Parametrized topologies (`Topo` subclasses) using the Mininet
50
  object.  For example, a tree network may be created with the
51
  command:
52 95d9a374 Bob Lantz
53 535e61d2 Bob Lantz
  `mn --topo tree,depth=2,fanout=3`
54 ed097b3b Bob Lantz
55 ead9f830 Bob Lantz
* A command-line interface (`CLI` class) which provides useful
56
  diagnostic commands (like `iperf` and `ping`), as well as the
57
  ability to run a command to a node. For example,
58
59 535e61d2 Bob Lantz
  `mininet> h11 ifconfig -a`
60 ead9f830 Bob Lantz
61 62499d96 Bob Lantz
  tells host h11 to run the command `ifconfig -a`
62 b3dd44d4 Bob Lantz
63 dabc0b81 Bob Lantz
* A "cleanup" command to get rid of junk (interfaces, processes, files
64 ead9f830 Bob Lantz
  in /tmp, etc.) which might be left around by Mininet or Linux. Try
65
  this if things stop working!
66
67 535e61d2 Bob Lantz
  `mn -c`
68 73da7204 Brandon Heller
69 bb76c212 Bob Lantz
### New features in this release
70 73da7204 Brandon Heller
71 bb76c212 Bob Lantz
This release provides a number of bug fixes as well as
72 226a1dc3 Bob Lantz
several new features, including:
73 73da7204 Brandon Heller
74 083322a2 Bob Lantz
* Improved OpenFlow 1.3 support
75 e3c8066a Bob Lantz
76 083322a2 Bob Lantz
	- `mn --switch ovs,protocols=openflow13` starts OVS in 1.3 mode
77
	- `install.sh -w` installs 1.3-compatible Wireshark dissector using
78
	  Loxigen
79
	- `install.sh -y` installs Ryu 1.3-compatible controller
80 e3c8066a Bob Lantz
81 083322a2 Bob Lantz
* A new `nodelib.py` node library, and new `Node` types including
82
  `LinuxBridge`, `OVSBridge`, `LinuxRouter` and `NAT`
83
84
* An improved MiniEdit GUI (`examples/miniedit.py`) - thanks to
85
  Gregory Gee
86
87 481cbea1 Bob Lantz
* Experimental cluster support - consult the [documentation][1] for details,
88 083322a2 Bob Lantz
  as well as `examples/cluster.py` and an experimental `--cluster`
89
  option for topologies built with the default `Host` and `OVSSwitch`
90
  classes:
91
92
  `mn --cluster localhost,server1,server2`
93
94 481cbea1 Bob Lantz
[1]: http://docs.mininet.org
95 01e028c1 Bob Lantz
96 9de7bd66 Bob Lantz
Note that examples contain experimental features which might
97
"graduate" into mainline Mininet in the future, but they should 
98
not be considered a stable part of the Mininet API!
99 73da7204 Brandon Heller
100 3e38a959 Bob Lantz
### Installation
101 4744aa2b Bob Lantz
102 3e38a959 Bob Lantz
See `INSTALL` for installation instructions and details.
103 4744aa2b Bob Lantz
104 73da7204 Brandon Heller
### Documentation
105 4744aa2b Bob Lantz
106 dd1a450b Bob Lantz
In addition to the API documentation (`make doc`), much useful
107 ead9f830 Bob Lantz
information, including a Mininet walkthrough and an introduction
108 dd1a450b Bob Lantz
to the Python API, is available on the
109 efe3877e Vitaliy Ivanov
[Mininet Web Site](http://mininet.org).
110 ead9f830 Bob Lantz
There is also a wiki which you are encouraged to read and to
111
contribute to, particularly the Frequently Asked Questions (FAQ.)
112 4744aa2b Bob Lantz
113 73da7204 Brandon Heller
### Support
114 b3dd44d4 Bob Lantz
115 ead9f830 Bob Lantz
Mininet is community-supported. We encourage you to join the
116
Mininet mailing list, `mininet-discuss` at:
117 9a17de91 Bob Lantz
118 4744aa2b Bob Lantz
<https://mailman.stanford.edu/mailman/listinfo/mininet-discuss>
119 9a17de91 Bob Lantz
120 083322a2 Bob Lantz
### Join Us
121 4744aa2b Bob Lantz
122 32507498 Bob Lantz
Mininet is an open source project and is currently hosted
123
at <https://github.com/mininet>.  You are encouraged to download
124
the code, examine it, modify it, and submit bug reports, bug fixes,
125
feature requests, new features and other issues and pull requests.
126 083322a2 Bob Lantz
Thanks to everyone who has contributed code to the Mininet project
127
(see CONTRIBUTORS for more info!) It is because of everyone's
128
hard work that Mininet continues to grow and improve.
129
130
### Enjoy Mininet
131 4744aa2b Bob Lantz
132 ead9f830 Bob Lantz
Best wishes, and we look forward to seeing what you can do with
133
Mininet to change the networking world!
134 95d9a374 Bob Lantz
135 bb76c212 Bob Lantz
The Mininet Core Team:
136 4744aa2b Bob Lantz
137 73da7204 Brandon Heller
* Bob Lantz
138 32507498 Bob Lantz
* Brian O'Connor
139 083322a2 Bob Lantz
* Cody Burkard
140
141
Thanks again to all of the Mininet contributors, particularly Gregory
142
Gee for his work on MiniEdit.