Welcome to the CP2PC Home Page
CP2PC (pronounced "copy to pc") is a project carried out by the
Globe group at the Vrije Universiteit
and funded by Stichting NLnet.
In CP2PC we develop a minimal programming interface to file sharing
Client side applications can be built on top of this interface by different
groups. In addition we will ourselves develop a simple GUI client which will
integrate the various P2P protocols.
Request for Feedback
We've drafted a design document describing a unified
file-sharing application and have designed a preliminary unified
file-sharing API. The design documents are available through the
We have currently implemented the API for Gnutella and GDN.
Although we have already implementated a large part of the API, we
are still very interested in comments and feedback about our
application and API from the people who are intimately familiar with
actual P2P file-sharing systems (both from a networking perspective
as well as from an application programmer perspective). Are there
concepts and/or functions that don't
map well onto some existing systems? are there things we've overlooked? or
just misunderstood? Do you have any good ideas that can be incorporated
into an 'uberclient'?
We are especially interested in comments about open issues such as:
How to represent file attributes and search results (XML, RDF, etc.), how
to configure and monitor individual networks, etc.
Please send your comments and feedback to
Several P2P networks exist that are used for sharing files among clients,
for example Gnutella and Mnet. Each network uses its own
suite of protocols, leading to a number of client applications that are
difficult or impossible to integrate. In particular each P2P network has
its own proprietary client-side software. In fact some P2P systems are
based on the same technology, but cannot be integrated easily. An example of
this is the Fasttrack's P2P protocol suite, on which Kazaa, Grokster
and Morpheus (used to be) are based.
As the first step we examined the functionality present in current
P2P systems. Some of the functionality is shared by many systems; other
functionality is particular to just a few systems:
We also looked at particulars of client applications:
- Uploading files to a decentralised storage system.
- Searching for files.
- Clients can easily join or leave the network
Based on our experiences we have arrived at a programming interface
that maps to each of the P2P protocols. We have (and are) working
together with the Tristero project to keep our API compatible with their
- Visual presentation of search results.
- Monitoring of the network and connectivity to the network.
The second step involves implementing the API for existing P2P
file-sharing systems. We currently have implementations for
Gnutella and GDN.
The third step involves implementing an 'uberclient' application
that uses the CP2PC API. We currently have a basic GUI 'uberclient'
The links below point to a collection of notes that can also be accessed
Overview of existing P2P systems
Peer-to-peer systems we have so far studied:
Gnutella is a popular current P2P system with many client applications. We
used the Limewire client software.
Chord / CFS is a research project at MIT which promises to deliver highly
scalable P2P solutions.
Mnet / Mojo Nation is interesting due to the exchange
of earned credits. The more a user contributes to the network (e.g.
by providing disk space) the more credits are earned. Credits can the be
used to download files.
JXTA is a project initiated by Sun Microsystems that is complementary to
CP2PC. JXTA focuses on developing a suite of protocols with which new
P2P systems can be built. We focus on
developing a standard interface to protocols on top of which client
applications can be built.
(Globe Distribution Network) is a subproject of
It has a file sharing interface that we are higly familiar with.
Past / Pastry. This is a research project (at Rice University) which is
somewhat similar to Chord / CFS. We eagerly await a release of their
FastTrack / OpenFT. FastTrack is based on a proprietary protocol which has
not been disclosed. Since we need to inspect source code and make
modifications, FastTrack has been ruled out.
OpenFT was originally a reverse engineered open equivalent of FastTrack.
In its current form it has been rebuilt from the ground up as a new
We have written an introductory/overview paper about CP2PC entitled
cP2Pc: Integrating P2P networks.
Mnet / Mojo Nation
Our group is currently involved in a proposal to set up a large-scale P2P
system. In this project, we aim to build a measurement tool on top of
an existing P2P system and gather data. Participating sites include
MIT (Frans Kaashoek), Rice University (Peter Druschel) and EPFL (Rachid
Local Stuff for Globe Members
Note: these links point to the Solaris system. The installs on Linux and FreeBSD
are not listed here. Contact us for more info.