Due: Wednesday, December 6, 2017, 2:10 pm (start of the class)


  1. (20 points) Textbook Chapter 5 Review Questions R4, R6, R9, and R20.
  2. (20 points) Textbook Chapter 6 Review Questions R2, R4, R6, and R10.

Programming Assignment:

  1. (60 points) The goal of this assignment is to study the latency overhead introduced by various protocols. The assignment focusses on a simple request/response transaction implemented using various of protocols. The question that you are investigating in this assignment is: Given a network with round trip time RTT and a protocol, what is the expected time complete a simple request/response transaction? The answer should be in the form of a simple formula that expresses the expected transaction latency in terms of the network RTT. You may assume that RTT is much larger than any other delay in the system, for example, a packet transmission on a gigabit network takes a few microseconds, network latencies are typically measured in milliseconds.
  2. This question can be answered by analyzing the protocols in question, however, in this assignment you are expected to study it experimentally. You will implement a system consisting of a client making a simple request to a server, the server responds with some arbitrary data, the client receives it, and measures, as precisely as possible, the time the entire transaction took, i.e., including the time it took to establish the connection, if applicable.

    Experiment with four protocols: raw data over UDP, raw data over TCP, HTTP, and HTTPS. Both request and response should be no more than few tens of bytes in length, not including the protocol overhead. For all experiments, you need to write both client and server side, for the HTTP/HTTPS experiments, you are expected to write a server in node.js. It is fine to use libraries to implement HTTP/HTTPS on the client side. HTTPS experiment requires that you generate your own self-signed (not backed by an accepted CA) certificate. Most HTTPS client libraries will require extra steps to confirm that it is fine to accept a self-signed certificate.

    To facilitate your experiments, two Linux servers are set up on the CS network: rb1.cs.unh.edu and rb2.cs.unh.edu. Besides connectivity to the department network, the servers are connected via five 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)
    enp4s0 0
    enp5s0f0 3
    enp5s0f1 10
    enp5s0f2 30

    The links are configured with private IP addresses, make sure that you send your test traffic over them and not over the public interfaces rb1.cs.unh.edu and rb2.cs.unh.edu. 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. Your username and password has been stored in your home directory on Agate in file cs725.info. You will also receive the password in an email. The servers do not mount your Agate filesystem.

    IPv4 and IPv6 address assignment on rb1/rb2

    How exactly you set up the experiments is up to you. You do not have to run the experiment on all links but the choices that you make should not be arbitrary. Your submission should include a brief justification of the experiment design decisions. Each of the experiments must be repeated sufficient number of times so that the collected results are statistically significant.

    Submission instructions:

Upload your submission as a single PDF file using Canvas (mycourses.unh.edu). More details can be found in the standard assignment submission instructions.

© 2017 Radim Bartos.