Statistics
| Branch: | Tag: | Revision:

mininet / README.md @ ab8c4e91

History | View | Annotate | Download (4.36 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.1
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 is primarily a performance improvement and bug fix release.
72

    
73
- Batch startup has been implemented for Open vSwitch, improving
74
  startup performance.
75

    
76
- OVS patch links have been implemented via OVSLink and --link ovs
77

    
78
  Warning! These links have *serious limitations* compared to
79
  virtual Ethernet pairs: they are not attached to real Linux
80
  interfaces so you cannot use tcpdump or wireshark with them;
81
  they also cannot be used in long chains - we don't recommend more
82
  than 64 OVSLinks, for example --linear,64. However, they can offer
83
  significantly better performance than veth pairs, for certain
84
  configurations.
85

    
86
- You can now easily install Mininet on a Raspberry Pi ;-)
87

    
88
- Additional information for this release and previous releases
89
  may be found in the release notes on docs.mininet.org
90

    
91
### Installation
92

    
93
See `INSTALL` for installation instructions and details.
94

    
95
### Documentation
96

    
97
In addition to the API documentation (`make doc`), much useful
98
information, including a Mininet walkthrough and an introduction
99
to the Python API, is available on the
100
[Mininet Web Site](http://mininet.org).
101
There is also a wiki which you are encouraged to read and to
102
contribute to, particularly the Frequently Asked Questions (FAQ.)
103

    
104
### Support
105

    
106
Mininet is community-supported. We encourage you to join the
107
Mininet mailing list, `mininet-discuss` at:
108

    
109
<https://mailman.stanford.edu/mailman/listinfo/mininet-discuss>
110

    
111
### Join Us
112

    
113
Thanks again to all of the Mininet contributors!
114

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

    
123
### Enjoy Mininet
124

    
125
Best wishes, and we look forward to seeing what you can do with
126
Mininet to change the networking world!
127

    
128
Bob Lantz
129
Mininet Core Team