CS 925 Advanced Computer Networks
Assignment 1
Due: Thursday, February 8, 2024, 2:10 pm (start of the class)
Problem:
The goal of this assignment is to experiment with network performance testing. To this end, you are asked to design a tool to measure the sustained throughput of a TCP connection running over a given network. You are free to design the tool in any way you want, however, it must not be implemented as a simple wrapper over an existing tool. You will need to write both the client and the server side of the tool. Use the industry-standard utilities (netperf
/netserver
, iperf
, and iperf3
) to compare and verify the results obtained from your tool. The comparison of measurements obtained using those and your tool is one of the key deliverables of this assignment. You will be asked to use the tool to perform experiments in the subsequent assignment, so it is in your best interest to make it robust and flexible.
You are free to run you experiments over any network that you have access to. It is recommended that you use two Linux servers are set up on the CS network: rb1.cs.unh.edu
and rb2.cs.unh.edu
(there is a third system, rb3.cs.unh.edu
, that will not be used in this assignment).
Specifically, use the three direct links that connect network interfaces enp2s0f
x, with IP addresses 10.2.x.1 on rb1
and 10.2.x.2 on rb2
, where x=0...2). Each of the links is configured so that the traffic experiences different impairments and, therefore, different TCP throughput. The links carry no other traffic besides what is generated by the students in the course. Given the relatively small number of students in the course, I do not anticipate problems with sharing the links. Later in the course we will use a tool to enforce exclusive access.
For convenience, you can use hostnames using pattern: hostname "pxyz" resolves to IPv4 address 10.x.y.z (e.g., "p232" is a hostname for the interface with IP address 10.2.3.2).
Make sure that you send your test traffic over the private links and not over the public interfaces rb1.cs.unh.edu
and rb2.cs.unh.edu
. Standard development tools are installed. Accounts are being set up for all students in the course with the same username as you have on Agate but with a different password. Your username and password have been stored in your home directory on Agate in file cs925.info. The servers do not mount your Agate filesystem. The best way to keep your code in sync between your development environment and both machines is to use git
and create multiple clones of your repository.
You will not be able to install software beyond what a regular user can do. Check early if a library/module/tool that you plan to use is actually there. I can ask for anything reasonable to be installed there but it will take at least till the next business day.
Deliverables:
Paper that describes your findings and code committed to the class repository.
Submission instructions:
Upload your submission as a single PDF file using Canvas (mycourses.unh.edu). Any source code used in the assignment must be committed to the course Git repository. More details can be found in the standard assignment submission instructions.