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.
Update to the latest assignment code:
git commit -a -m "Saving work"
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. We will not run your code, but just look at it for this assignment, so you should not focus on making your graph work. 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 calculate 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 following quiz questions and compare your results to the original figure 3 in the paper. Submit your quiz question responses and your completed handoff topology on the submission page.
- What was the average throughput the MPTCP flow achieved in step 8?
- What was the average throughput the TCP 3G flow achieved?
- What was the average throughput the TCP WiFi flow achieved?
- What improvement over the TCP flows did MPTCP show?
- What deployment challenges might MPTCP face in the wild on real devices?