wiki:GENIEducation/SampleAssignments/TcpAssignment/ExerciseLayoutVT

Version 6 (modified by Vic Thomas, 11 years ago) (diff)

--

TCP ASSIGNMENT

Overview

The objective of this exercise is to understand the impact of network conditions on the TCP congestion control algorithms.
You will learn about:

  • The NewReno loss recovery and intertwined congestion control mechanisms
  • The CUBIC congestion control mechanism
  • The impact of the Slow Start Threshold (SSThresh) and Congestion Window Size (CWND) TCP state variables on TCP network performance
  • Measuring the performance of TCP flows
  • The impact of path delay and bottleneck bandwidth on TCP performance
  • TCP fairness concerns
  • The Linux pluggable congestion control module interface.

Prerequisites

  • A GENI Account: Talk to your instructor or teaching assistant if you do not have a GENI account.
  • An ssh client on the computer you will use for this exercise. See the SSH Client section of this page for instructions on getting an ssh client for your computer.
  • Familiarity with the Unix command line.

The following is the topology that you will be creating:

In this tutorial, we will show how to accomplish this assignment using either Omni or GENI Portal to:

  • Reserve resources (exclusive physical PCs) from ProtoGENI
  • Reserve resources (virtual machines) from InstaGENI
  • Reserve resources (virtual machines) from ExoGENI

This Project leverages resources on the GENI aggregate in order to experiment with TCP.

Prerequisites

Tools

The two primary tools used in this assignment are:
1. Traffic Control (tc)
The tc command is available in the GNU Linux distributions on GENI nodes, found in the /sbin directory. This command manipulates the Linux network forwarding tables, allowing for configuration of queuing disciplines, which change the policies controlling which packets are forwarded in what order and which are dropped; and network emulation, which allows the Linux kernel to emulate various network conditions such as delay or loss. These two effects are provided by the qdisc and netem subcommands, respectively. In these exercises, tc will be used to modify network conditions and enable different scheduling policies. Example command lines will be provided.

2. Iperf
Iperf is available on the GENI nodes, located at /usr/local/etc/emulab/emulab-iperf. Iperf is used to measure the bandwidth performance of Internet links. In these exercises, it is used to study the behavior of TCP in the face of changing link characteristics. Iperf runs as both a server and a client. The server is started with the -s command line option, and listens for connections from the client. The client is started with the -c <server> command line option, and connects to the server and sends data at either the fastest possible rate (given the underlying network) or a user-specified rate. The -u option causes the sender or receiver to use UDP instead of TCP. Various other options will be required for these exercises, and provided in the appropriate sections. All Iperf measurement data should be recorded from the TCP receiver (server) side.

How to get Help

  • If you are using a specific aggregate or tool, you should consider registering in their mailing list. It is a great way to get connected with other GENI users and it is an excellent source of wisdom.
  • Send mail to the GENI help list: help@geni.net.
  • If you want to chat real-time with other GENI users and ask questions, join us in a GENI chatroom.

Resources

Tutorial Instructions

Design/Setup
Execute
Finish

Credits

This assignment was originally designed by Prof. Sonia Fahmy and Ethan Blanton of Purdue University.