-
Notifications
You must be signed in to change notification settings - Fork 245
Reproducing Paper Results
Paper - Mininet-WiFi: Emulating Software-Defined Wireless Networks - (Best Paper Award!)
-
Virtual Machine: following the instructions in /home/mininetwifi/paper directory.
-
Docker: following the instructions in /paper directory.
Click here to get a Virtual Disk or Docker Image
Extended abstract - Towards an Emulator for Software Defined Wireless Networks
Case 1: [Video] (https://www.youtube.com/watch?v=_C4H2gBdyQY) (expected results from version 1.5r1)
-
Get the code [here] (https://github.com/intrig-unicamp/mininet-wifi/blob/master/demos/allWirelessNetworksAroundUs.py)
-
Execute the code
-
mininet-wifi>
xterm sta1 h1
-
In station (sta1) terminal:
cvlc -vvv v4l2:///dev/video0 --input-slave=alsa://hw:1,0 --mtu 1000 --sout '#transcode{vcodec=mp4v,vb=800,scale=1,acodec=mpga,ab=128,channels=1}: duplicate{dst=display,dst=rtp{sdp=rtsp://10.0.0.10:8080/helmet.sdp}'
-
And finally in the host (h1) terminal:
cvlc rtsp://10.0.0.10:8080/helmet.sdp
sudo mn --wifi
mininet-wifi>sta1 ping sta2
mininet-wifi>sta1 iwconfig
mininet-wifi>sta2 iwconfig
sudo python examples/wifiStationsAndHosts.py
mininet-wifi>nodes
mininet-wifi>sh ovs-ofctl dump-flows ap1
mininet-wifi>sta1 ping h3
mininet-wifi>sh ovs-ofctl dump-flows ap1
Open the code examples/wifiStationsAndHosts.py and make the following changes:
from: net = Mininet( controller=Controller, link=TCLink, switch=OVSKernelSwitch )
to: net = Mininet( controller=RemoteController, link=TCLink, switch=OVSKernelSwitch )
from: c0 = net.addController('c0', controller=Controller, ip='127.0.0.1' )
to: c0 = net.addController('c0', controller=RemoteController, ip='127.0.0.1' )
sudo python examples/wifiStationsAndHosts.py
mininet-wifi>sta1 ping h3 #Why there is no communication?
sudo python examples/handover.py
mininet-wifi>sta1 iwconfig
mininet-wifi>sta1 ping sta2 #here I suggest you wait sta1 reaches ap2 before going to the next step
mininet-wifi>sta1 iwconfig
In this case you will see a picture like below:
sudo python examples/wifiPosition.py
mininet-wifi>sta1 iwconfig
mininet-wifi>sta1 ping sta2
mininet-wifi>py sta1.moveStationTo('70,40,0')
mininet-wifi>sta1 iwconfig
mininet-wifi>sta1 ping sta2
mininet-wifi>py ap1.setRange(60)
mininet-wifi>sta1 iwconfig
mininet-wifi>sta1 ping sta2
In this case you will see a picture like below:
sudo systemctl stop network-manager
Open demos/sbrc.py and change:
from: phyap1 = net.addPhysicalBaseStation( 'phyap1', ssid= 'SBRC16-MininetWiFi', mode= 'g', channel= '1', position='50,115,0', wlan='wlan11' )
to: wlan11 to your usb wlan interface.
sudo python demos/sbrc.py
At this moment users attending the conference will be invited to connect their mobile devices into the physical/emulated environment.
In this case you will see a picture like below:
Case 1 (Multipath TCP): You have to install [mptcp] (http://www.multipath-tcp.org) and ifstat to reproduce this use case. In order to allow the communication we used pox controller with spanning tree enabled.
./pox.py forwarding.l2_learning openflow.spanning_tree --hold-down log.level --DEBUG samples.pretty_log openflow.discovery host_tracker info.packet_dump
sudo python demos/mptcp.py
mininet-wifi>xterm sta1 h10
mininet-wifi>sta1 ifstat
iperf -s
iperf -c 192.168.1.254
Paper - (In Progress) - Video
Note: We have noticed that for some reason the AP stops working after few minutes from the moment that a mobile device is connected to the AP attached to the VM. So, we update the code in order to allow you reproduce this case using the host instead of VM.
####Requirements to reproduce:
- (no need anymore) You have to use a Virtual Machine - one interface mode nat enabled.
- USB WiFi dongle - attached to the Virtual Machine (attached to the host in the current code)
- Floodlight OpenFlow controller - latest version
- ofsoftswitch13 - https://github.com/CPqD/ofsoftswitch13
- Speedtest-cli
- It is a good idea disable the network manager (service network-manager stop)
####Important (changes in the code):
- You have to set the wlan interface created by your USB WiFi dongle:
e.g. phyap1 = net.addPhysicalBaseStation( 'phyap1', ssid= 'ap-ssid1', mode= 'g', channel= '6', position='170,185,0', wlan='wlan1' ) - You have to set the wlan that is connected to the Internet:
e.g. net.addOfDataPath('ap3', 'wlan0')
- Getting the code [here] (https://github.com/intrig-unicamp/mininet-wifi/blob/master/demos/hybridVirtualPhysical.py)
- Executing the Floodlight OpenFlow controller:
java -jar target/floodlight.jar
- Executing the code:
sudo py hybridVirtualPhysical.py
- Now, stations should be able to communicate with the Internet
- You can use any station connected to any Access Point and try it out:
mininet-wifi>xterm staX
and runspeedtest-cli
- Using speedtest-cli you test Download and Upload speed of your internet connection. The available bandwidth is controlled by OpenFlow meter entries. - You can use any mobile device to communicate with stations in Mininet-WiFi and also the Internet if the device is associated to the Access Point.