Summary: CS 428/528 Project 3: Overlay Network
Part 1 and 2 due 11/18 9pm; rest due December 2, 9pm
Introduction: This project asks you to implement an application level network (what is known as an overlay network)
using processes and socket connections. I would like you to work in pairs, but individual efforts are also acceptable.
We will have a help session to get you started. As much as possible, you are expected to share the load equally with
your partner. In addition, each partner is responsible for understanding the whole implementation. This is something
that we will look for explicitly during grading and its possible to give unequal grades to different individuals within
Each node in your network is a process and the links are emulated over a UDP socket (similar to your project 2
server). In this project, you will first create this virtual infrastructure and implement routing for it. In the second part,
you will implement forwarding and a simplified interface for it. You can now test your implementation by sending a
packet from one node to another and watch it get forwarded through the intermediate hops.
Your overlay layer does not have to do any frame translation or fragmentation. However, it needs to figure out
forwarding and routing. You will test how your routing can keep track of a dynamically changing topology.
1 Part I: Creating your virtual Infrastructure
Each "host" will be a process running on a known machine/port. Note that you cannot just use the same "hardcoded"
port for all your hosts if you want to be able to run some of them on the same machine. A configuration file will
specify the topology of the network (described below).
1 2 3