Introduzione Le persone comunicano Forse è davvero la cosa più difficile argomentare dei giorni che stiamo vivendo soprattutto se
guardiamo all'evoluzione IT ed ICT. Sono davvero tanti i fattori che partecipano e sono tutti
intrecciati fortemente tra essi. Basti pensare a quanto il mondo sia stato cambiato dalla rete
internet, che a meno di ambiguità ravveduta chiameremo talvolta solo rete. Forse questa è la
vera rivoluzione del nuovo millennio. Attraverso la rete, quasi tutte le abitudini e la socialità
delle persone sono cambiate. Non credo sia possibile affermare oggi, se tali cambiamenti
siano reversibili oppure non lo siano, sicuramente ora sono galoppanti e non c'è alcun segnale
che possa permetterci di immaginare un fenomeno di regressione; per intenderci: abbandonare
la mail per la lettera di carta. Restando su tale esempio, possiamo però affermare che l'avvento
della tecnologia ha in parte fatto sparire alcune forme di comunicazione quali la lettera ,
infatti, essa non è più usata moltissimo per comunicazioni affettive. Essa può essere utilizzata
quando, oltre il suo contenuto scritto, la scelta del mezzo aggiunge ulteriori informazioni. Si
potrebbe sottolineare che già il telefono avesse provveduto a tale fenomeno ma dall'avvento
della mail (sopratutto quella certificata) ha ridotto fortemente la mole delle lettere di carta
spedite. È ragionevole chiedersi: perché le persone hanno scelto la mail? Le risposte
cadrebbero a valanga: è più rapida, tutti ormai hanno un indirizzo di posta gratuito, da quasi
ogni terminale mobile è possibile mandare mail, arrivano quasi in tempo reale, il costo è
ridotto, ecc.... Già dal solo esempio della mail si può capire come la possibilità di comunicare
in maniera così veloce è ottenuta solo a valle di innumerevoli sforzi in diversi settori.
Proviamo a guardare un po' dall'interno, consideriamo la risposta: “è più rapida”. Per avere un
servizio mail di tale tipo, bisogna avere una rete (internet appunto) efficiente ed efficace, per
raggiungere tale risultato bisogna avere un certo livello di crescita economica che abbia
permesso ad aziende di settore ICT di investire e guadagnare, come pure avere la possibilità di
innescare delle economie di scala in grado di abbassare i costi di prodotto e di servizio. Ma
parlare di economie di scala significa avere la possibilità di un consistente mercato di molti
utenti in grado di acquistare prodotti (le schede per connettersi ad internet) e servizi (servizio
di connessione a pagamento fornito da un ISP).
8
Anche le altre risposte sono facilmente ascrivibili al meccanismo a catena appena descritto.
Potremmo pensare, a questo punto, di aver dato un interessante e forse anche esauriente
piccolo spunto per capire come sia possibile che una determinata evoluzione possa avvenire,
in realtà non basta. Restando sempre sul caso mail , essa ha funzionato bene perché le persone
hanno sempre avuto l'esigenza di comunicare con i propri simili; attualmente la disgregazione
sociale che viviamo soprattutto in Italia, ha portato alla ribalta il mondo degli animali
domestici con cui molte persone surrogano i rapporti inter-umani non più soddisfacenti ai fini
dell'espressione della propria interiorità. Quindi sia tra persone, sia tra persone ed animali o
cose, di certo l'uomo vuole comunicare e tale comunicazione se avviene in tempi brevi, sarà
percepita come efficiente ed efficace e quindi prescelta. Al fine di comprendere e sottolineare
quanto sia forte l'esigenza di comunicare basti pensare al successo più che straordinario dei
social network; luoghi virtuali capaci di rendere noto ad un numero variabile e scelto di
persone informazioni che un individuo vuole condividere con esse, quindi, in qualche modo
abbiamo, di nuovo, comunicazione.
Possiamo a questo punto dire, con una certa serenità, che le evoluzioni della società vengono
guidate da esigenze sociali, più o meno naturali: si pensi al marketing ed all'induzione di
bisogni, dal contesto economico che permette agl' individui di accedere a prodotti e servizi ed
infine dalla tecnologia e la sua ricerca che viene spinta ora in una direzione ora nell'altra. Il
successo degli sforzi di ricerca tecnologica portano, usualmente, ad una gratificazione forte ed
esponenzialmente amplificata dei bisogni che hanno innescato la catena prima descritta.
Sebbene abbiamo presentato una sorta di descrizione a catena in cui gli eventi avvengono a
compartimenti separati, in realtà tutto avviene in maniera estremamente graduale, ma non
necessariamente lenta. Inoltre, ogni periodo offre una certa quantità di soluzioni tecnologiche
al soddisfacimento di un'esigenza, ma tra esse, solo alcune raggiungeranno larga diffusione ed
esse permetteranno una qualche forma di evoluzione, che significherà soddisfare del tutto o in
parte un'esigenza fondamentale, ma a loro volta innescheranno altre esigenze. Ad esempio
l'esigenza di comunicare è stata, nel corso, dei millenni soddisfatta in vario modo: il suono, la
voce, le parole, i segni grafici per raffigurare e rappresentare la realtà visibile, i segni grafici
per rappresentare suoni e parole pronunciate a voce. Questi mezzi di comunicazione, la parola
scritta e parlata con aggiunta dei disegni, hanno sicuramente soddisfatto l'esigenza di
informare altre persone circa un qualcosa della vita reale, come potrebbe essere la pericolosità
di un animale. Una volta consolidata tale “tecnologia”, le medesime parole scritte o parlate ed
9
i disegni hanno permesso di comunicare anche pensieri più o meno astratti o elaborati. Quindi
la parola ha soddisfatto un'esigenza ma ha innescato delle nuove più raffinate: la
comunicazione del pensiero e magari anche delle sensazioni. Così è accaduto anche nel
mondo attuale: il testo della mail non è bastato più solo ai ricercatori del CERN, sono arrivate
le immagini che aiutano a comunicare in maniera rapida pensieri ed emozioni. I social
network hanno accelerato la comunicazione e sopratutto hanno permesso una forma di
comunicazione multicast (comunicazione multicast = comunicare a molti ma non a tutti) tra le
persone, che in aggiunta, innesca relazioni paritetiche. Se qualcuno posta una frase su di un
social network, un suo amico può in maniera paritetica rispondere, commentare, esprimere la
sua frase al pari di tutti gli altri. Quindi possiamo dire che negli attuali social network vive un
principio di parità che lascia spazio di espressione a tutti gli appartenenti. Possiamo quindi
osservare che il dialogo alla pari riscuota un forte successo. Si osservi che la comunicazione
può avvenire con paradigma paritetico: il Dialogo, oppure con paradigma gerarchico: un
Professore insegna, un cliente ad un cameriere ordina, ecc... dei due paradigmi il primo ha
conseguenze di natura strettamente e fortemente evolutiva, il secondo basa l'evoluzione
affermando a priori il valore di chi inizia la comunicazione.
3C : Comunità – Comunicazione - Cultura Avvertiamo subito il lettore che i tre concetti sono tra loro legati, due dei quali a partire
dall'etimologia infatti sia la parola comunità che comunicazione hanno la stessa radice
linguistica. Del resto, solo attraverso la comunicazione, cioè far partecipe qualcuno di un
qualcosa, che gl'individui mettono in comune l'oggetto della comunicazione. La parola
comune ha moltissime sfumature nel suo significato, nel nostro caso la usiamo nell'accezione
di condivisione. Quindi, facendo un breve riepilogo, le persone comunicano ad esempio
parlando, esse mettono in condivisione un qualcosa che ha viaggiato attraverso la
comunicazione, ad esempio: i pensieri che hanno viaggiato attraverso le parole. Se ci
pensiamo un attimo, quando due persone parlano, solo dopo che uno dei due ha terminato un
discorso l'interlocutore l'avrà compreso e quindi entrambi condividono un pensiero esposto a
parole.
Secondo alcuni antropologi, la Cultura è una ragnatela di significati. Essi possono essere
rappresentati da parole, che possono viaggiare con il suono della voce. Quindi la
10
comunicazione agevola lo sviluppo della cultura, ed alcuni antropologi reputano il cuore della
cultura nella comunicazione.
Fatta questa premessa risulta chiaro come le grandi possibilità di comunicare che la tecnologia
mette a disposizione possono essere una grande opportunità per lo sviluppo culturale sul
pianeta. Una delle massime espressioni di messa in comune attraverso la comunicazione è il
mondo dello scambio di risorse in modalità paritetica: peer to peer. Non bisogna dimenticare
che attraverso una comunicazione paritetica le persone riescono a mettere in comune pensieri,
significati e concetti, che al procedere del dialogo si interrelano e formano cultura, essa sarà
la base per nuove comunicazioni, nuovi concetti una nuova cultura.
Prima di procedere oltre vale la pena sottolineare che i concetti legati ad un’informazione non
sono qualcosa da relegare al mondo umanistico, come se il sapere fosse ottusamente rinchiuso
in compartimenti stagni. Infatti, la base da cui partire per un attacco informatico è la
comprensione della comunicazione tra due entità di rete informatica, al fine di comprenderne
gli aspetti necessari all’individuazione di punti deboli del sistema. Un pacchetto TCP ma
anche un beacon, possono essere una fonte preziosa di informazioni se adeguatamente
contestualizzati e compresi. Tutte le informazioni che viaggiano in rete sono in qualche modo
riconducibili al modo con cui l'uomo percepisce il mondo e come lo comunica ai propri simili.
Non è difficile trovare protocolli che funzionino in maniera del tutto simile al comportamento
umano o che da esso prendono esempio, spunto o idea.
Assunto il ruolo cardine della comunicazione nella vita dell'uomo risulta facile riconoscere
che la stessa internet può essere interpretata come una delle massime espressioni di questo
bisogno. Il lavoro che segue guarda al mondo delle architetture peer to peer perché capaci di
offrire delle soluzioni tipicamente richieste dal mondo dell' IT ed ICT permettendo di andare
in contro all'esigenza di comunicazione di cui internet è oggi interprete. È attualmente molto
diffusa l'architettura P2P per lo scambio di file ma anche per fare streaming in near real-time.
Per farsi una vaga idea di quanto le architetture P2P siano in realtà diffuse nel mondo basti
pensare che la ben nota rete Skype, sebbene non sia uno standard aperto, usa un paradigma di
tipo P2P. La rete Kademlia basata su DHT è un altro eccellente esempio della possibilità di
ottenere applicativi (emule) per lo scambio P2P di file. Fino ad oggi lo sviluppo e l'uso di
architetture P2P è stato funzionale ad un contesto nel quale non si sarebbe potuto fare
diversamente, tale situazione però non ha stimolato molto gruppi industriali e di ricerca ad
11
investire molte energie in questo settore. I Workgroup presentati in questo testo sono tra i più
attuali al momento in cui scriviamo, essi sono dei draft appena licenziati dall'ultimo meeting
dell'IETF: novembre 2010.
Partiremo da un'inquadratura del mondo P2P come specializzazione di architetture di Sistemi
Distribuiti per seguire con la presentazione di proposte (draft) di Workgroup dell' IETF
riguardo al nostro argomento di interesse. Partiremo dall'implementazione in un'architettura
P2P del protocollo SIP; sebbene sia un lavoro un po' datato: anno 2006, esso ci aiuterà ad
avere uno sguardo complessivo su come e quanto il mondo delle architetture P2P si stia
evolvendo. Coerentemente quindi, tratteremo RELOAD, un protocollo che per modularità e
funzionalità sembra essere quasi un middleware. Presentata tale proposta, parleremo dello
streaming, ambito in cui molto è usato il paradigma P2P e presenteremo il lavoro del gruppo
IETF PPSP : P2PStreamingProtocol. Tale gruppo propone un protocollo che s'interfacci tra il
tracker ed i nodi paritetici ed anche tra i nodi paritetici per lo scambio dello straming.
Siccome il le architetture in P2P per lo streaming hanno bisogno di una certa disponibilità di
risorse nella rete, allora presenteremo il lavoro del gruppo dell'IETF ALTO, Application
Level Traffic Optimizzation che si pone l'obiettivo di ottimizzare il traffico di rete anche in
presenza di traffico P2P, che stando alle statistiche citate in una delle fonti, il traffico P2P nel
BackBone di internet è in continua crescita.
A valle di tale panoramica ed in virtù delle caratteristiche proprie del mondo P2P parleremo
di possibili scenari futuri in cui architetture P2P possano giocare un ruolo importante al punto
da dover iniziare a pensare ad una qualche forma di standard che ne permettano
l'inquadramento lo sviluppo ed il controllo di tali architetture.
12
Capitolo 1
Sistemi Distribuiti e P2P
Potrebbe non essere facile distinguere in maniera netta e senza equivoci un sistema distribuito
da uno p2p, sopratutto se fortemente e frequentemente paragonato al paradigma client server.
Per sgombrare il campo da equivoci, affermiamo subito che il p2p è una delle possibili
declinazioni del concetto di sistema distribuito, accentuando alcune caratteristiche e
penalizzandone altre, quindi, se è vero quanto affermato, devono esserci caratteristiche tipiche
dei sistemi distribuiti da ritrovare nei sistemi p2p. Esattamente questa sovrapposizione ed
intreccio di concetti può rendere un po' difficile separare gli aspetti tipici di un sistema p2p da
uno distribuito. Inoltre ci sono delle requirements attribuibili ad un sistema p2p che non sono
ancora soddisfatte, ad esempio un bootstrap p2p.
Il più grande legame tra sistemi distribuiti ed architetture p2p è la possibile coincidenza degli
obiettivi: sharing of resources (condivisione delle risorse) . Ovviamente il concetto di risorsa
sarà chiarito e dettagliato più avanti.
1.1 Sistema Centralizzato
Definiamo sistema centralizzato come segue: Centralized systems represent single-unit
solutions, including single- and multi-processor machines, as well as high-end machines,
such as supercomputers and mainframes. [1]
1.2 Sistema Distribuito
In questo paragrafo tratteremo la definizione di sistema distribuito al fine di evidenziarne
alcuni aspetti che troveremo anche nelle architetture p2p.
Definiamo sistema distribuito, un sistema nel quale i componenti che lo costituisco sono
collocati in una rete, e si coordinano tra loro attraverso lo scambio di messaggi, al fine di
portare a termine un compito, sostanzialmente un'elaborazione, detta job o task.
13
Per portare a termine un task/job faremo uso di risorse. Definire il concetto di risorsa non
sempre è facile farlo in maniera assoluta, a meno di aver fatto una lunga serie di precedenti
definizioni che permettano di produrre una definizione non ambigua di tale termine. In realtà
la comprensione del concetto di risorsa non è molto difficile se si considera il contesto in cui
si svolge la discussione. Ad esempio, dei dati intesi come numeri o caratteri e relative forme
strutturate come ad esempio un indirizzo, possono essere intesi come una risorsa. Avere a
disposizione un servizio significa avere a disposizione una risorsa. Un'azione elaborativa è
eseguita su di un calcolatore e quindi esso stesso, qualora disponibile, diventa una risorsa. Se
immaginiamo una rete di calcolatori che hanno capacità di eseguire un solo servizio e
collegati tra loro con una usuale rete di computer, allora possiamo chiamare tali calcolatori:
nodi della rete ed ognuno di essi è una risorsa. Anche la rete stessa potrebbe essere
interpretata come una risorsa, basta immaginare un calcolatore connesso a più reti eterogenee,
con ognuna di esse scambia dati, e tutte sono necessarie. Se una di queste reti venisse meno il
calcolatore perderebbe una risorsa. Risulta chiaro che il concetto di risorsa, così come lo
abbiamo definito necessita di una contestualizzazione al fine di comprenderne il significato
più proprio.
La definizione data di sistema distribuito introduce una serie di caratteristiche peculiari di tali
sistemi: la concorrenza , l'assenza di un clock globale , fallimenti indipendenti dei componenti.
Alcuni autori molto noti nella letteratura dei sistemi distribuiti, Colouris ad esempio,
affermano che il fine ultimo per la costruzione di un sistema distribuito, il task o job sopra
menzionato, è la condivisione delle risorse [Colouris cap I° pag1].
In realtà tale vincolo potrebbe essere generalizzato con l'assunzione di un job a scelta. Esempi
a tale riguardo potrebbero essere il CSMA/CA di IEEE 802.11 oppure EY-NPMA di
Hyperlan-1. Le sigle appena citate sono dei protocolli realmente implementati e funzionanti
(eccezion fatta per EY-NPMA che non ha avuto un riscontro industriale quindi presente,
forse, solo in qualche prototipo sperimentale) che regolano l'accesso al canale in maniera
distribuita. Parlare di un protocollo significa parlare di un software che lo realizza, che
funziona su nodi della rete. In parole povere, i nodi di una rete IEEE 802.11 usano il
CSMA/CA per accedere al canale. Se assumiamo che il CSMA/CA sia un software, allora,
ogni nodo della rete fa girare tale software per stabilire se esso ha il diritto di accedere al
14
canale. Tale elaborazione avviene in maniera indipendente dagli altri nodi ed asincrona. Si
potrebbe obiettare che il canale wireless sia condiviso, ma, il fine di CSMA/CA non è
condividere la risorsa canale ma evitare collisioni. Attraverso l'implementazione software del
protocollo CSMA/CA ogni nodo è responsabile del proprio comportamento per evitare che ci
siano collisioni sul canale.
Le problematiche tipiche per la costruzione di un sistema distribuito sono: l'eterogeneità dei
componenti che costituiscono il Sistema Distribuito (SD), l'uso di standard aperti che
permettano di aggiungere o rimpiazzare componenti, sicurezza, scalabilità, gestione dei
fallimenti, concorrenza e trasparenza.
Come si evince dalla figura, l'architettura a tutti nota: client-server è un'architettura distribuita
in quanto permette lo sharing (quindi la condivisione, quindi la messa in comune ) di ciò che
usualmente chiamiamo pagina web. In realtà avviene lo sharing dei contenuti che attraverso
l'”oggetto” pagina web viene visualizzato. In queste ultime righe abbiamo nascostamente
fatto riferimento all'informazione in senso astratto (il contenuto) ed il mezzo attraverso il
quale essa diventa fruibile ad una persona; questo è un argomento fuori tema sul quale non
approfondiamo. Sebbene non sia questo il caso di approfondire, corre l'obbligo di
puntualizzare che nel caso di architettura client server, avviene una forma di condivisione del
15
codice sorgente tra l'entità ( o le entità server) ed il client. Queste differenze però ci
porterebbero lontano e le tralasciamo davvero.
1.3 Modelli Architetturali
Prima di andare oltre dobbiamo introdurre il concetto di modello architetturale: un modello
architetturale definisce il modo con il quale i componenti di un sistema interagiscono l'uno con
l'altro ed in che modo essi sono mappati sulla sottostante rete di computer. Quindi nel parlare
di client-server dobbiamo precisare che: una possibile realizzazione di un sistema distribuito
può essere ottenuta attraverso un'architettura (nota anche con il termine paradigma quando si
vuole porre 'accento sulle regole che gestiscono le due entità) client-server; non ultimo anche
un'architettura (paradigma) peer-to-peer (p2p). Al fine di fornire ulteriori esempi, anche i
FileSystem distribuiti sono architetture orientate a realizzare dei sistemi distribuiti.
Siccome la definizione di un modello architetturale definisce come i componenti interagiscono
allora attraverso la definizione di un modello architetturale definiamo anche le azioni
elaborative a carico dei nodi. Chiamiamo genericamente, queste azioni elaborative: servizi
(talvolta funzionalità). Definendo delle funzionalità/servizi stiamo parlando di software e
quindi le azioni eseguite, ad esempio da un server, sono da considerarsi come un processo che
gira su di una macchina calcolatore, necessariamente dotata di una forma di Sistema
Operativo.
Quanto appena detto ci porta quindi alla seguente figura:
16
Application & Service M id d le w a r e O p e r a t in g S y s t e m N e t w o r k
H a r d w a r e