def createTopo(g=4, a=None, p=1, h=1, bw_sw_h=10, bw_inn_sw=30, bw_int_sw=10, ip="127.0.0.1", port=6633): if a is None: a = g - 1 # Canonical Topo logging.debug("LV1 Create DragonFly") topo = DragonFly(g, a, p, h) topo.createTopo(bw_sw_h=bw_sw_h, bw_inn_sw=bw_inn_sw, bw_int_sw=bw_int_sw) logging.debug("LV1 Start Mininet") CONTROLLER_IP = ip CONTROLLER_PORT = port net = Containernet(topo=topo, link=TCLink, controller=None, autoSetMacs=True, autoStaticArp=True) net.addController('controller', controller=RemoteController, ip=CONTROLLER_IP, port=CONTROLLER_PORT) net.start() dump_etc_hosts(net) dump_mpi_hosts_file(net) run_set_ssh(net) CLI(net) net.stop()
def topology(): "Create a network with some docker containers acting as hosts." net = Containernet(controller=Controller) info('*** Adding controller\n') net.addController('c0') info('*** Adding docker containers\n') # Containers de imagenes con herramientas de red A = net.addDocker('A', ip='10.0.0.100', dimage="openswitch/ubuntuscapy", volumes=["/home/tigarto/Documents/test_diarios_tesis/abril17/test1/trazas:/mnt/trazas:rw"]) V = net.addDocker('V', ip='10.0.0.101', dimage="openswitch/ubuntuscapy") info('*** Adding switch\n') s1 = net.addSwitch('s1') info('*** Creating links\n') net.addLink(A, s1) net.addLink(s1, V) info('*** Starting network\n') net.start() info('***Testing network connectivity***') net.pingAll() info('*** Running CLI\n') CLI(net) info('*** Stopping network') net.stop()
def networkTest(): "Create a network with some docker containers acting as hosts." info('*** Create the controller \n') c0 = POXBridge() net = Containernet(build=False) info('*** Creating the network\n') # Containers de imagenes con herramientas de red h1 = net.addDocker('h1', ip='10.0.0.100', dimage="ubuntu_net_tools") h2 = net.addDocker('h2', ip='10.0.0.101', dimage="ubuntu_net_tools") h3 = net.addDocker('h3', ip='10.0.0.102', dimage="ubuntu_net_tools") info('*** Adding switch\n') s1 = net.addSwitch('s1') info('*** Creating links\n') net.addLink(h1, s1) net.addLink(h2, s1) net.addLink(s1, h3) info('*** Adding controller\n') net.addController('c0') info('*** Build the network\n') net.build() info('*** Starting network\n') net.start() info('*** Running CLI\n') CLI(net) info('*** Stopping network') net.stop()
class Network(): def __init__(self): self.containers = {} self.switches = {} self.cn = Containernet(controller=Controller) info('*** Adding controller\n') self.cn.addController('c0') info('*** Adding switches\n') self.switches['sw0'] = self.cn.addSwitch('sw0') info('*** Adding docker containers\n') self.containers['u0'] = self.cn.addDocker('u0', ip='10.0.0.10', dimage="ubuntu:trusty") self.containers['u1'] = self.cn.addDocker('u1', ip='10.0.0.11', dimage="ubuntu:trusty") self.containers['p0'] = self.cn.addDocker( 'p0', ip='10.0.0.100', dimage="cachecashproject/go-cachecash", dcmd='') info('*** Creating links\n') for c in self.containers.values(): self.cn.addLink(c, self.switches['sw0'])
def topology(): "Create a network with some docker containers acting as hosts." net = Containernet(controller=Controller) info('*** Adding controller\n') net.addController('c0') info('*** Adding hosts\n') h1 = net.addHost('h1') h2 = net.addHost('h2') info('*** Adding docker containers\n') d1 = net.addDocker('d1', ip='10.0.0.251', dimage="ubuntu:trusty") d2 = net.addDocker('d2', ip='10.0.0.252', dimage="ubuntu:trusty", cpu_period=50000, cpu_quota=25000) d3 = net.addHost( 'd3', ip='11.0.0.253', cls=Docker, dimage="ubuntu:trusty", cpu_shares=20) d5 = net.addDocker('d5', dimage="ubuntu:trusty", volumes=["/:/mnt/vol1:rw"]) info('*** Adding switch\n') s1 = net.addSwitch('s1') s2 = net.addSwitch('s2', cls=OVSSwitch) s3 = net.addSwitch('s3') info('*** Creating links\n') net.addLink(h1, s1) net.addLink(s1, d1) net.addLink(h2, s2) net.addLink(d2, s2) net.addLink(s1, s2) #net.addLink(s1, s2, cls=TCLink, delay="100ms", bw=1, loss=10) # try to add a second interface to a docker container net.addLink(d2, s3, params1={"ip": "11.0.0.254/8"}) net.addLink(d3, s3) info('*** Starting network\n') net.start() net.ping([d1, d2]) # our extended ping functionality net.ping([d1], manualdestip="10.0.0.252") net.ping([d2, d3], manualdestip="11.0.0.254") info('*** Dynamically add a container at runtime\n') d4 = net.addDocker('d4', dimage="ubuntu:trusty") # we have to specify a manual ip when we add a link at runtime net.addLink(d4, s1, params1={"ip": "10.0.0.254/8"}) # other options to do this #d4.defaultIntf().ifconfig("10.0.0.254 up") #d4.setIP("10.0.0.254") net.ping([d1], manualdestip="10.0.0.254") info('*** Running CLI\n') CLI(net) info('*** Stopping network') net.stop()
def run(self, sim_args, curtime, entrypoint): if any(v not in environ for v in ['CLIENT', 'CLIENT_PARAMS', 'SERVER', 'SERVER', 'CLIENT_LOGS', 'SERVER_LOGS', 'CL_COMMIT', 'SV_COMMIT']): # TODO show help exit(1) client_image = environ['CLIENT'] client_params = environ['CLIENT_PARAMS'] server_image = environ['SERVER'] server_params = environ['SERVER_PARAMS'] cl_logdir = environ['CLIENT_LOGS'] sv_logdir = environ['SERVER_LOGS'] clcommit = environ['CL_COMMIT'] svcommit = environ['SV_COMMIT'] setLogLevel('info') net = Containernet(controller=Controller) info('*** Adding controller\n') net.addController('c0') info('*** Adding docker containers\n') server_vs = [sv_logdir + ':/logs'] # add kernel debug volume to allow eBPF code to run if sim_args.k: server_vs.append( '/sys/kernel/debug:/sys/kernel/debug:ro') server = net.addDocker('server', ip='10.0.0.251', environment={"ROLE": "server", "SERVER_PARAMS": server_params, "COMMIT": svcommit}, dimage=server_image + ":latest", volumes=server_vs) client = net.addDocker('client', ip='10.0.0.252', environment={"ROLE": "client", "CLIENT_PARAMS": client_params, "COMMIT": clcommit}, dimage=client_image + ":latest", volumes=[cl_logdir + ':/logs']) info('*** Adding switches\n') s1 = net.addSwitch('s1') s2 = net.addSwitch('s2') info('*** Creating links\n') net.addLink(s1, s2, cls=TCLink, delay=sim_args.delay, bw=sim_args.bandwidth, max_queue_size=sim_args.queue) net.addLink(s1, client) net.addLink(s2, server) info('\n*** Updating and building client/server\n') server.cmd('./updateAndBuild.sh') client.cmd('./updateAndBuild.sh') info('*** Starting network\n') net.start() capture = PacketCapture() if sim_args.k: client.cmd(entrypoint + " &") else: server.cmd(entrypoint + " &" ) capture.startCapture() info('\n' + entrypoint + '\n') if sim_args.k: info(server.cmd(entrypoint) + "\n") else: info(client.cmd(entrypoint) + "\n") # Wait some time to allow server finish writing to log file sleep(3) capture.stopCapture() info('*** Stopping network') net.stop()
def run(): net = Containernet(controller=Controller) net.addController('c0', port=6654) info('*** Adding routers\n') r1 = net.addHost('r1', cls=LinuxRouter, ip='10.0.0.1/24') r2 = net.addHost('r2', cls=LinuxRouter, ip='10.1.0.1/24') info('*** Adding switches\n') s1, s2 = [net.addSwitch(s) for s in ('s1', 's2')] info('*** Adding host-switch links\n') net.addLink(s1, r1, intfName2='r1-eth1', params2={'ip': '10.0.0.1/24'}) net.addLink(s2, r2, intfName2='r2-eth1', params2={'ip': '10.1.0.1/24'}) info('*** Adding switch-switch link\n') net.addLink(r1, r2, intfName1='r1-eth2', intfName2='r2-eth2', params1={'ip': '10.100.0.1/24'}, params2={'ip': '10.100.0.2/24'}) info('*** Adding routing\n') # r1.cmd("ip route add 10.1.0.0/24 via 10.100.0.1") # r2.cmd("ip route add 10.0.0.0/24 via 10.100.0.2") r1.cmd("ip route add 10.1.0.0/24 via 10.100.0.2 dev r1-eth2") r2.cmd("ip route add 10.0.0.0/24 via 10.100.0.1 dev r2-eth2") info('*** Adding hosts\n') d1 = net.addHost(name='d1', ip='10.0.0.251/24', defaultRoute='via 10.0.0.1') d2 = net.addHost(name='d2', ip='10.1.0.252/24', defaultRoute='via 10.1.0.1') info('*** Adding host-switch link\n') for d, s in [(d1, s1), (d2, s2)]: info(net.addLink(d, s)) info('*** Starting network\n') net.start() net.staticArp() info('*** Routing Table on Router:\n') print((net['r1'].cmd('route'))) info('*** Routing Table on Router:\n') print((net['r2'].cmd('route'))) info('*** Testing connectivity\n') net.pingAll() CLI(net) net.stop()
def get_default_net(options=None): """ """ if not options: options = {} net = Containernet() remote_controller = options.get("remote_controller", None) net.addController(get_controller(remote_controller)) return net
def myNetwork(): net = Containernet(controller=Controller) info('*** Adding controller\n') net.addController(name='c0') info('*** Add switches\n') s1 = net.addSwitch('s1', cls=OVSSwitch) info('*** Add hosts\n') # attacker 2 docker containers mn_args = { "network_mode": "none", "dimage": "lab05/crypto", "dcmd": "./start_app.sh", "ip": "192.168.16.2/24", } H1 = net.addDocker('h1', **mn_args) mn_args = { "network_mode": "none", "dimage": "lab05/crypto", "dcmd": "./start_app.sh", "ip": "192.168.16.100/24", } H2 = net.addDocker('h2', **mn_args) info('*** Add links\n') net.addLink(H1, s1) net.addLink(H2, s1) info('*** Add Internet access\n') mn_args = { "ip": "192.168.16.1/24", } nat = net.addHost('nat0', cls=NAT, inNamespace=False, subnet='192.168.16.0/24', **mn_args) # Connect the nat to the switch net.addLink(nat, s1) info('*** Starting network\n') net.start() H1.cmd('ip r a default via 192.168.16.1') H2.cmd('ip r a default via 192.168.16.1') CLI(net) net.stop()
def tfTopo(): net = Containernet(topo=None, controller=RemoteController, switch=OVSKernelSwitch) net.addController('c0', RemoteController, ip="127.0.0.1", port=6633) # Hosts h1 = net.addHost('h1', ip='10.0.0.1', mac='00:00:00:00:00:01') h2 = net.addHost('h2', ip='10.0.0.2', mac='00:00:00:00:00:02') h3 = net.addHost('h3', ip='10.0.0.3', mac='00:00:00:00:00:03', cls=Docker, dimage='gmiotto/click', mem_limit=1024 * 1024 * 10) h4 = net.addHost('h4', ip='10.0.0.4', mac='00:00:00:00:00:04') h5 = net.addHost('h5', ip='10.0.0.5', mac='00:00:00:00:00:05') #Switches s1 = net.addSwitch('s1') s2 = net.addSwitch('s2') s3 = net.addSwitch('s3') s4 = net.addSwitch('s4') s5 = net.addSwitch('s5') net.addLink(h3, s3) net.addLink(h3, s3) net.addLink(s1, s2) net.addLink(s2, s3) net.addLink(s3, s4) net.addLink(s4, s5) net.addLink(h1, s1) net.addLink(h2, s2) net.addLink(h4, s4) net.addLink(h5, s5) net.start() for host in net.hosts: if "h" in host.name: host.cmd('ethtool -K %s-eth0 tso off' % host.name) #call("echo %s "% 'ha',shell=True) CLI(net) net.stop()
def topo(): net = Containernet(controller=RemoteController, link=TCLink, switch=OVSKernelSwitch) info("*** Adding Controller ") c1 = net.addController('c1', ip='127.0.0.1', port=6633) info('*** Adding Switch') s2 = net.addSwitch('s2', protocols='OpenFlow10', listenPort=6670, mac='00:00:00:00:00:02') s3 = net.addSwitch('s3', protocols='OpenFlow10', listenPort=6671, mac='00:00:00:00:00:03') info('*** Adding Docker Containers') d4 = net.addDocker('d4', mac='00:00:00:00:00:04', ip='10.0.20.3/24', dimage="ubuntu:trusty", cpu_period=50000, cpu_quota=25000) d5 = net.addDocker('d5', mac='00:00:00:00:00:05', ip='10.0.10.3/24', dimage="ubuntu:trusty", cpu_period=50000, cpu_quota=25000) d6 = net.addDocker('d6', mac='00:00:00:00:00:06', ip='10.0.10.2/24', dimage="ubuntu:trusty", cpu_period=50000, cpu_quota=25000) d7 = net.addDocker('d7', mac='00:00:00:00:00:07', ip='10.0.20.2/24', dimage="ubuntu:trusty", cpu_period=50000, cpu_quota=25000) info('*** Adding links ') net.addLink(d4, s2, cls=TCLink, delay="5ms", bw=1, loss=0) net.addLink(d6, s2, cls=TCLink, delay="10ms", bw=10, loss=0) net.addLink(d7, s3, cls=TCLink, delay="5ms", bw=1, loss=0) net.addLink(d5, s3, cls=TCLink, delay="10ms", bw=10, loss=0) net.addLink(s2, s3, cls=TCLink, delay="100ms", bw=1, loss=0) info('*** Starting ') net.build() c1.start() s3.start([c1]) s2.start([c1]) CLI(net) net.stop()
def tfTopo(): net = Containernet( topo=None, controller=RemoteController, switch=OVSKernelSwitch ) net.addController( 'c0', RemoteController, ip="127.0.0.1", port=6633 ) # Hosts h1 = net.addHost('h1', ip='10.0.0.1', mac='00:00:00:00:00:01') h2 = net.addHost('h2', ip='10.0.0.2', mac='00:00:00:00:00:02') h3 = net.addHost('h3', ip='10.0.0.3', mac='00:00:00:00:00:03', cls=Docker, dimage='gmiotto/click',mem_limit=1024*1024*10) h4 = net.addHost('h4', ip='10.0.0.4', mac='00:00:00:00:00:04') h5 = net.addHost('h5', ip='10.0.0.5', mac='00:00:00:00:00:05') #Switches s1 = net.addSwitch('s1') s2 = net.addSwitch('s2') s3 = net.addSwitch('s3') s4 = net.addSwitch('s4') s5 = net.addSwitch('s5') net.addLink(h3,s3) net.addLink(h3,s3) net.addLink(s1,s2) net.addLink(s2,s3) net.addLink(s3,s4) net.addLink(s4,s5) net.addLink(h1,s1) net.addLink(h2,s2) net.addLink(h4,s4) net.addLink(h5,s5) net.start() for host in net.hosts: if "h" in host.name: host.cmd('ethtool -K %s-eth0 tso off' % host.name) #call("echo %s "% 'ha',shell=True) CLI(net) net.stop()
def topology(): "Create a network with some docker containers acting as hosts." net = Containernet(controller=Controller) info('*** Adding controller\n') net.addController('c0') info('*** Adding normal Mininet hosts\n') h1 = net.addHost('h1') h2 = net.addHost('h2') info('*** Adding docker containers\n') d1 = net.addDocker('d1', ip='10.0.0.251', dimage="ubuntu:trusty") d2 = net.addDocker('d2', ip='10.0.0.252', dimage="ubuntu:trusty") info('*** Adding switch\n') s1 = net.addSwitch('s1') s2 = net.addSwitch('s2') s3 = net.addSwitch('s3') info('*** Creating links\n') net.addLink(h1, s1) net.addLink(h2, s2) net.addLink(d1, s1) net.addLink(d2, s2) net.addLink(s1, s2, cls=TCLink, delay="100ms", bw=1) # we can even add multiple interfaces to a single docker container net.addLink(d2, s3, params1={"ip": "11.0.0.254/24"}) info('*** Starting network\n') net.start() # run a short test net.ping([d1, d2]) info('*** Running CLI\n') CLI(net) # wait for user input info('*** Stopping network') net.stop()
def setup(service, n=3): n = int(n) # - Core setup ------- net = Containernet(controller=Controller, switch=OVSSwitch) info("*** Adding controller\n") net.addController("c0") info("*** Adding switches\n") s1 = net.addSwitch("s1") info("*** Adding docker containers and adding links\n") cluster_ips = [ip_from_int(i + 2) for i in range(n)] dimage = "cjj39_dks28/" + service print("*** Using image: " + dimage) dockers = [ net.addDocker("d" + str(i + 1), ip=cluster_ips[i], dimage=dimage) for i in range(n) ] for d in dockers: net.addLink(d, s1, cls=TCLink, delay="50ms", bw=1, max_queue_size=200) microclient = addClient(net, service, "mc", ip="10.0.0.1") net.addLink(microclient, s1) net.start() system_setup_func = ( importlib.import_module("systems.{0}.scripts.setup".format(service)) ).setup restarters = system_setup_func(dockers, cluster_ips) # TODO add mininet restart stuff here restarters = [ lambda: [restart_host(docker), restart][-1] for restert, docker in zip(restarters, dockers) ] return (net, cluster_ips, [microclient], restarters)
def topology(): "Create a network with some docker containers acting as hosts." global net net = Containernet() info('*** Adding controller\n') net.addController(name='c0', controller=RemoteController, ip='172.17.0.2', protocol='tcp', port=6653) info('*** Starting network\n') net.start() # server ip run(host='localhost', port=8090) # info('*** Running CLI\n') # CLI(net) info('*** Stopping network') net.stop()
def topology(): "Create a network with some docker containers acting as hosts." net = Containernet(controller=Controller) info('*** Adding controller\n') net.addController('c0') info('*** Adding docker containers\n') d1 = net.addDocker('d1', ip='10.0.0.251', dimage="mpeuster/stress", cpuset="0,1") d1.sendCmd("./start.sh") info('*** Starting network\n') net.start() info('*** Running CLI\n') CLI(net) info('*** Stopping network') net.stop()
def topology(): "Create a network with some docker containers acting as hosts." net = Containernet(controller=Controller) info('*** Adding controller\n') net.addController('c0') info('*** Adding docker containers\n') d1 = net.addDocker('d1', ip='10.0.0.251', dimage="mpeuster/stress", cpuset_cpus="0,1") d1.sendCmd("./start.sh") info('*** Starting network\n') net.start() info('*** Running CLI\n') CLI(net) info('*** Stopping network') net.stop()
def emptyNet(): "Create an empty network and add nodes to it." net = Containernet(controller=Controller, link=TCLink) info('*** Adding controller\n') net.addController('c0') info('*** Adding hosts\n') h1 = net.addHost('h1', ip='10.0.0.1') h2 = net.addHost('h2', ip='10.0.0.2') d5 = net.addDocker('d5', dimage='kumokay/ubuntu_wifi:v6') d6 = net.addDocker('d6', dimage='kumokay/ubuntu_wifi:v6') info('*** Adding switch\n') s3 = net.addSwitch('s3') s4 = net.addSwitch('s4') info('*** Creating links\n') net.addLink(h1, s3) link = net.addLink(s3, s4, delay='100ms') net.addLink(h2, s4) net.addLink(d5, s3) net.addLink(d6, s4) info('*** Starting network\n') net.start() info('*** Running CLI\n') CLI(net) link.intf1.config(delay='500ms') CLI(net) link.intf2.config(delay='300ms') CLI(net) info('*** Stopping network') net.stop()
def createTopo(pod, density, ip="127.0.0.1", port=6633, bw_c2a=0.8, bw_a2e=0.4, bw_h2a=0.2): logging.debug("LV1 Create Fattree") topo = Fattree(pod, density) topo.createTopo() topo.createLink(bw_c2a=bw_c2a, bw_a2e=bw_a2e, bw_h2a=bw_h2a) logging.debug("LV1 Start Mininet") CONTROLLER_IP = ip CONTROLLER_PORT = port net = Containernet(topo=topo, link=TCLink, controller=None, autoSetMacs=True, autoStaticArp=True) net.addController( 'controller', controller=RemoteController, ip=CONTROLLER_IP, port=CONTROLLER_PORT) net.start() dump_etc_hosts(net) dump_mpi_hosts_file(net) run_set_ssh(net) CLI(net) net.stop()
def topology(): "Create a network with some docker containers acting as hosts." net = Containernet(controller=Controller) info('*** Adding controller\n') net.addController('c0') info('*** Adding docker containers\n') ''' Containers de imagenes sin herramientas de red h1 = net.addDocker('h1', ip='10.0.0.100', dimage="ubuntu:latest") h2 = net.addDocker('h2', ip='10.0.0.101', dimage="ubuntu:latest") h3 = net.addDocker('h3', ip='10.0.0.102', dimage="ubuntu:latest") ''' # Containers de imagenes con herramientas de red h1 = net.addDocker('h1', ip='10.0.0.100', dimage="ubuntu_net_tools") h2 = net.addDocker('h2', ip='10.0.0.101', dimage="ubuntu_net_tools") h3 = net.addDocker('h3', ip='10.0.0.102', dimage="ubuntu_net_tools") info('*** Adding switch\n') s1 = net.addSwitch('s1') info('*** Creating links\n') net.addLink(h1, s1) net.addLink(h2, s1) net.addLink(s1, h3) info('*** Starting network\n') net.start() info('***Testing network connectivity***') net.pingAll() info('*** Running CLI\n') CLI(net) info('*** Stopping network') net.stop()
def example(): setLogLevel('debug') cleanup() net = Containernet(controller=Controller) net.addController('c0') ftp = net.addDocker('ftp', cls=Vsftpd, ip='10.10.10.1/24') h1 = net.addHost('h1', ip='10.10.10.2/24') s1 = net.addSwitch('s1') net.addLink(h1, s1) net.addLink(ftp, s1) net.start() # Add test:test to users add_user(ftp, "test", "test") CLI(net) net.stop()
def main(): info('Starting network...\n') net = Containernet(controller=Controller) controller = net.addController('c0') middlebox = net.addDocker('d1', ip='10.0.0.251', dimage="middlebox:latest") tester = net.addDocker('d2', ip='10.0.0.252', dimage="tester:latest") def cmd(c): info('Running command %s on all hosts...\n' % c) middlebox.cmd(c) tester.cmd(c) info('Adding links...\n') switch = net.addSwitch('s1') net.addLink(middlebox, switch, cls=TCLink, delay='0ms', bw=1000) net.addLink(tester, switch, cls=TCLink, delay='0ms', bw=1000) net.addLink(middlebox, tester, cls=TCLink, delay='1ms', bw=1000) middlebox.setMAC('00:00:00:00:00:fb', 'd1-eth1') tester.setMAC('00:00:00:00:00:fc', 'd2-eth1') net.start() info('Network started.\n') # info('Pinging all hosts...\n') # net.ping([middlebox, tester]) info('Running the experiment...\n') nf = 'dpdk-nat-basichash' scenario = 'latency' # either 'thru-1p' or 'latency' pcap_file = '1packet.pcap' result_file = 'bench-%s-%s-%s.results' % (nf, scenario, pcap_file) middlebox.cmd('mkdir /mnt/huge') middlebox.cmd('mount -t hugetlbfs nodev /mnt/huge') # middlebox.cmd('/bin/bash ~/castan/scripts/perf/start-middlebox.sh %s' % nf) # middlebox.cmd('/bin/bash ~/castan/scripts/perf/run.sh %s %s %s %s' % (nf, scenario, result_file, pcap_file)) info('Starting CLI...\n') CLI(net) info('Stopping network...\n') net.stop()
def topology(): "Create a network with some docker containers acting as hosts." net = Containernet(controller=RemoteController) info('*** Adding controller\n') net.addController('c0') info('*** Adding hosts\n') Victim = net.addHost('h1', mac='00:00:00:00:00:01') Host2 = net.addHost('h2', mac='00:00:00:00:00:02') Host3 = net.addHost('h3', mac='00:00:00:00:00:03') Host4 = net.addHost('h4', mac='00:00:00:00:00:04') Host5 = net.addHost('h5', mac='00:00:00:00:00:05') Host6 = net.addHost('h6', mac='00:00:00:00:00:06') info('*** Adding docker containers\n') d1 = net.addDocker('d1', ip='10.0.0.251', mac='00:00:00:00:00:11', dimage="mit/filter:latest") d2 = net.addDocker('d2', ip='10.0.0.252', mac='00:00:00:00:00:12', dimage="mit/filter:latest") info('*** Adding switch\n') Switch1 = net.addSwitch('s1') Switch2 = net.addSwitch('s2') Switch3 = net.addSwitch('s3') Switch4 = net.addSwitch('s4') Switch5 = net.addSwitch('s5') Switch6 = net.addSwitch('s6') info('*** Creating links\n') net.addLink(Switch1, Switch3) net.addLink(Switch3, Switch5) net.addLink(Switch3, Switch6) net.addLink(Switch5, Host2) net.addLink(Switch6, Victim) net.addLink(Switch6, Switch4) net.addLink(Switch4, Switch2) net.addLink(Host3, Switch1) net.addLink(Host4, Switch1) net.addLink(Host5, Switch2) net.addLink(Host6, Switch2) # Attackers net.addLink(Switch1, d1) net.addLink(Switch2, d2) #net.addLink(s1, s2, cls=TCLink, delay="100ms", bw=1, loss=10) # try to add a second interface to a docker container #net.addLink(d2, s3, params1={"ip": "11.0.0.254/8"}) #net.addLink(d3, s3) info('*** Starting network\n') net.start() #net.ping([d1, d2]) # our extended ping functionality #net.ping([d1], manualdestip="10.0.0.252") #net.ping([d2, d3], manualdestip="11.0.0.254") #info('*** Dynamically add a container at runtime\n') #d4 = net.addDocker('d4', dimage="ubuntu:trusty") # we have to specify a manual ip when we add a link at runtime #net.addLink(d4, s1, params1={"ip": "10.0.0.254/8"}) # other options to do this #d4.defaultIntf().ifconfig("10.0.0.254 up") #d4.setIP("10.0.0.254") #net.ping([d1], manualdestip="10.0.0.254") info('*** Running CLI\n') CLI(net) info('*** Stopping network') net.stop()
import os import sys from mininet.net import Containernet from mininet.node import RemoteController from mininet.cli import CLI from mininet.link import TCLink from mininet.log import info, setLogLevel setLogLevel('info') controllerIP = repr(os.environ.get('CONTROLLER_IP')) net = Containernet(controller=RemoteController) info('*** Adding controller\n') net.addController('c0', controller=RemoteController, ip=controllerIP, port=6653) info('*** Adding docker containers\n') h1 = net.addDocker('attacker1', ip='10.0.0.1', dimage="acksec/dc26", environment={"CONTROLLER_IP": controllerIP}, working_dir="/root") h2 = net.addDocker('attacker2', ip='10.0.0.2', dimage="acksec/dc26", environment={"CONTROLLER_IP": controllerIP}, working_dir="/root") info('*** Adding switches\n') s1 = net.addSwitch('s1') s2 = net.addSwitch('s2')
#!/usr/bin/python """ This is the most simple example to showcase Containernet. """ from mininet.net import Containernet from mininet.node import Controller from mininet.cli import CLI from mininet.link import TCLink from mininet.log import info, setLogLevel setLogLevel('info') net = Containernet(controller=Controller) info('*** Adding controller\n') net.addController('c0') info('*** Adding docker containers\n') d1 = net.addDocker('d1', ip='10.0.0.251', dimage="ubuntu:trusty") d2 = net.addDocker('d2', ip='10.0.0.252', dimage="ubuntu:trusty") info('*** Adding switches\n') s1 = net.addSwitch('s1') s2 = net.addSwitch('s2') info('*** Creating links\n') net.addLink(d1, s1) net.addLink(s1, s2, cls=TCLink, delay='100ms', bw=1) net.addLink(s2, d2) info('*** Starting network\n') net.start() info('*** Testing connectivity\n') net.ping([d1, d2]) info('*** Running CLI\n') CLI(net) info('*** Stopping network')
class simpleTestTopology( unittest.TestCase ): """ Helper class to do basic test setups. s1 -- s2 -- s3 -- ... -- sN """ def __init__(self, *args, **kwargs): self.net = None self.s = [] # list of switches self.h = [] # list of hosts self.d = [] # list of docker containers self.docker_cli = None super(simpleTestTopology, self).__init__(*args, **kwargs) def createNet( self, nswitches=1, nhosts=0, ndockers=0, autolinkswitches=False): """ Creates a Mininet instance and automatically adds some nodes to it. """ self.net = Containernet( controller=Controller ) self.net.addController( 'c0' ) # add some switches for i in range(0, nswitches): self.s.append(self.net.addSwitch('s%d' % i)) # if specified, chain all switches if autolinkswitches: for i in range(0, len(self.s) - 1): self.net.addLink(self.s[i], self.s[i + 1]) # add some hosts for i in range(0, nhosts): self.h.append(self.net.addHost('h%d' % i)) # add some dockers for i in range(0, ndockers): self.d.append(self.net.addDocker('d%d' % i, dimage="ubuntu:trusty")) def startNet(self): self.net.start() def stopNet(self): self.net.stop() def getDockerCli(self): """ Helper to interact with local docker instance. """ if self.docker_cli is None: self.docker_cli = docker.APIClient( base_url='unix://var/run/docker.sock') return self.docker_cli @staticmethod def setUp(): pass @staticmethod def tearDown(): cleanup() # make sure that all pending docker containers are killed with open(os.devnull, 'w') as devnull: subprocess.call( "docker rm -f $(docker ps --filter 'label=com.containernet' -a -q)", stdout=devnull, stderr=devnull, shell=True) def getContainernetContainers(self): """ List the containers managed by containernet """ return self.getDockerCli().containers(filters={"label": "com.containernet"})
def tfTopo(): net = Containernet( topo=None, controller=RemoteController, switch=OVSKernelSwitch ) net.addController( 'c0', RemoteController, ip="127.0.0.1", port=6633 ) #Arguments opts, args = getopt.getopt(sys.argv[1:], "", ["flows=", "dos="]) for o, a in opts: if o == "--flows": number_of_flows=int(a) print "Flows: ",a elif o in ("--dos"): number_of_dos=int(a) print "DoS: ",a # Hosts h1 = net.addHost('h1', ip='10.0.0.1', mac='00:00:00:00:00:01') h2 = net.addHost('h2', ip='10.0.0.2', mac='00:00:00:00:00:02') h3 = net.addHost('h3', ip='10.0.0.3', mac='00:00:00:00:00:03') h4 = net.addHost('h4', ip='10.0.0.4', mac='00:00:00:00:00:04') h5 = net.addHost('h5', ip='10.0.0.5', mac='00:00:00:00:00:05') h6 = net.addHost('h6', ip='10.0.0.6', mac='00:00:00:00:00:06') h7 = net.addHost('h7', ip='10.0.0.7', mac='00:00:00:00:00:07') h8 = net.addHost('h8', ip='10.0.0.8', mac='00:00:00:00:00:08') h9 = net.addHost('h9', ip='10.0.0.9', mac='00:00:00:00:00:09') h10 = net.addHost('h10', ip='10.0.0.10', mac='00:00:00:00:00:10') p1 = net.addHost('p1', ip='10.0.1.1', mac='00:00:00:00:01:01', cls=Docker, dimage='gmiotto/click',mem_limit=1024*1024*10, cpu_quota=pop_cpu_percentage*100,cpu_period=10000) p2 = net.addHost('p2', ip='10.0.1.2', mac='00:00:00:00:01:02', cls=Docker, dimage='gmiotto/click',mem_limit=1024*1024*10, cpu_quota=pop_cpu_percentage*100,cpu_period=10000) p3 = net.addHost('p3', ip='10.0.1.3', mac='00:00:00:00:01:03', cls=Docker, dimage='gmiotto/click',mem_limit=1024*1024*10, cpu_quota=pop_cpu_percentage*100,cpu_period=10000) p4 = net.addHost('p4', ip='10.0.1.4', mac='00:00:00:00:01:04', cls=Docker, dimage='gmiotto/click',mem_limit=1024*1024*10, cpu_quota=pop_cpu_percentage*100,cpu_period=10000) p5 = net.addHost('p5', ip='10.0.1.5', mac='00:00:00:00:01:05', cls=Docker, dimage='gmiotto/click',mem_limit=1024*1024*10, cpu_quota=pop_cpu_percentage*100,cpu_period=10000) #Switches s1 = net.addSwitch('s1') s2 = net.addSwitch('s2') s3 = net.addSwitch('s3') s4 = net.addSwitch('s4') s5 = net.addSwitch('s5') s6 = net.addSwitch('s6') s7 = net.addSwitch('s7') s8 = net.addSwitch('s8') s9 = net.addSwitch('s9') s10 = net.addSwitch('s10') #PoP Hosts net.addLink(p1,s1, cls=TCLink, delay=pop_link_delay,bw=pop_link_bw,loss=pop_link_loss) net.addLink(p1,s1) net.addLink(p2,s2, cls=TCLink, delay=pop_link_delay,bw=pop_link_bw,loss=pop_link_loss) net.addLink(p2,s2) net.addLink(p3,s3, cls=TCLink, delay=pop_link_delay,bw=pop_link_bw,loss=pop_link_loss) net.addLink(p3,s3) net.addLink(p4,s4, cls=TCLink, delay=pop_link_delay,bw=pop_link_bw,loss=pop_link_loss) net.addLink(p4,s4) net.addLink(p5,s5, cls=TCLink, delay=pop_link_delay,bw=pop_link_bw,loss=pop_link_loss) net.addLink(p5,s5) #Normal Hosts net.addLink(h1,s1, cls=TCLink, delay=host_switch_delay,bw=host_switch_bw,loss=host_switch_loss) net.addLink(h2,s2, cls=TCLink, delay=host_switch_delay,bw=host_switch_bw,loss=host_switch_loss) net.addLink(h3,s3, cls=TCLink, delay=host_switch_delay,bw=host_switch_bw,loss=host_switch_loss) net.addLink(h4,s4, cls=TCLink, delay=host_switch_delay,bw=host_switch_bw,loss=host_switch_loss) net.addLink(h5,s5, cls=TCLink, delay=host_switch_delay,bw=host_switch_bw,loss=host_switch_loss) net.addLink(h6,s6, cls=TCLink, delay=host_switch_delay,bw=host_switch_bw,loss=host_switch_loss) net.addLink(h7,s7, cls=TCLink, delay=host_switch_delay,bw=host_switch_bw,loss=host_switch_loss) net.addLink(h8,s8, cls=TCLink, delay=host_switch_delay,bw=host_switch_bw,loss=host_switch_loss) net.addLink(h9,s9, cls=TCLink, delay=host_switch_delay,bw=host_switch_bw,loss=host_switch_loss) net.addLink(h10,s10, cls=TCLink, delay=host_switch_delay,bw=host_switch_bw,loss=host_switch_loss) net.addLink(s7, s1, cls=TCLink, delay=inter_switch_delay,bw=inter_switch_bw,loss=inter_switch_loss) #s7-s1 net.addLink(s7, s2, cls=TCLink, delay=inter_switch_delay,bw=inter_switch_bw,loss=inter_switch_loss) net.addLink(s1, s2, cls=TCLink, delay=inter_switch_delay,bw=inter_switch_bw,loss=inter_switch_loss) net.addLink(s1, s8, cls=TCLink, delay=inter_switch_delay,bw=inter_switch_bw,loss=inter_switch_loss) net.addLink(s1, s3, cls=TCLink, delay=inter_switch_delay,bw=inter_switch_bw,loss=inter_switch_loss) net.addLink(s1, s6, cls=TCLink, delay=inter_switch_delay,bw=inter_switch_bw,loss=inter_switch_loss) net.addLink(s8, s3, cls=TCLink, delay=inter_switch_delay,bw=inter_switch_bw,loss=inter_switch_loss) net.addLink(s2, s5, cls=TCLink, delay=inter_switch_delay,bw=inter_switch_bw,loss=inter_switch_loss) net.addLink(s2, s4, cls=TCLink, delay=inter_switch_delay,bw=inter_switch_bw,loss=inter_switch_loss) net.addLink(s3, s5, cls=TCLink, delay=inter_switch_delay,bw=inter_switch_bw,loss=inter_switch_loss) net.addLink(s3, s4, cls=TCLink, delay=inter_switch_delay,bw=inter_switch_bw,loss=inter_switch_loss) net.addLink(s4, s9, cls=TCLink, delay=inter_switch_delay,bw=inter_switch_bw,loss=inter_switch_loss) net.addLink(s4, s6, cls=TCLink, delay=inter_switch_delay,bw=inter_switch_bw,loss=inter_switch_loss) net.addLink(s5, s6, cls=TCLink, delay=inter_switch_delay,bw=inter_switch_bw,loss=inter_switch_loss) net.addLink(s5, s10, cls=TCLink, delay=inter_switch_delay,bw=inter_switch_bw,loss=inter_switch_loss) net.addLink(s9, s6, cls=TCLink, delay=inter_switch_delay,bw=inter_switch_bw,loss=inter_switch_loss) net.addLink(s10, s6, cls=TCLink, delay=inter_switch_delay,bw=inter_switch_bw,loss=inter_switch_loss) net.start() for host in net.hosts: if "h" in host.name: host.cmd('ethtool -K %s-eth0 tso off' % host.name) host.cmd('python httpserver.py 80 &') for host in net.hosts: if "p" in host.name: call("sudo bash Click/runFirewall.sh %s Click/firewall3.click " % host.name,shell=True) time.sleep(5) #Flows random.seed() hs = [0,1,2,3,4,5,6,7,8,9] random.shuffle(hs) if number_of_flows > 5: number_of_flows = 5 for i in range(0,number_of_flows): h_src = hs[2*i] h_tgt = hs[2*i+1] #pair = random.sample([0,1,2,3,4,5,6,7,8,9],2) # print net.hosts[pair[0]].name, "->", net.hosts[pair[1]].name net.hosts[h_src].cmd('bash client.sh "%s" 10.0.0.%s &' % (net.hosts[h_src].name, h_tgt+1)) net.hosts[h_src].cmd('echo ha') print 'bash client.sh "%s" %s &' % (net.hosts[h_src].name, net.hosts[h_tgt].name) time.sleep(2) targets = [1,2,3,4,5] random.shuffle(targets) for i in range(0,number_of_dos): h1.cmd('ping -c1 10.0.1.%s &' % targets[i]) print "Attacking p%s" % targets[i] #h1.cmd('ping -c10 p5 &') time.sleep(60) #time.sleep(150) for host in net.hosts: if "h" in host.name: host.cmd('echo ha') #CLI(net) net.stop()
def tfTopo(): net = Containernet( topo=None, controller=RemoteController, switch=OVSKernelSwitch ) net.addController( 'c0', RemoteController, ip="127.0.0.1", port=6633 ) #Arguments opts, args = getopt.getopt(sys.argv[1:], "", ["flows=", "dos="]) for o, a in opts: if o == "--flows": number_of_flows=int(a) print "Flows: ",a elif o in ("--dos"): number_of_dos=int(a) print "DoS: ",a # Hosts h1 = net.addHost('h1', ip='10.0.0.1', mac='00:00:00:00:00:01') h2 = net.addHost('h2', ip='10.0.0.2', mac='00:00:00:00:00:02') h3 = net.addHost('h3', ip='10.0.0.3', mac='00:00:00:00:00:03') h4 = net.addHost('h4', ip='10.0.0.4', mac='00:00:00:00:00:04') h5 = net.addHost('h5', ip='10.0.0.5', mac='00:00:00:00:00:05') h6 = net.addHost('h6', ip='10.0.0.6', mac='00:00:00:00:00:06') h7 = net.addHost('h7', ip='10.0.0.7', mac='00:00:00:00:00:07') h8 = net.addHost('h8', ip='10.0.0.8', mac='00:00:00:00:00:08') h9 = net.addHost('h9', ip='10.0.0.9', mac='00:00:00:00:00:09') h10 = net.addHost('h10', ip='10.0.0.10', mac='00:00:00:00:00:10') p1 = net.addHost('p1', ip='10.0.1.1', mac='00:00:00:00:01:01', cls=Docker, dimage='gmiotto/click',mem_limit=1024*1024*10, cpu_quota=pop_cpu_percentage*100,cpu_period=10000) p2 = net.addHost('p2', ip='10.0.1.2', mac='00:00:00:00:01:02', cls=Docker, dimage='gmiotto/click',mem_limit=1024*1024*10, cpu_quota=pop_cpu_percentage*100,cpu_period=10000) p3 = net.addHost('p3', ip='10.0.1.3', mac='00:00:00:00:01:03', cls=Docker, dimage='gmiotto/click',mem_limit=1024*1024*10, cpu_quota=pop_cpu_percentage*100,cpu_period=10000) p4 = net.addHost('p4', ip='10.0.1.4', mac='00:00:00:00:01:04', cls=Docker, dimage='gmiotto/click',mem_limit=1024*1024*10, cpu_quota=pop_cpu_percentage*100,cpu_period=10000) p5 = net.addHost('p5', ip='10.0.1.5', mac='00:00:00:00:01:05', cls=Docker, dimage='gmiotto/click',mem_limit=1024*1024*10, cpu_quota=pop_cpu_percentage*100,cpu_period=10000) p6 = net.addHost('p6', ip='10.0.1.6', mac='00:00:00:00:01:06', cls=Docker, dimage='gmiotto/click',mem_limit=1024*1024*10, cpu_quota=pop_cpu_percentage*100,cpu_period=10000) #Switches s1 = net.addSwitch('s1') s2 = net.addSwitch('s2') s3 = net.addSwitch('s3') s4 = net.addSwitch('s4') s5 = net.addSwitch('s5') s6 = net.addSwitch('s6') s7 = net.addSwitch('s7') s8 = net.addSwitch('s8') s9 = net.addSwitch('s9') s10 = net.addSwitch('s10') #PoP Hosts net.addLink(p1,s1, cls=TCLink, delay=pop_link_delay,bw=pop_link_bw,loss=pop_link_loss) net.addLink(p1,s1) net.addLink(p2,s2, cls=TCLink, delay=pop_link_delay,bw=pop_link_bw,loss=pop_link_loss) net.addLink(p2,s2) net.addLink(p3,s3, cls=TCLink, delay=pop_link_delay,bw=pop_link_bw,loss=pop_link_loss) net.addLink(p3,s3) net.addLink(p4,s4, cls=TCLink, delay=pop_link_delay,bw=pop_link_bw,loss=pop_link_loss) net.addLink(p4,s4) net.addLink(p5,s5, cls=TCLink, delay=pop_link_delay,bw=pop_link_bw,loss=pop_link_loss) net.addLink(p5,s5) net.addLink(p6,s6, cls=TCLink, delay=pop_link_delay,bw=pop_link_bw,loss=pop_link_loss) net.addLink(p6,s6) #Normal Hosts net.addLink(h1,s1, cls=TCLink, delay=host_switch_delay,bw=host_switch_bw,loss=host_switch_loss) net.addLink(h2,s2, cls=TCLink, delay=host_switch_delay,bw=host_switch_bw,loss=host_switch_loss) net.addLink(h3,s3, cls=TCLink, delay=host_switch_delay,bw=host_switch_bw,loss=host_switch_loss) net.addLink(h4,s4, cls=TCLink, delay=host_switch_delay,bw=host_switch_bw,loss=host_switch_loss) net.addLink(h5,s5, cls=TCLink, delay=host_switch_delay,bw=host_switch_bw,loss=host_switch_loss) net.addLink(h6,s6, cls=TCLink, delay=host_switch_delay,bw=host_switch_bw,loss=host_switch_loss) net.addLink(h7,s7, cls=TCLink, delay=host_switch_delay,bw=host_switch_bw,loss=host_switch_loss) net.addLink(h8,s8, cls=TCLink, delay=host_switch_delay,bw=host_switch_bw,loss=host_switch_loss) net.addLink(h9,s9, cls=TCLink, delay=host_switch_delay,bw=host_switch_bw,loss=host_switch_loss) net.addLink(h10,s10, cls=TCLink, delay=host_switch_delay,bw=host_switch_bw,loss=host_switch_loss) net.addLink(s7, s1, cls=TCLink, delay=inter_switch_delay,bw=inter_switch_bw,loss=inter_switch_loss) #s7-s1 net.addLink(s7, s2, cls=TCLink, delay=inter_switch_delay,bw=inter_switch_bw,loss=inter_switch_loss) net.addLink(s1, s2, cls=TCLink, delay=inter_switch_delay,bw=inter_switch_bw,loss=inter_switch_loss) net.addLink(s1, s8, cls=TCLink, delay=inter_switch_delay,bw=inter_switch_bw,loss=inter_switch_loss) net.addLink(s1, s3, cls=TCLink, delay=inter_switch_delay,bw=inter_switch_bw,loss=inter_switch_loss) net.addLink(s1, s6, cls=TCLink, delay=inter_switch_delay,bw=inter_switch_bw,loss=inter_switch_loss) net.addLink(s8, s3, cls=TCLink, delay=inter_switch_delay,bw=inter_switch_bw,loss=inter_switch_loss) net.addLink(s2, s5, cls=TCLink, delay=inter_switch_delay,bw=inter_switch_bw,loss=inter_switch_loss) net.addLink(s2, s4, cls=TCLink, delay=inter_switch_delay,bw=inter_switch_bw,loss=inter_switch_loss) net.addLink(s3, s5, cls=TCLink, delay=inter_switch_delay,bw=inter_switch_bw,loss=inter_switch_loss) net.addLink(s3, s4, cls=TCLink, delay=inter_switch_delay,bw=inter_switch_bw,loss=inter_switch_loss) net.addLink(s4, s9, cls=TCLink, delay=inter_switch_delay,bw=inter_switch_bw,loss=inter_switch_loss) net.addLink(s4, s6, cls=TCLink, delay=inter_switch_delay,bw=inter_switch_bw,loss=inter_switch_loss) net.addLink(s5, s6, cls=TCLink, delay=inter_switch_delay,bw=inter_switch_bw,loss=inter_switch_loss) net.addLink(s5, s10, cls=TCLink, delay=inter_switch_delay,bw=inter_switch_bw,loss=inter_switch_loss) net.addLink(s9, s6, cls=TCLink, delay=inter_switch_delay,bw=inter_switch_bw,loss=inter_switch_loss) net.addLink(s10, s6, cls=TCLink, delay=inter_switch_delay,bw=inter_switch_bw,loss=inter_switch_loss) net.start() for host in net.hosts: if "h" in host.name: host.cmd('ethtool -K %s-eth0 tso off' % host.name) host.cmd('python httpserver.py 80 &') for host in net.hosts: if "p" in host.name: call("sudo bash Click/runFirewall.sh %s Click/firewall3.click " % host.name,shell=True) CLI(net) net.stop()
def tfTopo(): net = Containernet( topo=None, controller=RemoteController, switch=OVSKernelSwitch ) net.addController( 'c0', RemoteController, ip="127.0.0.1", port=6633 ) # Hosts h1 = net.addHost('h1', ip='10.0.0.1', mac='00:00:00:00:00:01') h2 = net.addHost('h2', ip='10.0.0.2', mac='00:00:00:00:00:02') h3 = net.addHost('h3', ip='10.0.0.3', mac='00:00:00:00:00:03', cls=Docker, dimage='gmiotto/click',mem_limit=1024*1024*10, cpu_shares=2) h4 = net.addHost('h4', ip='10.0.0.4', mac='00:00:00:00:00:04', cls=Docker, dimage='gmiotto/click',mem_limit=1024*1024*10, cpu_shares=10) h5 = net.addHost('h5', ip='10.0.0.5', mac='00:00:00:00:00:05', cls=Docker, dimage='gmiotto/click',mem_limit=1024*1024*10, cpu_shares=10) h6 = net.addHost('h6', ip='10.0.0.6', mac='00:00:00:00:00:06') h7 = net.addHost('h7', ip='10.0.0.7', mac='00:00:00:00:00:07') h8 = net.addHost('h8', ip='10.0.0.8', mac='00:00:00:00:00:08') h9 = net.addHost('h9', ip='10.0.0.9', mac='00:00:00:00:00:09') #Switches s1 = net.addSwitch('s1') s2 = net.addSwitch('s2') s3 = net.addSwitch('s3') s4 = net.addSwitch('s4') s5 = net.addSwitch('s5') s6 = net.addSwitch('s6') s7 = net.addSwitch('s7') s8 = net.addSwitch('s8') s9 = net.addSwitch('s9') net.addLink(h3,s3) net.addLink(h3,s3) net.addLink(h4,s4) net.addLink(h4,s4) net.addLink(h5,s5) net.addLink(h5,s5) net.addLink(s1,s6) net.addLink(s1,s7) #net.addLink(s6, s3, cls=TCLink, delay="100ms", bw=0.5, loss=0) net.addLink(s6,s3) net.addLink(s6, s4, cls=TCLink, delay="1ms", bw=2, loss=0) #net.addLink(s6,s4) net.addLink(s6,s5) net.addLink(s7,s3) net.addLink(s7,s5) net.addLink(s3,s8) net.addLink(s3,s9) net.addLink(s4,s8, cls=TCLink, delay="1ms", bw=2, loss=0) net.addLink(s4,s9) net.addLink(s5,s9) net.addLink(s8,s2) net.addLink(s9,s2) net.addLink(h1,s1) net.addLink(h2,s2) net.addLink(h6,s6) net.addLink(h7,s7) net.addLink(h8,s8) net.addLink(h9,s9) net.start() for host in net.hosts: if "h" in host.name: host.cmd('ethtool -K %s-eth0 tso off' % host.name) call("sudo bash Click/runFirewall.sh h3 Click/firewall3.click ",shell=True) call("sudo bash Click/runFirewall.sh h4 Click/firewall3.click ",shell=True) call("sudo bash Click/runFirewall.sh h5 Click/firewall3.click ",shell=True) h2.cmd('python -m SimpleHTTPServer 80 &') CLI(net) net.stop()