Due: Tuesday, May 11, 2021, 11:59 pm
You can also find the above questions here (Colby IP needed)
The goal of this assignment is to explore the latency of a simple client/server system implemented using a variety of methods. You are expected to do some research in this assignment.
You are expected to implement four versions of the client/server system using these four ways: UDP, TCP, HTTP, and HTTPS. TCP and UDP should be implemented over IPv4, and you are welcome to use the python socket programming we've discussed in class. For HTTP/HTTPS experiments, you are expected to use node.js for the server. We've talked about how to use nodejs to implement a HTTP server in class. Please do some research and learn how to use nodejs to create a HTTPS server. Note that you may need a certificate to enable HTTPS. The openssl tool kit we talked in class can generate certificates. Do some research and create a certificate for your HTTPS implementation. You are encouraged to use libraries in this project.
To explore the latency of the client/server system implemented in the above four ways, your implementations should be able to measure the RTTs. A RTT measures the duration from the moment the client requests a simple piece of information from a server and the time when the client receives the server response. For simplicity, the information requested should be a 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.
Please make the client measures, as precisely as possible, the RTT of the entire transaction. For example, the client can measure the RTTs of several transactions and generates the statistic, such mean/min/max/stddev, from the measured RTTs. Note that different implementations may lead to various RTT values.
You are expectd to run the client and server on different
machines in an isolated network, gimli, described
below for this programming assignment. The idea is that you have a
quiet network for your expriments, which will lead to more accurate
results.
The isolated network is composed of four Linux servers, n1
to n4, set up on the Colby virtual network. Those four nodes
are connected via four links to gimli that carry no other
traffic than the one produced by the experiments. All nodes in the
cluster, including gimli, can talk to each other.
gimli is the "gateway" of the isolated network. We must access n1 to
n4 via gimli. To access gimli, use ssh
yourColbyID@gimli and
your Colby password. Remember to run
cluster_locksmith the first time you login gimli.
Otherwise, you won't be able to access n1 to n4. After running
cluster_locksmith, you can use ssh followed by that node name without key
in your password again when you want to access any node. For example, if
you want to access n1, ssh n1 will let you log in n1 without
asking for your password.
To run your implementations on the cluster, you need to upload your
programs to gimili first. You will then be able to access your programs
on n1 to n4. You need to use scp to upload the programs to
gimili. For example, if you want to upload tcpclient.py to gimili, you
can run
scp tcpclient.py yourColbyID@gimli.cs.colby.edu:/export/home/yourColbyIDon your terminal after entering the folder in which tcpclient.py is stored. You will then be able to run tcpclient.py on any nodes from n1 to n4.
Standard development tools are installed on the cluster, including
Nodejs and Python3. To run your nodejs
code, use the command node. To run your python code, use the
command python3. If you want to check who else is on the
cluster, you can run the script gimlinodesdo w on gimli.
In the write-up, you are expected to
Extra credits will be given for testing additional protocols combinations that are not required in the tasks or even protocols that are not listed above. Check with Ying and make sure the cluster supports those protocols before you spent any significant effort on making an exotic protocol to work.
You can also get extra credits by conducting different experiments using the above four protocols. Describe the purpose of your e xperiments, exepcted outcomes, actual results, and your interpretation to the results.
© 2021 Ying Li. Page last modified: .