CS 725/825 Computer Networks, IT 725 Network Technology

Assignment 1


Due: Wednesday, September 25, 2024, 2:10 pm (start of the class)

Problems:

  1. (10 points)
    1. What is the range of IP addresses covered by prefix 132.177.0.0/19?
    2. Give the prefix(es) to cover the IP addresses in range 10.0.128.0 - 10.0.191.255.
    3. What is the netmask that corresponds to /19 prefix length?
    4. What prefix length corresponds to netmask 255.255.224.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 P33. What would the answer be if the queuing delay, let's call it q, in each of the two switches was not negligible?
  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/7fa1cec4a3ad) 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.85 ms
    64 bytes from unh.edu (132.177.132.99): icmp_seq=2 ttl=60 time=1.94 ms
    64 bytes from unh.edu (132.177.132.99): icmp_seq=3 ttl=60 time=1.92 ms
    64 bytes from unh.edu (132.177.132.99): icmp_seq=4 ttl=60 time=2.51 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.848/2.051/2.508/0.237 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 was the hostname of the machine where the command was executed?
    3. What was 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. 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 142.250.176.206 (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

    Capture the output of the ping command to a target of your choice. use the -c option to get exactly 100 measurements (more repetitions would make the experiment more interesting but I am trying to avoid being flagged as suspicious). Save the output to a file and come up with a method to analyze the observations and answer the following questions:

    1. What was the minimum, maximum, mean, and median latency of the pings that succeeded? Ignore pings that failed (if any) in the calculation. What was the standard deviation of the latency?
    2. What was the packet loss rate? What was the average and maximum length of the period when packets were not delivered? (If your observations indicate 100% success rate, answers will be trivial)
    3. Come up with a graph that cumulative distribution function (CDF) of the ping latencies. Interpret what you see in the graph.

    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.