CMSC 621, Advanced Operating Systems. Fall 2003
Computer Science & Electrical Engineering Department
University of Maryland Baltimore County


Project Description

Due December 8, 2003 at 11:59pm.

You will design and implement a software library for engineering applications on peer-to-peer systems. You wil demonstrate your libary by designing and implementing a simple file sharing system using your library. Your software library and application will be implemented using Java

Peer-to-Peer System

A P2P system usually refers to a distributed system with decentralized control where computing resources are brought together in an ad-hoc manner in order to perform various computational tasks. For a thorough review of various apsects of P2P systems, refer to [1].

Among the most critical issues in a P2P system is how the nodes of the P2P system are organized. For this project, you will be using the document routing model algorithms of the Chord system [2]. Chord is a distributed hashing system that maps a data key to a node in the system efficienty while achieving good load balancing characteristics.

What to do

You are asked to implement a Java software library for engineering applications for p2p systems. Your library will implement the algorithms of Chord.

You will model each node in your system by a JVM. Each such node (JVM) will be running on a single physical computer, while not all nodes will be running on the same physical computer. Nodes will be communicating with one another via messages using the TCP network protocol. Each node has a unique name (identifier). We will refer to this p2p system as the Cloud. Nodes may join and leave the Cloud at any time. However, you may assume that there are no failures in the system. Each node implements the Chord protocols. Each Cloud node, in addition to having a unique name, it has a dynamic IP address and port number that it listens to for commands/requests; the IP address and port# of a Cloud node persists from the time a node joins the Cloud until it leaves the Cloud.

For the file sharing application, we assume that files to be shared are stored in the nodes of the Cloud. We assume that there are various clients in the system. Each client communicates with a "local" Cloud node. A client should be able to store, retrieve, find, and delete a file in the Cloud.

When a Cloud node leaves the Cloud system, it should transfer any files it stores to other appropriate Cloud node(s). Furthermore, when a node joins the Cloud it asks other Cloud node(s) to give it any files it should store. For simplicity, assume that there are no concurrent joins/leaves in the Cloud.

Having implemented the system, you will conduct a simulation study of your system implementation and report on its various performance characteristics. You should choose those performance metrics you think are important for your system

Project Report

You will submit a written report that describes:

In addition, you will submit an archival file with all the source code you have developed.

Notes

You are to use the Java language and any appropriate Java packages for implementing your project. You may need to use Java Threads, Object Serialization, RMI, and the UDP or TCP Java networking capabilities. You should use appropriate Java classes for providing configuration parameters to the various components of your system.

The description of the project should be viewed as a framework with the minimum requirements/guidelines rather than a complete and precise set of sophisticated requirements. You are free and strongly encouraged to expand and provide additional functionality as you see fit.

You are encouraged to review the scientific literature and adapt any ideas you may find useful for your system. In any case, you should clearly identify the any sources you use (giving proper credit), and clearly indicate your own contributions.

Your project will be evaluated primarily (in decreasing order of importance) on the design and implementation of the system components and their algorithms, on the simulation study and analysis of the experimental results, on the project report, and on significant extensions and other enhancements. You should be prepared for an oral presentation and demonstration of your project.

References

  1. D. Milojicic, V. Kalogeraki, R. Lukose, K. Nagaraja, J. Pruyne, B. Richard, S. Rollins, and Z, Xu, "Peer-to-Peer Computing".
  2. I. Stoica, R. Morris, D. Karger, M. F. Kaashoek, and H. Balakrishnan, "Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications",In the Proceedings of the 2001 ACM SIGCOMM Conference.