Statistics
| Branch: | Tag: | Revision:

mininet / README.md @ 4219b229

History | View | Annotate | Download (5.1 KB)

1
Mininet: Rapid Prototyping for Software Defined Networks
2
========================================================
3

    
4
*The best way to emulate almost any network on your laptop!*
5

    
6
Mininet 2.2.0b2
7

    
8
### What is Mininet?
9

    
10
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

    
14
  `sudo mn`
15

    
16
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

    
21
### How does it work?
22

    
23
Mininet creates virtual networks using process-based virtualization
24
and network namespaces - features that are available in recent Linux
25
kernels.  In Mininet, hosts are emulated as `bash` processes running in
26
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

    
35
### Features
36

    
37
Mininet includes:
38

    
39
* A command-line launcher (`mn`) to instantiate networks.
40

    
41
* A handy Python API for creating networks of varying sizes and
42
  topologies.
43

    
44
* Examples (in the `examples/` directory) to help you get started.
45

    
46
* 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

    
53
  `mn --topo tree,depth=2,fanout=3`
54

    
55
* 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
  `mininet> h11 ifconfig -a`
60

    
61
  tells host h11 to run the command `ifconfig -a`
62

    
63
* A "cleanup" command to get rid of junk (interfaces, processes, files
64
  in /tmp, etc.) which might be left around by Mininet or Linux. Try
65
  this if things stop working!
66

    
67
  `mn -c`
68

    
69
### New features in this release
70

    
71
This release provides a number of bug fixes as well as
72
several new features, including:
73

    
74
* Improved OpenFlow 1.3 support
75

    
76
	- `mn --switch ovs,protocols=openflow13` starts OVS in 1.3 mode
77
	- `install.sh -w` installs a 1.3-compatible Wireshark dissector using
78
	  Loxigen
79
	- `install.sh -y` installs the Ryu 1.3-compatible controller
80

    
81
* A new `nodelib.py` node library, and new `Node` types including
82
  `LinuxBridge`, `OVSBridge`, `LinuxRouter` (see `examples/`)
83
  and `NAT`
84

    
85
* A `--nat` option which connects a Mininet network to your LAN using NAT
86
  (For this to work correctly, Mininet's `--ipbase` subnet should not 
87
  overlap with any external or internet IP addresses you wish to use)
88

    
89
* An improved MiniEdit GUI (`examples/miniedit.py`) - thanks to
90
  Gregory Gee
91

    
92
* Support for multiple `--custom` arguments to `mn`
93

    
94
* Experimental cluster support - consult the 
95
  [documentation](http://docs.mininet.org) for details -
96
  as well as `examples/cluster.py` and an experimental `--cluster`
97
  option for topologies built with the default `Host` and `OVSSwitch`
98
  classes:
99

    
100
  `mn --cluster localhost,server1,server2`
101

    
102
Note that examples contain experimental features which might
103
"graduate" into mainline Mininet in the future, but they should 
104
not be considered a stable part of the Mininet API!
105

    
106
A number of bugs have also been fixed, most notably multiple link
107
support in `Topo()`. See github issues and the release notes on
108
the Mininet wiki for additional information.
109

    
110
### Installation
111

    
112
See `INSTALL` for installation instructions and details.
113

    
114
### Documentation
115

    
116
In addition to the API documentation (`make doc`), much useful
117
information, including a Mininet walkthrough and an introduction
118
to the Python API, is available on the
119
[Mininet Web Site](http://mininet.org).
120
There is also a wiki which you are encouraged to read and to
121
contribute to, particularly the Frequently Asked Questions (FAQ.)
122

    
123
### Support
124

    
125
Mininet is community-supported. We encourage you to join the
126
Mininet mailing list, `mininet-discuss` at:
127

    
128
<https://mailman.stanford.edu/mailman/listinfo/mininet-discuss>
129

    
130
### Join Us
131

    
132
Mininet is an open source project and is currently hosted
133
at <https://github.com/mininet>.  You are encouraged to download
134
the code, examine it, modify it, and submit bug reports, bug fixes,
135
feature requests, new features and other issues and pull requests.
136
Thanks to everyone who has contributed code to the Mininet project
137
(see CONTRIBUTORS for more info!) It is because of everyone's
138
hard work that Mininet continues to grow and improve.
139

    
140
### Enjoy Mininet
141

    
142
Best wishes, and we look forward to seeing what you can do with
143
Mininet to change the networking world!
144

    
145
The Mininet Core Team:
146

    
147
* Bob Lantz
148
* Brian O'Connor
149
* Cody Burkard
150

    
151
Thanks again to all of the Mininet contributors, particularly Gregory
152
Gee for his work on MiniEdit.
153