Lab: Congestion Control

In this lab, you will add congestion control to your reliable transport protocol. You will use the simulator to examine the correctness, performance and fairness of your implementation.

TCP Tahoe

Implement congestion control using TCP Tahoe as your model. This should include the following features:

Graphing

Create scripts that can produce the following types of graphs:

You can use the TCP Plotting using Python GitHub repository for sample plotting code.

Experiments

Use the simulator to set up a simple network consisting of two nodes and and one bidirectional link:

network

Note that to do this in the simulator, you must create a unidirectional link from n1 to n2, and another one from n2 to n1.

Using this network, run the following experiments:

Write a separate Python script for each of these tests. The script should output traces from your TCP implementation demonstrating that it works well, and it should run a diff to ensure the file is transferred correctly. Use the transfer.py script as an example.

You may want to log some data required for the graphs to separate output files, for easier parsing and graphing.

Report

Write a formal, scientific report that includes the following:

Write using a formal, scientific report style. Your report should be written as if you are explaining your work to another CS student, and they need all of the details of what you did so that they can replicate your experiments.

Your report can be any length, as long as you thoroughly describe your project and results. The paper must use 11 point type, single spacing, and one column per page.

You must use LaTex to write your report. You can use this template for your report. To help you learn LaTeX, I suggest using the WikiBooks LaTex reference.

Submission

Your code should be located in a directory called lab3 in the top level:

bene/
  src/
  examples/
  lab3/

Turn in a tarball that includes all of your code (for the simulator, experiments, graphing, etc), and a PDF of your report:

tar -czvf bene.tgz bene

using Learning Suite.

Grading

This lab is worth 150 points, and will be graded using the following rubric:

To get full points, all experiments must work well and the report must be complete and written with a scientific style.