Assignment 3

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

  1. Review question: Summarize why reliable multicast is a complex problem.
  2. Review question: Explain the difference between multicast and anycast. Give examples where (a) only multicast is appropriate and (b) where anycast works better. Justify your answers.
  3. Compute the Minimum Spanning Tree (MST) for the following graph, starting at node 1:
    Graph

    Note: Edge 3-6 has weight 6.

  4. By inspection, construct the Steiner Tree for the figure below, connecting the red nodes.
    Graph
  5. Suppose that two different Internet radio stations randomly choose a multicast address. What is the probability that they choose the same address? Suppose now that 30 students are building multicast applications and all choose multicast addresses at the same time, what is the probability that they interfere with each other? Variation of problem by Kurose/Ross
  6. Reverse path forwarding: consider the topology and link costs shown in the figure below. Using arrows, indicate links over which packets will be forwarded using RPF, and links over which packets will not be forwarded, given that node E is the source. All blue nodes are receivers.
    Graph
    Variation of problem by Kurose/Ross
  7. Using your program from this assignment, track how IGMP works by tracing the packet exchanges for joining and leaving a multicast group. The most common programs for capturing packet data are tcpdump (Unix) and Ethereal (for Windows).

    On bart.cs.columbia.edu, /usr/local/bin/tcpdump should also work.

    To capture IGMP packets, use

    tcpdump ip proto \\igmp
    

    See the tcpdump documentation for additional command line options that allow you to obtain details on each packet.

    You should include the packet trace and explain any retransmissions and periodic packets.

  8. Programming problem: In the third part of the programming assignment, your program will acquire multicast capabilities for both IPv4 and IPv6. Your program should be able to send to a multicast address and receive data from the same multicast address. The TTL value should be specified as a commandline parameter, -t. You should also print out the source address of the incoming packets. If multiple people experiment at the same time, you will receive packets from your classmates, so the string sent should be your login name (getlogin()) or UID (getuid()) and the timestamp. Note: getProperties is the equivalent Java function.

    Your code should work with multicast address specified via DNS names, e.g., IETF-2-VIDEO.mcast.net (see IANA registry for examples). You can use any IP multicast address of your choosing, but it is probably best to stay away from addresses in the Local Network Control Block, in particular the 'All Systems on this Subnet' and 'All Routers on this Subnet' addresses.

    See

      man ip
    
    for details on the setsockopt() parameters for multicast.

    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.