Distributed Computing and Computer Networks
Winter 1999

CS 276 Assignment2

CS276 Assignment 3

Writeup due before class on March 18, 1999
Code turnin due by midnight on March 18, 1999

1.0 Overview

In this assignment you use unicast TCP connections to simulate a multicast service over the Internet. The topology of the tree will vary and you will have to deal with all types of virtual trees. Given a unicast routing topology, you will be required to build a multicast tree and manage join/leave messages for all group members. The key performance measure will be whether nodes implement the multicast routing/forwarding protocol correctly. This will be determined based on whether each node in the graph handles join/leave messages correctly and whether each node properly forwards or discards packets from the source. Your nodes will have to run in both a ``broadcast-and-prune'' and a ``join-and-graph'' mode of operation (but only one protocol at a time).

You will write a ``node'' program that is run on up to 10 different machines (though extending beyond 10 should be trivial). Each ``node'' program will read from a topology file and establish a virtual topology of unicast links. The links will actually be implemented using TCP connections. Each link will have a virtual cost. Using Node 1 as the one and only source you will need to build a logical representation of a multicast tree. When Node 1 begins sending packets, each packet should be delivered across the multicast tree, but only to nodes that are group members.

Two input files will be needed: the topology file mentioned above, and an event file. The event file will contain a list of times and corresponding node actions. These events will be join/leave messages from nodes wishing to join/leave the multicast group. The node which initiates the event must send an event message to the next-hop, upstream router who must properly act on the message, either adding the node to the multicast tree and passing the message further upstream or pruning the link from the multicast tree.

The output from your programs will be two files for each node. The first will contain a history of events for each node and the second will contain a transmission summary. The possible events are for data packets only and include: transmitted (source node only), forwarded (intermediate nodes only), discarded, and received.

The transmission summary will include information about the total number of packets sent, received, forwarded, and dropped by each node.

2.0 Input Given

Two configuration files will be used: (1) one file specifying the topology of the nodes, and (2) a second file specifying the events that occur during the simulation.

3.0 Output Format

Two output files will need to be generated per node:

4.0 Detailed Operation

The detailed operation is left mainly to the discretion of the student. However, there are some strict requirements that need to be implemented. This list is both a list of requirements and a list of suggestions. Be forewarned that items will be added to the list over the course of the assignment (as corrections and clarifications are made).

5.0 Turnin

6.0 Grading

We will design several strategies that will test and stress the functionality of your program. We will develop 4 test cases of increasing complexity. Each will be tested against dense and sparse mode protocols. Each successful execution will be worth 5 points. The extra credit for this assignment will be worth up to 20 points (so it is a significant opportunity).

The late submission penalty policy is 10% per late day.