\documentclass[11pt]{article}
%\usepackage{fullpage}

\begin{document}
\title{Efficient Searching in a \textrm{Chord}-based Peer-to-Peer
  System \vspace{.5em} \\
  \large UROP Proposal: Summer 2004}
\author{Dan Ports \\
  \texttt{drkp@mit.edu}}
\maketitle


\section*{Project Overview}
\label{sec:overview}


The peer-to-peer model has become a popular architecture for internet
services such as file-sharing networks. Rather than store data on a
centralized server or group of servers, data is stored on \emph{every}
node in the network, and nodes communicate directly with each
other to request data. The challenge, then is to locate the nodes
containing the desired data.

The Chord distributed hash lookup primitive, developed at MIT, solves
one important problem that makes it useful for developing peer-to-peer
systems: given an identifier for a piece of data, it can determine the
node responsible for storing that piece of data. It does so
efficiently, and with many other desirable properties: it is entirely
decentralized; it can deal well with nodes joining and leaving the
network; etc.

In the case of a file sharing network, this means that Chord is very
effective for finding out which node has a copy of a particular file.
It is not, however, capable of searching for \emph{any} file that
matches some search criteria. This problem is difficult to solve. It
is, however, much simpler when the only a small set of metadata (e.g.
the file name) is searchable, not the whole document.  This project's
goal is to add metadata-searching capabilities to a Chord-based
network.


\section*{Project Plan}
\label{sec:plan}

I will be working directly with Professor David Karger (32-G592,
258-6167, \texttt{karger@mit.edu}) of the Computer Science and
Artificial Intelligence Laboratory on this project.

We will begin by implementing a framework for searching an
index stored in a Chord-based distributed hash table. (It may be
possible to take advantage of some earlier work on implementing
similar searchable-index systems.) We will then be able to implement
peer-to-peer applications using this system.

The first application
will be a file-sharing program, similar in function to Napster,
Gnutella, etc., but made more scalable through the use of our
distributed index system. This will involve work on file transferring
in addition to indexing. The result will be a usable program suitable
for public release. We will test it to identify the performance
characteristics of our index system.

If time permits, we may also develop other peer-to-peer applications using the
index system, such as a distributed ``yellow-pages'' directory system,
or other indices for name resolution. 

\section*{Personal}
\label{sec:personal}

I am pleased to be working on this project because it involves working
with advanced, current research systems. Peer-to-peer systems are
currently an exciting topic in the systems and networking field. I
look forward to being able to apply my previous experience with
designing and implementing software systems, and gaining new
experience with computer science research. I have limited experience
working in this sort of research, so the latter will be especially
valuable to me.



\end{document}
