The learning objective is to understand the conceptual basis for the design of general-purpose peer-to-peer services and the algorithms that enable them to function effectively. Students should understand the algorithmic and architectural models behind current peer-to-peer systems and be convinced of their effectiveness. The algorithms are understood by a study of their detailed operation in two cases and their effectiveness is appreciated through reports on their performance in application studies.
In addition, the problems of trust and the authentication of data in peer-to-peer designs should serve to reinforce students’ understanding of the use of security mechanisms to resolve such problems.
This chapter brings a new meaning to the phrase ‘very large scale system’. Peer-to-peer systems and their effectiveness in some very large scale applications provide an opportunity to explore the limitations of the client-server paradigm.
Points to emphasize
Although the term peer-to-peer and the effectiveness of the peer-to-peer resource-sharing paradigm will be familiar to most students, they are less likely to be aware of the underlying algorithms and the concepts on which they are based. The popular file-sharing applications (for music downloading, etc.) are certainly effective and their design is quite sophisticated, but the research systems we focus on are more generic, probably more scalable and certainly more thoroughly analysed.
The design goals of peer-to-peer systems are stated in the subsections on Functional and Non-functional requirements in Section 10.3. They must be understood in order to appreciate the reason for their existence. Global scalability, dynamic host availability and load sharing and balancing across large numbers of computers will not have been encountered before and they pose major design challenges.
We cannot claim that peer-to-peer systems are always more effective than other architectures. The use of large numbers of computers to support a service inevitably reduces the trustworthness of their platform. Peer-to-peer system software is responsible for maintaining the integrity and authenticity of the data despite this. That is achieved most successfully when the data objects held by the service are immutable. Solutions for the storage of updatable objects have been developed, but they are costly in resources.
An initial difficulty may arise over the need to deploy an overlay routing network. Our approach to this is to point out (in Section 10.4) the difficulty of achieving the design goals without partitioning knowledge about the locations of the stored objects and distributing it amongst many hosts. Given that this is necessary, a routing layer provides the mechanism for placing and retrieving the relevant distributed knowledge.
The Pastry algorithm is difficult to teach because of the size and complexity of the routing tables and their usage. A two-stage approach to describing it has been adopted, enabling the principle of overlay routing to be demonstrated before the algoithms that manage and use the routing table are tackled.
None as yet.