CS 725/825 Computer Networks, IT 725 Network Technology
Assignment 5
Due: Wednesday, December 4, 2024 Monday, December 9, 2:10 pm (start of the class)
Problems:
- (30 points) Consider the network in the figure below consisting of routers (R1 - R5) and L2 subnets. Router interfaces are labeled with uppercase letters, thick lines labeled with a prefix denote the L2 networks. Assume that all links have an equal weight/cost.
- Assume that the network uses static routing and fill the routing tables of each route so that every subnet as well as the default gateway are reachable from any place on the network. Do it with the smallest number of entries in the routing tables. For simplicity, assume that a routing table entry consists of a prefix and the local interface on which the packet needs to leave the router (e.g., in R1 you will have entry 132.177.3.0/24 -> B, meaning any packet routed by R1 and destined to subnet 132.177.3.0/24 will be sent out on R1's interface B).
- Assume that router R5 is down. The network runs a distance vector routing protocol and that has converged (all routers have correct routes for the reachable subnets). R5 is then brought up. Show the steps by which R5 populates its routing tables and steps by which other routers learn about R5 and the L2 network connected to it.
- (20 points)
- Outline the format of a QUIC packet.
- Focussing on the fields that are not encrypted, describe the function of the first few packets in the trace https://www.cloudshark.org/captures/bd7685d07da8. Additional information can be obtained using a QUIC and HTTP/3 visualization tool qvis and by uploading a QLOG file generated while the packet trace was captured.
Programming assignment:
- (50 points) The goal of this assignment is to write a pair of programs that allows you to estimate the offset between the system clocks of two computers connected over a network. The solution must take into an account the time it takes to propagate the messages from one system to another.
- Include a brief outline of the approach that you took and a sample run in your assignment submission. You must show representative runs of your programs together with appropriate explanations. Important: by showing an execution of your program, you are making a statement that your program, as submitted, works as shown. An attempt to "fake" a run, for example by writing a program that ignores input and just prints answers regardless of input, will be considered as cheating. You may be asked to give a demo of your program. If your program does not implement fully the required functionality or does not work, you have to make it clear in the report.
- Commit the source code to your course Git repository (see instructions). Add brief instructions on how to compile/run the code to the assignment's
README.md
. Do not commit data, graphs, documents, etc. into the repository. Don't forget to tag the commit asa5
.
More specifically, the client notes the current time t1, sends a request to the server, the server notes the time the request arrived t2, prepares the response, gets the time the response is ready to leave t3, and sends both t2 and t3 back to the client. The values can be sent as a JSON-encoded object, e.g., {"t2":1020, "t3":1030}
. The client notes the arrival time of the response t4 and calculates the round trip time (RTT) as (t4 - t1) - (t3 - t2), and the clock offset as (t1 + RTT/2) - t2:
As you will see, your clock offset observation will differ slightly from run to run. This is a result of variable latencies in the underlying system. In order to get more precise results, your program must run the message exchange outlined above multiple times and use the multiple measurements to come up with a more precise estimate of the clock offset. How exactly you combine the measurements is an open part of the assignment and should be outlined in the program report.
You are free to pick any underlying protocol for the message exchange as well as the programming language. While it is perfectly fine to run both client and server on the same machine for initial testing (in that case, both use the same clock and your program should report an offset close to zero). You do have to carry out the final experiments between two different computers. You can pick any pair of computers but two Linux servers are set up on the CS network (rb1.cs.unh.edu
and rb2.cs.unh.edu
) and available for your experiments.
Deliverables
Submission instructions:
Upload your submission as a single PDF file using myCourses (mycourses.unh.edu). Any source code used in the assignment must be committed to the course Git repository. More details can be found in the standard assignment submission instructions.