| Sponsor | Ellen Zegura and Richard Liston ewz@cc.gatech.edu liston@cc.gatech.edu GCATT (Ellen) |
| Area | Networking |
Problem
Gnutella is a distributed application designed for file sharing
and discovery. It has recently been widely discussed in the media in
the wake of the Napster controversy. In contrast to Napster, which is a
centralized file sharing mechanism, Gnutella is completely decentralized.
The topological makeup of the Gnutella network is highly dynamic; users
may join and leave at will. The purpose of this project is to probe
members of the Gnutella network in order to discover characteristics
of the network - e.g., how many users there tend to be at any point
in time; how long users tend to participate; how many files they tend
to share and any other interesting tidbits of information that you
uncover about the network during the course of this project. If more
than one person works on this project at one time, you should work
together in order to share information and make more significant
progress.
Background
In order to share files, a user specifies which files will be shared,
joins the already existing network and begins discovering other users on
the network. A request for files is made by the user to his/her neighbors.
This request is forwarded by the neighbors to their neighbors, etc., and
the responses collected. The user also forwards the requests made by
his/her neighbors. When the desired files are discovered as being shared
by another network member, a request is made to that member to send
the file back to the user.
At the network level Gnutella operates via a communications protocol defined for discovering network participants, making connections to network neighbors, sharing files, making queries and propagating requests. There are a number of implementations of this protocol. One implementation in the C language will be provided for use with this project.
A good deal of information is available at the Gnutella home page - http://gnutella.wego.com/. Don't spend too much time there - just jump into the code.
Deliverables
You must first learn how the Gnutella implementation provided operates (we
have some knowledge of this code, so we will be able to help out). You
will then manipulate the source code to probe the Gnutella network and
discover properties of the network as described above. You will deliver
a report on the findings, including any supporting figures and graphs which
may be useful in describing the network properties.
Evaluation
You will receive an 'A' for this project as long as you
learn as much as you can during the allotted time, and write
a decent report.