Statistics
| Branch: | Tag: | Revision:

mininet / examples / simpleperf.py @ e0bf8ece

History | View | Annotate | Download (1.47 KB)

1
#!/usr/bin/python
2

    
3
"""
4
Simple example of setting network and CPU parameters
5

6
NOTE: link params limit BW, add latency, and loss.
7
There is a high chance that pings WILL fail and that
8
iperf will hang indefinitely if the TCP handshake fails
9
to complete.
10
"""
11

    
12
from mininet.topo import Topo
13
from mininet.net import Mininet
14
from mininet.node import CPULimitedHost
15
from mininet.link import TCLink
16
from mininet.util import dumpNodeConnections
17
from mininet.log import setLogLevel
18

    
19
class SingleSwitchTopo(Topo):
20
    "Single switch connected to n hosts."
21
    def __init__(self, n=2, **opts):
22
        Topo.__init__(self, **opts)
23
        switch = self.addSwitch('s1')
24
        for h in range(n):
25
            # Each host gets 50%/n of system CPU
26
            host = self.addHost('h%s' % (h + 1),
27
                                cpu=.5 / n)
28
            # 10 Mbps, 5ms delay, 10% loss
29
            self.addLink(host, switch,
30
                         bw=10, delay='5ms', loss=10, use_htb=True)
31

    
32
def perfTest():
33
    "Create network and run simple performance test"
34
    topo = SingleSwitchTopo( n=4 )
35
    net = Mininet( topo=topo,
36
                  host=CPULimitedHost, link=TCLink,
37
                  autoStaticArp=True )
38
    net.start()
39
    print "Dumping host connections"
40
    dumpNodeConnections(net.hosts)
41
    print "Testing bandwidth between h1 and h4"
42
    h1, h4 = net.getNodeByName('h1', 'h4')
43
    net.iperf( ( h1, h4 ), l4Type='UDP' )
44
    net.stop()
45

    
46
if __name__ == '__main__':
47
    setLogLevel('info')
48
    perfTest()