cn ยป

Assignment 6 - TCP Fast Open


The goal of this assignment is to learn about a specific change to TCP that reduces transfer latency. In the past lesson you learned about persistent TCP connections which enable a web browser to reuse a connection for multiple data requests. However, many HTTP requests occur over new TCP connections for example because an image for a webpage is located on a separate content server or an ad is being loaded from a third party resource. This led researchers at Google to investigate reducing the setup costs for a TCP connection. They developed TCP Fast Open (TFO) which begins sending data during the TCP handshake thereby reducing the latency of a new connection by one RTT.

You will replicate the experiment from the original paper in Mininet to observe how TCP Fast Open improves round trip times for real websites. The test setup provided uses a modified Chrome binary to download web pages from Mininet hosts. The hosts act as web servers serving mirrored data from real websites. The tests run for different latencies with TCP Fast Open disabled and then enabled. TFO is a now merged in the Linux kernel so it is built into Ubuntu 13.04 which is installed on the virtual machine from assignment 1.

Check Piazza for updates.


  1. Update to the latest assignment code:
    git commit -a -m "Saving work"

  2. Install a VNC server, termcolor and an additional library:
    sudo apt-get update
    sudo apt-get install vnc4server
    sudo apt-get install libnss3-dev
    sudo easy_install termcolor

  3. Read the original TCP Fast Open paper. You'll need to read this to answer the quiz questions. 
  4. Run the experiment to replicate the paper:
    sudo ./
  5. The experiment takes some time to complete. When its finished you should see results similar to the image below. Be sure to copy and paste this text into a text file named observations.txt for your final submission. Screen Shot 2014-03-01 at 3.50.48 PM.png
    You can also view graphs of the results in the output-figures folder.
  6. Now, using your own set of websites, run the experiment. To do this, you'll need to create a .pages file with a list website URLS each on a single line similar to the Paper.pages file. For simplicity, call the file myURLS.pages. Then run the script to download the web pages, modify the script to use your new .pages file, and re-run the experiment:
    ./ --name myURLS
    --- Modify script on lines 21 and 29 (change --name argument to myURLS) ---
    sudo ./
    Note that the script has issues with Javascript heavy web pages and avoid using https sites as well. The Google and Udacity home pages work well as test sites. Also, if you shut down the virtual machine after step 4, be sure to restart VNC.
  7. Submit the log data from step 5, the data replicating the paper's results, and your answers to the quiz questions in quiz6.txt to the T-Square.


[1] Based on a reproducing network research post.