P2P networks A set of technologies that enable the direct exchange of services of data or services between computers S C C C C C C C C Client Server P P P P P P P2P Network Sanjoy Sanyal:www.itforintelligentfolks.blogspot.com
Network Effects: Promises & Challenges Sanjoy Sanyal:www.itforintelligentfolks.blogspot.com Can Have the following advantage… … however Scalability as there is no central resource to exhaust Has to overcome to challenge of self organization from a collection of unreliable peers with unreliable connections Aggregating resources can lead to excellent performance Has to overcome the choking of the network of overhead or organizing messages Fault resilience as there is no single point of failure Has to overcome reliability challenges on account of network congestion, isolated networks, unreachable nodes
Types of P2P Networks P2P Systems File Sharing Collaboration Distributed Computing Napster Limewire ( www.limewire.com ) Aimster/Madster Gnutella ( gnutella.com ) Morpheus ( morpheus.com ) Chord Instant Messaging Groove Multiplayer Games: Magi SETI@home ( http://setiathome.berkeley.edu/ ) Grid.org File Sharing is the one we will delve into in this session Sanjoy Sanyal:www.itforintelligentfolks.blogspot.com
Locating Content in P2P networks Sanjoy Sanyal:www.itforintelligentfolks.blogspot.com Centralized Directory Approach Flooded Request Approach Document routing Approach Peers connect to a central directory where they publish information about the content that they have to share When the directory receives a request it replies with a peer in the directory that matches the request Criteria such as proximity, bandwidth, capacity, congestion, health, frequency can guide the decision Peers broadcast a request to its directly connected peers, each of whom broadcast to their directly connected peers and so on thru the network. This continues until the request is answered or some broadcast limit is reached. Each peer has helpful but only partially complete referral information. Each referral moves the requester closer to a peer that can satisfy the query. The network can scale with a number of central servers Generates a lot of ineffective network traffic which prevents scaling Can scale effectively as systems can complete a search within a bounded number of steps
Napster Protocol Session Napster Server Client A Client B Search Request Search Response Download Request Download Ack See next two slides for message structures Establish TCP/IP connection “ 1” “ GET” Peer response Song data Sanjoy Sanyal:www.itforintelligentfolks.blogspot.com
Napster message structures: server - client Client announcing to server the files it is willing to share Code 100 – for this type of message <filename> <md5> <size> <bitrate> <frequency> <time> The MD 5 algorithm identifies the song and ensures that two files have identical content Client search request Code 200 – for this type of message <filename> <artist name> <song> <max results> <line speed> <bitrate> <frequency> Server Search Response Code 201 – for this message <filename> <md5> <size> <length> <nick> <ip> <link type> Download request Code 203 <nick> <file name> Download ack Code 204 <nick> <ip> <port> <filename> <md5> <linespeed> Sanjoy Sanyal:www.itforintelligentfolks.blogspot.com
Napster message structures: peer-peer “ 1” Single ASCII characters “ GET” Not HTTP GET – this is the Napster application protocol Peer response <mynick> <file name> <offset> - allows transfer to be resumed at any place in file Sanjoy Sanyal:www.itforintelligentfolks.blogspot.com
Gnutella message structures: descriptors The MD 5 algorithm identifies the song and ensures that two files have identical content Sanjoy Sanyal:www.itforintelligentfolks.blogspot.com Descriptor ID Payload Descriptor TTL – Time to Live Hops Payload Length Uniquely identifies this descriptor message in the network Code identifying the type of message Limits the maximum number of hops for this message 0xOO = Connection accept request 0x01 = pong Connect accept OK 0x01 = push Push file thru firewall 0x80=query File search request 0x81=queryhit Search response OK Each servant receiving a message decrements TTL count and increments the Hop count before the message is forwarded. The maximum number of hops is 7.
Gnutella Protocol Session Servant 1 - Joining Servant 2 – On Network Gnutella Connect Gnutella OK Ping Pong <Ip address>,<port>,<shared data> Query <filename> Host Cache Server Queryhit <filename> File Download HTTP GET Sanjoy Sanyal:www.itforintelligentfolks.blogspot.com
Gnutella Network Traffic A B D E C Each peer broadcasts requests to its connected peers and so on. The Pong descriptors may only be sent along the same path that carried the incoming Ping descriptor .mp3 .mp3 Get .mp3 Sanjoy Sanyal:www.itforintelligentfolks.blogspot.com
BitTorrent: How it differs from HTTP Sanjoy Sanyal:www.itforintelligentfolks.blogspot.com BitTorrent HTTP Makes many small data requests over different TCP sockets Typically a single HTTP GET request over a single TCP socket. Downloads in a random or in a "rarest-first" approach Downloads in a sequential manner. Downloads can take time to rise to full speed because it may take time for enough peer connections to be established, and it takes time for a node to receive sufficient data to become an effective uploader Rises to full speed very quickly and maintains this speed throughout.