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