Project 3 is optional. You may choose to either complete the project or take the final. By showing up for the final you implicitly choose the latter option.

CSE 461 Project 3:    Multicast and Real-World Applications

Due March 19, 1998

More config files

Some additional config files are here:

Project 3 code

The code is available as a zip file (without the Visual J++ project files). You will need to unpack the file, create the projects, and put your own routing code into the network layer.

To run the project, do the following:

  1. Run java application.project3 config=application/simple.cfg to start the main network
  2. Run java application.Nebraska host1 4087 <hostname> (where hostname is the name of the machine from step 1) to start the first client.
  3. Run java application.Nebraska host1 4088 <hostname> (where hostname is the name of the machine from step 1) to start the second client.
The code is here.

For project 3 we are going to build a "real-world" multicast application. This application is a graphical variant on a "chat-room." The program allows users to create and manipulate blocks in a 2D space (i.e. drag them around with the mouse). What makes this application interesting is that it is multiuser, that is any number of clients may run the application and they all get to manipulate the same set of objects, watch what everybody else is doing, and collectively work toward some goal.

If you are curious about the motivation for this project, take a look at the Kansas project at Sun Microsystems Laboratories. This system, although based on a centralized server, shows what a full-blown application of this flavor might resemble.

Largely as a consequence of implementing a real application with a user interface, and also to give you a flavor of development on a real network, much of the simulator for the previous projects has been eliminated. We will retain a simulated topology controlled by a config file, but the simulated timer will be replaced with real time and the simulated links with actual network traffic using UDP. The links from the clients into the network will be direct UDP links (allowing each client to actually use a separate computer) and the internals of the network will be simulated by bouncing packets off remote hosts in the internet. This will permit us to get real internet-like behavior while keeping all the processing physically located at the UW.

The application

The application as it exists is an AWT (the Java graphical interface) application. If you run it you get a window with a little control bar at the bottom that lets you enter a color (as RGB values) and a width and height, and then create a new object (the objects are placed randomly). Once you have some objects you can click and drag them around.

Objects are represented by a set of attribute values:

Object <id>
X <x>
Y <y>
Z <z>
Color <rgb>
Width <w>
Height <h>
The object ids are assigned by each client based on a count and the client's id (to make them globally unique). Whenever any of these attributes change the application bundles up a message containing the object id and the changed attributes, and sends that to the other clinets. When messages are received the information is rolled into the local state and the display is updated.


This program is a perfect application for multicast. If there are more than two participants then updates generated at each client need to be broadcast to all other clients. Mulitcast will allow us to implement this efficiently.

The network will be set up as a bunch of your project 2 routers connected by the "real" links. You will need to implement multicast between your routers.

Multicast issues

There are several multicast issues that will have to be dealt with, either in the routers or the application, in order to make this project work:

Real time/real network issues

The use of real time measurement and network transmission in place of simulated time and links has several implications:


Formal evaluation of this project will be limited. Your program is required to use multicast, and this will be verified by code inspection or performance. Your goal with this project is to provide a usable application for groups of three or more clients organized in clusters (i.e. groups of clients with fast links inside the groups and slow links between the groups). There will be a final demonstration of your project to show how well it works. More info on this to follow.


Just as in projects 1 and 2, this assignment should be done and handed in in groups of 2-3. Since this project is optional you may need to change groups.

Design reviews

You will need to schedule design reviews for this project independantly. Contact Andy to set up a time.


Turnin procedure for this project is to be determined. The due date is March 19 at 5:00 pm. No slip days are permitted, since we need to get grades out.