Problem description
Download P4 0.3.1
p4sync on GitHub
Original project proposal
Poster (with diagrams)
Protocol specification
P4 is a fully functional, self-organizing overlay network similar to Gnutella and Freenet. However, P4 differs in that it provides an API for developing applications on top of the overlay. P4 handles the networking and peering and exports functionality for unicast, multicast, user and plugin discovery, and strong encryption and authentication. This frees developers from worrying about networking, and allows them to focus on building real functionality.
Since its release in early 2001, P4 has been surpassed by other general-purpose overlay platforms such as JXTA, Groove, and Microsoft’s Windows Peer-to-Peer SDK. Furthermore, many other file sharing networks have long been superior to P4 in terms of routing algorithms, bandwidth management, anonymity, maturity, etc. (They’re mostly dedicated file-sharing networks, though, not general-purpose networks.)
For these reasons, P4 is not as competitive or relevant now as it was then. However, it may still be viable if you’re looking for a simple, lightweight, embeddable networking solution. P4 requires only Berkeley sockets and pthreads, and the shared library weighs in at a slim 270K.
P4 has been tested on RedHat 9, SUSE 8, Debian stable, Solaris/SunOS 5.8, and Mac OS X. It should build on most *nix platforms without much modification. Windows Visual Studio project files are included for building on Windows, but they’re not currently maintained.
P4 is distributed under the GPL. Copyright 2001-2004 Ken Ashcraft, Ryan Barrett, Maulik Shah, and Nathan Stoll.
Mentions