Assignment 9 - Replicating Research with MPTCP
The goal of this assignment is to learn about a modification to TCP called Multipath TCP or MPTCP for short. We will replicate a subset of the results of the research paper that presented MPTCP.
Multipath TCP allows a particular TCP flow to simultaneously send data across multiple paths to the receiver. This increases the flow's resilience to downed links across any particular path and allows for higher throughput by utilizing multiple network interfaces of a sender. For a example a cellphone could simultaneously send data via a MPTCP flow over both a wifi link and a 3G. If either signal deteriorates, the flow can survive and if both signals are good, MPTCP will take advantage of the combined bandwidth.
Mininet is a particularly useful tool for this experiment as MPTCP is not widely deployed. Using Mininet, we can safely test MPTCP without causing issues to real network traffic.
- Read the paper. You can also watch the conference presentation video.
- Install MPTCP into the virtual machine. Reboot the virtual machine after the second command:
- Run the following test to ensure MPTCP is functional. The test will enable MPTCP and start two flows. The bandwidth should be around 20Mbps. If the bandwidth is approximately 20Mbps, MPTCP is correctly installed:
sudo ./test_mptcp.py --bw 10 --mptcp -n 2
- Your first task is to fill in the topology to perform a wireless handoff experiment. You will model an ethernet link, a WiFi link and a 3G link using the topology. By running the topology, we will confirm that MPTCP works over multiple links simultaneously and can continue functioning in the presence of downed links. Write the topology code in
topo_wireless_handoff.py marked with a
TODO. Refer to the following diagram to setup the topology correctly. The delays listed are per link so a delay of 1ms on an Ethernet link would result in a 4ms RTT for the entire Ethernet connection (2 links, 1 from sender to switch, 1 from switch to receiver, 2ms in each direction). Note you will need to set the node names exactly as they appear in the diagram.
- Now run the topology and generate a graph of the results:
You results may be similar to the following graph, but probably won't be. If your topology is correct, then ignore what your graph looks like and reference the example below. Primarily you should notice both the Ethernet and WiFi links going down and coming back up. Throughout the experiment the 3G graph will should continue despite the other downed links.
- Now that you've shown that MPTCP works over multiple links, you'll replicate a subset of the results in the original paper. You'll run the following topologies to approximate results in Figure 3, specifically the results for receiver/sender buffer size of 0.5 MB. The first topology tests MPTCP throughput over a WiFi and 3G link. The second and third topologies test TCP throughput over a WiFi and 3G link respectively. Note the original figure uses goodput. We will measure throughput for simplicity.
To run the tests, run the following command:
- Now look at the average throughput for each of the three tests by viewing the rate graphs and approximating the average. Note that for the MPTCP graph you will need to add the average WiFi throughput and average 3G throughput to arrive at the total throughput. Also note that the script runs the tests in the following chronological order: MPTCP WiFi and 3G, TCP WiFi, and TCP 3G. You will find folders labeled
mptcp followed by a timestamp and within each folder a
rate.png with the throughput results.
- You can now answer the quiz questions on T-square and compare your results to the original figure 3 in the paper.
Submit the following five files:
- quiz9.txt - The answers to the quiz questions.
- topo_wireless_handoff.py - The topology file you edited.
- wifi-3g.png - Rename the rate.png file from each test iteration based on step 7