mininet / README.md @ ff4b4143
History | View | Annotate | Download (4.35 KB)
1 |
|
---|---|
2 |
Mininet: Rapid Prototyping for Software Defined Networks |
3 |
or |
4 |
The best way to emulate almost any network on your laptop! |
5 |
|
6 |
Mininet 2.0.0rc1 |
7 |
|
8 |
--- |
9 |
** Welcome to Mininet! ** |
10 |
|
11 |
Mininet creates virtual SDN/OpenFlow test networks by using process-based |
12 |
virtualization and network namespaces. |
13 |
|
14 |
Simulated hosts (as well as switches and controllers with the user |
15 |
datapath) are created as processes in separate network namespaces. This |
16 |
allows a complete OpenFlow network to be simulated on top of a single |
17 |
Linux kernel. |
18 |
|
19 |
Mininet's support for OpenFlow and Linux allows you to create a custom |
20 |
network with customized routing, and to run almost any Linux-compatible |
21 |
networking application on top of it without modification. OpenFlow-based |
22 |
designs that work in Mininet can usually be transferred to hardware with |
23 |
minimal change for full line-rate execution. |
24 |
|
25 |
Mininet may be invoked directly from the command line, and also provides a |
26 |
handy Python API for creating networks of varying sizes and topologies. |
27 |
|
28 |
** Mininet 2.0.0rc1 ** |
29 |
|
30 |
Mininet 2.0.0rc1 is a major upgrade to the Mininet system and provides |
31 |
a number of enhancements and new features, including: |
32 |
|
33 |
* First-class Interface (`Intf`) and Link (`Link`) classes |
34 |
|
35 |
* An upgraded Topology (`Topo`) class which supports node and link |
36 |
customization |
37 |
|
38 |
* Link bandwidth limits using `tc` (`TCIntf` and `TCLink` classes) |
39 |
|
40 |
* CPU isolation and bandwidth limits (`CPULimitedHost` class) |
41 |
|
42 |
* Support for the Open vSwitch 1.4+ (including Ubuntu OVS packages) |
43 |
|
44 |
* Man pages for the `mn` and `mnexec` utilities. |
45 |
|
46 |
* Debian packaging (and apt-get install in Ubuntu 12.10) |
47 |
|
48 |
[Since the API (most notably the topology) has changed, existing code that |
49 |
runs in Mininet 1.0 will need to be changed to run with Mininet 2.0. This |
50 |
is the primary reason for the major version number change.] |
51 |
|
52 |
Mininet also includes: |
53 |
|
54 |
- A simple node infrastructure (`Host`, `Switch`, `Controller` classes) for |
55 |
creating virtual OpenFlow networks |
56 |
|
57 |
- A simple network infrastructure (`Mininet` class) supporting parametrized |
58 |
topologies (`Topo` subclasses.) For example, a tree network may be created |
59 |
with the command |
60 |
|
61 |
`# mn --topo tree,depth=2,fanout=3` |
62 |
|
63 |
- Basic tests, including connectivity (`ping`) and bandwidth (`iperf`) |
64 |
|
65 |
- A command-line interface (CLI class) which provides useful |
66 |
diagnostic commands, as well as the ability to send a command to a |
67 |
node. For example, |
68 |
|
69 |
`mininet> h11 ifconfig -a` |
70 |
|
71 |
tells host h11 to run the command `ifconfig -a` |
72 |
|
73 |
- A 'cleanup' command to get rid of junk (interfaces, processes, files in |
74 |
/tmp, etc.) which might be left around by Mininet or Linux. Try this if |
75 |
things stop working! |
76 |
|
77 |
`# mn -c` |
78 |
|
79 |
- Examples (in the examples/ directory) to help you get started. |
80 |
|
81 |
- Full API documentation via Python `help()` docstrings, as well as |
82 |
the ability to generate PDF/HTML documentation with "make doc." |
83 |
|
84 |
In order to run Mininet, you must have: |
85 |
|
86 |
* A Linux kernel compiled with network namespace support |
87 |
enabled (see `INSTALL` for additional information.) |
88 |
|
89 |
* An OpenFlow implementation (either the reference user or kernel |
90 |
space implementations, or Open vSwitch.) Appropriate kernel modules |
91 |
(e.g. tun and ofdatapath for the reference kernel implementation) must |
92 |
be loaded. |
93 |
|
94 |
* Python, `bash`, `ping`, `iperf`, etc. |
95 |
|
96 |
* Root privileges (required for network device access) |
97 |
|
98 |
Installation instructions are available in INSTALL |
99 |
|
100 |
*** Mininet Documentation *** |
101 |
|
102 |
In addition to the API documentation (`make doc`) much useful information, |
103 |
including a Mininet walkthrough and an introduction to the Python API is |
104 |
available on the [Mininet Web Site](http://openflow.org/mininet). There is |
105 |
also a wiki which you are encouraged to read and to contribute to, |
106 |
particularly the Frequently Asked Questions (FAQ.) |
107 |
|
108 |
*** Mininet Support *** |
109 |
|
110 |
Mininet is supported by the friendly Mininet community. We encourage you to |
111 |
join the Mininet mailing list, `mininet-discuss` at: |
112 |
|
113 |
<https://mailman.stanford.edu/mailman/listinfo/mininet-discuss> |
114 |
|
115 |
*** Contributing to Mininet *** |
116 |
|
117 |
Mininet is an open-source project and is currently hosted at |
118 |
<https://github.com/mininet>. You are encouraged to download the code, |
119 |
examine it, modify it, and submit bug reports, bug fixes, feature |
120 |
requests, and enhancements! |
121 |
|
122 |
Best wishes, and we look forward to seeing what you can do with Mininet |
123 |
to change the networking world! |
124 |
|
125 |
--- |
126 |
|
127 |
Bob Lantz |
128 |
Brandon Heller |
129 |
Nikhil Handigol |
130 |
Vimal Jeyakumar |
131 |
|
132 |
Mininet Project |
133 |
|