--- tags: mininet-wifi-tutorials --- # Hub *versus* Switch ## Activity 1: How a hub device works First of all you need to identify the network topology that will be generated by the code below: ```python= #!/usr/bin/python '''@author: Ramon Fontes @email: ramon.fontes@imd.ufrn.br''' import sys from mininet.node import Controller from mininet.log import setLogLevel, info from mininet.cli import CLI from mininet.net import Mininet def topology(): "Create a network." net = Mininet() info("*** Creating nodes\n") h1 = net.addHost('h1', ip='10.0.0.1/8') h2 = net.addHost('h2', ip='10.0.0.2/8') h3 = net.addHost('h3', ip='10.0.0.3/8') h4 = net.addHost('h4', ip='10.0.0.4/8') s1 = net.addSwitch('s1', failMode='standalone') info("*** Creating Links\n") net.addLink(h1, s1) net.addLink(h2, s1) net.addLink(h3, s1) net.addLink(h4, s1) info("*** Starting network\n") net.build() s1.start([]) s1.cmd('ovs-ofctl add-flow s1 action=flood') for h in net.hosts: print "disable ipv6" h.cmd("sysctl -w net.ipv6.conf.all.disable_ipv6=1") h.cmd("sysctl -w net.ipv6.conf.default.disable_ipv6=1") h.cmd("sysctl -w net.ipv6.conf.lo.disable_ipv6=1") for sw in net.switches: print "disable ipv6" sw.cmd("sysctl -w net.ipv6.conf.all.disable_ipv6=1") sw.cmd("sysctl -w net.ipv6.conf.default.disable_ipv6=1") sw.cmd("sysctl -w net.ipv6.conf.lo.disable_ipv6=1") info("*** Running CLI\n") CLI(net) info("*** Stopping network\n") net.stop() if __name__ == '__main__': setLogLevel('info') topology() ``` Since you have identified the network topology of the code above, you need to save and run it. Considering that the filename is my-hub-topo<span>.py, run it with the command below: ``` ~$ sudo python my-hub-topo.py ``` Then, run Wireshark from **h1** and **h2** ``` mininet> h1 wireshark & mininet> h2 wireshark & ``` and start capturing packets with Wireshark on ports h1-eth0 and h2-eth0. Finally, make a ping between **h1** and **h4**. ``` mininet> h1 ping -c2 h4 ``` :::info Question #1 :mega: What can be concluded about the transmitted/received packets by/from **h1** and **h4**? ::: :::info Question #2 :mega: Describe the packets you can observe in Wireshark. ::: ## Activity 2: How a switch device works First of all you need to identify the network topology that will be generated by the code below: ```python= #!/usr/bin/python '''@author: Ramon Fontes @email: ramonfontes@ifba.edu.br''' import sys from mininet.node import Controller from mininet.log import setLogLevel, info from mininet.cli import CLI from mininet.net import Mininet def topology(): "Create a network." net = Mininet() info("*** Creating nodes\n") h1 = net.addHost('h1', ip='10.0.0.1/8') h2 = net.addHost('h2', ip='10.0.0.2/8') h3 = net.addHost('h3', ip='10.0.0.3/8') h4 = net.addHost('h4', ip='10.0.0.4/8') s1 = net.addSwitch('s1', failMode='standalone') info("*** Creating Links\n") net.addLink(h1, s1) net.addLink(h2, s1) net.addLink(h3, s1) net.addLink(h4, s1) info("*** Starting network\n") net.build() s1.start([]) for h in net.hosts: print "disable ipv6" h.cmd("sysctl -w net.ipv6.conf.all.disable_ipv6=1") h.cmd("sysctl -w net.ipv6.conf.default.disable_ipv6=1") h.cmd("sysctl -w net.ipv6.conf.lo.disable_ipv6=1") for sw in net.switches: print "disable ipv6" sw.cmd("sysctl -w net.ipv6.conf.all.disable_ipv6=1") sw.cmd("sysctl -w net.ipv6.conf.default.disable_ipv6=1") sw.cmd("sysctl -w net.ipv6.conf.lo.disable_ipv6=1") info("*** Running CLI\n") CLI(net) info("*** Stopping network\n") net.stop() if __name__ == '__main__': setLogLevel('info') topology() ``` Since you have identified the network topology of the code above, you need to save and run it. Considering that the filename is my-switch-topo<span>.py, run it with the command below: ``` ~$ sudo python my-switch-topo.py ``` Then, run Wireshark from **h1** and **h2** ``` mininet> h1 wireshark & mininet> h2 wireshark & ``` and start capturing packets with Wireshark on ports h1-eth0 and h2-eth0. Finally, make a ping between **h1** and **h4**. ``` mininet> h1 ping -c2 h4 ``` :::info Question #1 :mega: What can be concluded about the transmitted/received packets by/from **h1** and **h4**? ::: :::info Question #2 :mega: What can you conclude about the way a switch device work? Compare the results with the results obtained in Activity 1. :::