mininet / README.md @ 21366afc
History | View | Annotate | Download (4.18 KB)
1 |
|
---|---|
2 |
Mininet: Rapid Prototyping for Software Defined Networks |
3 |
======================================================== |
4 |
|
5 |
*The best way to emulate almost any network on your laptop!* |
6 |
|
7 |
Version 2.0.0 |
8 |
|
9 |
### What is Mininet? |
10 |
|
11 |
Mininet emulates a complete network of hosts, links, and switches |
12 |
on a single machine. To create a sample two-host, one-switch network, |
13 |
just run: |
14 |
|
15 |
`sudo mn` |
16 |
|
17 |
Mininet is useful for interactive development, testing, and demos, |
18 |
especially those using OpenFlow and SDN. OpenFlow-based network |
19 |
controllers prototyped in Mininet can usually be transferred to |
20 |
hardware with minimal changes for full line-rate execution. |
21 |
|
22 |
### How does it work? |
23 |
|
24 |
Mininet creates virtual networks using process-based virtualization |
25 |
and network namespaces - features that are available in recent Linux |
26 |
kernels. In Mininet, hosts are emulated as `bash` processes running in |
27 |
a network namespace, so any code that would normally run on a Linux |
28 |
server (like a web server or client program) should run just fine |
29 |
within a Mininet "Host". The Mininet "Host" will have its own private |
30 |
network interface and can only see its own processes. Switches in |
31 |
Mininet are software-based switches like Open vSwitch or the OpenFlow |
32 |
reference switch. Links are virtual ethernet pairs, which live in the |
33 |
Linux kernel and connect our emulated switches to emulated hosts |
34 |
(processes). |
35 |
|
36 |
### Features |
37 |
|
38 |
Mininet includes: |
39 |
|
40 |
* A command-line launcher (`mn`) to instantiate networks. |
41 |
|
42 |
* A handy Python API for creating networks of varying sizes and |
43 |
topologies. |
44 |
|
45 |
* Examples (in the `examples/` directory) to help you get started. |
46 |
|
47 |
* Full API documentation via Python `help()` docstrings, as well as |
48 |
the ability to generate PDF/HTML documentation with `make doc`. |
49 |
|
50 |
* Parametrized topologies (`Topo` subclasses) using the Mininet |
51 |
object. For example, a tree network may be created with the |
52 |
command: |
53 |
|
54 |
`mn --topo tree,depth=2,fanout=3` |
55 |
|
56 |
* A command-line interface (`CLI` class) which provides useful |
57 |
diagnostic commands (like `iperf` and `ping`), as well as the |
58 |
ability to run a command to a node. For example, |
59 |
|
60 |
`mininet> h11 ifconfig -a` |
61 |
|
62 |
tells host h11 to run the command `ifconfig -a` |
63 |
|
64 |
* A "cleanup" command to get rid of junk (interfaces, processes, files |
65 |
in /tmp, etc.) which might be left around by Mininet or Linux. Try |
66 |
this if things stop working! |
67 |
|
68 |
`mn -c` |
69 |
|
70 |
### New features in 2.0.0 |
71 |
|
72 |
Mininet 2.0.0 is a major upgrade and provides |
73 |
a number of enhancements and new features, including: |
74 |
|
75 |
* "Mininet-HiFi" functionality: |
76 |
|
77 |
* Link bandwidth limits using `tc` (`TCIntf` and `TCLink` classes) |
78 |
|
79 |
* CPU isolation and bandwidth limits (`CPULimitedHost` class) |
80 |
|
81 |
* Support for Open vSwitch 1.4+ (including Ubuntu OVS packages) |
82 |
|
83 |
* Debian packaging (and `apt-get install mininet` in Ubuntu 12.10) |
84 |
|
85 |
* First-class Interface (`Intf`) and Link (`Link`) classes for easier |
86 |
extensibility |
87 |
|
88 |
* An upgraded Topology (`Topo`) class which supports node and link |
89 |
customization |
90 |
|
91 |
* Man pages for the `mn` and `mnexec` utilities. |
92 |
|
93 |
[Since the API (most notably the topology) has changed, existing code |
94 |
that runs in Mininet 1.0 will need to be changed to run with Mininet |
95 |
2.0. This is the primary reason for the major version number change.] |
96 |
|
97 |
### Installation |
98 |
|
99 |
See `INSTALL` for installation instructions and details. |
100 |
|
101 |
### Documentation |
102 |
|
103 |
In addition to the API documentation (`make doc`), much useful |
104 |
information, including a Mininet walkthrough and an introduction |
105 |
to the Python API, is available on the |
106 |
[Mininet Web Site](http://openflow.org/mininet). |
107 |
There is also a wiki which you are encouraged to read and to |
108 |
contribute to, particularly the Frequently Asked Questions (FAQ.) |
109 |
|
110 |
### Support |
111 |
|
112 |
Mininet is community-supported. We encourage you to join the |
113 |
Mininet mailing list, `mininet-discuss` at: |
114 |
|
115 |
<https://mailman.stanford.edu/mailman/listinfo/mininet-discuss> |
116 |
|
117 |
### Contributing |
118 |
|
119 |
Mininet is an open-source project and is currently hosted at |
120 |
<https://github.com/mininet>. You are encouraged to download the code, |
121 |
examine it, modify it, and submit bug reports, bug fixes, feature |
122 |
requests, and enhancements! |
123 |
|
124 |
Best wishes, and we look forward to seeing what you can do with |
125 |
Mininet to change the networking world! |
126 |
|
127 |
### Credits |
128 |
|
129 |
The Mininet Team: |
130 |
|
131 |
* Bob Lantz |
132 |
* Brandon Heller |
133 |
* Nikhil Handigol |
134 |
* Vimal Jeyakumar |