Tecnologie e Applicazioni Peer-to-Peer Tecnologie e Applicazioni Peer-to-Peer (P2P) Gruppo Reti TLC [email protected] http://www.telematica.polito.it/ 2 Peer-to-peer (P2P) • Sotto l'etichetta generica di 'peer-to-peer' (P2P) sono considerati tutti quei servizi e applicazioni che prevedono lo sfruttamento di risorse (memoria, potenza di calcolo, contenuti) ai bordi della rete • Sfruttare le risorse ai bordi significa dipendere da un sistema fortemente variabile, con connettività instabile e indirizzi IP non predicibili Pag. 1 Tecnologie e Applicazioni Peer-to-Peer 3 Peer-to-peer (P2P) • Esempi di applicazioni P2P: – – – – – – – Instant Messaging File Sharing Distributed Computation Distributed Search Engines Gaming Collaboration Tools Web Services (SOAP, XML-RPC) 4 P2P: Back to the future • P2P non è certo una novità • Internet è nata intorno a collegamenti paritari tra i nodi che la costituivano • Applicazioni tuttora usate sono basate su uno scambio di informazioni non centralizzato – DNS: l'informazione è mantenuta ai bordi della rete ed esiste un sistema gerarchico per scoprire e poi contattare direttamente l'Authoritative Name Server di un dominio – Usenet/NNTP: i messaggi sono distribuiti tra i server in maniera tale da raggiungere tutte le foglie della rete senza duplicazioni Pag. 2 Tecnologie e Applicazioni Peer-to-Peer 5 Internet: una rete asimmetrica • Il successo del Web e l'esplosione commerciale di Internet hanno allontanato il baricentro della rete dal bordo • Si è passati da una rete ancora fondamentalmente paritaria ad un sistema fortemente asimmetrico: pochi server e tantissimi client • La stessa idea del 'tutti autori' si è rivelata utopica e pochissimi degli utenti sono di fatto anche produttori di contenuti, che devono comunque essere memorizzati all'interno della rete e non sul bordo 6 Internet: una rete asimmetrica • L'asimmetria server-client ha di conseguenza generato una asimmetria nel traffico e nei meccanismi di accesso alla rete • Gli ISP dimensionano le loro reti di accesso per gestire traffico asimmetrico • Molte moderne tecnologie di accesso, specialmente ad alta capacità, sono asimmetriche (ADSL, HFC/Cable Modem) • Portare i contenuti ai bordi pone quindi problemi agli ISP: la loro rete deve lavorare in maniera imprevista Pag. 3 Tecnologie e Applicazioni Peer-to-Peer 7 Internet: una rete asimmetrica • All'asimmetria nella rete di accesso si aggiungono i problemi di raggiungibilità dei client • Firewall – l'ideale di Internet di "tutti si collegano direttamente con tutti" ha dovuto fare i conti con la dura realtà dei problemi di sicurezza, per cui la maggior parte dei sistemi ormai si trova dietro firewall che filtrano e bloccano i servizi e le connessioni dall'esterno • Indirizzi IP Dinamici o NAT – gli ISP assegnano ai loro clienti indirizzi IP dinamici, che cambiano di connessione in connessione, oppure mascherano completamente il collegamento tramite NAT 8 Architetture di rete • Si possono distinguere tre categorie di applicazioni P2P: – sistemi coordinati centralmente, nei quali la comunicazioni tra peer è resa possibile dalla consultazione di un server centralizzato – sistemi gerarchici, nei quali la comunicazione tra peer è risolta attraverso coordinatori strutturati gerarchicamente – sistemi decentrati, nei quali la comunicazione tra peer avviene senza alcuna coordinazione centrale Pag. 4 Tecnologie e Applicazioni Peer-to-Peer 9 Sistemi centralizzati • Nei sistemi P2P centralizzati si prevede l'esistenza di uno o più server che sono in grado di coordinare l'attività dei peer • Esempi – Instant Messaging – Napster – Distributed Computing • Implementano la forma più debole di relazione tra peer 10 Instant Messaging • I sistemi di instant messaging più diffusi (ICQ, AIM, MSN Messenger) sono in genere regolati dall'accesso ad un servizio centrale • Però spesso – identificano l'utente tramite pseudonimo e ne registrano la posizione dell'utente senza far uso di DSN, permettendo quindi connettività generica e mobilità – permettono agli utenti di comunicare direttamente, senza passare per il server, usato solo come 'fallback' (ICQ) Pag. 5 Tecnologie e Applicazioni Peer-to-Peer 11 Napster • Napster è un sistema di file-sharing orientato a file MP3, con directory centralizzata • I client, alla connessione al sistema, registrano le risorse che sono disposti a condividere • I server supporta funzioni di ricerca sugli indici raccolti, fornendo l'elenco dei client in possesso del file cercato • Lo scambio dei file avviene tramite il collegamento diretto tra i due client coinvolti • Il server possiede solo l'indice, non i file scambiati 12 Distributed Computing • I PC che costituiscono i client ai bordi della rete hanno ormai raggiunto una potenza di calcolo notevole e sono spesso sottoutilizzati • Si cerca di sfruttare i tempi morti di utilizzo dei PC per effettuare parte di calcoli complessi e ma frazionabili in sottoproblemi – SETI@home – Distributed.net – Folding@home Pag. 6 Tecnologie e Applicazioni Peer-to-Peer 13 Distributed Computing • Un sistema centralizzato distribuisce porzioni del problema ai client, che le elaborano durante i loro tempi morti (screensaver) • I client sono tipicamente off-line e solo quando hanno terminato l'elaborazione contattano nuovamente il server per restituire i risultati ed eventualmente ricevere nuovo lavoro 14 Sistemi gerarchici • In questi sistemi i coordinatori sono organizzati in livelli gerarchici • I peer sono organizzati in gruppi e comunicano direttamente tramite il coordinatore locale • Peer di gruppi diversi possono comunicare tramite i coordinatori di livello gerarchico superiore ma l'informazione scambiata può essere spinta verso il bordo per velocizzare le future comunicazioni • Esempi: DNS, Squid Web proxy cache Pag. 7 Tecnologie e Applicazioni Peer-to-Peer 15 Sistemi decentrati • In questi sistemi non esiste un sistema di coordinamento centralizzato, anche se possono esistere dei nodi di riferimento • La comunicazione avviene sempre direttamente tra peer, per cui l'applicazione eseguita funziona contemporaneamente da client, da server e da nodo di commutazione • Siamo di fronte a una rete di overlay a livello Applicazione 16 Sistemi decentrati • Caratteristiche comuni – numero di nodi variabile: i nodi possono entrare nel sistema e abbandonarlo in qualsiasi momento – supporto per la ricerca dell'informazione: vengono definite dal sistema stesso le modalità di ricerca dei dati – ridondanza dell'informazione: il sistema può mantenere copie multiple dei dati per sicurezza o per permettere la disponibilità dei dati anche in assenza del fornitore originario o del proprietario – scalabilità e resistenza a guasti o attacchi Pag. 8 Tecnologie e Applicazioni Peer-to-Peer 17 Sistemi decentrati • L'utilizzo tipico di tali sistemi è quello di servizi di file sharing o di storage distribuito. • La stessa infrastruttura può essere usata per supportare 'distribute computing' decentrato • Le capacità di storage distribuito, con funzioni di duplicazione, frammentazione e cifratura dei dati, permettono la realizzazione di sistemi 'Eternity Service' resistenti a tentativi di censura 18 Gnutella • • • • • File sharing distribuito peer-to-peer Potenti funzionalità di ricerca Livello di anonimato per gli utenti molto basso Scalabilità limitata (ma non eccessivamente) Client, server e rete sono la stessa parte dell'applicazione Pag. 9 Tecnologie e Applicazioni Peer-to-Peer 19 Gnutella • Funzionamento – l'utente si rivela ai nodi Gnutella nelle sue vicinanze, creando un certo numero di collegamenti ed entrando nella rete (eventualmente con file da condividere) – l'utente che vuole cercare una risorsa chiede ai suoi vicini – chi riceve una richiesta: • verifica se possiede la risorsa in questione (nel qual caso comunica la sua disponibilità al nodo richiedente) • propaga comunque la richiesta a tutti i suoi vicini – se la risorsa esiste nella rete, l'utente riceverà una serie di risposte positive riportanti la sua locazione – l'utente preleva la risorsa direttamente da una delle locazioni disponibili 20 Gnutella • I messaggi di un nodo Gnutella sono diffusi in broadcast tra i nodi adiacenti tramite connessioni TCP • I messaggi sono identificati da un UUID univoco di 128 bit per prevenire la ritrasmissione multipla del medesimo messaggio da parte dei nodi e non contengono l'indirizzo IP di generazione (anonimato nelle ricerche) • La vita dei messaggi è controllata da un campo TTL (time-to-live), tipicamente inizializzato a 7 hop e decrementato ad ogni nodo attraversato fino a raggiungere 0 Pag. 10 Tecnologie e Applicazioni Peer-to-Peer 21 Gnutella • I messaggi di risposta non sono trasmessi in broadcast ma sono instradati lungo il percorso a ritroso in base all'UUID della richiesta • Solo il primo nodo coinvolto nella richiesta conosce l'indirizzo IP del nodo che l'ha generata, quindi l'uso dell'UUID è l'unico modo per raggiungerlo • In caso di traffico eccessivo, i nodi Gnutella scartano semplicemente i messaggi 22 Gnutella • Gnutella lascia la massima libertà ai nodi di decidere come interpretare i messaggi di richiesta e che tipo di risposta fornire • In linea di principio Gnutella potrebbe costituire un motore di ricerca distribuito • Gnutella non cerca di garantire pienamente l'anonimato dei partecipanti: – le ricerche sono anonime (messaggi identificati dal solo UUID) – il collegamento diretto tra peer non è anonimo, perché il nodo che risponde deve rivelare la propria identità e lo stesso accade al nodo richiedente quando crea il collegamento per il download della risorsa Pag. 11 Tecnologie e Applicazioni Peer-to-Peer 23 Gnutella • Problemi – Anonimato: la mancanza di anonimato si può prestare ad abusi (Wall of Shame) – Scalabilità: il broadcast dei messaggi scala male con l'aumentare della connettività e alcune implementazioni di Gnutella ne fanno abuso – Host Cache e host catcher possono provocare localizzazione del traffico e degrado delle prestazioni per la scelta di vicini non adeguati – Disparità di traffico e di prestazioni tra nodi ad alta capacità e nodi con risorse più limitate 24 Gnutella: gli eredi • Dal punto di vista del successo di pubblico e di utilizzo, Gnutella può essere considerato un sistema un po' vecchio • Sono apparsi sulla scena già diversi eredi: eDonkey, KaZaA, DirectConnect • Sono tutti sistemi di file sharing con supporto per l'identificazione delle risorse da condividere, il download parallelo da diverse sorgenti e il resume di download da precedenti sessioni Pag. 12 Tecnologie e Applicazioni Peer-to-Peer 25 Freenet • File storing (e sharing) distribuito peer-to-peer • Focalizzato a – prevenire la censura dei documenti – fornire anonimato agli utenti – memorizzare e distribuire efficientemente i documenti – proteggere i gestori dei nodi da eventuali accuse sul contenuto • Buona scalabilità • Funzionalità di ricerca carenti 26 Freenet • L'utente che vuole cercare un documento effettua una richiesta ad un nodo di fiducia (eventualmente il suo) • Se il nodo non possiede il documento, la richiesta viene rediretta ad un nodo adiacente che si ritiene possa avere il documento • La richiesta viene propagata finché il documento non viene trovato oppure il TTL scade • Il documento viene spedito al richiedente percorrendo a ritroso la strada fatta dal messaggio di richiesta • I nodi coinvolti nella richiesta memorizzano il documento, così richieste future saranno soddisfatte prima e il documento può risultare presente nella rete in più copie Pag. 13 Tecnologie e Applicazioni Peer-to-Peer 27 Freenet • Ogni richiesta possiede un ID unico che permette di evitare loop • Un documento può essere inserito nel sistema dopo aver verificato che non esista già: l'inserimento avviene trasmettendo il documento ai nodi che costituiscono il percorso del messaggio di risposta • Ogni nodo dedica pertanto parte del suo spazio a mantenere non solo i propri documenti ma anche copie di altri documenti contenuti nella rete • Per garantire l'anonimato e per ridurre le possibilità di censura i documenti sono criptati e ogni nodo non può conoscere il contenuto dei documenti in suo possesso 28 Freenet • La memorizzazione e la ricerca di documenti sono basate sull'uso di chiavi • Ogni nodo possiede uno stack che contiene i dati con associati una chiave e l'indirizzo del nodo dal quale quei dati sono stati ricevuti • Solo i documenti cui si è fatto accesso più di recente sono memorizzati nel nodo in cima allo stack: da un certo livello in poi si memorizzano solo le chiavi e gli indirizzi • Le chiavi sono l'elemento cardine per l'instradamento: se la chiave del documento cercato non è tra quelle conosciute, la richiesta viene spedita al nodo con la chiave "più vicina" secondo una particolare metrica Pag. 14 Tecnologie e Applicazioni Peer-to-Peer 29 Freenet • Il risultato è una ricerca mirata del documento, con la propagazione della richiesta nella direzione più probabile di localizzazione • Il fatto che la ricerca debba essere mirata al documento impedisce però la flessibilità e la potenza di sistemi come Gnutella • Un altro problema di Freenet è legato al fatto che i documenti sono gestiti tramite uno stack controllato dalla frequenza di accesso: documenti poco richiesti possono scomparire dalla rete se non reinseriti 30 Freenet: i cugini • Esistono in fase di studio numerosi sistemi di file storing che condividono con Freenet l'uso di chiavi e funzioni di hashing per instradare le richieste: Chord, OceanStore, Omaha • Questi sistemi ottimizzano l'utilizzo delle chiavi per garantire il recupero del documento se esiste nel sistema (cosa che Freenet non è in grado di fare) • Rinunciando ai vincoli stringenti di anonimato si prevede di implementare file system totalmente distribuiti (che andrebbero a costituire l'ossatura di un Internet-scale Operating System) Pag. 15 Tecnologie e Applicazioni Peer-to-Peer 31 File Storage • Alcuni sistemi peer-to-peer sono specializzati nel fornire file storage a lungo o medio termine in grado di garantire l'anonimato e di proteggere i documenti dalla censura (Publius, Free Haven) • L'integrità dei documenti nello scenario dinamico tipico del peer-to-peer viene ottenuta l'applicazione di funzioni di sharing: l'informazione viene divisa in n parti codificate in maniera tale che ne sono sufficienti k qualsiasi per poter ricostruire i dati originari • All'uso delle funzioni di sharing vengono naturalmente abbinate funzioni di hashing (MD5, SHA-1) e di cifratura per garantire l'integrità e la segretezza dei dati 32 Web Services: XML e P2P • L'approccio peer-to-peer risulta efficace non solo nelle comunicazioni tra persone, ma anche nella comunicazione tra applicazioni, realizzato sul bordo della rete (sulla rete di overlay) così come esiste all'interno • Esistono diverse direzioni di studio: – Semantic Web: l'utilizzo di XML ed RDF e la definizione di ontologie (relazioni tassonomiche tra le informazioni) sono integrati tramite l'uso di agenti che non solo sono in grado di cercare e costruire nuove informazioni, ma anche di farle condividere con altri utenti – Web Services: sono definiti protocolli XML di comunicazione tra applicazioni che, appoggiandosi su HTTP, mettono in relazione i peer per permettere scambio di dati tra le applicazioni (Simple Object Access Protocol -SOAP- e tecnologie correlate) Pag. 16 Tecnologie e Applicazioni Peer-to-Peer 33 Indici di prestazione • Nella realizzazione e implementazione di una rete di overlay a livello applicazione occorre prestare notevole attenzione ai requisiti di efficienza e di funzionalità • Due indici di particolare interesse sono la scalabilità e la resistenza ai guasti • La scalabilità può essere espressa dal numero medio di nodi contattati in ogni ricerca: la situazione ottimale è quella di un grafo connesso in maniera totalmente casuale, nel quale tale numero è O(logk N) • La resistenza ai guasti indica invece la capacità della rete a funzionare in maniera adeguata anche se gran parte dei nodi scompare 34 Scalabilità • Il grafo costituito dai nodi di una rete P2P è in generale abbastanza casuale da avere la distanza media tra due nodi di tipo logaritmico, pur mantenendo un elevato grado di aggregazione (per cui esistono gruppi di nodi molto connessi tra loro) • In Freenet la ricerca di tipo lineare lungo il percorso stabilito dalle chiavi rende il numero medio di nodi attraversati per la ricerca equivalente alla distanza media tra i nodi e quindi logaritmico • In Gnutella la ricerca è condotta in broadcast lungo tutti i collegamenti disponibili e senza fermarsi quando la risorsa è stata trovata, portando ad una dipendenza lineare dal numero dei nodi Pag. 17 Tecnologie e Applicazioni Peer-to-Peer 35 Metadata • Essendo la ricerca una delle funzioni chiave dei sistemi di file sharing P2P, i metadata possono fornire un notevole aiuto nell'identificazione delle risorse • RDF (Resource Description Framework) e Dublin Core sono i due sistemi di riferimento per i metadata: entrambi usano XML e i loro namespace sono ben noti • L'uso di metadata può risultare problematico in sistemi di storing che cercano di garantire l'anonimato, come in Freenet 36 Requisiti sociali • Sono diversi i requisiti 'sociali' necessari perché un sistema P2P sia efficiente e bilanciato • Tre requisiti fondamentali: – Fiducia (Trust) – Responsabilità (Accountability) – Reputazione (Reputation) • Se non è in grado di garantire o richiedere questi requisiti il sistema rischia di degenerare, diventando preda dell'egoismo degli utenti Pag. 18 Tecnologie e Applicazioni Peer-to-Peer 37 Fiducia • Un requisito fondamentale nella comunicazione in Internet e ancor più in un sistema P2P è la fiducia • Spesso nelle comunicazioni tradizionali si crea una struttura di fiducia per cui siamo relativamente sicuri che le persone coinvolte non agiscano contro il nostro interesse (ad esempio un e-commerciante non usi la mia carta di credito per altri scopi o venda i miei dati personali a qualcuno) • Questa fiducia è ottenuta spesso tramite la garanzia di terze persone di cui possiamo pensare di fidarci: ad esempio, nell'e-commerce pensiamo di essere sicuri che un sito sia proprio quello che dice tramite la sua certificazione 38 Fiducia • La fiducia è spesso rafforzata dalla reputazione della controparte, la quale ha interesse a non tradire la nostra fiducia per non vedere degradata la sua reputazione, soprattutto se esiste un sistema di attribuzione della responsabilità • Come autore posso rafforzare la fiducia in me (aumentando la mia reputazione) firmando sempre digitalmente i miei documenti e garantendone l'integrità: ho naturalmente bisogno di qualcuno che garantisca la mia identità • Come utente o nodo della rete, posso ridurre i rischi di una fiducia mal riposta usando canali di comunicazione criptati e richiedendo l'uso di meccanismi di 'accountability' Pag. 19 Tecnologie e Applicazioni Peer-to-Peer 39 Accountability • Può essere tradotto in termini approssimativi "responsabilità" • Rappresenta la capacità di rendere conto delle proprie azioni nel sistema, in maniera tale che queste possano essere considerate adeguate alle risorse richieste • Ad esempio, in un sistema di file sharing o distributed computing, si può richiedere che le risorse 'costino' qualcosa, per cui chi non contribuisce significativamente non è in grado di sfruttare il sistema • Vogliamo evitare i "portoghesi" (free riders), o quanto meno far pagar loro il biglietto se non contribuiscono 40 Micropagamenti • Un metodo tradizionale di accountability in una situazione di anonimato è legato alla richiesta di micropagamenti • Due tipi di moneta: – risorse non riutilizzabili (Proof of Work) – risorse riutilizzabili (digital cash) • Chi richiede una risorsa deve essere disposto a 'spendere qualcosa' o in termini di CPU (risolvendo qualche operazione complicata) o in termini di una risorsa quantificabile (spazio su disco, digital cash) • Questo può servire a proteggere da free-raider, spammer o attacchi di tipo Denial-of-Service Pag. 20 Tecnologie e Applicazioni Peer-to-Peer 41 Reputazione • Quando gli utenti non sono completamente anonimi, l'attribuzione di responsabilità non può venire completamente separata da un sistema di reputazione che possa rispecchiare le caratteristiche e il comportamento dell'utente (anche se questo si nasconde dietro uno pseudonimo) • Questo è particolarmente vero per scambi tra i sistemi: se un peer 'paga' per una risorsa che gli deve essere passata (ad esempio lo share di un file in un sistema di storing), vuole potersi lamentare se il contratto non è stato rispettato, degradando la reputazione del colpevole ed eventualmente spingendo gli altri a non fidarsi più di lui 42 Reputazione • Una modalità tipica di gestione della reputazione è attraverso un sistema di valutazione (scoring) che possa tener traccia delle prestazioni della persona • Il sistema di punteggio ottimale deve: – – – – – – – indicare l'accuratezza (confidenza) del punteggio essere polarizzato sul comportamento recente efficiente robusto nei riguardi di possibili attacchi garantire la riservatezza del voto comprensibile verificabile • Occorre scegliere l'adeguato trade-off tra questi requisiti apparentemente contrastanti Pag. 21