• Non ci sono risultati.

3. Aspetti tecnici del peer-to-peer e del file sharing

3.1. Definizioni

3.1.1. Peer-to-peer

Con il termine peer-to-peer (spesso abbreviato in p2p) si definisce un’infrastruttura di scambio informazioni tra nodi alla pari in cui due entità oggetto dello scambio possono indifferentemente scambiarsi i ruoli di fornitore e di cliente di un determinato servizio, solitamente non in maniera isolata ma costituendo un gruppo più ampio di sistemi al quale partecipano diversi nodi.

Il modello peer-to-peer è in antitesi con il paradigma client-server nel quale i ruoli dei due attori sono ben definiti (il server fornisce servizi e/o contenuti, il client li richiede)206.

Una rete peer-to-peer può essere pura (detta anche decentralizzata pura), centralizzata o ibrida:

 in un’architettura decentralizzata pura tutti i nodi (peer) sono alla pari e non esiste alcun coordinatore centralizzato per cui ogni nodo può fungere da servente o da richiedente e l’uscita di un nodo non provoca alcun problema al funzionamento della rete, ad eccezione delle prime eventuali fasi di ricostruzione di connessioni tra nodi;

206 Non si confonda la definizione di peer-to-peer con la rete peer-to-peer come viene

intesa nell’ambiente del sistema operativo Windows, dove si fa riferimento ad una tipologia di rete in antitesi al dominio. Cfr. Microsoft, Introduction to Windows Peer-to-Peer Networking disponibile all’url http://technet.microsoft.com/en-us/library/bb457079.aspx.

Figura 17 – Esemplificazione di un’architettura peer-to-peer decentralizzata pura

 in un’architettura centralizzata esiste un server (o cluster di server) che è in possesso di un indice e svolge ruolo di coordinamento tra i nodi;

 in un’architettura ibrida alcuni nodi assurgono a compiti superiori e vengono pertanto battezzati supernodi (superpeer oppure ultrapeer), a differenza degli altri nodi detti leaf-peer: in una prima fase, i nodi contattano i superpeer che provvedono a mettere in contatto i nodi tra loro, non interferendo successivamente nei processi di comunicazione.

Figura 18 – Esemplificazione di un’architettura peer-to-peer centralizzata: il server ha un ruolo vitale per la rete, consentendo ai vari nodi di conoscersi (a sinistra) e poter poi comunicare direttamente senza alcuna ulteriore attività di

Nei sistemi centralizzati, il nodo (directory server) possiede un indice con le associazioni tra risorse e nodi, fornendo un servizio di individuazione di nodi e risorse. Napster utilizzava un sistema di questo genere che presenta i seguenti limiti: gestione costosa della directory centralizzata; collo di bottiglia costituito dal nodo centrale, con scalabilità limitata; singolo punto di vulnerabilità (point of failure), con conseguenza che il funzionamento dell’intero sistema è dipendente dal funzionamento del sistema centrale.

Nei sistemi puri invece, l’assenza di coordinamento centralizzato pone il problema della gestione dell’ingresso di un nodo alla rete in quanto per accedere alla rete peer-to-peer occorre conoscere l’indirizzo di almeno un nodo (problema del bootstrap): il problema si risolve prevedendo un bootstrap server, che può essere un web server che memorizza una lista di nodi attivi, oppure tramite peer cache, cioè una lista di nodi noti in precedenti sessioni, oppure tramite host noti, quindi solo i nodi che conoscono almeno uno degli altri partecipanti possono prendere parte alle rete.

Infine, nei sistemi ibridi non tutti i peer sono uguali: i nodi meglio connessi e con buona capacità computazionale possono avere funzioni speciali e vengono identificati dinamicamente tramite un algoritmo di elezione207. I superpeer indicizzano le risorse disponibili nei leaf-peer che gestiscono e, rispetto ai sistemi decentralizzati puri si riduce il tempo di discovery, rispetto ai sistemi centralizzati si elimina il singolo punto di vulnerabilità.

207 Quando i sistemi distribuiti non hanno dei nodi predefiniti per le attività di

coordinamento si rende necessario avere un sistema automatico di elezione del leader detto “Leader Election”. Tale meccanismo consente, nel caso in cui il leader in carica subisca un guasto, di eleggere in corso un nuovo leader per ovviare al problema e consentire alla rete di funzionare. Il primo algoritmo di Leader Election è quello descritto da Gerard LeLann nel 1977 per reti ad anello, la cui complessità di gestione è certamente bassa. Nel caso delle reti peer-to- peer si è in presenza di una struttura a grafo fortemente connessa e quindi occorrono delle tecniche più sofisticate per l’elezione del leader. Un esempio di algoritmo, detto FloodMax, sfrutta un valore numero identificativo univoco associato ad ogni nodo mediante il quale viene eletto leader il nodo con il valore identificativo maggiore (oppure minore), mediante l’invio di messaggi tra i vari nodi proporzionale al diametro del grafo.

Figura 19 – Esemplificazione del processo di ricerca dei nodi (o delle risorse da essi forniti) nelle reti peer-to-peer ibride: il nodo in basso a sinistra cerca la risorsa (o il nodo) A, inoltra la richiesta al superpeer che fa lo stesso ai nodi a lui

noti e agli altri superpeer, finché la richiesta non viene soddisfatta con l’individuazione della risorsa (o del nodo) richiesto

É doveroso chiarire che quando si tratta di protocolli e applicazioni peer-to- peer non necessariamente si fa riferimento al file sharing, né si può considerare sempre vera l’equazione che vede il peer-to-peer accostato a comportamenti o pratiche illegali. Tuttavia è vero, da qui anche la motivazione principale che ha dato origine al presente lavoro, che le reti peer-to-peer sono utilizzate principalmente per lo scambio di file, dei quali una percentuale massiccia è coperta da copyright o è costituita da materiale pedopornografico. Un’architettura peer-to-peer molto nota utilizzata su larga scala che non ha come obiettivo lo scambio di file è Skype208, il noto software di VoIP di

Microsoft che si basa su una rete ibrida a due livelli con server di login e dei super-peer che si occupano dell’inoltro dei pacchetti.