Statistics
| Branch: | Tag: | Revision:

mininet / README @ 748e35d5

History | View | Annotate | Download (2.46 KB)

1

    
2
    Mininet: A Simple Virtual Testbed for OpenFlow
3
                        aka
4
How to Squeeze a 1024-node OpenFlow Network onto your Laptop
5

    
6
(Extremely Experimental Development Version 0.1, December 2009)
7

    
8
---
9

    
10
Mininet creates simple OpenFlow test networks by using process-based
11
virtualization and network namespaces.
12

    
13
Simulated hosts (as well as switches and controllers with the user
14
datapath) are created as processes in separate network namespaces. This
15
allows a complete OpenFlow network to be simulated on top of a single
16
Linux kernel.
17

    
18
In order to run Mininet, you must have:
19

    
20
* A Linux 2.6.26 or greater kernel compiled with network namespace support
21
  enabled. (Debian 5.0 or greater should work.)
22

    
23
* The OpenFlow reference implementation (either the user or kernel
24
  datapath may be used, and the tun or ofdatapath kernel modules must be
25
  loaded, respectively)
26

    
27
* Python, Bash, etc.
28

    
29
* Root privilieges (required for network device access)
30

    
31
* The netns program or equivalent (included as netns.c) installed
32
  in an appropriate path location.
33
  
34
* mininet.py installed in an appropriate Python path location.
35

    
36
Currently mininet includes:
37

    
38
- A simple node infrastructure (Host, Switch, Controller classes) for
39
  creating virtual OpenFlow networks.
40
	
41
- A simple network infrastructure (class Network and its descendants
42
  TreeNet, GridNet and LinearNet) for creating scalable topologies and
43
  running experiments (using someNetwork.run( test ) )
44
	
45
- Some simple tests which can be run using someNetwork.run( test )
46
	
47
- A simple command-line interface which may be invoked on a network using
48
  .run( Cli )
49
	
50
- Examples (in examples/ directory) to help you get started.
51
	
52
Notes and Advice:
53

    
54
For scalable configurations, you may need to increase some of your kernel
55
limits. For example, you could add something like the following to
56
/etc/sysctl.conf:
57

    
58
# OpenFlow: get rid of ipv6
59
net.ipv6.conf.all.disable_ipv6 = 1
60
net.ipv6.conf.default.disable_ipv6 = 1
61

    
62
# Mininet: Increase open file limit
63
fs.file-max = 100000
64

    
65
# Mininet: increase network buffer space
66
net.core.wmem_max = 16777216
67
net.core.rmem_max = 16777216
68
net.ipv4.tcp_rmem = 10240 87380 16777216
69
net.ipv4.tcp_rmem = 10240 87380 16777216
70
net.core.netdev_max_backlog = 5000
71

    
72
# Mininet: increase arp cache size
73
net.ipv4.neigh.default.gc_thresh1 = 4096 
74
net.ipv4.neigh.default.gc_thresh2 = 8192 
75
net.ipv4.neigh.default.gc_thresh3 = 16384
76

    
77
# Mininet .... and increase routing table size
78
net.ipv4.route.max_size=32768
79

    
80
---
81
Bob Lantz
82
rlantz@cs.stanford.edu
83

    
84