Peer to Peer Computing

Definition of Peer to Peer

The term Peer to Peer (P2P) describes networked applications in which the resources of users' machines participate in delivering the application. For a detailed discussion of the precise definition of P2P please see a paper by Clay Shirky

Before Peer to Peer - Client/Server

P2P is often contrasted with the client/server model of application deployment. In the client server model, dedicated servers are provided, hosting the resources (CPU, Storage, Software, Data and Network capacity) required to support the demands of client machines. Client machines rely on this centralised infrastructure to handle application delivery, and do not themselves contribute resources.

Whilst client/server is arguably the most computationally efficient deployment model, unfortunately server infrastructure can be very expensive, both in terms of initial investment and maintenance. The personnel with the specialist skills required to manage large scale application servers don't come cheap. The specification of the hardware, software and network capacity of the server needs to be sufficiently large to accommodate peaks of usage, meaning that servers are rarely used to full capacity. When servers are near their limits of capacity, they may need to be upgraded to provide scope for increasing numbers of users. As the application becomes more and more popular, a single server may no longer be capable of delivering application. At this point even more complex technologies need to be brought to bear to allow this central resource to handle demand. All of this costs money. Often the investment in server infrastructure has to be speculative, based on the anticipated takeup of an application. If this degree takeup does not in fact arise, some or all of the investment is wasted.

The Peer to Peer Model

By contrast in a Peer to Peer deployment model the infrastructure used is predominantly the application users own machines. If servers are used at all in the application, their role is as minimal as possible, offering only simple mechanisms (usually lookup) to enable the users machines to interact directly. Consequently the vast majority of the application's resource requirements are delivered using machines which...

Is this idea really new?

Well, no, not really. Even the earliest internet applications, such as UUCP (the Unix to Unix Copy protocol) enabled direct interactions between machines. NNCP, (Network News Transfer Protocol) was based on UUCP, and is now one of the primary technolgies used to deliver Usenet newsgroups.

The DNS (Domain Name Service) infrastructure also employs peer to peer principles. DNS allows web sites to be found by human readable names like http://www.redhat.com Whilst specific DNS servers have the authority to dictate which domain names map to which machine addresses, in practice, your web-browser will use a non-authoritative DNS server, which may have acquired this information through a series of exchanges in turn with other DNS servers. DNS adopts the role of a client when acquiring records from another machine, and in turn the role of a server when those records are requested. Crucially as with modern peer to peer applications, this strategy minimises the load on the authoritative server.

What kinds of Peer to Peer applications are there?

Peer to Peer applications have been lauched in a very diverse set of domains.

More on the consituents of the P2P model at Oreilly