Due: Thursday, February 14, 2017, 8:10 am (start of the class)


The goal of this assignment is to explore latency of a simple request/response interaction implemented using various of protocols and running over links with different latencies. The system consists of a client requesting a simple piece of information from a server, the server responds with the information, the client receives it, and measures, as precisely as possible, the time the entire transaction took.

Experiment with four protocols: raw data over UDP, raw data over TCP, HTTP, and HTTPS. To make it slightly more complicated, all protocols must run over IPv6. Both request and response should be few tens of bytes in length. For the UDP and TCP experiments, you need to write both client and server side, for the HTTP/HTTPS experiments, you are expected to use the Apache web server running on the machines described below and just write the client making the requests. The server is set up to serve files from users' public_html folders. Please note that the servers run on non-standard port numbers: HTTP on port 8081 and HTTPS on port 8443.

This assignment is more about setting up, executing, and evaluating an experiment than about writing code. It should not take much programming to get the first results. At that point you should start questioning every aspect of the experiment. Are you measuring just the transaction time or is there something missing or extra. Are your results statistically significant? Are you measuring the time as precisely as you can? Most importantly, are the observations in line with your expectations?

To facilitate your experiments, two Linux servers are set up on the CS network: rb1.cs.unh.edu and rb2.cs.unh.edu. They are connected via four links that carry no other traffic than the one produced by the experiments. Each of the links is configured so that traffic experiences diffrent link delays. The extra delays added to the inherent delay of a directly connected link are set as follows:

Interface Delay (ms)
enp4s0f0 0
enp4s0f1 3

Repeat your experiment for every link. With four protocols and four links, you will be running the total of 16 experiment. Each of the experiments must be repeated sufficient number of times so that the collected results are statistically significant. It is a part of the assignment to justify that you have satisfied this requirement.

The links are configured with private addresses, make sure that you send your test traffic over them and not over the public rb1.cs.unh.edu and rb2.cs.unh.edu interfaces. Standard development tools are installed there. 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. You will receive the password in an email. The servers do not mount your Agate filesystem.

IPv4 and and IPv6 address assignment on rb1/rb2


The deliverables consist of both paper and code submitted by following the standard submission instructions. The paper should follow the structure of a research paper as discussed in class. The following is a list of parts that I will be looking for when grading:

There is no need to write a broad introduction or an outline of prior work. The paper must have at least one formula, figure, plot, and a table. Note the requirement in general submission instructions that the paper must strictly follow the IEEE paper formatting requirements. Any deviation from the format (e.g., out of margin plot) will result in point deduction.

Submission instructions:

Upload the paper in the PDF format using Canvas (mycourses.unh.edu) and push your code to the repository. More details can be found in the standard assignment submission instructions.

© 2017 Radim Bartos.