Lab 1: Create a network and run a simple performance test

 

[Description]

    Prepare a SingleSwitchTopo class that adds a single switch and n hosts into a network. Each link connected from host to switch can be set the bandwidth, delay time, and loss rate. Then create a network that contains one switch and 4 hosts. Finally, use iperf to test the bandwidth between host 1 and host 4.

 

[mymininet1.py]

#!/usr/bin/python

 

from mininet.topo import Topo

from mininet.net import Mininet

from mininet.node import CPULimitedHost

from mininet.link import TCLink

from mininet.util import dumpNodeConnections

from mininet.log import setLogLevel

 

class SingleSwitchTopo(Topo):

    "Single switch connected to n hosts."

    def __init__(self, n=2, **opts):

        Topo.__init__(self, **opts)

        switch = self.addSwitch('s1')

        for h in range(n):

            #Each host gets 50%/n of system CPU

            host = self.addHost('h%s' % (h + 1), cpu=.5/n)

            #10 Mbps, 5ms delay, 0% Loss, 1000 packet queue

            self.addLink(host, switch, bw=10, delay='5ms', loss=0, max_queue_size=1000, use_htb=True)

 

def perfTest():

    "Create network and run simple performance test"

    topo = SingleSwitchTopo(n=4)

    net = Mininet(topo=topo,host=CPULimitedHost, link=TCLink)

    net.start()

    print "Dumping host connections"

    dumpNodeConnections(net.hosts)

    print "Testing network connectivity"

    net.pingAll()

    print "Testing bandwidth between h1 and h4"

    h1, h4 = net.get('h1', 'h4')

    net.iperf((h1, h4))

    net.stop()

 

if __name__=='__main__':

    setLogLevel('info')

    perfTest()

 

 

[Execution]

(Need to use chmod +x to add execution property to mymininet1.py first. Then use sudo to run the script.)

 

Dr. Chih-Heng Ke (smallko@gmail.com)

Department of Computer Science and Information Engineering,

National Quemoy University, Kinmen, Taiwan.