Due: Tuesday, May 11, 2021, 11:59 pm

Tasks

Problem Set:

  1. Finish the following questions in Chapter 4 and 5 of the textbook
    • Chapter 4, Problems - P15
    • Chapter 5, Problems - P3

    You can also find the above questions here (Colby IP needed)

  2. Which one of the main categories of routing algorithms (link state or distance vector) would be more appropriate to a large enterprise-level network? Justify your answer.
  3. What was the motivation for introduction of CSMA/CA in wireless networks? What are the pons and cons of CSMA/CA?

Programming assignment:

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/yourColbyID
on 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

  1. outline the expected performance, for example, by looking at the protocol header overhead, the number of packets sent, etc.
  2. describe the experiment, for example, the machines (any two of n1 to n4) you used to run the client and server, the data size used in the transaction, etc.
  3. present the results of your experiments by including a plot or table for an elementary statistical evaluation of the observations, such as mean/min/max/stddev
  4. interpret your results

Extensions

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.

Submission

Please follow the submission instructions to turn in your work.

© 2021 Ying Li. Page last modified: .