Assignment 2

The assignment is due Sunday, June 13, 11.59 pm EDT. Submission Guidelines.

  1. Describe an example of how STUN works with full-cone NATs. The NAT-internal address is 10.1.2.3, the source port 5000 and the destination port 80. The external, globally-routable address is 4.1.2.3. The destination host is 128.59.16.3 and the STUN server is located at 128.0.0.1.
  2. We briefly described source routing for IPv6 in class. Construct an IPv6 packet header, with all the major bitfields, where the packet travels from Columbia University to Cambridge University, via Sprint and CERN. Since you don't know the IPv6 addresses of routers in these networks, just use a notation like "address(foo)" to indicate the appropriate address.
  3. Find out how a host in an IPv6 subnet discovers its on-link prefix. Give an example of the message exchange, without going into bit-level details. (Something at the detail level of "The Wombat server sends a I'M-A-ROUTER message to the host, which contains the current temperature." is sufficient)
  4. Field trip: Compute the HD ratio of the street or block that you are living on.
  5. Using dig or nslookup, determine the IPv6 address of the Columbia University server named vice. What is the Columbia site prefix?

    Hint: Currently, Columbia's IPv6 domains are in a separate domain, ip6.columbia.edu. The 'axfr' DNS query does a zone transfer that allows you to obtain the whole zone. For example, for Columbia's IPv6 domain

    dig @curta.cc.columbia.edu -t axfr ip6.columbia.edu 
    
    lists all IPv6 hosts at Columbia. You should be able to log into the dual-stack hosts bart.cs.columbia.edu and erlang.cs.columbia.edu.

    Apparently, Mozilla on Linux supports IPv6. http://www.kame.net/ is an example of an IPv6-enabled web site.

  6. Programming problem: In the second part of the programming assignment, your program will acquire IPv6 capabilities. The application should be able to use both IPv4 and IPv6, depending on the destination address. If the destination has an IPv6 DNS entry or an IPv6 literal address is being used, your program should use IPv6.

    Some links of interest:

    The destination address for the packets is specified as a commandline argument -d, as in

      transceiver -d erlang.cs.columbia.edu
    

    The application can be written in C(++) or Java. You may choose either Linux, Solaris or Windows (XP). The programming style guidelines apply. You should omit the Columbia copyright, since assignments belong to the author, not the university.