Due: Wednesday, October 11, 2017, 2:10 pm (start of the class)

Problems:

  1. (5 points) For each of your answers, show the binary representation of the addresses and netmasks.
    1. What is the range of IP addresses covered by prefix 132.177.5.192/29?
    2. Give the prefix(es) to cover the IP addresses in range 10.0.0.48 - 10.0.0.55.
    3. What is the netmask that corresponds to /13 prefix length?
    4. What prefix length corresponds to netmask 255.255.192.0?
  2. (5 points) Assume a router with four interfaces (A, B, C, and D) and routing table that contains four entries (prefix, interface): (132.177.0.0/20, A), (132.177.1.0/25, B), (132.177.0.0/16, C), and (0.0.0.0/0, D). For each of the following destination addresses indicate all matching routing table entries and the interface to which it is going to be routed.
  3. 132.177.0.1
    132.177.1.122
    132.177.1.133
    132.177.8.4
    132.177.16.5
    132.178.0.1
    
  4. (10 points) Using command line tools on at least two different platforms, find:
    1. list of network interfaces
    2. for each active network interface find its IP address, hostname, subnet id, prefix, and subnet mask,
    3. content of the routing table and the default gateway, and
    4. content of the ARP table.
  5. (10 points) Use the dig command to emulate name resolution of www.iol.unh.edu performed by someone outside of UNH, i.e., query one of the root name servers, get a list of TLD name servers for .edu TLD, query one of those, get a list of UNH name servers, query those to get the addresses of CS name servers, and, finally ask one of those for the IP address. Remember that the command option @<IP address> allows you to select a specific name server. Option +norecurse prevents a name server from performing a recursive query (in this case, the only name server that would actually do that is the UNH name server). The authoritative list of root name serves (named.root) can be downloaded from https://www.iana.org/domains/root/files. There is an option of dig that will make it to perform all the steps in one go, you are not supposed to use it.
  6. (5 points) Can you find the country where IP address 175.45.176.81 is registered? Can you find the hostname that corresponds to it? Do not probe the address with ping, traceroute, or any other scanning tool.
  7. (5 points) This question should be done on agate or any other computer with IPv6 connectivity. Can you find an IPv6 address of ipv6.google.com? This is not be an exercise in using a search engine to find an answer. Show the command(s) that you used.
  8. (20 points) In this part of the assignment, you will analyze a brief trace of network traffic. The trace (https://www.cloudshark.org/captures/f8955b88a27a) is available through CloudShark service provided by QA Cafe, a Portsmouth company with many UNH-CS and IOL connections founded by UNH CS 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.
  9. Analyze a trace stored on CloudShark that captures several DNS requests/replies and answer the following questions:

    1. Describe in general the queries and the responses.
    2. What name server is queried?
    3. How many IP addresses are returned?
    4. What are the DNS time-to-live values for the IP addresses in the responses?
    5. Can you guess the command line commands that were used while capturing the trace?
    6. Extra credit: Is there something that one can deduce from the latencies of the queries?

Programming Assignment

  1. (40 points) The goal of this assignment is to practice basics of socket programming and to perform elementary performance testing. You are asked to develop a simple utility to measure round trip time latency and upload/download throughput of a network connecting two hosts. This assignment is inspired by a popular command line utility iperf and the service provided by http://beta.speedtest.net.
  2. The exact details of your implementation are up to you, I do not expect any specific method or approach, this is as much an exercise in coding as it is one in experiment design. The only serious requirement is that must not stress the production network of the department beyond reasonable limits. For example, your throughput test should not transfer more than a megabyte of data. If in doubt, ask.

    You will be writing two programs, one acting as a client, the other as a server (you may combine the programs into one that can act as a client or a server depending on the command line parameters supplied, this is how iperf works).

    The information exchange between the client and the server should be as simple as possible. Make sure that it is described in your submission.

    It is perfectly fine to run the client and the server on a single machine during the development, however, your final experiments must be between two distinct machines.

    In the write-up, describe the method and show the results of your observation. Don't just blindly present numbers, make sure that your observations meet the most basic expectations and sanity checks, e.g., picosecond latencies and throughputs in terabits are probably not correct. Make sure that the timed portions of your code do not include any additional actions, such as printing, that may skew your measurements.

Submission instructions:

Upload your submission as a single PDF file using Canvas (mycourses.unh.edu). More details can be found in the standard assignment submission instructions.

© 2017 Radim Bartos.