Gnutella is a protocol sitting on top of the TCP/IP layer that allows computers to connect each other in a random fashion to form a network. The first Gnutella client was developed by Justin Frankel and Tom Pepper of Nullsoft, a division of AOL, in early 2000. After connections between computers are established, users can share their files and download them from each other. Similarly, the proposed framework (called GPU1 [2,3,20]) allows users to share CPU-cycles on the network.
The GPU application runs in background and is able to start several threads with low priority to handle incoming requests. Thus, the user volunteering his/her computer is not bothered too much.
These threads access functionality stored as plugins. Plugins are the backend side of the GPU framework: they extend its capability to handle new requests. Plugins are "signed" with PGP [7], a freeware framework for asymmetric cryptography, to ensure they were not modified to run malicious code.
Frontends permit users to submit jobs and to visualize their results in an easy way. Users can keep up-to-date frontends, backends and the GPU itself by accessing the "autoupdate" features of the application.
Chapters 2, 3, 6, 7 and 8 are intended for everyone interested in distributed computing. Chapter 4 focuses on two theoretical problems that relate to Gnutella and to the framework. Chapter 5 and 6 are for developers that would like to extend the framework with plugins or frontends.