Due: Friday, December 9, 2016, 11:59 pm


Programming assignment:

The goal of this assignment is explore latency of a simple request response interaction implemented using a variety of methods. 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.

To keep things simple, the information requested should be few tens of bytes long and can be hardcoded in the server, The request itself depends on the application protocol used and should also be kept short.

There are many ways to implement this interactions, some lightweight, some providing reliability, security, and so on. The server side also impacts the performance. The underlying protocols that you are to experiment with include: IPv4 and IPv6 in the network layer, TCP and UDP in the transport layer, no security and TSL/SSL below the application layer, custom application layer protocol and HTTP served by Apache or node.js. The total number of permutations that these options would yield is fairly large so pick a subset of them.

You are required to perform four experiments: raw data over UDP, raw data over TCP, HTTP, and HTTPS. For HTTP/HTTPS experiments, you are required to use node.js for the server. You are expected to use libraries in your implementation.

In the write-up, outline the expected performance, for example, by looking at the protocol header overhead, number of packets sent, etc.; describe the experiment; and present the results of your experiments. The experiment result section should include an elementary statistical evaluation of the observations.

To facilitate your experiments, four Linux servers are set up on the CS network: n1 to n4 via bombur.cs.colby.edu. Those four nodes are connected via four links to bombur that carry no other traffic than the one produced by the experiments. The nodes can talk with bombur, but cannot talk with each other directly. Standard development tools are installed there.


Extra credits will be given for testing additional protocol combinations (not required in the tasks) or even protocols that are not listed above (check with me before you spent any significant effort on making an exotic protocol to work).


Please follow the submission instructions to turn in your work.

© 2016 Ying Li. Page last modified: .