CS 725/825 Computer Networks, IT 725 Network Technology

Assignment 1


Due: Wednesday, September 27, 2023, 2:10 pm (start of the class)

Problems:

  1. (10 points)
    1. What is the range of IP addresses covered by prefix 132.177.12.192/29?
    2. Give the prefix(es) to cover the IP addresses in range 10.20.30.128 - 10.20.30.255.
    3. What is the netmask that corresponds to /9 prefix length?
    4. What prefix length corresponds to netmask 255.255.254.0?

    For each, outline how you got the answer by showing the binary representation of the addresses or the netmask.

  2. (10 points) Find and test one or more command-line commands to:
    1. list all network interfaces of a host
    2. for each of the active network interfaces, find its MAC address, IP addresses, subnet id, prefix, and subnet mask,
    3. list the content of the routing table and the default gateway, and
    4. list the content of the ARP table.

    For each, copy and paste the command that you used and its output (no screenshots please). Highlight the command and the portion of the output that gives the answer. For example, for part (a) highlight the interface names.

  3. (15 points) Chapter 1, Problem P22 simplified by setting N = 1, i.e., there is only one hop between the client and server.
  4. (15 points) In this part of the assignment, you will analyze a brief trace of network traffic. The trace (https://www.cloudshark.org/captures/9a5061d0e2af) is available through CloudShark service provided by QA Cafe, a Portsmouth company with many UNH-CS and IOL connections founded by UNH alumnus Joe McEachern. You can also download the trace from the site in a format that can be opened by any of the standard network traffic sniffers, such as Wireshark or command-line utility tcpdump.
  5. The trace consists of network traffic resulting from command ping -c 5 www.unh.edu executed on one of the department computers:

    $ ping -c 5  www.unh.edu
    PING www.unh.edu (132.177.132.99) 56(84) bytes of data.
    64 bytes from unh.edu (132.177.132.99): icmp_seq=1 ttl=60 time=1.45 ms
    64 bytes from unh.edu (132.177.132.99): icmp_seq=2 ttl=60 time=1.61 ms
    64 bytes from unh.edu (132.177.132.99): icmp_seq=3 ttl=60 time=1.69 ms
    64 bytes from unh.edu (132.177.132.99): icmp_seq=4 ttl=60 time=1.77 ms
    64 bytes from unh.edu (132.177.132.99): icmp_seq=5 ttl=60 time=?.?? ms
    
    --- www.unh.edu ping statistics ---
    5 packets transmitted, 5 received, 0% packet loss, time 4007ms
    rtt min/avg/max/mdev = 1.451/1.613/1.771/0.109 ms
    

    Analyze the trace and answer the following questions:

    1. Briefly describe the purpose/function of each of the first six packets in the trace.
    2. What is the hostname of the machine where the command was executed?
    3. What is the MAC address of the machine where the command was executed?
    4. Besides the machine where the command was executed, what other IP addresses do you see in the trace? What is the main function of the systems they belong to?
    5. Briefly describe the function of packets 7 an 8. What action of the ping command resulted in this query being made?
    6. From the trace, find the round trip time of the final ping.
  6. (10 points) Use command traceroute (tracert on Windows, or any other equivalent tool) and explore the path packets take to reach IP address 172.217.13.164 (it is one of the IP addresses www.google.com resolves to).
    1. How many hops does it take to reach that address?
    2. Can you guess the physical location of each of the routers?
    3. As best as you can, list the names of the service providers whose networks are traversed.
    4. Does the number of hops change when you try at different times?
    5. How does the path change when you try traceroute from a different location? There are web tools that let you test traceroute from their servers. You can also compare UNH network vs home network, UNH network vs cell network, etc.

Programming assignment:

  1. (40 points) The goal of the programing part of the assignment is to come with a tool to analyze simple network performance data and to use the tool to study the results of an experiment.
  2. Task

    File cs725-f23-a1-ping.txt contains the output of executing the ping command. The file captures the outcome of over 3,000 pings between two systems connected over a network that was experiencing performance problems. Come up with a method to read and analyze the observations captured in the files and answer the following questions:

    1. What was the minimum, maximum, mean, and median latency of the pings that succeeded? Ignore pings that failed in the calculation. What was the standard deviation of latency?
    2. What was the packet loss rate?
    3. What was the average and maximum length of the period when packets were not delivered? Note that in this experiment, the pings were sent at the default rate of one per second.
    4. Come up with a graph that visualizes the distribution of the ping latencies. There are several ways to do this, there is no specific one that I am looking for. The goal is to find a method to display the data in a way that is clear and easy to understand.
    5. Extra credit: Is there periodicity in the observed network latency? See if you can use some basic statistical methods to answer this question.

    You can use any tools, programming language, platform, or development environment. As with most assignments in this course, I strongly recommend that you look for a tool, programing/scripting language that is best suitable for the task and learn just enough of it to get things done, rather than trying to solve it in the language that you are most comfortable. My own solution is in Python (including graph generation, it is about half a page long) but there are many other tools that you can use.

    Deliverables

    1. 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.
    2. 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 as a1.

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.