SKR 5302: Advanced Distributed Computing

9. Chapter 9: Peer-to-peer networks

9.6. Peer-to-Peer Networks: Gnutella

Peer-to-Peer Networks: Gnutella

  • Gnutella history
    • 2000: J. Frankel & T. Pepper released Gnutella
    • Soon after: many other clients (e.g., Morpheus, Limewire, Bearshare)
    • 2001: protocol enhancements, e.g., “ultrapeers”
  • Query flooding
    • Join: contact a few nodes to become neighbors
    • Publish: no need!
    • Search: ask neighbors, who ask their neighbors
    • Fetch: get file directly from another node

Gnutella: Query Flooding

  • Fully distributed
    • No central server
  • Public domain protocol
  • Many Gnutella clients implementing protocol
  • Overlay network: graph
    • Edge between peer X and Y if there’s a TCP connection
    • All active peers and edges is overlay net
    • Given peer will typically be connected with < 10 overlay neighbors

Gnutella: Protocol

  • Query message sent over existing TCP connections
  • Peers forward Query message
  • QueryHit sent over reverse path

       

Gnutella: Peer Joining

  • Joining peer X must find some other peer in Gnutella network: use list of candidate peers
  • X sequentially attempts to make TCP with peers on list until connection setup with Y
  • X sends Ping message to Y; Y forwards Ping message. 
  • All peers receiving Ping message respond with Pong message
  • X receives many Pong messages. It can then setup additional TCP connections

Gnutella: Pros and Cons

  • Advantages
    • Fully decentralized
    • Search cost distributed
    • Processing per node permits powerful search semantics
  • Disadvantages
    • Search scope may be quite large
    • Search time may be quite long
    • High overhead and nodes come and go often