#!/usr/bin/python #run the foolowing command # ./Testtopology --bw 20.0 --delay 100 -t 10 # --bw for Bandwidth of the link # --delay for round-trip-delay from C1 to C3; see bellow # -t simulation time import sys from subprocess import Popen, PIPE from time import sleep #import termcolor as T import argparse import os import itertools import random import getopt from mininet.util import dumpNodeConnections from mininet.net import Mininet from mininet.log import lg from mininet.node import OVSKernelSwitch as Switch from mininet.link import Link, TCLink from mininet.util import * from mininet.node import * from mininet.topo import Topo from mininet.cli import * from mininet.util import makeNumeric, custom #topology # C1-------------------------C2-------------------------------C3 class MyTopo( Topo ): "Simple topology example." def __init__( self ): "Create custom topo." # Initialize topology Topo.__init__( self ) # Add hosts C1 = self.addHost( 'C1' ) C2 = self.addHost('C2') C3 = self.addHost('C3') # Add links self.addLink (C1, C2) self.addLink (C2, C3) topos = { 'mytopo': ( lambda: MyTopo() ) } def parse_args(): parser = argparse.ArgumentParser(description="test") parser.add_argument('--bw', '-B', action="store", help="Bandwidth of links", required=True) parser.add_argument('--delay', '-d', action="store", help="Delay", required=True) parser.add_argument('-t', action="store", help="Seconds to run the experiment", default=2) args = parser.parse_args() args.bw = float(args.bw) args.delay = float(args.delay) args.t = float(args.t) return args def progress(t): while t > 0: t -= 1 sys.stdout.flush() sleep(1) print '\r\n' def Config(net, args): C1 = net.getNodeByName('C1') C2 = net.getNodeByName('C2') C3 = net.getNodeByName('C3') C12 = C1.intf(C1.name+'-eth0') C21 = C2.intf(C2.name+'-eth0') C12.config(bw=args.bw, delay=str(float(args.delay)/4)+'ms', loss=0.0, use_tbf=False) C21.config(bw=args.bw, delay=str(float(args.delay)/4)+'ms', loss=0.0, use_tbf=False) C23 = C2.intf(C2.name+'-eth1') C32 = C3.intf(C3.name+'-eth0') C23.config(bw=float(args.bw), delay=str(float(args.delay)/4)+'ms', loss=0.0, use_tbf=False) C32.config(bw=float(args.bw), delay=str(float(args.delay)/4)+'ms', loss=0.0, use_tbf=False) #Enter the excutable code here, for example C1.sendCmd('./MIPdaemon') C2.sendCmd('user code') C1.sendCmd('user code') C3.sendCmd('user code') # progress(int(args.t)) #Print the output results out = C2.read(10000) lg.info("%s \n" %out) out = C1.read(10000) lg.info("%s \n" %out) out = C3.read(10000) lg.info("%s \n" %out) C3.sendInt() C1.sendInt() C2.sendInt() def main(argv): args = parse_args() lg.setLogLevel('info') "Create and run experiment" topo = MyTopo() net = Mininet(topo=topo, link=TCLink, controller = OVSController) net.start() Config(net,args) #dumpNodeConnections(net.hosts) net.stop() if __name__ == '__main__': main(sys.argv)