Introduzione
- 1 -
Introduzione
Con l’aumento della potenza di calcolo dei personal computer, le applicazioni in
rete sono passate dall’iniziale classica architettura di rete client/server alla sempre più
diffusa architettura Peer-to-Peer.
Il primo modello si basa su due elementi distinti, ovvero il client ed il server.
Quest’ultimo, tipicamente una macchina più potente della prima, si occupa di offrire dei
servizi alle applicazioni client che li richiedono.
Nei sistemi basati, invece, su reti Peer-To-Peer (P2P), non si parla più di server che
offrono servizi ai client, ma di nodi che possono lavorare contemporaneamente da
client e da server. Per questo motivo i peer vengono spesso chiamati servent (server-
client). L’architettura di rete P2P, a differenza di quella client/server, è decentralizzata e
questo apporta notevoli vantaggi: si ha una maggiore tolleranza ai guasti (non c’è più un
server centrale che svolge tutto il lavoro e che, se viene a mancare, causa il blocco
dell’intera applicazione), una migliore distribuzione dei dati, delle risorse, e del carico
di lavoro tra i vari peer.
La diffusione del modello Peer-to-Peer(P2P) è dovuta soprattutto al largo successo
di alcune applicazioni, in particolare di quelle sviluppate per offrire servizi di file-
sharing (condivisione di file). In queste applicazioni, i vari peer mettono a disposizione
dei file, che possono così essere ricercati e scambiati tra i vari peer per mezzo di
appositi servizi tipici dell’applicazione. La condivisione di file è divenuta una pratica
molto diffusa tra gli utenti di internet (con vari problemi relativi alle proprietà dei
contenuti digitali). La possibilità di condividere file tra peer è largamente supportata
dall’utilizzo di vari formati di compressione che permettono uno scambio più veloce di
tali file, riducendo il traffico di rete senza che il contenuto venga alterato da una
significativa perdita di qualità. Esempi di questi formati sono gli MPEG, che
permettono di comprimere file audio e video.
Utilizzi più innovativi prevedono l'utilizzo delle reti Peer-to-Peer per la diffusione di
elevati flussi di dati generati in tempo reale come per esempio programmi televisivi o
film. Questi programmi si basano sull'utilizzo delle banda di trasmissione di cui
dispongono i singoli utenti, e la banda viene utilizzata per trasmettere agli altri fruitori il
Introduzione
- 2 -
flusso dati. Questo metodo di diffusione permette in teoria la trasmissione in tempo
reale di contenuti video, ma richiede che i singoli utenti siano dotati di connessioni ad
elevata banda sia in ricezione che in trasmissione, altrimenti si arriverebbe rapidamente
a una saturazione della banda fornita dal server. Questo limita la diffusione di questa
tecnologia in Italia, dove sono molto diffuse linee asimmetriche (ADSL) che forniscono
una banda elevata in ricezione, ma scarsa in trasmissione.
Utilizzando la tecnologia Peer-to-Peer, grandi società stanno sperimentando la
possibilità di fornire contenuti a pagamento tramite tecnologie Peer-to-Peer. Questo
scelta è motivata dal fatto che la tecnologia Peer-to-Peer non richiede server di grandi
dimensioni per gestire molti utenti, dato che se la rete è ben bilanciata si auto sostiene e
quindi è indipendente dal numero di utenti.
La diffusione di tali dati è nata dall’esigenza di rapporti sempre più dettagliati,
puntuali e sofisticati a supporto della gestione aziendale. I dati che queste aziende
producono, per essere più facilmente reperiti, gestiti ed interpretati, possono essere
organizzati in prospetti o viste multidimensionali. In questi tipi di dati l’informazione è
rappresentata da punti in uno spazio a più dimensioni dove ogni dimensione è una
differente prospettiva del dato. Ad esempio, i ricavi di un’azienda possono essere
scomposti per aree geografiche, prodotti oppure per date.
Negli ultimi anni sono stati sviluppati strumenti software sempre più specifici e
complessi per la gestione di questi dati, come ad esempio software che supportano il
sistema di analisi dei dati OLAP (On Line Analytical Processing). In questi software
grandi quantità di dati, tipicamente “storicizzati”, vengono processati anche in modo
complesso per ottenere altre informazioni. Questi tipi di applicazioni richiedono una
grande capacità computazionale e di memorizzazione dei dati. A tale scopo, un grosso
supporto potrebbe essere fornito da un’architettura Peer-to-Peer, nella quale ogni peer
offre parte delle sue capacità di calcolo e di memorizzazione.
Lo scambio di dati multidimensionali è una problematica più complessa rispetto a
quella del semplice file-sharing di contenuti multimediali, dove i dati da gestire sono
rappresentabili come coppie <nome, file>. Tuttavia, i due contesti applicativi
condividono un aspetto fondamentale: la compressione con perdita d’informazione.
Molte applicazioni che utilizzano dati multidimensionali usano la compressione con
perdita di informazione allo scopo di rispondere in tempi accettabili a query, la cui
risposta esatta richiederebbe tempi di attesa molto lunghi. Inoltre, in molti ambiti, come
Introduzione
- 3 -
ad esempio l’esplorazione OLAP, risultati approssimati possono essere accettati. Ad
esempio, nell’analisi di vendite, è spesso sufficiente conoscere con precisione le cifre
più significative, allo scopo di individuare le regioni del dominio dei dati da esaminare
in maggior dettaglio. Non è quindi richiesto un risultato esatto delle query su questi dati,
ma basta un risultato con un ragionevole grado di approssimazione per poter trarne una
sufficiente conoscenza.
Fino ad oggi, la gestione dei dati multidimensionali è stata fatta nella maggior parte
dei casi con sistemi centralizzati, proprio per la difficoltà che si ha nella distribuzione
efficiente e nel mantenimento di una adeguata copertura di questo tipo di dati nella rete.
In questo scenario si innesta l'argomento che verrà trattato nell'elaborato. Infatti si
svilupperà un framework per la gestione di dati multidimensionali compressi in sistemi
P2P.
L'architettura presentata in questa tesi è studiata per gestire popolazioni di dati
multidimensionali distribuiti in una rete P2P. I dati gestiti dal sistema sono dati
multidimensionali compressi e aggregati rispetto al dominio di appartenenza in modo da
rendere la ricerca per intervallo di valori lungo più dimensioni (Range Query) efficiente
e robusta.
Nel framework, i peer partecipanti pubblicano i loro dati in modo da renderli
accessibili ad altri peer. Quando una popolazione viene pubblicata, i dati che la
compongono vengono compressi e distribuiti lungo la rete secondo una strategia a due
passi. Il primo passo consiste nella costruzione della struttura compressa dei dati,
formata da più blocchi e da un indice bilanciato, mentre il secondo passo consiste nella
distribuzione e replicazione dell'indice e dei blocchi di dati sulla rete. L'indice viene
creato sui blocchi ottenuti dalla compressione dei dati ed in seguito partizionato e
distribuito tra i vari peer che partecipano al sistema. Quando un peer effettua una Range
Query, il sistema esplora l'indice distribuito per localizzare in modo efficiente i peer che
contengono i blocchi di dati compressi che rispondono alla query.
Il sistema adatta dinamicamente la distribuzione dell'indice e dei blocchi di dati
compressi, facendo un certo numero di repliche, per ridurre il più possibile il numero di
peer a cui occorre accedere per rispondere ad una Range Query. Inoltre, per rendere il
sistema robusto in presenza di peer volatili, viene garantita una copertura minimale sia
per l'indice che per i blocchi di dati compressi.
Introduzione
- 4 -
Organizzazione del lavoro di tesi.
Nel primo capitolo verrà fatta una breve descrizione delle reti P2P e parleremo della
loro storia, delle loro caratteristiche principali, delle varie tipologie di reti P2P, dei
problemi di privacy legati ad esse.
Nel secondo capitolo, dopo aver brevemente introdotta l’architettura Jxta,
parleremo dei suoi elementi: Peer, PeerGroup, Network Services, Pipe, Message,
Advertisement. Spiegheremo quali tipologie di Peer si possono trovare sulla rete e quali
sono i protocolli che garantiscono il buon funzionamento della rete.
Nel terzo capitolo si darà una sintetica descrizione dei dati multidimensionali e delle
principali tecniche di compressione. Si parlerà inoltre dell’indicizzazione dei dati
multidimensionali statici.
Nel quarto capitolo verrà trattata la descrizione del Framework P2P per la gestione
dei dati multidimensionali aggregati. Verranno descritte le fasi della compressione,
dell'indicizzazione e della distribuzione dei dati. Verrà inoltre presentato il meccanismo
di query distribuite ed il mantenimento dinamico di una adeguata copertura dei dati
nella rete.
Nel quinto capitolo verrà illustrato come sono state implementate praticamente le
varie parti del framework descritte finora. Verrà descritto come è stato implementato il
partizionamento, come è stata implementata l’indicizzazione in tutti i sui vari aspetti.
verrà descritta l'applicazione JMadP2P (Java Multidimensional Aggregate Data P2P)
che implementa alcune funzioni del sistema P2P con l'utilizzo del framework Jxta. In
particolare si descriverà come è stata implementata la gestione delle rete, e il servizio di
Range Query con il relativo meccanismo di replicazione dei dati per permettere una
efficiente valutazione delle query.
Capitolo 1 – Reti Peer-to-Peer
- 5 -
Capitolo1
Reti Peer-to-Peer
In questo capitolo definiamo cosa si intende per rete P2P, quali le sue
caratteristiche principali, le varie tipologie di reti P2P, i problemi di privacy
legati ad esse.
1.1 Che cos'è una rete P2P
Una rete P2P è una rete di computer che non possiede client e server fissi, ma un
numero di nodi (peer) equivalenti che fungono sia da client che da server verso altri
nodi della rete.
Mediante questa configurazione, qualsiasi nodo è in grado di avviare o completare
una transazione. I peer possono differire nella configurazione locale, nella velocità di
elaborazione, nell'ampiezza di banda e nella quantità di dati memorizzati senza
pregiudicare le prestazioni della rete.
Un sistema per definirsi P2P deve presentare almeno tre caratteristiche:
9 i peer devono poter scoprire le entità alla pari sulla rete;
9 i peer devono poter condividere le risorse con gli altri peer;
9 i peer devono poter effettuare ricerche ed interrogazioni per scoprire le risorse
messe a disposizione dagli altri peer.
Capitolo 1 – Reti Peer-to-Peer
- 6 -
1.2 Storia
Le reti P2P nascono alla fine degli anni 60' con ARPANET. ARPANET è stata
finanziata dal ministero della difesa degli USA e consentiva il collegamento delle
università e dei centri di ricerca per lo scambio di informazioni militari.
Negli anni 70' ARPANET aumenta il numero di nodi con la nascita dei primi
collegamenti internazionali. Solo negli anni 80' la rete si allarga al mondo scientifico
allontanandosi dagli ambiti puramente militari.
Gli anni 90' hanno portato ARPANET a diventare una rete mondiale con la nascita
di Internet. In particolare, nel 1999 nasce la prima generazione di applicazione P2P:
Napster. Questa applicazione invase subito tutto il mondo permettendo la condivisione
di file audio e film, fino al 2001 quando Napster venne chiuso, dopo una lunga causa
legale, per l'utilizzo illegale dei diritti di autore dei file scambiati nella rete.
Nel 2000 si sviluppano i sistemi di seconda generazione, che sfruttano il Routing
gerarchico con la nascita di Gnutella.
1.3 Tipologia di reti
Le reti P2P si possono classificare in quattro tipologie [44]:
¾ Puro: tutti i peer hanno contemporaneamente funzione di client e di server
senza nessun mediatore o server centralizzato;
¾ Ibrido: esistono dei server che hanno funzioni di coordinamento, ma i client si
connettono tra di loro autonomamente;
¾ Strutturato: la localizzazione delle risorse è legata alla tipologia della rete.
Esiste un legame tra l'identificatore di una risorsa e l'indirizzo IP del peer che
la possiede, permettendo una ricerca mirata delle risorse;
¾ Non Strutturato: la localizzazione delle risorse non è legata alla tipologia
della rete. Ogni peer pubblica le risorse autonomamente e quindi non c'è
modo di sapere quale peer potrebbe possedere la risorsa.
Questa classificazione evidenzia che non sempre questo tipo di reti sono
completamente decentralizzate ma nella maggior parte dei casi si utilizzano dei server
centralizzati che facilitano la localizzazione dei peer (nella applicazione sviluppata verrà
usato un P2P Puro).
Capitolo 1 – Reti Peer-to-Peer
- 7 -
1.3.1 Confronto tra sistemi strutturati e non
strutturati
I sistemi strutturati consentono una ricerca delle risorse più veloce rispetto ai sistemi
non strutturati ed il carico di rete su ogni peer è inferiore. D'altro canto, i sistemi non
strutturati consentono una maggiore flessibilità nella gestione di reti molto dinamiche.
Infatti, in questo caso i sistemi strutturati sono inefficienti perché sarebbe necessario
riassegnare le risorse ogni qualvolta un peer si connette o disconette dalla rete.
Quindi la scelta tra un sistema strutturato e non strutturato dipende esclusivamente
dalle caratteristiche che il sistema da sviluppare presenta.
1.4 Aree di applicazione
I sistemi P2P, attualmente, hanno diverse aree di applicazione:
8 File-Sharing: per la condivisione di file, soprattutto file musicali e film.
Alcuni sistemi di questo tipo sono: Emule, BitTorrent, Gnutella, ecc.;
8 Griglie Computazionali (GRID): [44] per la costruzione di reti di calcolo
accessibili a tutti in cui vengono messe a disposizione risorse di vario genere:
computer, memorie, servizi, ecc. Alcuni sistemi di questo tipo sono: Globus,
Legion, Condor, ecc.;
8 Collaborazioni interattive: per la creazione di comunità di utenti che hanno
interessi in comune. Esempi di applicazioni di questo tipo sono: Groovem
Buzpad, WuWu, ecc.
In futuro, si prevede l'utilizzo delle reti P2P per la diffusione di elevati flussi di dati
generati in tempo reale, come per esempio programmi televisivi o film. Questi
programmi si basano sull'utilizzo delle banda di trasmissione di cui dispongono i singoli
utenti e la banda viene utilizzata per trasmettere agli altri fruitori il flusso dati. Questa
tipologia di programmi in linea di principio non richiede server dotati di elevate
prestazioni, dato che il server fornisce i flussi video a un numero molto limitato di
utenti, che a loro volta li ridistribuiscono ad altri utenti.
Capitolo 1 – Reti Peer-to-Peer
- 8 -
1.5 Security e Privacy
I computer che fanno parte di una rete P2P, possono essere soggetti a problematiche
di security e privacy [37]. Per la stessa filosofia del P2P quasi tutti i programmi di file-
sharing richiedono per la sopravvivenza del sistema di avere sul proprio computer dei
file condivisi e che quindi possano essere a disposizione degli utenti che ne fanno
richiesta. Questo implica, da un lato la condivisione di un'area del disco sulla quale
mettere i file a disposizione, dall'altro consentire il libero accesso ad alcune porte del
computer. Già di per sé questo porta ad avere un aumento dei problemi di security, in
quanto chiunque ha la possibilità di entrare su quelle porte. Se poi si considera l'enorme
incremento degli utenti e l'utilizzo di linee a banda larga, ormai alla portata di tutti,
questi problemi, che una volta potevano essere trascurabili, diventano prioritari. Ciò
rende fondamentale l'utilizzo di sistemi di difesa come antivirus, firewall, programmi di
pulizia dei file di registro e di rimozione degli agenti infettivi: virus, spyware, trojan o
malware. Il migliore aiuto che si può dare a questi sistemi di difesa è costituito dalla
propria cultura informatica che consente di riconoscere ed evitare l'introduzione nel
proprio computer di questi agenti, invece di scaricarli incautamente da altri utenti del
P2P. A volte il diritto alla riservatezza può nascondere l'azione di chi, non avendo
interesse allo sviluppo del P2P o ritenendosi addirittura danneggiato da esso, oppure per
semplice vandalismo, mette intenzionalmente in condivisione file infetti, corrotti o non
corrispondenti a quanto dichiarato.
È fondamentale poi, a salvaguardia della privacy, la propria attenzione nell'evitare di
condividere porzioni di disco nelle quali incautamente sono stati depositati dati
personali o aziendali (nel caso di chi utilizza il computer dell'ufficio), riferimenti a conti
correnti o a password.
Capitolo 1 – Reti Peer-to-Peer
- 9 -
1.6 Controversie legali
Le reti P2P hanno fatto nascere diverse controversie legali [37], essendo che i file
maggiormente condivisi in queste reti sono gli mp3, o file musicali, e i DivX. Questo ha
portato molti, soprattutto le compagnie discografiche e i media, ad affermare che queste
reti sarebbero potute diventare una minaccia contro i loro interessi e il loro modello
industriale. Di conseguenza il P2P divenne il bersaglio legale delle organizzazioni che
riuniscono queste aziende.
Per esempio, il servizio di Napster, come accennato prima, venne chiuso per una
causa intentata dalla RIAA. Sia la RIAA che la MPAA spesero ingenti quantità di
denaro al fine di convincere i legislatori ad approvare restrizioni legali. La
manifestazione più estrema di questi sforzi risale al gennaio 2003, quando venne
introdotto, negli U.S.A., un disegno di legge dal senatore della California Berman nel
quale si garantivano, al detentore del copyright, i diritti legali per fermare i computer
che distribuivano materiale tutelato dai diritti d'autore. Risale, invece, al 2004 la Legge
Urbani nella quale viene sancita la possibilità di incorrere in sanzioni penali anche per
chi fa esclusivamente uso personale di file protetti.