Sistemi peer-to-peer Sistemi peer-to-peer (P2P)
Transcript
Università degli Studi di Roma “Tor Vergata” Facoltà di Ingegneria Sistemi peer-to-peer Corso di Sistemi Distribuiti Valeria Cardellini Anno accademico 2008/09 Sistemi peer-to-peer (P2P) • Giunti agli oneri della cronaca alla fine degli anni ‘90 – Il famoso caso Napster (sistema di file sharing per file MP3) • Molto popolari – Parte consistente del traffico Internet: più del 30% è riconducibile ad applicazioni di tipo P2P – Trend crescente (nonostante tutto) • Qualche anno fa si diceva Internet = Web • Alcuni pregiudizi sul P2P – P2P = file sharing • Molti sistemi per il file sharing si basano su un approccio P2P – P2P = illegalità • Una percentuale massiccia di file scambiati è coperta da copyright SD - Valeria Cardellini, A.A. 2008/09 2 Cosa è il peer-to-peer • Peer: entità con capacità simili alle altre entità nel sistema • Il termine peer-to-peer si riferisce ad una classe di sistemi ed applicazioni che utilizzano risorse distribuite per eseguire una funzionalità (critica) in modo decentralizzato • Condivisione delle risorse (cicli di CPU, storage, dati) – Offrire ed ottenere risorse dalla comunità di peer SD - Valeria Cardellini, A.A. 2008/09 3 Caratteristiche dei sistemi P2P • Tutti i nodi (peer) del sistema hanno identiche capacità e responsabilità (almeno in linea di principio) – Nodi indipendenti (autonomi) e localizzati ai bordi (edge) di Internet • Nessun controllo centralizzato – Ogni peer ha funzioni di client e server e condivide risorse e servizi • servent = server + client – In realtà, possono essere presenti server centralizzati o nodi con funzionalità diverse rispetto agli altri (supernodi) • Sistemi altamente distribuiti – Il numero di nodi può essere dell’ordine delle centinaia di migliaia • Nodi altamente dinamici ed autonomi – Un nodo può entrare o uscire dalla rete P2P in ogni momento • Operazioni di ingresso/uscita (join/leave) dalla rete – Ridondanza delle informazioni SD - Valeria Cardellini, A.A. 2008/09 4 Applicazioni P2P • Distribuzione e memorizzazione di contenuti – Contenuti: file, video streaming, … – Es. di file sharing: Gnutella, KaZaA, BitTorrent, eDonkey ed eMule, … – Es. di file storage: Freenet • Condivisione di risorse di calcolo (elaborazione distribuita) – Es.: SETI@home – Search for Extraterrestrial Intelligence • Collaborazione e comunicazione – Es.: Chat/Irc, Instant Messaging, Jabber • Telefonia – Es.: Skipe • Content Delivery Network – Es.: CoralCDN • Piattaforme – Es:. JXTA (http://www.sun.com/software/jxta/) SD - Valeria Cardellini, A.A. 2008/09 5 Condivisione di file • E’ la killer application del P2P • Occorrono funzionalità di publishing, searching, retrieval • Vediamo un semplice esempio… – Alice esegue un’applicazione client P2P sul suo portatile – In modo intermittente si connette ad Internet; ottiene un nuovo indirizzo IP per ogni connessione – Registra il suo contenuto nel sistema P2P – Cerca “Hey Jude” – L’applicazione visualizza altri peer che hanno una copia di “Hey Jude” – Alice sceglie uno dei peer, Bob – Il file viene trasferito dal PC di Bob al portatile di Alice (P2P) – Mentre Alice esegue il download, altri utenti eseguono un upload da Alice SD - Valeria Cardellini, A.A. 2008/09 6 Software per la condivisione di file • Consente ad Alice di registrare una directory del proprio file system per la condivisione – Chiunque può ottenere un file dalla directory registrata – Come un Web server • Consente ad Alice di copiare file dalle directory condivise di altri utenti – Come un Web client • Consente ad Alice di individuare quali peer possiedono un determinato file tramite una ricerca basata su keyword – Come Google SD - Valeria Cardellini, A.A. 2008/09 7 Obiettivi e problemi dei sistemi P2P • Obiettivi – – – – – – Condividere/ridurre i costi usando risorse non utilizzate Migliorare la scalabilità Aumentare la persistenza e la disponibilità delle risorse Consentire l’aggregazione di risorse e l’interoperabilità Aumentare l’autonomia Aumentare l’anonimato/privacy, nascondendo le operazioni svolte dagli utenti – Consentire dinamismo e comunicazioni ad-hoc • Problemi – Sicurezza: garantire integrità e autenticità delle risorse – Disuguaglianza tra i nodi – Elevato tasso con cui i nodi entrano/escono dal sistema P2P • Può portare ad una instabilità del sistema che ne influenza negativamente le prestazioni SD - Valeria Cardellini, A.A. 2008/09 8 Overlay network • Overlay network: è la rete virtuale che interconnette i peer – – – – I collegamenti rappresentano i possibili canali di comunicazione Basata su una rete fisica sottostante Fornisce un servizio di localizzazione delle risorse Vantaggi: • Semplicità e velocità di sviluppo di nuove applicazioni • Instradamento a livello applicativo – Routing content-aware – Routing application semantic-aware SD - Valeria Cardellini, A.A. 2008/09 9 Overlay routing • Idea base: – Il sistema fa trovare la strada per raggiungere una risorsa • Rispetto al routing tradizionale – La risorsa non è esattamente un indirizzo di un nodo della rete, ma può essere un file, una CPU disponibile, dello spazio libero su disco, … • Concentriamo l’attenzione sul routing, non sull’interazione per recuperare una risorsa – Il recupero avviene con un’interazione diretta tra peer, usando protocolli come HTTP SD - Valeria Cardellini, A.A. 2008/09 10 Reti non strutturate • Reti non strutturate – Nodi organizzati in modo disordinato, come un grafo random • L’organizzazione della rete segue principi molto semplici – Non ci sono vincoli sul posizionamento delle risorse rispetto alla topologia del grafo • La localizzazione delle risorse è resa difficoltosa dalla mancanza di organizzazione della rete – L’aggiunta o la rimozione di nodi è un’operazione semplice e poco costosa – Obiettivo: gestire nodi con comportamento fortemente transiente (tassi di join/leave elevati) – Esempi: Gnutella, FastTrack, eDonkey/Overnet SD - Valeria Cardellini, A.A. 2008/09 11 Reti strutturate • Reti strutturate – Vincoli sulla topologia del grafo e sul posizionamento delle risorse sui nodi del grafo • L’organizzazione della rete segue principi rigidi – L’aggiunta o la rimozione di nodi è un’operazione costosa – Obiettivo: migliorare la localizzazione delle risorse – Esempi: Chord, Pastry, CAN SD - Valeria Cardellini, A.A. 2008/09 12 Architetture P2P • Tre tipologie di architetture – Decentralizzate pure • Tutti i nodi sono peer, nessun coordinatore centralizzato • Ogni peer può funzionare come router, client, o server • La rimozione di un peer non riduce le funzionalità del sistema – Parzialmente centralizzate • Alcuni nodi (supernodi) facilitano l’interconnessione tra i peer – Indice locale centralizzato per risorse dei peer locali • Prima comunicazione con un supernodo (a), poi con il peer (b) – Decentralizzate ibride • Presenza di un unico server centralizzato che fornisce il servizio di localizzazione Architettura decentralizzata pura Architettura P2P parzialmente centralizzata SD - Valeria Cardellini, A.A. 2008/09 13 Routing in reti non strutturate • Sistemi decentralizzati ibridi: directory centralizzata – Es.: Napster • Sistemi decentralizzati puri: ricerca flood-based – Es.: Gnutella 0.4 • Sistemi parzialmente centralizzati: directory semi-centralizzate e ricerca flood-based limitata – Es.: KaZaA, Gnutella 0.6 SD - Valeria Cardellini, A.A. 2008/09 14 Sistemi con directory centralizzata • Un nodo centralizzato (directory server) possiede il mapping risorse-peer (index), fornendo un servizio di discovery dei peer e di lookup delle risorse • Limiti – Gestione costosa della directory centralizzata – Collo di bottiglia costituito dal nodo centrale (scalabilità limitata) – Single point of failure (motivi tecnici e legali, es. Napster) peers Napster server Index 1. File location request 2. List of peers offering the file Napster server Index 3. File request 5. Index update 4. File delivered SD - Valeria Cardellini, A.A. 2008/09 15 Sistemi con ricerca flood-based • Approccio completamente distribuito per localizzare le risorse • L’invio delle query utilizza un meccanismo di flooding • Ogni peer propaga (flood) la richiesta ai peer “vicini”, che a loro volta inviano la richiesta ai loro “vicini” (escludendo il vicino da cui hanno ricevuto la richiesta) – Fino a che la richiesta è risolta, oppure viene raggiunto un massimo numero di passi, definito da TTL • Ad ogni inoltro il TTL viene decrementato • Il TTL limita il “raggio della ricerca”, evitando che il messaggio sia propagato all’infinito – ID univoco (detto GUID) assegnato al messaggio per evitare che venga nuovamente elaborato dai nodi da cui è stato già ricevuto (presenza di cammini cicli nei grafi) SD - Valeria Cardellini, A.A. 2008/09 16 Sistemi con ricerca flood-based (2) • L’invio delle risposte utilizza il backward routing • La risposta positiva ad una query viene inoltrata a ritroso lungo lo stesso cammino seguito dalla query • Utilizzo del GUID per individuare il backward path SD - Valeria Cardellini, A.A. 2008/09 17 Esempio di ricerca con flooding P3 P2 A? A? A? A? A? A? A? A? A! TTL=1 TTL=1 TTL=1 TTL=1 A! TTL=1 TTL=1 TTL=1 TTL=1 P8 P7 P6 A? A? A? A? A? TTL=2 A? TTL=2 TTL=2 TTL=2 TTL=2 TTL=2 A! A! P9 P4 A? A? A? TTL=1 TTL=1 TTL=1 TTL=1 P5 P1 A? A? richiesta con TTL scaduto TTL=1 TTL=1 SD - Valeria Cardellini, A.A. 2008/09 P10 A? A? richiesta già ricevuta TTL=1 TTL=1 18 Problemi del flooding • Crescita esponenziale del numero di messaggi – Possibilità di attacchi di tipo denial-of-service – Nodi black-hole in caso di congestione – Non è realistico esplorare tutta la rete • Costo della ricerca – Le risposte dovrebbero avere tempi ragionevoli – Come determinare il raggio di ampiezza del flooding? • Non è garantito che vengano interrogati tutti i nodi (o i nodi) che posseggono la risorsa • Traffico di query: i messaggi che non producono risultati occupano comunque banda • Mancanza di una relazione tra topologia virtuale e topologia reale – A che distanza sono i “vicini”? SD - Valeria Cardellini, A.A. 2008/09 19 Bootstrap nei sistemi decentralizzati puri • Per accedere alla rete P2P occorre conoscere l’indirizzo di almeno un nodo (problema del bootstrap) • Possibili approcci per il bootstrap • Presenza di un bootstrap server – Web server che memorizza una lista di peer attivi (con alta probabilità presenti nella rete P2P) • Tramite peer cache – Ogni peer mantiene in una propria cache una lista di peer contattati nelle sessioni precedenti • Tramite well-known host – Non esiste alcuna entità che registra i peer attivi SD - Valeria Cardellini, A.A. 2008/09 20 Case study: Gnutella • Gnutella versione 0.4 implementa un’architettura decentralizzata pura • Discovery – Boostrap tramite boostrap server e peer cache – Ottenuta la lista di nodi della rete Gnutella, il nodo prova a connettersi con alcuni dei nodi noti – La rete viene esplorata mediante l’invio di messaggi di ping/pong – A seconda della velocità di connessione, il nodo prova a mantenere da 3 a 8 connessioni – Se una connessione viene persa, il nodo cerca di connettersi ad un altro nodo della lista, che viene continuamente aggiornata • Search – Per la ricerca, Gnutella utilizza un flooding con esplorazione breadth-first (BFS) – Invio delle query ai peer vicini (query message); i vicini a loro volta inoltrano la query mediante flooding limitato da TTL SD - Valeria Cardellini, A.A. 2008/09 21 Connessione in Gnutella Bootstrap server n1 n1 n2 n2 n3 n3 • Un servent può rifiutare una richiesta di connessione, ad esempio perché ha raggiunto un numero massimo di connessioni ammesse SD - Valeria Cardellini, A.A. 2008/09 22 Comunicazione fra servent • I servent comunicano fra loro con messaggi (detti descriptor); sono supportati 5 tipi di messaggi: • Ping – Messaggio per il discovery dei nodi vicini nella rete P2P • Pong – Messaggio di risposta a un Ping: un nodo che riceve un Ping risponde con uno o più Pong, includendo il suo indirizzo • Query – Messaggio di richiesta per localizzare una risorsa • QueryHit – Messaggio di risposta a una query: contiene le informazioni per reperire la risorsa • Push – Messaggio per il download da servent dietro un firewall tramite il protocollo HTTP SD - Valeria Cardellini, A.A. 2008/09 23 Struttura dei messaggi Payload Payload Descriptor Descriptor ID ID descriptor descriptor 16 byte 1 byte TTL TTL Hops Hops Payload Payload length length 1 byte 1 byte 4 byte • Descriptor ID è l’identificatore univoco del messaggio (GUID) all’interno della rete – Usato per associare le risposte alle richieste e per evitare di propagare le stesse richieste più di una volta • Payload descriptor identifica il tipo di messaggio • All’i-esimo passo: TTL(i) = TTL(0) - Hops(i) – TTL(i): quante volte il messaggio può ancora essere inoltrato dai servent prima di essere eliminato dalla rete – Hops(i): quanti servent hanno già inoltrato il messaggio • Payload length è la lunghezza dei dati associati al messaggio SD - Valeria Cardellini, A.A. 2008/09 24 Ping e Pong • Ogni nodo invia periodicamente il messaggio di Ping per sondare la rete alla ricerca di altri nodi – Un nodo che riceve un Ping risponde inviando al mittente un Pong • Il messaggio Pong contiene l’IP e la porta su cui il nodo accetta connessioni, il numero di file condivisi e il numero di Kb totali condivisi – Possono essere inviati più messaggi di pong per comunicare il contenuto della propria peer cache – ll messaggio di Ping viene inoltrato ai vicini fino a che il TTL non si annulla SD - Valeria Cardellini, A.A. 2008/09 25 Query e QueryHit • Query specifica il criterio di ricerca e la velocità di trasferimento minima richiesta ai servent Number Number of of hits hits 1 byte Port Port 2 byte IP IP Speed Speed Result Result set set server server ID ID 4 byte 4 byte N byte 16 byte • QueryHit riguarda tutti i risultati trovati su un dato servent che soddisfano il criterio di ricerca – Port: porta su cui il servent accetta connessioni in entrata – Result set: contiene gli identificatori delle risorse che soddisfano la query – Servent ID: identifica univocamente il nodo nella rete SD - Valeria Cardellini, A.A. 2008/09 26 Download di un file • Un nodo richiede direttamente il trasferimento di un file ad un peer che ha risposto alla query – Il protocollo usato per il trasferimento è HTTP GET /get/<file index>/<file name>/ HTTP/1.0 HTTP 200 OK Connection: keep-alive Server: Gnutella Range: bytes=0Content-type: application/binary User-Agent: Gnutella Content-length: 200346 ... data... SD - Valeria Cardellini, A.A. 2008/09 27 Sistemi parzialmente centralizzati • Non tutti i peer sono uguali – I nodi meglio connessi e con buona capacità computazionale possono avere funzioni speciali (detti supernodi o super-peer o broker) – I supernodi sono identificati dinamicamente • I supernodi agiscono da rappresentanti dei loro sottoposti – Organizzazione gerarchica • I supernodi hanno funzione di directory semicentralizzata – I supernodi indicizzano le risorse disponibili nei peer che gestiscono • Il flooding riguarda solo i supernodi • Rispetto ai sistemi decentralizzati puri – Si riduce il tempo di discovery – Si sfrutta l’eterogeneità dei nodi presenti in una rete P2P SD - Valeria Cardellini, A.A. 2008/09 28 Query di una risorsa con supernodi A! A! A? A? A! A? A? A? A? SD - Valeria Cardellini, A.A. 2008/09 29 Case study: KaZaA • Alcune caratteristiche – FastTrack come rete di file sharing; Kaaza è il client più popolare – Download parallelo di parti di file – Redirezione automatica ad un altro server quando il server corrente diviene non disponibile – Stima del tempo di download – Numero massimo di upload/download simultanei configurabile – Gestione della coda al server/client • Utenti assidui con priorità più elevata al server – Priorità di incentivo • Chi collabora alla condivisione dei contenuti è privilegiato nello scaricare file – Ricerca basata su keyword SD - Valeria Cardellini, A.A. 2008/09 30 KaZaA: la tecnologia • Software – Proprietario – File e dati di controllo crittografati – Ogni informazione come richiesta o risposta HTTP – Il download include adware e spyware… • Architettura – Architettura parzialmente centralizzata con organizzazione gerarchica dei peer – Ogni peer è un supernodo oppure è assegnato ad un supernodo – Ogni supernodo ha informazioni su molti altri supernodi – Lista di potenziali supernodi inclusa all’atto del download del software SD - Valeria Cardellini, A.A. 2008/09 31 Case study: BitTorrent • E’ il più popolare protocollo P2P per la distribuzione di contenuti – Circa 15% del traffico su Internet • Idea di base: dividere un file in pezzi (da 256 KB) e far ridistribuire ad ogni peer i dati ricevuti, fornendoli a nuovi destinatari; in questo modo: – Si riduce il carico di ogni sorgente – Si riduce la dipendenza dal distributore originale – Si fornisce ridondanza • Per condividere un file, un peer crea un file .torrent, che contiene metadati sul file condiviso e sul tracker – Tracker: il nodo che coordina la distribuzione del file SD - Valeria Cardellini, A.A. 2008/09 32 Caratteristiche di BitTorrent • Per scaricare un file, un peer – ottiene un file .torrent per quel file – si connette al tracker individuato in .torrent, che indicherà da quali peer scaricare i vari pezzi del file – si connette ai peer individuati per scaricare i vari pezzi • Un gruppo di peer interconnessi per condividere un “torrente” viene detto swarm – Se lo swarm contiene solo il seeder iniziale, il client si connette direttamente al seeder – Mano a mano che i peer entrano nello swarm, iniziano a negoziare tra loro pezzi del file (anziché scaricarli dal seeder) • Alcune tecniche usate dai client BitTorrent – Scaricare i primi 4 pezzi selezionandoli in modo casuale per aumentare la possibilità di trading con gli altri peer – Scaricare i rimanenti pezzi selezionandoli in base alla strategia rarest first • Prima il pezzo più raro • Migliore della selezione casuale – Inviare dati ai peer che inviano dati (tit-for-tat) SD - Valeria Cardellini, A.A. 2008/09 33 Routing in reti strutturate • Sistemi con Distributed Hash Table (DHT) • Ad ogni peer è assegnato un ID univoco ed ogni peer conosce un certo numero di peer • Ad ogni risorsa condivisa (pubblicata) viene assegnato un ID univoco, di solito definito applicando una funzione hash al nome della risorsa • Anche noti come sistemi con content rooting – L’instradamento è basato sul contenuto della risorsa (essendo guidato dall’ID della risorsa) • La richiesta per la risorsa è instradata verso il peer che ha l’ID più simile a quello della risorsa • Possibile copia locale della risorsa ad ogni peer attraversato SD - Valeria Cardellini, A.A. 2008/09 34 Distributed Hash Table • Astrazione distribuita della struttura dati hash table • Le risorse sono rappresentate da una coppia chiave valore (key K, value V) – K identifica la risorsa, che è contenuta in V • Interfaccia (API) per l’accesso alla DHT (comune a molti sistemi basati su DHT) – put(K, V): inserimento di informazione (memorizza V in tutti i nodi responsabili per la risorsa identificata da K) – remove(K, V): cancella tutti i riferimenti a K e all’associato V – V = get(K): recupera V associato a K da uno dei nodi responsabili • Ogni risorsa è identificata solo mediante il valore della chiave – Per cercare una risorsa occorre conoscere il valore esatto della chiave – Non sono possibili query complesse (ad es. range query, ricerche contenenti wildcard) SD - Valeria Cardellini, A.A. 2008/09 35 Distributed Hash Table (2) • Ogni nodo è responsabile di una parte dei dati memorizzati nella DHT • I dati vengono mappati nello stesso spazio degli indirizzi dei nodi, mediante la funzione hash • Ad ogni nodo viene assegnata una porzione contigua dello spazio degli indirizzi • Ogni nodo memorizza informazioni relative ai dati mappati sulla propria porzione di indirizzi • Ogni chiave viene mappata su almeno un nodo della rete – Spesso si introduce una certa ridondanza SD - Valeria Cardellini, A.A. 2008/09 36 Distributed Hash Table (3) • Le DHT operano in maniera distribuita con molti nodi – Elevata scalabilità • Diverse soluzioni che specificano anche la modalità di routing delle ricerche e della memorizzazione – Più di 20 protocolli e prototipi per reti P2P strutturate, tra cui: • • • • • • • • • Chord (MIT) Tapestry (Berkeley) CAN (Berkeley) Pastry (Rice Univ., Microsoft) Kademlia (NY Univ.) SkipNet/SkipGraph Viceroy Z-Ring Chimera (UCSB) SD - Valeria Cardellini, A.A. 2008/09 37 Chord • I nodi e le chiavi sono mappati in uno spazio circolare mediante una funzione hash • Ogni nodo è responsabile delle chiavi poste tra sé e il nodo precedente nel cerchio • Finger table – E’ la tabella di routing posseduta da ogni nodo – Il nodo in posizione x conosce i nodi competenti per le posizioni x+2i, con i=logN-1, essendo N il numero dei nodi • Ad es., x+1, x+2, x+4, x+8, x+16… – Dimensione della finger table pari a log(N) SD - Valeria Cardellini, A.A. 2008/09 http://www.pdos.lcs.mit.edu/chord/ 38 Finger table in Chord • Idea della finger table – Ogni nodo conosce “bene” le posizioni vicine ed ha un’idea approssimata delle posizioni più lontane • Come avviene la ricerca? Algoritmo di routing: – Il nodo in posizione x vuole instradare una richiesta per la posizione z – Se z è nella zona di competenza del nodo, la ricerca termina – Altrimenti, il nodo x cerca nella finger table un nodo y con y=max numero < z e invia la richiesta a quel nodo • Caratteristiche – L’algoritmo raggiunge velocemente le vicinanze del punto cercato, per procedere poi con salti via via più piccoli – Costo di lookup: O(log N) – Costo di ingresso o uscita nodi: O(log2 N) SD - Valeria Cardellini, A.A. 2008/09 39 Routing in Chord N1 finger table N51+2 N56 N51+4 N56 lookup(K54) N8 K54 N56 finger table N14 N51 ... … N8+32 N42 N48 N21 finger table N42+8 N51 N42+16 N1 Problemi Chord N42 SD - Valeria Cardellini, A.A. 2008/09 N38 – Manca una nozione di prossimità fisica – Scarso supporto per ricerche senza matching esatto 40 Tapestry e CAN • Tapestry – Prefix routing basato su algoritmo di Plaxton • La struttura mesh di Plaxton contiene puntatori ai nodi il cui ID corrisponde agli elementi di una struttura ad albero di prefissi di ID – Anche in Pastry e Kademlia il routing è basato su Plaxton • CAN (Content Addressable Network) – Nodi e risorse disposti in uno spazio cartesiano d-dimensionale – Ogni nodo è responsabile di un sottospazio – Ogni risorsa è individuata da d coordinate SD - Valeria Cardellini, A.A. 2008/09 41
Documenti analoghi
4pp
– In modo intermittente si connette ad Internet; ottiene un nuovo
indirizzo IP per ogni connessione
– Registra il suo contenuto nel sistema P2P
– Cerca “Hey Jude”
– L’applicazione visualizza altri ...
Corso di Applicazioni Telematiche Applicazioni
Corso di Applicazioni Telematiche
Applicazioni peer-to-peer
A.A. 2009-10
Prof. Simon Pietro Romano
Università degli Studi di Napoli Federico II
Facoltà di Ingegneria
Reti P2P
I siti torrent, come appunto The Pirate Bay, giustificano la loro possibilità
di esistere affermando che non violerebbero alcuna legge, poiché, a
differenza di altre tecnologie Peer-to-Peer (come a...
Tecnologie di file-sharing e P2P
Per certi versi la rete BitTorrent è diversa da tutte le altre.
Si basa su alcuni server con interfaccia web (Tracker) che
sono pubblici o privati. Questi server indicizzano i file
.torrent e li re...