Homework 1
Objective
The original design of the Transmission Control Protocol (TCP) worked reliably, but was unable to provide acceptable performance in large and congested networks. Several TCP variants have been proposed since then (TCP Tahoe, Reno, NewReno, Vegas and SACK) with mechanisms to control and avoid congestion. The objective of this homework is for you to analyze the performance of these different TCP variants. You will use the NS-2 network simulator to perform experiments that will help you understand the behavior of the TCP variants under various load conditions and queuing algorithms. Before starting the assignment, you will need to familiarize yourself with NS-2 with the information on this page.Another objective of this assignment is for you to practice performance evaluation. In order to perform a complete analysis of the TCP variants, you should first read the paper: "Simulation-based Comparisons of Tahoe, Reno and SACK TCP" (PDF) to understand what type of analysis you are required to do. The paper also includes details on the relevant TCP variants used in this assignment.
Assignment
In this assignment, you will analyze the performance of TCP variants (Reno, NewReno, and Vegas) under the influence of various load conditions and queuing algorithms. In the first part of the assignment, you will perform experiments that analyze fairness between these TCP variants in the presence of a Constant Bit Rate (CBR) flow. In the second part of the assignment, you will understand the behavior of the TCP variants under the influence of two different queuing disciplines (DropTail and RED).Part 1 - Fairness between TCP variants
To study the behavior of the four TCP variants, you need to first set up a network topology. Use the following topology with 10Mbits on all links.N1 N4 \ / \ / N2--------------N3 / \ / \ N5 N6
Add a CBR source at N2 and a sink at N3. Next, add two TCP streams from N1 to N4 and N5 to N6. Graph the average packet loss rate and the average bandwidth used by all three flows as a function of the bandwidth used by the CBR flow. That is, the CBR flow is the parameter you need to vary for this experiment. You must repeat the experiment using the following TCP variants (one variant creating traffic from N1 to N4, and the other creating traffic from N5 to N6):
- Reno/Reno
- NewReno/Reno
- Vegas/Vegas
- NewReno/Vegas
Part 2 - Influence of Queuing
Queuing disciplines like DropTail and Random Early Drop (RED) are algorithms that control how packets in a queue are treated. Instead of varying the rate of the CBR flow, we will now study the influence of the queuing discipline used at the node on the overall throughput.- Use the same topology from Part1 and have one TCP flow (N1-N4) and one CBR/UDP (N5-N6) flow.
First, start the TCP flow. Once the TCP flow is steady, start the CBR
source and analyze how the TCP and CBR flows change under the following
queuing algorithms: DropTail and RED. Perform the experiments with TCP
Reno and SACK. Answer the following questions for Reno and for SACK:
Simulate the following scenario under two queuing algorithms: One TCP flow (test with Reno and SACK) sending 1000 bytes packets, and one UDP flow sending 500 bytes packets at a rate of 1 Mbps. The middle link they are sharing is a 1.5Mbps link. How do results change? Why? - Consider three UDP flows sharing a 1.5 Mbps link (See figure below): The first two UDP flows are sending 1000 byte packets at 1 Mbps, and the last UDP flow is sending 500 byte packets at 0.6 Mbps. Assume that the flows start sending at 0sec, 0.1sec, and 0.2sec, respectively. Plot the throughput of all three flows. Explain the results. Measure the average packet latency (end-to-end delay) for the packets for different flows and plot it. How does it differ between DropTail and RED?
- Does each queuing discipline provide fair bandwidth to each flow? How does the TCP flow react to the creation of the CBR flow? Is RED a good idea while dealing with SACK?
N1 N4 \ / \ / N7------N2--------------N3--------N8 / \ / \ N5 N6Note
To prepare you to complete this assignment, you should write scripts that parse the trace files and enable you to report average bandwidth, packet drops, throughput, end-to-end latency, sequence numbers of packets sent, and TCP congestion window of any flow. You will use these scripts to extract the information you will need to answer the above questions. You need to understand the format of the TCP output file to successfully write these scripts.
Submission
This homework assignment is due by 11:59pm on November 4. Late homework will not be accepted. Submit your homework as a PDF file via email attachment to shiliang_tang at cs. The email MUST have as its subject "276HW1" (without quotes). The attachment should be a single PDF file called YOURLASTNAME.pdf. (substitute your name in).Your pdf file should include:
- A write-up that describe your methodology and observations. Avoid verbose discussion of the results. Additional results, insight, and analysis of the results, however, are strongly encouraged.
- Submit graphs that are relevant to your analysis of the TCP variants. Be selective in your graph submission. Submit only those graphs that convey a point you are trying to make. Graphs are to be plotted using xgraph or gnuplot only. Avoid printing one graph per page. Logical organization of content (text and graphs) is expected!
-
Submit
your TCL scripts. You can use the OpenOffice.org
Writer to convert your scripts and text files to pdf format.