Revision 73da7204 README.md

View differences:

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

  
2
    Mininet: Rapid Prototyping for Software Defined Networks
3
                            or
4
    The best way to emulate almost any network on your laptop!
4
The best way to emulate almost any network on your laptop!
5 5

  
6
Mininet 2.0.0rc1
6
Version 2.0.0rc1
7 7

  
8
---
9
** Welcome to Mininet! **
8
### What is Mininet?
10 9

  
11
Mininet creates virtual SDN/OpenFlow test networks by using process-based
12
virtualization and network namespaces.
10
Mininet emulates a complete network of hosts, links, and switches on a single
11
machine.  To create a sample two-host, one-switch network, just run:
13 12

  
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.
13
    sudo mn
18 14

  
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.
15
Mininet is useful for interactive development, testing, and demos, especially
16
those using OpenFlow and SDN.  OpenFlow-based network controllers prototyped in
17
Mininet can usually be transferred to hardware with minimal changes for full
18
line-rate execution.
24 19

  
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.
20
### How does it work?
27 21

  
28
** Mininet 2.0.0rc1 **
22
Mininet creates virtual networks using process-based virtualization and network
23
namespaces - features that are available in recent Linux kernels.  In Mininet,
24
hosts are emulated as bash processes running in a network namespace, so any
25
code that would normally run on a Linux server (like a web server or client
26
program) should run just fine within a Mininet "Host".  The Mininet "Host" will
27
have its own private network interface and can only see its own processes.
28
Switches in Mininet are software-based switches like Open vSwitch or the
29
OpenFlow reference switch.  Links are virtual ethernet pairs, which live in the
30
Linux kernel and connect our emulated switches to emulated hosts (processes).
29 31

  
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
32
### Features
37 33

  
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)
34
Mininet includes:
43 35

  
44
* Man pages for the `mn` and `mnexec` utilities.
36
* A command-line launcher ('mn') to instantiate networks.
45 37

  
46
* Debian packaging (and apt-get install in Ubuntu 12.10)
38
* A handy Python API for creating networks of varying sizes and topologies.
47 39

  
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.]
40
* Examples (in the examples/ directory) to help you get started.
51 41

  
52
Mininet also includes:
42
* Full API documentation via Python `help()` docstrings, as well as the ability
43
  to generate PDF/HTML documentation with "make doc."
53 44

  
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
45
* Parametrized topologies (`Topo` subclasses) using the Mininet object.  For
46
  example, a tree network may be created with the command:
60 47
  
61
  `# mn --topo tree,depth=2,fanout=3`
62
  
63
- Basic tests, including connectivity (`ping`) and bandwidth (`iperf`)
48
    mn --topo tree,depth=2,fanout=3`
64 49

  
65
- A command-line interface (CLI class) which provides useful 
66
  diagnostic commands, as well as the ability to send a command to a
50
* A command-line interface (CLI class) which provides useful diagnostic
51
  commands (like iperf and ping), as well as the ability to run a command to a 
67 52
  node. For example,
68 53
  
69
  `mininet> h11 ifconfig -a`
54
    mininet> h11 ifconfig -a`
70 55
  
71 56
  tells host h11 to run the command `ifconfig -a`
72 57

  
73
- A 'cleanup' command to get rid of junk (interfaces, processes, files in
58
* A 'cleanup' command to get rid of junk (interfaces, processes, files in
74 59
  /tmp, etc.) which might be left around by Mininet or Linux. Try this if 
75 60
  things stop working!
76 61
  
77
  `# mn -c`
78
  
79
- Examples (in the examples/ directory) to help you get started.
62
     mn -c
63

  
64
### New features in 2.0.0:
65

  
66
Mininet 2.0.0 is a major upgrade and provides
67
a number of enhancements and new features, including:
68

  
69
* Link bandwidth limits using `tc` (`TCIntf` and `TCLink` classes)
70

  
71
* CPU isolation and bandwidth limits (`CPULimitedHost` class)
72

  
73
* Support for the Open vSwitch 1.4+ (including Ubuntu OVS packages)
74

  
75
* Debian packaging (and apt-get install in Ubuntu 12.10)
76

  
77
* First-class Interface (`Intf`) and Link (`Link`) classes for easier extensibility
78

  
79
* An upgraded Topology (`Topo`) class which supports node and link
80
  customization
81

  
82
* Man pages for the `mn` and `mnexec` utilities.
83

  
84
[Since the API (most notably the topology) has changed, existing code that
85
runs in Mininet 1.0 will need to be changed to run with Mininet 2.0. This
86
is the primary reason for the major version number change.]
87

  
88
### Install
80 89

  
81
- Full API documentation via Python `help()` docstrings, as well as
82
  the ability to generate PDF/HTML documentation with "make doc."
90
To install Mininet, the easiest approach is to start with an Ubuntu system like 12.04 and run util/vm/install.sh, which will install any needed dependencies.
83 91

  
84
In order to run Mininet, you must have:
92
In general, you must have:
85 93

  
86 94
* A Linux kernel compiled with network namespace support
87 95
  enabled (see `INSTALL` for additional information.)
......
95 103

  
96 104
* Root privileges (required for network device access)
97 105

  
98
Installation instructions are available in INSTALL
106
Further installation instructions are available in INSTALL.
99 107

  
100
*** Mininet Documentation ***
108
### Documentation
101 109

  
102 110
In addition to the API documentation (`make doc`) much useful information,
103 111
including a Mininet walkthrough and an introduction to the Python API is
......
105 113
also a wiki which you are encouraged to read and to contribute to,
106 114
particularly the Frequently Asked Questions (FAQ.)
107 115

  
108
*** Mininet Support ***
116
### Support
109 117

  
110
Mininet is supported by the friendly Mininet community. We encourage you to
118
Mininet community-supported. We encourage you to
111 119
join the Mininet mailing list, `mininet-discuss` at:
112 120

  
113 121
<https://mailman.stanford.edu/mailman/listinfo/mininet-discuss>
114 122

  
115
*** Contributing to Mininet ***
123
### Contributing
116 124

  
117 125
Mininet is an open-source project and is currently hosted at
118 126
<https://github.com/mininet>. You are encouraged to download the code,
......
122 130
Best wishes, and we look forward to seeing what you can do with Mininet
123 131
to change the networking world!
124 132

  
125
---
133
### Credits
126 134

  
127
Bob Lantz
128
Brandon Heller
129
Nikhil Handigol
130
Vimal Jeyakumar
135
The Mininet Team:
131 136

  
132
Mininet Project
137
* Bob Lantz
138
* Brandon Heller
139
* Nikhil Handigol
140
* Vimal Jeyakumar
133 141

  

Also available in: Unified diff