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 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 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 run(): net = Containernet(controller=Controller) # controller is used by s1-s3 net.addController('c0', port=6654) # net = ipaddress.ip_network('192.0.2.0/24') # router_1 = ipaddress.ip_address('10.0.1.1') # router_2 = ipaddress.ip_address('10.0.2.1') # router_3 = ipaddress.ip_address('10.0.3.1') # networks = [ ipaddress.ip_network('10.0.{}.0/24'.format(net)) for net in range(0, 3) ] linking_networks = [ ipaddress.ip_network('10.{}.0.0/24'.format(net)) for net in range(10, 40, 10) ] print(networks) print(linking_networks) router_1 = '{}/24'.format(next(networks[0].hosts())) router_2 = '{}/24'.format(next(networks[1].hosts())) router_3 = '{}/24'.format(next(networks[2].hosts())) info('*** Adding routers\n') r1 = net.addHost('r1', cls=LinuxRouter, ip=router_1) r2 = net.addHost('r2', cls=LinuxRouter, ip=router_2) r3 = net.addHost('r3', cls=LinuxRouter, ip=router_3) info('*** Adding switches\n') s1, s2, s3 = [net.addSwitch(s) for s in ('s1', 's2', 's3')] info('*** Adding host-switch links\n') net.addLink(s1, r1, intfName2='r1-eth1', params2={'ip': router_1}) net.addLink(s2, r2, intfName2='r2-eth1', params2={'ip': router_2}) net.addLink(s3, r3, intfName2='r3-eth1', params2={'ip': router_3}) info('*** Adding router-router links\n') net.addLink( r1, r2, intfName1='r1-eth2', intfName2='r2-eth2', params1={'ip': '{}/24'.format(linking_networks[0][1].compressed)}, params2={'ip': '{}/24'.format(linking_networks[0][2].compressed)}) net.addLink( r2, r3, intfName1='r2-eth3', intfName2='r3-eth2', params1={'ip': '{}/24'.format(linking_networks[1][1].compressed)}, params2={'ip': '{}/24'.format(linking_networks[1][2].compressed)}) net.addLink( r1, r3, intfName1='r1-eth3', intfName2='r3-eth3', params1={'ip': '{}/24'.format(linking_networks[2][1].compressed)}, params2={'ip': '{}/24'.format(linking_networks[2][2].compressed)}) info('*** Adding routing\n') r1.cmd("ip route add 10.0.1.0/24 via 10.10.0.2 dev r1-eth2") r2.cmd("ip route add 10.0.0.0/24 via 10.10.0.1 dev r2-eth2") r2.cmd("ip route add 10.0.2.0/24 via 10.20.0.2 dev r2-eth3") r3.cmd("ip route add 10.0.1.0/24 via 10.20.0.1 dev r3-eth2") r1.cmd("ip route add 10.0.2.0/24 via 10.30.0.2 dev r1-eth3") r3.cmd("ip route add 10.0.0.0/24 via 10.30.0.1 dev r3-eth3") info('*** Adding hosts\n') d1 = net.addDocker(name='d1', ip='10.0.0.251/24', defaultRoute='via 10.0.0.1', ports=[1883], port_bindings={1883: 1883}, dimage=IMAGE_NAME, environment={ "EMQX_NAME": "docker1", "EMQX_HOST": "10.0.0.251", "EMQX_NODE__DIST_LISTEN_MAX": 6379, "EMQX_LISTENER__TCP__EXTERNAL": 1883, "EMQX_CLUSTER__DISCOVERY": "static", "EMQX_CLUSTER__STATIC__SEEDS": "[email protected]" }) d2 = net.addDocker(name='d2', ip='10.0.1.252/24', defaultRoute='via 10.0.1.1', ports=[1883], port_bindings={1883: 1884}, dimage=IMAGE_NAME, environment={ "EMQX_NAME": "docker2", "EMQX_HOST": "10.0.1.252", "EMQX_NODE__DIST_LISTEN_MAX": 6379, "EMQX_LISTENER__TCP__EXTERNAL": 1883, "EMQX_CLUSTER__DISCOVERY": "static", "EMQX_CLUSTER__STATIC__SEEDS": "[email protected]" }) d3 = net.addDocker(name='d3', ip='10.0.2.253/24', defaultRoute='via 10.0.2.1', ports=[1883], port_bindings={1883: 1885}, dimage=IMAGE_NAME, environment={ "EMQX_NAME": "docker3", "EMQX_HOST": "10.0.2.253", "EMQX_NODE__DIST_LISTEN_MAX": 6379, "EMQX_LISTENER__TCP__EXTERNAL": 1883, "EMQX_CLUSTER__DISCOVERY": "static", "EMQX_CLUSTER__STATIC__SEEDS": "[email protected]" }) info('*** Adding host-switch link\n') for d, s in [(d1, s1), (d2, s2), (d3, s3)]: print(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('*** Routing Table on Router:\n') print((net['r3'].cmd('route'))) info('*** Testing connectivity\n') net.pingAll() info('*** Starting brokers\n') d1.start() d2.start() d3.start() CLI(net) net.stop()
def run(): "Test linux router" net = Containernet(controller=Controller) # controller is used by s1-s3 net.addController('c0', port=6654) defaultIP = '10.0.0.1/24' # IP address for r0-eth1 router = net.addHost('r0', cls=LinuxRouter, ip=defaultIP) s1, s2, s3 = [net.addSwitch(s) for s in ('s1', 's2', 's3')] net.addLink(s1, router, intfName2='r0-eth1', params2={'ip': defaultIP}) net.addLink(s2, router, intfName2='r0-eth2', params2={'ip': '10.0.1.1/24'}) net.addLink(s3, router, intfName2='r0-eth3', params2={'ip': '192.0.2.1/24'}) d1 = net.addDocker(name='d1', ip='10.0.0.251/24', defaultRoute='via 10.0.0.1', ports=[1883], port_bindings={1883: 1883}, dimage=IMAGE_NAME, environment={ "EMQX_NAME": "docker1", "EMQX_HOST": "10.0.0.251", "EMQX_NODE__DIST_LISTEN_MAX": 6379, "EMQX_LISTENER__TCP__EXTERNAL": 1883, "EMQX_CLUSTER__DISCOVERY": "static", "EMQX_CLUSTER__STATIC__SEEDS": "[email protected]" }) d2 = net.addDocker(name='d2', ip='10.0.1.252/24', defaultRoute='via 10.0.1.1', ports=[1883], port_bindings={1883: 1884}, dimage=IMAGE_NAME, environment={ "EMQX_NAME": "docker2", "EMQX_HOST": "10.0.1.252", "EMQX_NODE__DIST_LISTEN_MAX": 6379, "EMQX_LISTENER__TCP__EXTERNAL": 1883, "EMQX_CLUSTER__DISCOVERY": "static", "EMQX_CLUSTER__STATIC__SEEDS": "[email protected]" }) d3 = net.addDocker(name='d3', ip='192.0.2.253/24', defaultRoute='via 192.0.2.1', ports=[1883], port_bindings={1883: 1885}, dimage=IMAGE_NAME, environment={ "EMQX_NAME": "docker3", "EMQX_HOST": "192.0.2.253", "EMQX_NODE__DIST_LISTEN_MAX": 6379, "EMQX_LISTENER__TCP__EXTERNAL": 1883, "EMQX_CLUSTER__DISCOVERY": "static", "EMQX_CLUSTER__STATIC__SEEDS": "[email protected]" }) for h, s in [(d1, s1), (d2, s2), (d3, s3)]: info(net.addLink(h, s, cls=TCLink, delay='10ms')) info('*** Starting network\n') net.start() net.staticArp() info('*** Testing connectivity\n') net.pingAll() info('*** Routing Table on Router:\n') print((net['r0'].cmd('route'))) info('*** Starting brokers\n') d1.start() d2.start() d3.start() CLI(net) net.stop()
def topoloy(): """ Topologia final sobre ContainerNet `user_leg` usuarios legitimos,`bot` hosts bots infectados, `vict` servidores `dns` servidor DNS en la topologia, `ids` IDS snort sniffer. :return: `void`: """ # setLogLevel('info') logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) # ############################################ # Config Controller # ############################################ onos = RemoteController('onos', ip=IP_CONTROLLER, port=PORT_CONTROLLER) net = Containernet(controller=RemoteController, link=TCLink) logger.info("Adding controller") # info('*** Adding controller\n') net.addController(onos) # ############################################ # Docker containers. # ############################################ logger.info('Adding docker containers') # -------------------------------------- # IDS: Snort 4.x # -------------------------------------- ids = [ net.addDocker('ids1', ip='192.168.12.3/16', dimage=DI_SNORT, mem_limit=MEM_IDS, dmcd='./start.sh'), net.addDocker('ids2', ip='192.168.13.3/16', dimage=DI_SNORT, mem_limit=MEM_IDS, dmcd='./start.sh'), net.addDocker('ids3', ip='192.168.14.3/16', dimage=DI_SNORT, mem_limit=MEM_IDS, dmcd='./start.sh'), net.addDocker('ids4', ip='192.168.15.3/16', dimage=DI_SNORT, mem_limit=MEM_IDS, dmcd='./start.sh') ] # -------------------------------------- # USER: ubuntu trusty # -------------------------------------- users = [ net.addDocker('user_leg0', ip='192.168.4.10/16', dimage=DI_USER, mem_limit=MEM_USER, dmcd=USER_CMD), net.addDocker('user_leg1', ip='192.168.4.11/16', dimage=DI_USER, mem_limit=MEM_USER, dmcd=USER_CMD), net.addDocker('user_leg2', ip='192.168.5.12/16', dimage=DI_USER, mem_limit=MEM_USER, dmcd=USER_CMD), net.addDocker('user_leg3', ip='192.168.5.13/16', dimage=DI_USER, mem_limit=MEM_USER, dmcd=USER_CMD), net.addDocker('user_leg4', ip='192.168.6.14/16', dimage=DI_USER, mem_limit=MEM_USER, dmcd=USER_CMD), net.addDocker('user_leg5', ip='192.168.6.15/16', dimage=DI_USER, mem_limit=MEM_USER, dmcd=USER_CMD), net.addDocker('user_leg6', ip='192.168.7.16/16', dimage=DI_USER, mem_limit=MEM_USER, dmcd=USER_CMD), net.addDocker('user_leg7', ip='192.168.7.17/16', dimage=DI_USER, mem_limit=MEM_USER, dmcd=USER_CMD), net.addDocker('user_leg8', ip='192.168.8.18/16', dimage=DI_USER, mem_limit=MEM_USER, dmcd=USER_CMD), net.addDocker('user_leg9', ip='192.168.8.19/16', dimage=DI_USER, mem_limit=MEM_USER, dmcd=USER_CMD), net.addDocker('user_leg10', ip='192.168.9.71/16', dimage=DI_USER, mem_limit=MEM_USER, dmcd=USER_CMD), net.addDocker('user_leg11', ip='192.168.9.72/16', dimage=DI_USER, mem_limit=MEM_USER, dmcd=USER_CMD) ] # -------------------------------------- # SERVER: Apache 2.4 # -------------------------------------- vict = [ net.addDocker('vict0', ip='192.168.10.5/16', dimage=DI_SERVER, mem_limit=MEM_SERVER, dmcd='httpd-foreground'), net.addDocker('vict1', ip='192.168.11.50/16', dimage=DI_SERVER, mem_limit=MEM_SERVER, dmcd='httpd-foreground'), net.addDocker('vict2', ip='192.168.11.51/16', dimage=DI_SERVER, mem_limit=MEM_SERVER, dmcd='httpd-foreground') ] # -------------------------------------- # BOT: Ubuntu trustu # -------------------------------------- bots = [ net.addDocker('bot0', ip='192.168.4.20/16', dimage=DI_BOT, mem_limit=MEM_BOT), net.addDocker('bot1', ip='192.168.5.21/16', dimage=DI_BOT, mem_limit=MEM_BOT), net.addDocker('bot2', ip='192.168.6.22/16', dimage=DI_BOT, mem_limit=MEM_BOT), net.addDocker('bot3', ip='192.168.7.23/16', dimage=DI_BOT, mem_limit=MEM_BOT), net.addDocker('bot4', ip='192.168.8.24/16', dimage=DI_BOT, mem_limit=MEM_BOT), net.addDocker('bot5', ip='192.168.9.25/16', dimage=DI_BOT, mem_limit=MEM_BOT), net.addDocker('bot6', ip='192.168.5.26/16', dimage=DI_BOT, mem_limit=MEM_BOT), net.addDocker('bot7', ip='192.168.8.27/16', dimage=DI_BOT, mem_limit=MEM_BOT), ] # ############################################ # IDS ADD NETS ONOS # ############################################ commands.getoutput(NET_CMD % "mn.ids1") commands.getoutput(NET_CMD % "mn.ids2") commands.getoutput(NET_CMD % "mn.ids3") commands.getoutput(NET_CMD % "mn.ids4") # ############################################ # Switches # ############################################ logger.info('Adding switches') # Core s1 = net.addSwitch('s1') s2 = net.addSwitch('s2') # Border s3 = net.addSwitch('s3') # Distribution s4 = net.addSwitch('s4') s5 = net.addSwitch('s5') s6 = net.addSwitch('s6') s7 = net.addSwitch('s7') # Service s8 = net.addSwitch('s8') s12 = net.addSwitch('s12') # Access s9 = net.addSwitch('s9') s10 = net.addSwitch('s10') s11 = net.addSwitch('s11') s13 = net.addSwitch('s13') s14 = net.addSwitch('s14') s15 = net.addSwitch('s15') # ############################################ # Links # ############################################ logger.info('Creating links') net.addLink(s3, s1, bw=BW_CORE_TO_CORE) # BW [Mbits / s] net.addLink(s3, s2, bw=BW_CORE_TO_CORE) net.addLink(s2, s1, bw=BW_CORE_TO_CORE) # BW [Mbits / s] net.addLink(s5, s4, bw=BW_DISTRIBUTION_TO_DISTRIBUTION) net.addLink(s1, s5, bw=BW_CORE_TO_DISTRIBUTION) net.addLink(s2, s5, bw=BW_CORE_TO_DISTRIBUTION) net.addLink(s1, s4, bw=BW_CORE_TO_DISTRIBUTION) net.addLink(s2, s4, bw=BW_CORE_TO_DISTRIBUTION) net.addLink(s6, s7, bw=BW_DISTRIBUTION_TO_DISTRIBUTION) net.addLink(s1, s7, bw=BW_CORE_TO_DISTRIBUTION) net.addLink(s2, s7, bw=BW_CORE_TO_DISTRIBUTION) net.addLink(s1, s6, bw=BW_CORE_TO_DISTRIBUTION) net.addLink(s2, s6, bw=BW_CORE_TO_DISTRIBUTION) net.addLink(s8, s4, bw=BW_DISTRIBUTION_TO_EDGE) net.addLink(s9, s4, bw=BW_DISTRIBUTION_TO_EDGE) net.addLink(s10, s4, bw=BW_DISTRIBUTION_TO_EDGE) net.addLink(s11, s4, bw=BW_DISTRIBUTION_TO_EDGE) net.addLink(s8, s5, bw=BW_DISTRIBUTION_TO_EDGE) net.addLink(s9, s5, bw=BW_DISTRIBUTION_TO_EDGE) net.addLink(s10, s5, bw=BW_DISTRIBUTION_TO_EDGE) net.addLink(s11, s5, bw=BW_DISTRIBUTION_TO_EDGE) net.addLink(s12, s6, bw=BW_DISTRIBUTION_TO_EDGE) net.addLink(s13, s6, bw=BW_DISTRIBUTION_TO_EDGE) net.addLink(s14, s6, bw=BW_DISTRIBUTION_TO_EDGE) net.addLink(s15, s6, bw=BW_DISTRIBUTION_TO_EDGE) net.addLink(s12, s7, bw=BW_DISTRIBUTION_TO_EDGE) net.addLink(s13, s7, bw=BW_DISTRIBUTION_TO_EDGE) net.addLink(s14, s7, bw=BW_DISTRIBUTION_TO_EDGE) net.addLink(s15, s7, bw=BW_DISTRIBUTION_TO_EDGE) net.addLink(vict[0], s8, bw=BW_SERVER) net.addLink(vict[1], s12, bw=BW_SERVER) net.addLink(vict[2], s12, bw=BW_SERVER) # Corregir archivo snort.conf""" net.addLink(ids[0], s4, bw=BW_IDS) net.addLink(ids[1], s5, bw=BW_IDS) net.addLink(ids[2], s6, bw=BW_IDS) net.addLink(ids[3], s7, bw=BW_IDS) net.addLink(bots[0], s9, bw=BW_CLIENT) net.addLink(bots[1], s10, bw=BW_CLIENT) net.addLink(bots[2], s11, bw=BW_CLIENT) net.addLink(bots[3], s13, bw=BW_CLIENT) net.addLink(bots[4], s14, bw=BW_CLIENT) net.addLink(bots[5], s15, bw=BW_CLIENT) net.addLink(bots[6], s10, bw=BW_CLIENT) net.addLink(bots[7], s14, bw=BW_CLIENT) net.addLink(users[0], s9, bw=BW_CLIENT) net.addLink(users[1], s9, bw=BW_CLIENT) net.addLink(users[2], s10, bw=BW_CLIENT) net.addLink(users[3], s10, bw=BW_CLIENT) net.addLink(users[4], s11, bw=BW_CLIENT) net.addLink(users[5], s11, bw=BW_CLIENT) net.addLink(users[6], s13, bw=BW_CLIENT) net.addLink(users[7], s13, bw=BW_CLIENT) net.addLink(users[8], s14, bw=BW_CLIENT) net.addLink(users[9], s14, bw=BW_CLIENT) net.addLink(users[10], s15, bw=BW_CLIENT) net.addLink(users[11], s15, bw=BW_CLIENT) # ############################################ # Conatainers Comands # ############################################ for i in range(users.__len__()): users[i].cmd('ip route add 192.168.0.0/16 dev user_leg' + str(i) + '-eth0') for i in range(bots.__len__()): bots[i].cmd('ip route add 192.168.0.0/16 dev bot' + str(i) + '-eth0') for i in range(ids.__len__()): ids[i].cmd('ip route add 192.168.0.0/16 dev ids' + str(i + 1) + '-eth0') for i in range(vict.__len__()): vict[i].cmd('ip route add 192.168.0.0/16 dev vict' + str(i) + '-eth0') # ############################################ # START NETWORK # ############################################ logger.info('Starting network') net.start() # Run httpd-foreground command for i in range(vict.__len__()): vict[i].start() # Run Snort Sniffer for i in range(ids.__len__()): ids[i].start() logger.info('Testing connectivity') net.pingAll() # Run init Cmd for i in range(users.__len__()): users[i].start() logger.info('Running CLI') CLI(net) # ############################################ # END # ############################################ logger.info('Stopping network') net.stop()
d = net.addDocker(container_id, ip=container_ip, volumes=[homedir], dimage="alfa/vms/video_qrcode_detection", dcmd="python /root/video_qrcode_detection/v2.py", ports=[(5000, 'udp')], publish_all_ports=True) # dcmd="python /root/video_qrcode_detection/v2.py > /vol1/latencia/logs/"+str(i)+".txt", info('*** Creating links\n') net.addLink(s1, d, cls=TCLink, bw=100, delay=str(lat) + 'ms') net.start() # info('*** Testing connectivity\n') net.pingAll() # time.sleep(5) line_out += "{}\t{}\t{}\t{}\n".format(container_id, container_ip, lat, time.time()) cmd_send = '/vol1/latencia/send_video.sh ' + container_ip print(cmd_send) d0.cmd(cmd_send) # net.removeDocker(d) info('*** End test\n') print("ID\tIP\tLatencia\tStart Time") print(line_out)
def run(): "Test linux router" net = Containernet ( controller=Controller ) # controller is used by s1-s3 net.addController('c0', port=6654) defaultIP = '10.0.0.1/24' # IP address for r0-eth1 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') # r3 = net.addHost('r3', cls=LinuxRouter, ip='10.2.0.1/24') info('*** Adding switches\n') s1, s2, s3 = [net.addSwitch(s) for s in ('s1', 's2', 's3')] 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'}) # net.addLink(s3, r3, intfName2='r3-eth1', # params2={'ip': '10.2.0.1/24'}) info('*** 1) 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'}) # 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('*** 2) Adding switch-switch link\n') # net.addLink(r2, r3, intfName1='r2-eth3', intfName2='r3-eth2', params1={'ip': '10.2.0.1/24'}, # params2={'ip': '10.1.0.1/24'}) # net.addLink(r2, r3, intfName1='r2-eth3', intfName2='r3-eth2', params1={'ip': '10.200.0.1/24'}, params2={'ip': '10.200.0.2/24'}) # info('*** 3) Adding switch-switch link\n') # info('*** 3) Adding switch-switch link\n') # net.addLink(r1, r3, intfName1='r1-eth3', intfName2='r3-eth3', params1={'ip': '10.2.0.1/24'}, # params2={'ip': '10.0.0.1/24'}) # net.addLink(r1, r3, intfName1='r1-eth3', intfName2='r3-eth3', params1={'ip': '10.300.0.1/24'}, params2={'ip': '10.300.0.2/24'}) 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("echo 1 > /proc/sys/net/ipv4/ip_forward") r2.cmd("echo 1 > /proc/sys/net/ipv4/ip_forward") # # r2.cmd("ip route add 10.2.0.0/24 via 10.200.0.1") # r3.cmd("ip route add 10.1.0.0/24 via 10.200.0.2") # # r1.cmd("ip route add 10.2.0.0/24 via 10.300.0.1") # r3.cmd("ip route add 10.0.0.0/24 via 10.300.0.2") 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') # d3 = net.addHost(name='d3', ip='10.3.0.253/24', defaultRoute='via 10.2.0.1') # d1 = net.addDocker(name='d1', ip='10.0.0.251/24', defaultRoute='via 10.0.0.1', ports=[1883], port_bindings={1883: 1883}, dimage=IMAGE_NAME, # environment={"EMQX_NAME": "docker1", # "EMQX_HOST": "10.0.0.251", # "EMQX_NODE__DIST_LISTEN_MAX": 6379, # "EMQX_LISTENER__TCP__EXTERNAL": 1883, # "EMQX_CLUSTER__DISCOVERY": "static", # "EMQX_CLUSTER__STATIC__SEEDS": "[email protected]"}) # # d2 = net.addDocker(name='d2', ip='10.1.0.252/24', defaultRoute='via 10.1.0.1', ports=[1883], port_bindings={1883: 1884}, dimage=IMAGE_NAME, # environment={"EMQX_NAME": "docker2", # "EMQX_HOST": "10.1.0.252", # "EMQX_NODE__DIST_LISTEN_MAX": 6379, # "EMQX_LISTENER__TCP__EXTERNAL": 1883, # "EMQX_CLUSTER__DISCOVERY": "static", # "EMQX_CLUSTER__STATIC__SEEDS": "[email protected]"}) # # d3 = net.addDocker(name='d3', ip='10.2.0.253/24', defaultRoute='via 10.2.0.1', ports=[1883], # port_bindings={1883: 1885}, dimage=IMAGE_NAME, # environment={"EMQX_NAME": "docker3", # "EMQX_HOST": "10.2.0.253", # "EMQX_NODE__DIST_LISTEN_MAX": 6379, # "EMQX_LISTENER__TCP__EXTERNAL": 1883, # "EMQX_CLUSTER__DISCOVERY": "static", # "EMQX_CLUSTER__STATIC__SEEDS": "[email protected]"}) for d, s in [(d1, s1), (d2, s2)]: info(net.addLink(d, s)) # info(net.addLink(d1, s1, cls=TCLink, delay='10ms', intfName2='d1-eth1')) # info(net.addLink(d2, s2, cls=TCLink, delay='10ms', intfName2='d2-eth1')) # info(net.addLink(d3, s3, cls=TCLink, delay='10ms', intfName2='d3-eth1')) 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('*** Routing Table on Router:\n') # print((net['r3'].cmd('route'))) info('*** Testing connectivity\n') net.pingAll() # net.ping([r1, r2]) info('*** Starting brokers\n') # d1.start() # d2.start() # d3.start() CLI(net) net.stop()