Università degli Studi di Napoli Federico II Facoltà di Scienze MM.FF.NN. Corso di Laurea in Informatica Tesi Sperimentale di Laurea Triennale Modelli di Network Sharing: la rete Netsukuku applicata a dispositivi mobile Relatori Candidato Alessandro Genovese Prof. Guido Russo Matricola: 566/1364 Anno accademico 2010/2011 Alla mia famiglia. "Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la inventa." Indice 1 Introduzione .................................................................................................................5 2 Attuale tecnologia mobile............................................................................................7 2.1 Introduzione: storia dell'architettura dei dispositivi mobile.............................................7 2.2 La rete 4G.........................................................................................................................9 2.2.1 Introduzione..............................................................................................................9 2.2.2 Le innovazioni in concreto.....................................................................................13 2.3 Wimax............................................................................................................................14 2.3.1 Introduzione............................................................................................................14 2.3.2 Limiti del WiMax...................................................................................................17 2.3.3 Considerazioni........................................................................................................18 3 Reti Mesh....................................................................................................................19 3.1 Introduzione....................................................................................................................19 3.2 Algoritmi di routing in reti Mesh...................................................................................21 3.2.1 OLSR......................................................................................................................21 3.2.2 B.A.T.M.A.N..........................................................................................................23 3.2.3 DYMO....................................................................................................................25 3.3 Mesh Network Application : MANET..........................................................................27 3.3.1 Applicazioni della rete MANET.............................................................................29 3.3.2 La sicurezza delle reti MANET..............................................................................30 3.3.3 Requisiti di sicurezza di una rete MANET.............................................................32 3.3.4 Il cooperative caching.............................................................................................36 4 Netsukuku...................................................................................................................38 4.1 Introduzione sull'attuale architettura internet.................................................................38 4.2 La rete Netsukuku..........................................................................................................40 4.2.1 Introduzione............................................................................................................41 4.2.2 Definizioni..............................................................................................................42 4.2.3 Struttura gerarchica di Netsukuku..........................................................................43 4.3 Algoritmo di routing di Netsukuku ( QSPN ).................................................................45 4.3.1 Differenze con gli attuali protocolli di gestione.....................................................46 4.3.2 Definizioni del routing in Netsukuku.....................................................................47 4.3.3 QSPN v2.................................................................................................................48 4.3.4 Propagazione della mappa......................................................................................51 4.3.5 Procedura iniziale di assegnazione di un nodo ad un gruppo.................................53 4.3.6 Nuovo nodo: connessione a Netsukuku.................................................................54 4.3.7 Transizione di un nodo: passaggio da un Gnodes all'altro......................................54 4.3.8 Connessioni interne ad un gruppo..........................................................................55 4.3.9 Gruppi compatti......................................................................................................56 4.3.10 Identificazione dei nodi........................................................................................56 4.3.11 Mappe gerarchiche................................................................................................58 4.3.12 QSPN v2...............................................................................................................59 Alessandro Genovese 566/1364 Pagina 3 di 109 4.4 Tracer Packet..................................................................................................................61 4.4.1 Proprietà di un tracer packet...................................................................................61 4.4.2 Tracer Packet Acyclic ( ATP ) e il Tracket Packet Continuous CTP .....................62 4.5 ANDNA..........................................................................................................................63 4.5.1 Un esempio di richiesta d'inserimento di un nuovo nodo ......................................63 4.5.2 Gestione degli indirizzi IP......................................................................................65 4.5.3 Considerazioni........................................................................................................67 5 La rete Neurale...........................................................................................................68 5.1.1 Neurobiologia.........................................................................................................70 5.1.2 Il modello matematico delle reti neurali.................................................................73 5.1.3 Apprendimento di una rete Neurale........................................................................76 5.1.4 L'apprendimento supervisionato.............................................................................79 5.1.5 L'apprendimento con rinforzo................................................................................80 5.1.6 Intelligenza Artificiale............................................................................................81 6 Approccio Proposto....................................................................................................84 6.1 Introduzione....................................................................................................................85 6.1.1 La soluzione proposta.............................................................................................86 6.1.2 Creazione e aggregazione di informazioni associative...........................................88 6.1.3 Intelligenza Artificiale nei nodi..............................................................................89 6.1.4 Ricerche in merito all'AI sui mobile......................................................................92 6.2 Privacy ...........................................................................................................................93 7 Applicativo ................................................................................................................95 7.1 Framework di sviluppo : Titanium.................................................................................96 7.2 Codice Sviluppato .........................................................................................................97 7.2.1 Titanium..................................................................................................................97 Alessandro Genovese 566/1364 Pagina 4 di 109 1 Introduzione Il progredire dei moderni sistemi di trasmissione cellulare ha reso sempre più evidente l'importanza di poter riuscire a gestire quantità di informzioni elevate; pertanto assistiamo un modernamento e un superamento dei vecchi sistemi symbian con gli attuali sistemi operativi iOS, Android. L’utilizzo principale del dispositivo cellulare, in base a statistiche della Gartner, ha come utilizzo principale sempre le telefonia, e l utilizzo di sms; in ultimo ma non per questo meno importante è la navigazione tramite browser. Si porta in evidenza, pertanto, questo dato di fondamentale importanza che porta all'utilizzo e all'uso degli attuali cellulari come un'estensione dei computer desktop. Un problema comune, resta sempre più spesso la ricezione del segnale, nonostante la copertura nazionale quasi del 75% grazie ad innumerevoli ripetitori ad alta frequenza sempre più presenti sui tetti delle nostre città. L’obiettivo primario del progetto è quello di permettere la creazione di una rete cellulare topologicamente e strutturalmente diversa da quella odierna che permetta la condivisione del segnale; si è analizzato approfonditamente un protocollo pensato, creato e sviluppato interamente in Italia da pochi anni ad opera di un ragazzo di Catania e dal suo gruppo di hacker, Antonio lo Pumo, che ha ipotizzato e creato una rete anarchica, decentralizzata e autonoma chiamandola Netsukuku. Questo tipo di rete rende possibile la creazione di una nuova internet grazie all'utilizzo di un sistema non centralizzato con le caratteristiche di autonomia di ricerca e di condivisione del segnale permette una decentralizzazione dell'intera strutta topologica di Internet. I vantaggi per questo tipo di tecnologia sono notevoli e possono essere implementati anche in paesi in via di sviluppo abbattando le barriere d'ingresso per gli investitori ed aumentandone conseguentemente la concorrenza favorendo così la crescita economica, Alessandro Genovese 566/1364 Pagina 5 di 109 oltre che dare la possibilità di poter dare accesso all'informazione a tutte le persone in maniera democratica. Il mio studio di tesi si basa sull'idea che questa struttuta topologica possa essere implementata anche su dispositivi mobili, rendendo questi ultimi in grado di interagire con l'ambiente esterno grazie all'intelligenza artificiale basando l'apprendimento con il metodo del reinforcement learning e modificando anche in parte l'algoritmo di Netsukuku. Il primo stadio di sviluppo, proposto come tesi di laurea è stato quello di ipotizzare la creazione di una nuova topologia di rete mobile e di sviluppare nel contempo stesso una connessione tra due dispositivi cellulare basati su qualsiasi piattaforma presente sul mercato, adottando come strumento di sviluppo Titanium; l'applicativo ricerca un dispositivo tramite connessione wifi, si connette creadone una connessione sincrona. Successivamente viene scelto un numero di cellulare, inviando questo numero all'altro dispositivo che ne effettua successivamente la telefonata. Gli sviluppi immediatamente successivi, per poter creare in laboratorio un primo prototipo, saranno quelli di trasferire il flusso di stream dati audio ad un altro cellulare e successivamente di creare una piccola rete mobile Netsukuku che permetta l'implementazione e il testing dell'intelligenza artificiale. Alessandro Genovese 566/1364 Pagina 6 di 109 2 Attuale tecnologia mobile 2.1 Introduzione: storia dell'architettura dei dispositivi mobile L’evoluzione dei sistemi digitali per la comunicazione mobile si può delineare come segue, in modo molto sintetico: sistemi di seconda generazione ( 2G ): GSM/DCS ( Global System for Mobile comunication/Digital Cellular System) in Europa, IS-136 ( o D-AMPS, Digital AMPS) e IS-95 negli USA, PDC ( Personal Digitial Cellular ) in Giappone che operano a commutazione di circuito e per la trasmissione dati sono sistemi con limitata capacità ( fino a 9600 bit/s nel GSM ). In pratica in una rete a “commutazione di circuito”, quando una sessione di comunicazione viene aperta, si stabilisce un contatto fra la parte chiamante e quella chiamata. La rete telefonica PSTN, che è di questo tipo, garantisce la qualità del servizio (QoS) dedicando alla conversazione un circuito fullduplex con una larghezza di banda 64 KHz. Tale larghezza di banda rimane inalterata indipendentemente dal fatto che le parti siano in conversazione attiva o in silenzio. Nella tecnologia a "commutazione di circuito" la capacità del canale trasmissivo è interamente dedicata ad un solo tipo di trasmissione. Per questo motivo non possiamo utilizzare questa linea per telefonare e contemporaneamente navigare in Internet. Per fare entrambe le cose dobbiamo avere installata una linea (rete) particolare, ad esempio una linea ISDN o ADSL. sistemi di generazione 2+ ( 2G+ ): GPRS, in Europa, IS-136B e IS-95B negli USA; Alessandro Genovese 566/1364 Pagina 7 di 109 introducono la possibilità di effettuare una comunicazione dati a pacchetto tramite un terminale mobile ( in particolare per l’accesso ad internet ), con velocità di trasmissione sensibilmente più alte del GSM ( in teoria fino a circa 170 Kbit/S nel GPRS ) e con tariffazione a volume di traffico invece che a tempo; utilizzano in modo più evoluto le tecniche di comunicazione radio dei sistemi 2G; sistemi di terza generazione ( 3G ): UMTS in Europa e Giappone, CDMA2000 ( o IS-95C ) negli USA. Questa nuova tecnologia introduce un’interfaccia radio completamente nuova ( W-CDMA, Wideband Code Division Multiple Access ), che consente trasmissione dati a velocità molto superiori ( fino a 2Mbit/s ) rispetto a quella offerta dalla generazione precedente garantendo lo sviluppo di una serie di servizi paralleli. Per offrire prestazioni assimilabili a quelle di un sistema 3G è prevista l’introduzione di una nuova interfaccia radio denominata EDGE ( enhanced Data rated for GSM and IS-136 Evolution ); i relativi sistemi vengono denominati EGPRS/GSM ( Enhanced GPRS/GSM ) e UWC IS-136 ( Universal Wireless Communications ). Fig. 1 - Topologia dell’attuale rete 3G Alessandro Genovese 566/1364 Pagina 8 di 109 Fig. 2 – Evoluzione degli standard 2.2 La rete 4G 2.2.1 Introduzione L'odierna tecnologia disponibile per tutti i dispositivi mobile si attesta attualmente ad una frequenza di picco in download di 100Mbps in e in upload a 50Mps sotto il nome di 3GPP LTE ( Long Term Evolution ). Attualmente si sta sperimentando presso i laboratori di tutto il mondo il nuovo protocollo 4G che via via è in fase di definizione e pronto per essere "consumato" dalla massa. La comunicazione mobile comprende due fasi: accesso alla rete mobile, e l'accesso ai servizi mobili. Tradizionalmente, queste due fasi sono tutti controllati da un operatore in modo chiuso e proprietario. Nell'era 4G mobile, l'accesso ai servizi di telefonia Alessandro Genovese 566/1364 Pagina 9 di 109 mobile saranno evoluti ad un nuovo tipo di architettura detta Open Mobile Cloud. In questo modo, tutte le industrie non wireless, come Google, Microsoft, Oracle, SAP, GM, Bank of America saranno in grado di fornire servizi ai propri utenti di rete cellulare, mentre tutt oggi l'accesso alla rete mobile è ancora controllato dagli operatori tradizionali senza fili, come AT&T, Verizon, T-Mobile e China Mobile. Naturalmente, gli operatori sono molto riluttanti a seguire questa tendenza, ma per gli utenti mobili e per il futuro movimento globale, è solo una questione di tempo prima che accada. Il dispositivo mobile sarà dotato di un'architettura aperta al fine di convergere a tecnologie di trasmissione radio multiple in un unico dispositivo; gli smartphone del prossimo futuro saranno infatti basati su un'architettura aperta senza fili (OWA). Il vantaggio è anche strutturale dal punto di vista dell'architettura dell'intera rete, si pensi infatti che ogni volta che s'integrava una nuova tecnologia come quella 2g, UMTS, 3g bisogna effettuare un cambio del dispositivo mobile; invece quando si evolve nella futura rete 4G si evolverà essendo basata su uno standard wireless, non ci sarà bisogno di cambiare il proprio dispositivo cellulare. Sulla base di questa piattaforma OWA, sarà possibile integrare il proprio telefono di casa, dell'ufficio e del telefono cellulare in un unico dispositivo comune il quale sarà ritenuto molto di più di un semplice telefono cellulare. In realtà, questo nuovo standard è un sistema per racchiudere nel proprio mobile una serie di servizi che oggigiorno sono separati portando il modo di comunicare attraverso internet in una mano. Inoltre adottando la tecnologia OWA qualsiasi dispositivo portatile elettronico può essere o diventare un telefono cellulare, semplicemente inserendo una scheda OWA al suo interno. Il Wireless è totalmente diverso dalle comunicazioni con cavo, e quindi il rendimento globale si basa sulle prestazioni di trasmissione il cui spettro è una delle questioni chiave e di fondamentale importanza. Alessandro Genovese 566/1364 Pagina 10 di 109 L'efficienza energetica è un altro punto critico per dispositivi mobili, come anche le interferenze con altre frequenze; sono questioni sulle quali gli sviluppatori hanno dato una risposta per permetterne la completa integrazione nel mondo reale. Infatti per anni, molto ricercatori e scienziati da ogni parte del mondo hanno contribuito con progetti governativi, alla costruzione di questo nuovo standard. Per alcuni, il 4G unifica la tecnologia cellulare con quella della wireless local area network ( WAN ) in un'unica soluzione efficiente condividendo la frequenza della banda ed incrementando la mobilità e la capacità di banda. Come il progetto 4G anche, le reti MANET ( Mobile Ad-hoc Network) sono ancora in via di definizione e di sviluppo, infatti è in corso d'opera la definizione di diversi metodi di routing sviluppato dall'Internet Engineering Task Force come ad esempio è l'Ad-hoc On-Demand Distance Vector (AODV) definita in RFC 3561 e l'Optimized Link State Routing Protocol ( OLSR ) definito nel RFC 3626 il quale definisce la capacità della rete di auto-configurarsi creando connessioni proprio fra i nodi. L'introduzione della rete MANET non è del tutto casuale infatti questo tipo di network è è una rete mesh che utilizza la tecnologia wireless esistente per connettere i diversi nodi ( o dispositivi ) della rete. Ad oggi lo standard di frequenza per la comunicazione attraverso onde radio è l'802.11a/b/g/n definito dall'IEEE la quale è correntemente utilizzata giornalmente in ufficio, a casa e in alcuni luoghi pubblici. La tecnologia 4G è statoa originariamente previsto dalla Defense Advanced Research Projects Agency (DARPA). Il DARPA ha selezionato l'architettura distribuita, end-toend di protocollo Internet (IP), e credeva in una fase iniziale in una rete peer-to-peer in cui ogni dispositivo mobile è un ricetrasmettitore e un router per altri dispositivi della rete e di eliminare la debolezza spoke-and-hub di 2G e 3G sistemi cellulari. Poiché il sistema 2.5G GPRS, sistemi cellulari hanno fornito una doppia infrastruttura: i nodi a commutazione di pacchetto per i servizi dati, e nodi di commutazione di Alessandro Genovese 566/1364 Pagina 11 di 109 circuito per le chiamate vocali. Nei sistemi 4G, l'infrastruttura a commutazione di circuito viene abbandonato, ed è prevista solo una rete a commutazione di pacchetto. Questo significa che in 4G, le chiamate voce tradizionali sono sostituiti dalla telefonia IP. Fig. 3 - Topologia della futura rete 4G Sistemi cellulari come quelli 4G consentiranno una mobilità continua, quindi un trasferimento di file non viene interrotto in caso di spostamento ma continuerà a trasferire dati da una cella ad un'altra. Il terminale mantiene anche lo stesso indirizzo IP mentre si muove, nel senso che un server di telefonia mobile è raggiungibile fino a quando è all'interno dell'area di copertura di qualsiasi server. In sistemi 4G tale mobilità è prevista dal protocollo IP di versione 6 (IPv6), mentre nelle generazioni Alessandro Genovese 566/1364 Pagina 12 di 109 precedenti cellulare è stato solo fornito dal livello fisico e di protocolli di livello datalink. Oltre alla mobilità senza confini, 4G offre interoperabilità flessibile dei diversi tipi di reti wireless esistenti, come il satellite, wirelss cellulari, WLAN, PAN e sistemi per l'accesso a reti wireless fisse. La maggiore larghezza di banda a maggiore velocità di trasmissione dati consentirà agli utenti la possibilità di utilizzare video ad alta definizione e le videoconferenze attraverso dispositivi mobili. Attualmente le sperimentazioni per questo tipo di tecnologia sono ancora in corso. 2.2.2 Le innovazioni in concreto Il sistema 4G è pensato per fornire una soluzione a banda larga mobile basata tutto su indirizzi IP che permetta l'integrazione attraverso anche tecnologie wireless agli smartphones e ad altri dispositivi mobili. Le innovazioni che porterà il 4G saranno molte, qui sotto vi è riportato un semplice elenco come esempio: • basata sulla comunicazione dei pacchetto IP • velocità di trasferimento dati da un minimo di 100 Mbit/s fino a 1Gbit/s • condivisione delle risorse di rete per supportare più utenti nella stessa cella simultanemanete • lunghezza della banda tra 5 fino a 40 Mhz Alessandro Genovese 566/1364 Pagina 13 di 109 2.3 Wimax 2.3.1 Introduzione WiMAX è una tecnologia di trasmissione senza fili d'accesso a banda larga. Ha la possibilità, al pari di altre tecnologie wireless, di essere utilizzato su molti tipi di territorio (si possono utilizzare sistemi WiMAX in ambienti dall'urbano al rurale). A seconda della normativa del paese di riferimento, le frequenze usate da Wimax potrebbero essere soggette a concessione in licenza (cioè assegnate in uso esclusivo dalle istituzioni governative preposte a enti e aziende, solitamente dietro compenso) oppure trovarsi su bande "non licenziate" (cioè essere frequenze per il cui utilizzo non è necessaria licenza, ma possono essere necessarie autorizzazioni). La tecnologia supporta velocità di trasmissione di dati condivisi fino a 70 Mbit/s in aree metropolitane. La tecnologia di Wimax non richiede necessariamente visibilità ottica, ma senza di essa le prestazioni sono decisamente inferiori e la connettività ristretta ad aree limitate. Secondo i proponenti di WiMAX l'ampiezza di banda sarebbe sufficiente a supportare simultaneamente almeno 40 aziende con connettività di tipo T1 e 70 abitazioni con connettività al livello di una DSL da 1 Mbit/s. Sulla base delle aspettative sul Wimax, si prevedeva di poter fornire copertura a banda larga per un ampio raggio (fino a 50 km) da ciascuna stazione base, con la conseguente possibilità di utilizzo della tecnologia per ridurre il digital divide. I test condotti sul campo hanno però rivelato prestazioni decisamente inferiori. In particolare, da una sperimentazione della fondazione Ugo Bordoni condotta in Italia tra il 2005 e il 2006 è emerso che, sulla frequenza di 3,5 GHz in condizioni di visibilità ottica ostruita e non, le prestazioni sono accettabili per distanze di qualche chilometro, che si riducono a Alessandro Genovese 566/1364 Pagina 14 di 109 poche centinaia di metri in condizioni di assenza di visibilità ottica. Va tuttavia notato che la sperimentazione è stata condotta con un limite alla potenza massima di emissione EIRP (Equivalent Isotropically Radiated Power) di 36 dBm ovvero 4 Watt. Vi sono inoltre delle complicazioni dovute alla normativa, che varia comunque da stato a stato, che potrebbero limitare lo sfruttamento del Wimax per questi fini. [1] I proponenti sperano che questa tecnologia nel giro di pochi anni venga adottata anche per i computer portatili e per i PDA. Occorre però precisare che il vero roaming a banda larga di tipo cellulare senza fili si baserà sullo standard 802.20, peraltro compatibile con WiMAX. Fig. 4 - Topologia della rete Wi-Max Alessandro Genovese 566/1364 Pagina 15 di 109 Di seguito vengono elencate alcune tra le caratteristiche principali di WiMAX, che secondo i proponenti renderebbero lo standard WiMAX competitivo: - Flessibilità: WiMAX è in grado di supportare sistemi punto-multipunto (P-MP) e multipunto-multipunto (MP-MP, detti anche MESH). - Sicurezza: WiMAX implementa diverse tecniche di crittografia, sicurezza ed autenticazione contro intrusioni da parte di terzi. - Qualità del servizio (QoS) - WIMAX supporta 5 tipologie di qualità del servizio: Unsolicited Grant Service (UGS) per sistemi real time di dimensione fissa (es. VoIP), Real-Time Polling Service (rtPS) per sistemi real time di dimensione variabile (es. applicazioni video), Non Real-Time Polling Service (nrtPS) per flussi di dati tolleranti al ritardo (es. applicazioni FTP), Extended Real-Time Polling Service (ErtPS) simile al rtPS per flussi real time a dimensione fissa (es. VoIP con soppressione di silenzio), Best Effort (BE) per flussi di dati dove non è richiesto livello minimo di servizio. - Throughput - utilizzando lo schema di modulazione IEEE 802.16 WIMAX trasporta una grossa quantità di traffico con un alto livello di efficienza dello spettro e tolleranza ai segnali riflessi, circa due volte e mezzo superiore a HIPERLAN. - Installazione - WiMAX non richiede equipaggiamenti particolari. Un’antenna può essere sufficiente per l’equipaggiamento base di una SS. Grazie allo standard 802.16e si permettono connessioni in ambienti mobili fino a 120 km/h. Lo standard di tipo “open”, unito all’economia di scala dovuta alla produzione dei componenti WiMAX, dovrebbe ridurre notevolmente i costi per fornitori ed utenti, assicurando la copertura tra Base Station e Subscriber Station, ed elevata velocità di banda. In realtà i costi delle apparecchiature si sono rivelati decisamente più elevati rispetto a quelle necessarie per altri sistemi wireless come ad Alessandro Genovese 566/1364 Pagina 16 di 109 esempio HIPERLAN. La capacità di trasmettere attraverso territori parzialmente ostruiti (es. monti), grazie alla modulazione utilizzata, questa è una delle peculiarità del WiMAX, anche se le sperimentazioni hanno rilevato un forte condizionamento delle prestazioni in condizioni simili, e un rapido decadimento della banda. L'IEEE ha sviluppato lo standard 802.16a ed ha rilasciato l'802.16e, che non richiede che stazione trasmittente e riceventi siano in collegamento a vista, seppur con prestazioni nettamente ridotte. 2.3.2 Limiti del WiMax Come tutte le connessioni wireless, l'antenna emittente e ricevente devono trovarsi preferibilmente in linea di vista. Ciò non significa solamente che il segnale e la velocità di connessione decadono drasticamente se fra le due antenne si frappongono ostacoli, ma che lo stesso accade per il semplice verificarsi di pioggia, neve o nebbia, qualunque sia la frequenza di irradiazione del segnale e il protocollo utilizzato (il segnale è sensibile all'acqua in quanto massa che si interpone fra le due antenne trasmittenti, mentre ad esempio non risente di un forte vento). Aumentando la frequenza e migliorando i protocolli, aumenta la banda mediamente disponbile per gli utenti, ma non muta la stabilità della connessione wireless. La perdita di informazione avviene dinanzi all'aumento di una massa che si contrappone alla frequenza del segnale e diminuisce anche la potenza. Tanto maggiore è la frequenza, tanto più onde di ampiezza millimetrica portano a una perdita di segnale e di informazione davanti ai più piccoli ostacoli. La tecnologia del WiMax permette di viaggiare fino ad un massimo di 70Mbps al secondo ma come tutte le connessioni Wireless broadcast all'aumentare degli utenti connessi la frequenza di connessione diminuisce poichè il concetto è di condividere la Alessandro Genovese 566/1364 Pagina 17 di 109 portata dell'antenna ( 70 Mbps ) tra tutti gli utenti che accedono attraverso ad essa alla rete Internet. 2.3.3 Considerazioni Secondo alcuni WiMAX sostituirà l'UMTS, anche se siamo lontani da una miniaturizzazione degli apparati WiMAX tale da poterli inserire in un cellulare. Attualmente le maggiori tecnologie 3G, CDMA2000 e UMTS, offrono entrambe dei servizi che anche WiMAX metterà a disposizione degli utenti: accesso a internet a banda larga senza fili e telefonia. L'UMTS è stato anche arricchito con una funzionalità di Time Division Duplexing che rende le sue prestazioni in un certo modo comparabili con quelle del WiMAX. I sistemi cellulari di terza generazione godono del fatto che possono sfruttare in parte l'infrastruttura dei sistemi cellulari precedenti e gli utenti possono sempre contare sul fatto che, nel caso si trovino in zone in cui non sono disponibili i servizi 3G, si possono comunque avere a disposizione le funzionalità tradizionali della telefonia mobile. Certamente gli operatori che hanno pagato costose licenze per le bande dell'UMTS vorranno sfruttare appieno l'investimento e difficilmente lasceranno spazio ad altri sistemi. I sistemi cellulari di quarta generazione, con banda larga, bassa latenza e con reti completamente basate su IP (anche per il traffico vocale) rappresentano il prossimo passo per le tecnologie mobile attualmente esistenti sul mercato e comunemente utilizzate, rispettivamente con i progetti 3GPP Long Term Evolution e Ultra Mobile Broadband. In entrambi i casi, le “air interface” attuali saranno modificate, a favore della tecnica OFDMA per il downlink e diverse varianti dell'OFDM per l'uplink. Tutto questo fornirà un accesso a internet più veloce di quello del WiMAX. Alessandro Genovese 566/1364 Pagina 18 di 109 3 Reti Mesh 3.1 Introduzione Una rete Mesh è un tipo di rete in cui ogni nodo non deve solo acquisire e diffondere i propri dati, ma ha anche la funzione di ridirezionare l'intero traffico e quindi fungere da router per tutti gli altri nodi della stessa rete. Quando si utilizzano tecniche d'instradamento dei pacchetti dati (routing), si deve necessariamente tenere ben presente che il messaggio si propaga lungo un percorso, saltando da un nodo all'altro fino al raggiungimento della destinazione; per assicurare la disponibilità tutti i suoi percorsi, le rete in oggetto deve consentire connessioni con tutta la rete e deve essere continuamente autoconfigurante in caso di broken link. Una rete mesh i cui nodi sono tutti collegati tra di loro è una rete completamente connessa. Reti di questo tipo è ad esempio la MANET ma questa in più ha a che fare con i problemi introdotti dalla mobilità dei nodi, poichè specificamente pensata alla connessione di nodi in un'ambiente in continua mutazione come quello dei dispositivi mobile. Le reti wireless mesh sono originariamente sviluppate per applicazioni di scopo militari. Negli ultimi dieci anni le dimensioni, costi e requisiti di alimentazione della radio è diminuita, permettendo a più radio di essere inserirte all'interno di ogni dispositivo che agisce come un nodo della rete. Nel corso degli anni si è teorizzato anche l'utilizzo della teoria dei giochi per permettere di analizzare le strategie per l'allocazione delle risorse e l'instradamento dei pacchetti. Alessandro Genovese 566/1364 Pagina 19 di 109 I benefici delle reti Mesh sono la struttura auto organizzativa, una bassa manutenione, un robusto e dinamico algoritmo di rintracciamento dei nodi ( routing ) anche in caso di broken link; d'altro canto esistono anche degli svantaggi, uno fra tutti è il traffico addizionale che serve per mantenere in comunicazione fra loro i singoli nodi della rete. Fig. 5 - Topologia di una rete Mesh Alessandro Genovese 566/1364 Pagina 20 di 109 3.2 Algoritmi di routing in reti Mesh Il termine che indica l'instradamento dei pacchetti di informazione in una rete è detto routing, ovvero una serie di protocolli relativi allo strato network che permettono ai router di scambiarsi informazioni tra loro al fine di costruire delle tabelle di routing che permettano il corretto instradamento dei pacchetti verso la giusta destinazione. Esistono differenti tipologie di routing nelle reti mesh, le quali vengono qui successivamente riportate soltanto per il fine di un miglior apprendimento della tesi in oggetto: – OLSR – B.A.T.M.A.N. – DYMO 3.2.1 OLSR OLSR (Optimized Link State Routing) è un protocollo proattivo ed è quindi adatto a topologie particolarmente mobili in cui i nodi comunicano molto tra loro creando molti cammini diversi. Questo protocollo è un’ottimizzazione per le Manet del classico algoritmo link state (utilizzato in protocolli per reti cablate come OSPF ). Il concetto chiave alla base dell’ottimizzazione effettuata è quella dei multipoint relays (MPR), ovvero l’insieme di nodi vicini ad un hop che permettono ad un nodo di raggiungere tutti i suoi vicini a due passi (o hop). Per creare questo sottoinsieme di vicini si utilizzano i messaggi di hello inviati periodicamente a tutti i vicini a uno e due passi ( o hop ). Una volta ottenuto l’insieme di tutti i vicini, il nodo estrae da esso gli Alessandro Genovese 566/1364 Pagina 21 di 109 MPR e la lista dei nodi dai quali esso é stato eletto MPR (detti Multipoint Relay Selector set). Utilizzando queste informazioni OLSR introduce tre principali ottimizzazioni: • Se un nodo riceve un messaggio in broadcast ne fa il forward solo se appartiene all’MPR del nodo mittente. Si limita in questo modo il flooding nell’intera rete • le informazioni sullo stato dei collegamenti vengono generate solo da nodi che sono stati eletti come MPR da almeno uno dei propri vicini • quando un nodo crea un messaggio di topology update “può” decidere di inserirvi solo le informazioni riguardanti i collegamenti con i nodi dai quali è stato eletto MPR. In questo caso, a differenza dei comuni protocolli link state, si diffondono solo informazioni parziali sulla rete. Il team di sviluppo che ha ideato la rete Manet sta vagliando una seconda versione del protocollo OLSR, OLSRv2. Questa nuova versione, si basa sugli stessi elementi chiave del suo predecessore, incorporando però una struttura di segnalazione più flessibile, per esempio, alcune semplificazioni nella struttura dei messaggi che vengono scambiati dai nodi e una codifica degli indirizzi IP più compatta. Alessandro Genovese 566/1364 Pagina 22 di 109 Fig. 6 – I MultiPoint Relays: solo i pacchetti evidenziati effettuano il forward dei messaggi 3.2.2 B.A.T.M.A.N. È un protocollo di routing attualmente in via di sviluppo da parte della community "Freifunk" di Berlino e destinato a sostituire l'OLSR; attualmente si contano ben 3 versioni di sviluppo differenti che colmano determinati problemi insiti in questo tipo di protocollo di routing. L'ultima release consiste nell'elezione di un computer o un router centrale che può essere collegato a diversi tipi di reti wired o wireless. Questo mette in grado di inoltrare i dati di rete in più di una direzione, senza alcun ritardo nella ritrasmissione. Alessandro Genovese 566/1364 Pagina 23 di 109 Spesso nelle precedenti release questo protocollo era soggetto a fenomeni insoliti di freeze o a tempi per la determinazione del percorso migliore attraverso la rete più lunghi del solito. Questi sono stati affrontati e risolti per prevenire questo tipo di problema e di permettere un routing più affidabile e veloce. Un nodo può ora informare la rete che fornisce l'accesso a Internet. Altri nodi utilizzare tali informazioni per valutare se c'è una connessione a Internet vicino a loro e che cosa è la larghezza di banda disponibile. Si può usare un gateway predefinito oppure consentire allo stesso algoritmo BATMAN di determinare quale gateway utilizzare, sulla base di criteri specifici come la velocità di connessione. Annunciando i dispositivi non in esecuzione BATMAN stesso è stato anche incluso in questa versione. Di solito questo metodo viene utilizzato per collegare le reti di homemesh-network. Un installazione di un'antenna sul tetto permette di connettere alla rete wireless attraverso il protocollo di routing BATMAN e il resto della casa sarà presente e reso disponibile, quindi, anche dagli altri nodi della rete wireless. La maggior parte delle altre implementazioni wireless per quanto concerne i protocolli di routing operano sul livello 3 dello stack ISO-OSI, che significa che lo scambio di informazioni di routing avviene attraverso pacchetti UDP. Batman opera sulla pila ISO / OSI al livello 2. BATMAN è un punto cruciale per la decentralizzazione della conoscenza riguardante il percorso migliore da attraversare nella rete; si elimina il concetto che un solo nodo possiede tutti i dati. Utilizzando questa tecnica, la necessità per la diffusione di informazioni riguardanti le modifiche della rete per ogni nodo della rete diventa superfluo. Il singolo nodo salva solo informazioni riguardanti la "direzione" e i dati che vengono trasmessi da nodo a nodo. In questo modo è possibile creare una rete di intelligenza collettiva. È stato dimostrato che questo modello di routing da alti livelli di stabilità, ma testato Alessandro Genovese 566/1364 Pagina 24 di 109 nella vita reale diventa un protocollo abbastanza lento; correntemente è in fase di miglioramento con le sue 3 diverse versioni per ottimizzare questo ed altri tipi di problemi riscontrati in ambito di testing. 3.2.3 DYMO Il protocollo DYMO (Dynamic Manet On-demand) è l’ultimo nato tra i protocolli di routing delle Manet ed è di tipo reattivo ed è il diretto successore della AODV ( Ad hoc On-Demand Distance Vector). Le operazioni principali svolte da DYMO sono la route discovery e il route management. Nel processo di route discovery il nodo sorgente S, volendo comunicare con il nodo D, manda in broadcast un pacchetto di Route Request (RREQ) nell’intera rete. Durante questo processo di flooding ogni nodo intermedio inserisce nella sua tabella di routing le informazione sul percorso verso il nodo S. Quando il nodo destinazione D riceve la RREQ risponde al nodo sorgente con un messaggio di Route Reply (RREP) che viene spedito in unicast verso S. Ogni nodo intermedio, prima di fare il forward della RREP, memorizza nella sua tabella di routing una riga con le informazioni sulla rotta verso D (forward route) e provvede all’inoltro del pacchetto verso S sfruttando la rotta inserita al passaggio della RREQ. Quando S riceve la RREP la rotta tra i due nodi è stabilita e la sorgente può iniziare l’invio dei pacchetti dati. DYMO utilizza i Sequence Number per evitare di creare rotte cicliche. Inoltre questi Sequence Number permettono anche di evitare l’utilizzo da parte dei nodi di informazioni di routing vecchie. Per reagire in maniera corretta ai frequenti cambiamenti della topologia di rete i nodi monitorano i collegamenti per i quali sono nodi intermedi. Per fare questo utilizza i messaggio di hello con i quali viene verificata l’effettiva connettività con i nodi vicini. Quando viene ricevuto un pacchetto per una rotta che non è più disponibile il nodo Alessandro Genovese 566/1364 Pagina 25 di 109 sorgente della comunicazione viene informato dell’impossibilità di effettuare la consegna tramite un messaggio di Route Error (RERR). Al ricevimento del messaggio di RERR il nodo sorgente si preoccupa di iniziare nuovamente un processo di discovery. Una caratteristica importante di DYMO è quella di prevedere delle estensioni. Infatti il formato dei pacchetti è stato studiato in modo tale da permettere in un futuro la gestione da parte del protocollo di estensioni per migliorare o aggiungere nuove funzionalià al protocollo come per esempio la gestione della sicurezza del routing. Un’altra caratteristica innovativa di DYMO è quella di avere una struttura dei messaggi modulare. Infatti ogni messaggio è composto da una parte fissa (header) e da una parte che dipende dal tipo di messaggio, il Routing Element (RE). Ogni RE è a sua volta composto da uno o più Routing Block (RBlock). Gli unici messaggi per cui questo schema non è applicato sono i messaggi di Routing Error che hanno un formato proprio. Quando un nodo S vuole iniziare un processo di discovery verso un nodo D crea un nuovo messaggio DYMO all’interno del quale crea un RBlock indicando D come destinazione della RREQ e invia il messaggio in broadcast. Quando D riceve il messaggio risponde con un ulteriore pacchetto DYMO creando a sua volta un RBlock contenente le informazioni riguardanti la rotta e lo spedisce, questa volta in unicast, verso S. Durante questo processo di discovery ogni nodo intermedio che riceve i messaggi di RREQ o RREP elabora tutti i Rblock in esso contenuti inserendo o aggiornando le rotte da essi descritte. Inoltre può a sua volta creare un nuovo RBlock contenente le sue informazioni di routing. Queste nuove informazioni verrano così elaborate da tutti i nodi successivi che aggiorneranno le proprie rotte con dati che potrebbero abbreviare i successivi processi di discovery. Alessandro Genovese 566/1364 Pagina 26 di 109 3.3 Mesh Network Application : MANET Una rete MANET (Mobile ad hoc Network) è una rete auto configurante composta da mobile devices connessi fra loro attraverso onde radio. Soluzioni cablate esistono da molto tempo, una risposta per un traffico sempre più crescente dei dispositivi che necessitano di una connessione wireless esiste ed è un esempio concreto: la MANET è basata su una rete senza fili su standard IEEE 802.11. La MANET è spesso definita come segue una "rete ad hoc per mobile" poichè è una soluzione autonoma connessa tramite collegamenti wireless; i routers sono liberi di muoversi in modo completamente autonomo e random e si organizzano da soli arbitrariamente. La topologia di questo network per questo semplice motivo è in continua mutazione in maniera del tutto casuale e rapidamente imprevedibile. Come si può facilmente immaginare, la situzione che si viene a definire in una rete ad hoc come questa è messo in primo piano la questione della robustezza e di connettività, reperibilità e di routing della stessa rete per poter esistere. L'intera rete non è necessariamente connessa ad una infrastruttura wired ( connessioni via cavo ). La rete MANET è un network di comunicazione esiste senza aver bisogno di una infrastruttura di rete pre-esistenti. Nelle reti cellulari, ad esempio, esiste una infrastruttura di rete che è rappresentata dalle stazioni che emanano il segnale che permette la connessione del dispositivo alla rete. Quindi l'architettura è basata su un client che necessita del server ( base station ) per poter comunicare con qualsiasi altro dispositivo della rete cellulare. Infatti tutti i dispositivi offrono la loro collaborazione per sostenere la comunicazione Alessandro Genovese 566/1364 Pagina 27 di 109 all'interno della rete; questa tecnologia è adatta a piccole reti con poco traffico incosistente. Se si tentasse di usare questa tecnologia per connettere migliaia di telefoni, l’intera rete collasserebbe poichè la rete è strutturata in modo tale che ognuno deve inoltrare il traffico di un altro dispositivo presso altri dispositivi e quindi avere funzione di router. La sfida principale nella costruzione di una MANET è dotare ogni dispositivo di mantenere costantemente le informazioni necessarie per instradare il traffico correttamente. Le caratteristiche peculiari di questo tipo di rete possono essere riassunte nei seguenti punti: • comunicazione via wireless • ruolo sia di host che di router • inesistenza di un'unità centrale di controllo • topologia di network dinamica – frequenti updates per il routing • autonomia • vincoli energetici • sicurezza limitata Ogni terminale radio è in genere alimentato da fonte di alimentazione di energia limitata (con batterie ricaricabili), quindi il consumo elevato di energia di ciascun terminale radio potrebbe essere suddiviso generalmente in tre parti, il consumo di energia per il trattamento dei dati all'interno del dispositivo mobile, il consumo di energia per trasmettere le proprie informazioni per la destinazione e, infine, il consumo di energia quando il dispositivo è usato come un router, vale a dire la trasmissione delle informazioni ad un altro dispositivo della stessa rete. Com è ben facile notare il consumo di energia è una questione critica nella progettazione delle reti ad hoc di Alessandro Genovese 566/1364 Pagina 28 di 109 questo tipo. Gli smartphone odierni hanno, di solito, una riserva limitata di energia ma oggigiorno un'elevata capacità di calcolo. Essi dipendono fortemente da altri host e le risorse per l'accesso ai dati e l'elaborazione delle informazioni in quanto topologicamente strutturate client/server ( antenne radio ). Un altro grave problema delle reti MANET è la reperibilità dei dati: se una risorsa qualsiasi come potrebbe esserlo un file è disponibile unicamente su un certo nodo della rete e questo si disconnette, per un qualsiasi motivo ( ad esempio ha esaurito le batterie oppure perchè si trova in una posizione geografica in cui non c’è abbastanza segnale ) la risorsa in questione diverrebbe indisponibile per una quantità indefinibile di tempo (potenzialmente anche infinito). In tal caso esistono delle soluzioni per ovviare a problemi di reperibilità delle informazioni che consistono in funzioni di caching e di replicazione dei dati, studiati appositamente per le reti MANET. 3.3.1 Applicazioni della rete MANET Attualmente questo tipo di rete è usata in diversi ambiti: • esercitazioni militari • situazioni limite di disastri • operazioni coperte da segreto militare • business meeting urgenti • acquisizione di informazioni per Intelligenza Artificiale ( Robot ) Alessandro Genovese 566/1364 Pagina 29 di 109 Un settore di ricerca interessante è la comunicazione fra veicoli. Si tratta di un settore in cui le reti ad hoc potrebbero veramente cambiare il modo di comunicare. Tali reti possono essere utilizzate anche per consentire una copertura di comunicazione delle telecomunicazioni in scenari di guerra o in situazione limite in cui vengono impiegati vari dispositivi ad intelligenza artificiale attivamente ed attualmente in operazioni, coperte e non, da segreto militare in guerre come quella dell'Afghanistan. 3.3.2 La sicurezza delle reti MANET Nello specifico di reti wireless sono nate per sopperire ad un'esigenza in cui è necessario offrire la possibilità a più persone, situate in una precisa area, di comunicare e scambiare informazioni connettendo i dispositivi che hanno a disposizione anche se non sono disponibili reti fisse a cui collegarsi. Ad esempio, in caso di intervento della protezione civile, le unità che accorrono possono aver bisogno di comunicare tra loro e fornirsi informazioni per garantire una migliore organizzazione degli aiuti.In queste situazioni limite, è possibile ricorrere alle reti mobili ad hoc (MANET - Mobile Adhoc NETworks). Una rete mobile ad hoc è costituita dai dispositivi stessi che utilizzano soluzioni appositamente studiate per collaborare a mantenere attive le comunicazioni. Una rete wireless è per natura maggiormente vulnerabile rispetto ad una normale rete cablata, in quanto il canale di comunicazione radio offre maggiori opportunità ad un eventuale attaccante di poter accedere alle infomrazioni in transito tra i vari dispositivi. Il motivo principale è che il campo di copertura non può essere completamente circoscritto; infatti le antenne utilizzate per la trasmissione radio sono solitamente omnidirezionali ed è quindi impossibile limitare la ricezione di una trasmissione al solo destinatario quando vi siano diversi riceventi nel raggio di copertura. Inoltre nel Alessandro Genovese 566/1364 Pagina 30 di 109 caso di reti indoor è altrettanto impossibile limitare la copertura radio solo all’interno dell’edificio interessato; un eventuale attaccante può quindi avere accesso al canale anche non trovandosi nell’area di utilizzo lecito della rete. Nella realizzazione di queste reti, un aspetto critico e rilevante è occupato dalla sicurezza: le reti devono essere infatti formate da dispositivi fidati detti "trusted", per evitare che qualche malintenzionato si inserisca con un proprio dispositivo nella rete e riesca a danneggiare la comunicazione al suo interno. Alla luce di queste esigenze di sicurezza, CEFRIEL ha realizzato, nell'ambito del progetto MAIS ( spiegazione del progetto riportata più avanti ), una soluzione in grado di proteggere la rete spontanea che si crea tra dispositivi "trusted" in modo da evitare che un intruso possa attaccare la rete stessa alterandone il corretto funzionamento. La CEFRIEL è oggi una società consortile a responsabilità limitata senza scopo di lucro i cui soci sono il Politecnico di Milano, l'Università degli Studi di Milano, l'Università degli Studi di Milano-Bicocca, l’Università degli Studi dell’Insubria, la Regione Lombardia e 15 aziende multinazionali operanti nel settore ICT e dell'editoria multimediale. Alla base della soluzione ideata da CEFRIEL si trova il protocollo di routing sicuro ASAODV che fa uso di tecniche crittografiche per garantire la sicurezza della comunicazione ed è stato ottimizzato per minimizzare l'impatto delle operazioni richieste da queste tecniche.CEFRIEL ha inoltre realizzato un'interfaccia semplice e intuitiva che permette di indicare quali tra i partecipanti che formano la rete sono considerati "fidati" e quali no. Prima di considerare il problema della sicurezza, dovremmo considerare con molta cura se la sicurezza è richiesta o se realmente qualcuno all'esterno può vedere i pacchetti inviati cosa contengono. Il problema della sicurezza non è sempre critico, ma potrebbe costare molto rendere un network ancora più sicuro. Alcune volte ci si rende Alessandro Genovese 566/1364 Pagina 31 di 109 conto che esiste un trade-off tra i costi e la sicurezza. 3.3.3 Requisiti di sicurezza di una rete MANET In una rete mobile ad-hoc oltre ai requisiti di sicurezza tradizionali, come autenticazione e integrità dell’informazione, si aggiungono requisiti dettati dal fatto che la rete è collaborativa. I requisiti di sicurezza di una MANET possono essere dunque così riassunti: Disponibilità - In una rete wireless è molto facile portare a termine attacchi DoS (Denial of Service) immettendo una grande quantità di pacchetti non richiesti in rete e rendendo così inutilizzabile il canale. E` altrettanto facile disturbare la trasmissione a livello fisico con forti segnali radio. Inoltre, a causa della limitata autonomia dei dispositivi tipicamente utilizzati in queste reti, è possibile portare un attacco di tipo battery exhaustion. Questi sono tutti attacchi che minano la disponibilità della rete. Autenticazione - Poichè in una rete wireless chiunque si trovi nel raggio di copertura radio può inviare messaggi e riceverne, è essenziale che, tramite meccanismi di autenticazione, le due parti coinvolte in una comunicazione siano certe delle rispettive identità prima di iniziare qualsiasi scambio di dati. Autorizzazione - L’autorizzazione è il passo successivo all’autenticazione. Infatti, avvenuta l’autenticazione, viene concessa al nodo di usufruire unicamente dei servizi per i quali è stato autorizzato. Confidenzialità - Poichè la comunicazione si svolge su canale radio e, come detto in precedenza, è impossibile limitare la copertura al solo destinatario, occorre, a volte, cifrare tutto il traffico per non permettere ad un nodo in ascolto di ottenere Alessandro Genovese 566/1364 Pagina 32 di 109 informazioni intercettando i pacchetti in arrivo. Integrità - A causa della tipica configurazione collaborativa delle Manet è essenziale per il ricevente essere sicuro che, in una comunicazione multihop, il messaggio arrivato sia il medesimo spedito dalla sorgente; in altre parole si vuole evitare che nodi avversari possano modificare il contenuto dei messaggi lungo il tragitto. Per questo alcuni protocolli di rete possono allegare al messaggio dei MAC (Message Autentication Code). Una volta che il pacchetto è giunto a destinazione il nodo può verificare l’integrità del contenuto tramite appositi algoritmi applicati al messaggio stesso. Non ripudio - Il non ripudio è la caratteristica per la quale un nodo non può negare di aver generato un pacchetto. Grazie a questo requisito si possono individuare i nodi colpevoli di un tentativo di attacco DoS e escluderli dalla rete. Si possono inoltre identificare nodi mal funzionanti che immettono in rete messaggi inconsistenti. Privacy e anonimato - In una rete wireless, a differenza di una rete cablata, è importante, in certi scenari di utilizzo, mantenere privata la posizione dei nodi all’interno della rete anche per non facilitare l’attacco da parte di un nodo avversario. Infatti, conoscendola, un nodo avversario potrebbe facilmente immettersi lungo il percorso dei pacchetti per effettuare un tentativo di attacco. Una delle vulnerabilità fondamentali delle MANET sta nella loro architettura peer to peer aperta. Infatti, a differenza delle reti cablate che hanno router dedicati, ogni nodo o dispositivo della rete svolge la funzione di router inoltrando pacchetti per altri nodi. Inoltre il canale radio è accessibile sia a utenti legittimi che malintenzionati. Come conseguenza non vi è una chiara linea di difesa che può essere intrapresa dal punto di vista della progettazione per rendere sicura la rete. Infatti la distinzione tra rete interna e mondo esterno non è ben definita e non vi è un punto preciso in cui si possa posizionare un meccanismo di difesa specifico. Oltre a questo i dispositivi mobili, e Alessandro Genovese 566/1364 Pagina 33 di 109 perciò i dati in essi contenuti, sono soggetti alla compromissione e al furto vero e proprio, specialmente se si parla di dispositivi di basso profilo con protezioni hardware e software deboli; di conseguenza degli attaccanti potrebbero penetrare all’interno della rete per mezzo di questi dispositivi che restano l’anello debole della catena di sicurezza. D’altra parte, la ristrettezza delle risorse nelle MANET costituisce anch’essa un problema non trascurabile nella progettazione dei meccanismi di sicurezza. Il canale radio dispone di una banda limitata e condivisa tra tutti i dispositivi e non è adatto a meccanismi di sicurezza che richiedano un grosso scambio di dati. La potenza di calcolo dei nodi e anch’essa limitata; si pensi a dispositivi come PDA che non riescono a compiere agevolmente operazioni ad alto costo computazionale come il calcolo di firme o verifiche tramite crittografia asimmetrica. Poichè i dispositivi mobili sono tipicamente alimentati a batteria, anche le risorse in termini di energia e autonomia possono essere limitate. Fig. 7 – esempio di una possibile rete MANET Alessandro Genovese 566/1364 Pagina 34 di 109 Per la progettazione dei meccanismi di sicurezza si deve tenere conto anche che il tipo di comunicazione wireless e l’alta mobilità presente nelle MANET evidenziano una dinamica molto più elevata se messa a confronto con quella delle reti cablate. Inoltre il canale radio è soggetto a interferenza ed errori e mostra caratteristiche di banda e ritardo variabili nel tempo. Nonostante queste caratteristiche dinamiche un utente può, mentre si sposta da un capo all’altro della rete, richiedere in qualsiasi momento e in ogni punto i requisiti di sicurezza. Queste caratteristiche proprie delle manet portano alla definizione di una soluzione per la sicurezza che consegua sia una protezione globale che buone prestazioni di rete. Il meccanismo di sicurezza deve essere dislocato su molte individualità. La strategia per la sicurezza adottata da ognuno deve essere proporzionata alle sue limitate risorse in termini di capacità computazionali, memoria, capacità di comunicazione ed energia disponibile; per essere completo, deve essere necessariamente dislocato su diversi livelli dello stack protocollare in modo che ogni livello contribuisca con una linea difensiva. Non é possibile ottenere una protezione totale agendo soltanto su di un livello. La soluzione per la sicurezza della rete deve potere difendersi sia da agenti esterni sia da nodi interni alla rete che siano stati compromessi da un attaccante. In questo secondo caso la modalità di difesa deve essere differente, poichè l’attaccante potrebbe essere venuto a conoscenza di informazioni a cui un agente esterno non poteva aver accesso. Inoltre il meccanismo di sicurezza deve coprire tutti gli aspetti di prevenzione, rilevamento e reazione che lavorano all’unisono per garantire il non collasso del sistema e la soluzione deve essere applicabile alle caratteristiche estremamente dinamiche e di limitata disponibilità di risorse tipiche delle manet. Alessandro Genovese 566/1364 Pagina 35 di 109 3.3.4 Il cooperative caching Analizziamo ora brevemente un altro problema che affligge questo tipo di rete che è la mancanza di un file richiesto da un nodo presente sull'hard disk di un altro, il quale per cause esterne è disconnesso al momento dalla rete, anche per un tempo ipoteticamente infinito. Una risposta è stata data con le tecniche di Cooperative Caching basate su protocolli che permettono di condividere e coordinare il contenuto delle cache di tutti i nodi e sono state ampiamente utilizzate con lo scopo di migliorare le prestazioni delle reti wired. Questi protocolli possono essere classificati come message-based, directory-based o router-based. Il punto cruciale sul quale si basano le tecniche di CC è che il trasferimento dei file è più veloce nel caso in cui il file desiderato si trova nella memoria cache di un nodo intermedio nel routing path verso l’owner del file originale. Se ad esempio si dovesse fare il retrieving di un certo file che si trova su un nodo A verrebbe eseguita la richiesta ed il file transiterebbe attraverso tutti i nodi nel routing path tra il nodo richiedente ed il nodo A consumando una certa quantità di energia. Se, invece, il file si trovasse anche nella memoria cache di un certo nodo B intermedio tra il richiedente ed A nel routing path, questo file potrebbe essere scaricato da B riducendo il numero di hop necessari e quindi tempo di latenza ed il consumo globale di energia. Dato che il file attraversa più nodi nel cammino tra sorgente e destinazione, i nodi intermedi possono decidere di memorizzare il file in una loro cache interna perchè, anche se non serve in quell’istante, successivamente il nodo stesso od un suo vicino potrebbero aver bisogno dello stesso file. Alessandro Genovese 566/1364 Pagina 36 di 109 L’accesso al file avviene nel seguente modo: le richieste di un certo file seguono il normale percorso tra richiedente e owner; quest’ultimo risponde con la conferma di avere quel file in memoria e allo stesso modo agiscono tutti i nodi intermedi che eventualmente hanno il file in cache; il richiedente, ricevendo una notifica da ogni nodo che possiede quel file in cache, può inviare la richiesta reale del file al nodo più vicino. Fig. 8 – Retrieving di file da nodi intermedi Alessandro Genovese 566/1364 Pagina 37 di 109 4 Netsukuku 4.1 Introduzione sull'attuale architettura internet Internet è attualmente gestita e controllata dalle grandi corporation e governi. Qualsiasi pacchetto che viaggia sulla rete deve attraversare i routers, backbone e DNS controllate e gestite da aziende che hanno larga partecipazione governativa e soggette quindi al loro controllo. Gli Internet Service Provider forniscono la connettività dal livello più basso a quello più alto di questa piramide fino ad arrivare all'end-user. Normalmente ci si connette attraverso gli ISP che sono fornitori di servizi ma gestiti e soggetti a filtri e restrinzioni applicate su questi dai governi ( come in Cina o anche in Italia tutt ora non è possibile visionare determinati siti internet). Come risultato Internet non è la stessa per ciascuno; infatti altre persone possono avere accesso o meno a determinati tipi di informazioni a scapito della libertà d'informazione. È ben risaputo che internet rappresenta l'ultima frontiera di accesso all'informazione, alla conoscenza globale e alla comunicazione. Più di 1 miliardo di persone oggigiorno possono connettersi all'immenso valore della conoscenza controllata dai governi. I restanti 5 miliardi di persone non hanno accesso alcuno alla rete dovuto ad un lack delle loro risorse economiche ( ed infrastrutture inesistenti ) necessarie per rendere disponibile l'accesso ad internet. Le grandi multinazionali non hanno remunerazione da un business del genere, in cui la nazione di in un paese in cui il livello di civilizzazione tecnologica oltre che quello societario è arretrato di ben 100 anni. Quindi pertanto l'informazione e la conoscenza sono strettamente limitate alle dittature Alessandro Genovese 566/1364 Pagina 38 di 109 instaurate in questi paesi: limitata, non oggettiva e scarsa. Questa mancanza di accesso all informazione è molto più che un semplice svantaggio o inconveniente: senza questo potente strumento ( Internet ) non sono in grando pertanto di poter accedere alla conoscenza condivisa e quindi all'educazione o alla comunicazione fra individui o piccole aziende che favorisca la crescita sia economica che intellettuale di questi paesi. Internet è stata progettata e "disegnata" da un progetto militare per essere sicura, distribuita e un sistema di comunicazione che sia failure-resistant. Ma adesso, paradossalmente, la prolifica organizzazione di Internet è diventata una struttura centralizzata su ISP e altri sistemi di sostegno per l'intera rete. Consideriamo, per esempio, il caso dei server DNS ( Domain Name System ), i quali molti sono controllati dalla stessa organizzazione responsabile fornitrice del servizio di accesso alla rete. La registrazione di un dominio su questi server è un privilegio delegato all' InterNIC, un'azienda controllata dagli Stati Uniti, che ne garantisce il diritto di vendita di un singolo dominio agli end-user. È merametnte utopistica la visione di poter portare più accessibilità alla rete internet, libertà se i servizi forniti sono sempre gestiti dai sistemi attuali. Alessandro Genovese 566/1364 Pagina 39 di 109 4.2 La rete Netsukuku Il network è composto da computer strettamente vicini e direttamente connessi gli uni con gli altri che non hanno dipendenza su Internet o con qualsiasi altro tipo di network. La rete Netsukuku è un nuovo modo di intendere l'architettura di Internet rivoluzionandola nel semplicistico concetto di mettere in comunicazione direttamente i vari computer tra di loro, collegandoli come in una rete Mesh. L'ideazione di Netsukuku è nata con la volontà di dare una risposta chiara e alternativa per l'accesso ad internet e ad un informazione sempre più libera; ci si riferisce quindi a computer statici ovvero nodi non in movimento. In Netsukuku vengono sostituiti con gli attuali DNS con un protocollo proprio che è chiamato ANDNA ( A Netsukuku Domain Name Architecture ) spiegato successivamente all'interno di questo documento. Una rete completamente dinamica richiede aggiornamenti rapidi e frequenti dei percorsi d'instradamento e questo è in contrasto con la stabilità e la scalabilità di Netsukuku. Per questo motivo, Netsukuku suppone per il suo modello che un nodo non cambierà la sua posizione fisica tanto spesso, riducendo di gran lunga gli scambi di pacchetti per tenere costantemente aggiornata le porzioni di "mappe". Questa ipotesi è lecita in quanto la posizione di un nodo WiFi montato sul piano di un edificio non cambia e le sue azioni saranno al massimo la disconnessione o la riconnessione dalla rete. Il sistema sostituisce il livello 3 dell'OSI model con la propria vera e proprio protocollo di routing che lo sostituisce. Netsukuku per natura distribuito ha una serie di servizi costruiti su di esso che sostituiscono quelli dell'attuale e contralizzata Internet Alessandro Genovese 566/1364 Pagina 40 di 109 come discusso precedentemente riguardo i DNS che vengono sostituiti con ANDNA. La rete si autoconfigura in modo dinamico, senza interventi esterni, cosa che fino a poco tempo fà si credeva irrealizzabile o addirittura impossibile. Questa topologia è resa possibile rendendo ogni singolo nodo della rete Netsukuku in grado di poter servire, con gli stessi privilegi, richieste proveniente dagli altri nodi. È di particolare interesse il fatto di avere un network sempre più performante ed efficiente grazie alla crescita della rete di nodi ben connessi fra loro; il che significa che più utenti o nodi aderiscono a questo tipo di network maggiore sarà l'efficienza e una bandwidth maggiore. Tutti gli utenti avranno interesse a collegarsi nella rete con Netsukuku poichè più nodi si aggiungono più informazioni la rete avrà per raggiungere i nodi vicini andando ad apportare un miglioramento sostanziale alla rete stessa ma anche a tutto il network. Al contrario, con l'attuale topologia e architettura di Internet, più utenti sono connessi più il sistema è sottoposto a stress il che provoca una latenza esponenziale nel recapitare pacchetti. Il grado di sicurezza della rete è resa possibile grazie ad uno strato di crittografia elevato che offre contemporaneamente un alto grado di sicurezza e anonimato per qualsiasi connessione. 4.2.1 Introduzione Netsukuku privilegia la stabilità e la scalabilità della rete ed è corretto anche denominarla come un'architettura di rete altamente scalabile e autoconfigurante. Questo tipo di rete richiede pochissimi kilobyte di memoria ed esigue risorse di calcolo della cpu per poter permetterne la navigazione. Grazie a questi bassi requisiti, Alessandro Genovese 566/1364 Pagina 41 di 109 è possibile eseguire il software all'interno di computer a basse prestazioni, punti di accesso e dispositivi embedded. Alcune caratteristiche rilevanti che sfruttano l'architettura offerti da Netsukuku sono: un sistema distribuito non gerarchico e decentralizzato di gestione hostname che ne consente il completo anonimato di un utente sulla rete Netsukuku, nascondendone l'origine e la destinazione dei pacchetti crittografandoli. Usando le tecnologie wireless, gli utenti di Netsukuku possono costruire e sostenere una rete ad estensione geografica, condividendo una piccola parte delle loro risorse del PC, senza bisogno di alcun supporto di terze parti specifiche. 4.2.2 Definizioni – Nodo ( o Node ) : ogni computer connesso alla rete Netsukuku – Rnodo ( o Rnode ) : preso in considerazione un determinato nodo X, viene definito Rnodo di X, ogni nodo direttamente connesso ad X. – Map: in ogni nodo della rete Nestkuku vengono mantenute, in una mpappa memorizzata in un file, le informazioni riguardanti l'intera rete (stato dei nodi, informazioni di routing, ... ) – REM ( Route Efficiency Measure ) : per distinguere due percorsi tra due nodi della rete Netsukuku è usato questo fattore di qualità. Se r ed s, ad esempio, sono due percorsi, REM(r) indica la qualità del percorso r, ed in caso sia migliore del percorso s, si avàr REM(r) < REM(s). Alessandro Genovese 566/1364 Pagina 42 di 109 Fig. 12 - rappresentazione figurativa della definizione di una parte della rete Netsukuku 4.2.3 Struttura gerarchica di Netsukuku Livello 1 – la rete, in questo livello, viene suddivisa in gruppi di 256 nodi ciascuno e vengono introdotti ulteriori concetti: Gnode: rappresenta un gruppo di nodi. Ogni nodo della rete appartiene solamente ad un gnode. I nodi all'interno dello stesso gruppo sono connessi in accordo alla seguente definizione: Bnode: rappresenta un nodo di confine. Questo è un nodo che appartiene ad un gnode G, ma che è anche direttamente connesso ad almeno un nodo di un diverso gnode ( quindi almeno un suo rnode appartiene ad un diverso gnode ). Livello n – nei livelli superiori al primo si continua a suddividere la rete in gruppi da 256 gruppi di nodi, che continueranno ad essere chiamati gnode. Questa suddivisione continua ricorsivamente fino a quando non si raggiunge il raggruppamento massimale Alessandro Genovese 566/1364 Pagina 43 di 109 dell'intera rete all'interno di un solo gnode. In questo modo la rete ha una struttura composta da n+1 livelli ( da 0 a n ). L'algoritmo di routing usato in Netsukuku è il QSPN che è in grado di operare su qualsiasi livello senza abisogno di distinzione considerando un gnode come un nodo normale. Proprio per questa struttura a livelli, la topologia di una rete Netsukuku è definita gerarchica composta da 256 nodi i quali sono raggruppati all'interno di un gruppo di nodi ( chiamati gnode ); 256 gruppi di gnode sono raggruppati in un altro gruppo ( chiamato ggnode ) che a sua volta è ulteriormente raggruppati in un ulteriore gruppo ( gggnode ) da 256 ggnode. Dal momento che in ogni livello troveremo al massimo 256 nodi ( o gnodi ) l'algoritmo di tracciamento del percorso (QSPN ) sarà sempre quello di operare su un massimo di questi nodi. Fig. 13 - rappresentazione dei Gnodes e dei nodi confine Alessandro Genovese 566/1364 Pagina 44 di 109 4.3 Algoritmo di routing di Netsukuku ( QSPN ) Una delle parti più importanti di Netsukuku è il discovery algorithm ( o algoritmo di scoperta ) che è responsabile di trovare i percorsi più efficienti sulla rete per raggiungere dei nodi. L'algoritmo deve essere capace di trovare i percorsi senza sovraccaricare la rete stessa o la CPU e la memoria dei computer. Per poter spiegare in parole povere il concetto che è alla base di questo meta-algoritmo che non esegue una sequenza di istruzioni matematiche definite ma sfrutta il caso possiamo pensarlo basandoci sul semplice concetto della fisica delle onde: se lanciamo un sassolino in uno specchio d'acqua, contenuto in una bacinella, dal punto di impatto incominciano a propagarsi delle onde circolari. Ogni onda genera un'onda figlia che continua ad espandersi ed a generare figli che generano figli e così via. Quando un'onda colpisce i bordi della bacinella, viene riflessa e ritorna verso il punto d'origine; lo stesso avviene se l'onda incontra un ostacolo. Il qspn_starter è il sassolino gettato nel groupnode ed ogni onda è un Tracer Packet. Ogni onda figlia porta con sè l'informazione dell'onda padre. Quando l'onda arriva in un extreme_node (un ostacolo, un vicolo cieco, l'ultima frontiera del groupnode) parte il qspn_open (l'onda riflessa). Migliaia di nodi si appoggiano ad una stessa cella, che poi smisterà il traffico alle altre celle, che, infine, consegneranno i dati ai nodi destinatari. Netsukuku puo' essere adottato anche dai cellulari, rendendo superflua l'esistenza degli attuali gestori di telefonia mobile con opportune modifiche sulla ricerca dei nodi e la propagazione della mappa. Questo algoritmo da solo non sarebbe capace di gestire l'intero processo di ricerca in Alessandro Genovese 566/1364 Pagina 45 di 109 tutta la rete perchè avrebbe ancora bisogno di troppa memoria. Per esempio, anche se volessimo memorizzare anche un solo percorso per raggiungere un nodo e "costa" 1 byte avremmo bisogno 1 GB di memoria per una rete composta da 109 nodi ( tutta l'attuale internet ). Per questo motivo è necessario strutturare la rete in una topologia conveniente e quindi non adattare l'algoritmo all'attuale internet ma piuttosto fare il contrario ovvero creare un nuovo "ordine" ( o disposizione ) dei nodi, ovvero una nuova topologia. L'algoritmo QSPN, per ogni livello, costruisce i percorsi necessari per connettere ogni nodo ( o gruppo) a tutti gli altri nodi ( o gruppi ) dello stesso livello Questi percorsi sono memorizzati nelle mappe di ciascun nodo. Se un generico nodo N: N = g3 . g2 . g1 . G0 vuole raggiungere un nodo M che appartiene ad un gruppo diverso: M = g3 . g2 . h1 . h0 sarà necessario aggiungere un percorso CIDR alla tabella di routing del nodo N, in modo tale che tutti i pacchetti la cui destinazione è : g3 . g2 . H1 . [0...255] verranno inoltrati attraverso un gateway X, la cui scelta sarà illustrata in seguito. 4.3.1 Differenze con gli attuali protocolli di gestione Anche se attualmente esistono diversi protocolli di routing dinamico, la maggior parte sono, a differenza di Netsukuku, incapaci di gestire reti di dimensioni significative. Per esempio i router presenti sui backbone sono gestiti da un insieme di protocolli con Alessandro Genovese 566/1364 Pagina 46 di 109 funzionalità simili, tra cui OSPF, RIP e BGP. Utilizzano dei classici algoritmi progettati per trovare il percorso migliore per raggiungere un nodo della rete rendendo ragionevolmente efficiente il routing. Purtroppo si aumenta la complessità di calcolo e quantità di risorse per funzionare sulla rete come Internet e devono risiedere su computer abbastanza potenti e dedicati soltanto per quest utilizzo. Con questo sistema nella pratica rende impossibile il decentramento sia in termini economici che in termini di calcolabilità e gestione. A questo scopo nasce QSPN che ha il compito di rintracciare il nodo; dal momento che la topologia della rete è caratterizzata da un alto livello di simliarità soltanto l'algoritmo di base dovrà essere memorizzato poichè scalabile a seconda dei livelli in cui è ricercato uno specifico nodo ( funzionalità spiegata in dettaglio più avanti in questo documento ). Questo livello di compressione garantisce la capacità di memorizzare l'intera mappa della rete in pochi kilobyte riusciendo così ad essere eseguito da qualsiasi nodo della rete e non da specifici computer ad alta computazione. 4.3.2 Definizioni del routing in Netsukuku Un percorso presente nella mappa di un nodo N può essere rappresentato come: rN = (dst, gw, rem) dove: – dst è il nodo che rappresenta la destinazione del percorso – gw è il nodo verso il quale verranno inoltrati i pacchetti – rem è il fattore di qualità del percorso Alessandro Genovese 566/1364 Pagina 47 di 109 In alternativa, si può usare la notazione dst(r), gw(r) e rem(r) per indicare rispettivamente la prima, la seconda e la terza componente della tripla. Nella mappa di ciascun nodo viene mantenuto soltanto un percorso verso un nodo, anche se sono presenti più percorsi possibili. Infatti tra tutti i percorsi disponibili, viene scelto quello con il valore rem(r) minore. Con l'utilizzo di questa notazione, è possibile notare come un nodo non conosce l'intero percorso verso il nodo destinazione, ma conosce solamente il nodo verso cui inoltrare il pacchetto. Quindi ogni nodo ha una visoine limintata della rete, che comprende solo i nodi all'interno del suo stesso gruppo. 4.3.3 QSPN v2 Il concetto della nuova versione del QSPN, algoritmo di routing sul quale si basa Netsukuku, definito fino ad ora non è in grado di soddisfare richieste di una rete in continua mutazione o movimento, quindi non adattabile a reti estremamente dinamiche. L'ETP risolve il problema su come il grafo debba essere esplorato e riesplorato per aggiornare la mappa dei nodi interessanti in cui la rete cambi di conitnuo. " Quando un cambiamento si verifica nellarete, solo l'informazione memorizzata nel nodo affetto dal cambiamento deve essere aggiornata" : ovvero l'informazione del cambiamento dovrà essere trasportata soltanto ai nodi interessati la modifica della porzione di mappa mutata. Quindi un ETP è un ATP che contiene una porzione di mappa; può essere considerato com un insieme di differenti TP. Si suppone che la qualità del link A <-->B cambi. Si esaminerà la situazione partendo da A, tenendo tuttavia in mente che la situazione per B è simmetrica. Se il link cambia Alessandro Genovese 566/1364 Pagina 48 di 109 potrebbe essere il caso per B di cercare un percorso migliore. Per questa ragione, A invierà a B un ETP con tutti i percorsi della sua mappa, tranne quelli della forma A -> B -> ... Se B trova qualcosa d'interessante, inoltrerà l'ETP. In breve: 1 – A aggiorna la sua mappa 2 – A crea il seguente insieme : R = { r appartiene M* | gw(r) ≠ B } dove: r appartiene M* <--> r appartiene, rem(r) = max {rem(s) | s appartiene M, dst(s) = dst(r)} M* è l'insieme di tutti i percorsi migliori della mappa M è l'insieme di tutti i percorsi della mappa di B gw(r) è il primo hop del percorso r dst(r) è la destinazione del percorso r rem(r) è la Route Efficiency Measure di r Ogni percorso r appartine R è memorizzato come (dst(r), rem(r)) 3 – A crea l'ETP in esso l'insieme R, aggiungendo il suo ID e settando ad 1 il "flag d'interesse" 4 – A invia l'ETP a B Ora si supponga che un nodo C riceva un ETP dai suoi vicini. Lo esaminerà e se considerato interessante, aggiornerà la propria mappa ed inoltrerà il pacchetto ai nodi vicini come segue: Alessandro Genovese 566/1364 Pagina 49 di 109 1 – Se l'ID del nodo C è già presente nel corpo dell'ETP ricevuto allora C scarta il pacchetto e salta al punto 4 2 – Siano: R l'insieme dei percorsi contenuti nell'ETP ricevuto da C M l'insieme di tutti i percorsi contenuti nella mappa di C per ogni percorso r appartiene R, il nodo C cerca un percorso m che apparitene ad M tale che la dst(m) = dst(r), gw(m) = N • Se esiste allora C setta rem(m) = rem(r) • altrimenti r viene copiato in un insieme temporaneo R' 3 – Per ogni r' che appartiene ad R' dato un percorso m' che appartiene ad M tale che dst(r')=dst(m'), se r' è un'alternativa migliore a m' e se ogni hop di r' è raggiungibile da C allora r' è salvato nella mappa di C come una terna (dst(r'), N, rem(r')+rem(C-->N)) 4 – C crea il seguente insieme: 5 – Se S≠0 allora si verificano le seguenti • C crea un nuovo ETP, contenente l'insieme S e il suo ID. Il flag d'interesse viene settato a 0 • Il nuovo ETP viene inviato a N e propagato anche all'interno. La ragione per la quale viene utilizzata questa procedura è che se C considera non interessanti alcuni percorsi contenuti nell'ETP appena ricevuto, inoltrerà all'indietro i propri percorsi migliori che hanno la stessa destinazione di quelli che appartengono ad R. Alessandro Genovese 566/1364 Pagina 50 di 109 6 – Dato Se ≠ 0 allora l'ETP è ancora interessante e il flag d'interesse resta settato ad 1. C completa il pacchetto con il set di eaggiungendo il suo ID. L'ETP viene quindi inviato a tutti i nodi vicini eccetto N I nodi vicini di C quindi useranno la stessa procedura. In questo modo, l'ETP continuerà ad essere propagato fin quando non verrà considerato non interessante. Nel caso in cui verrà aggiunto un nuovo link A <--> B si applica la stessa procedura del caso precedente. L'unica differenza sta nel fatto che l'algoritmo non si fermerà se R = 0, questo perchè R = 0 se e solo se A è un nodo con un solo link. 4.3.4 Propagazione della mappa QSPN è l'algoritmo di routing presente in Netsukuku, e prevede l'utilizzo di un particolare pacchetto, Tracer Packet, per lo scambio di porzioni di mappa tra nodi della rete. Dal punto di vista dell'algoritmo, la rete torna ad essere piatta, senza la suddivisione in gruppi e livelli. L'unica regola che viene aggiunta, è per la compressione delle mappe. Si supponga T un generico Tracer Packet e sia { ai | i = 1,2, ..., n } una seguenza finita di nodi. Se è presente una porzione di questa sequenza, i cui nodi appartengono tutti ad uno stesso gruppo G, può essere sostituita con l'ID del gruppo G in modo da risparmiare spazio. Più formalmente, ogni porzione: Alessandro Genovese 566/1364 Pagina 51 di 109 dove G è un gnode di un livello qualsiasi, può essere rimpiazzata semplicemente con l'ID del gruppo G. Inoltre il valore rem associato all'ID di G, corrisponde alla somma dei valori rem dei singoli nodi della porzione rimpiazzata. Esempio: 1. Il Tracer Packet { 11.22.1, 11.22.80, 11.22.35 } non può essere raggruppato, perchè sono tutti nodi appartenenti allo stesso gruppo 2. Il Tracer Packet { 11.22.1, 11.22.80, 11.22.35, 11.44.13 } può essere raggruppato in { 11.22.*, 11.44.13 } 3. Il Tracer Packet { 11.22.1, 11.22.80, 11.2.35, 11.44.13, 55.32.20 } può essere raggruppato in { 11.*, 55.32,20 } Questa regola permette di avere mappe di dimensione ridotta, anche nel caso in cui si consideri una rete composta da molti nodi. Ad esempio, se il nodo 55.32.12 riceve il Tracer Packet: 11.*, 55.32.20 memorizzerà nella propria mappa la tripla: { dst = 11.*, gw = 55.32.20, rem ) Questa regola appena descritta implica che un nodo c non appartiene a G ed non è in grado di conoscere la struttura interna del gruppo G. Infatti, se r è il percorso migliore per raggiungere qualsiasi nodo di G, esso sarà un percorso che raggiunge il nodo d che appartiene a G, il quale è il più "vicino" nodo di G rispetto al nodo c. Questo percorso è comunque un percorso valido anche per qualsiasi altro nodo d' che appartiene a G poichè per definizione tutti i nodi di un gruppo sono connessi. Il Alessandro Genovese 566/1364 Pagina 52 di 109 problema in questo caso è che mentre r è il percorso migliore verso il nodo d, potrebbe non esserlo verso il nodo d'. In ogni caso, r sarà comunque un'approssimazione del percorso migliore verso il nodo d' Infatti il percorso c –> d' non è altro che il percorso c –> d –> d', nel quale si è assunto che c –> d sia il percorso migliore. Grazie all'ulteriore assunzione che all'interno di uno stesso gruppo, i valori rem tra due qualsiasi nodi non possono differire troppo, si ha anche che il percorso d –> d' è molto vicino all'ottimo. 4.3.5 Procedura iniziale di assegnazione di un nodo ad un gruppo La fase di inizializzazione di un nodo nella rete serve per: 1. Configurare il nuovo nodo nella rete e mantenere uniforme lo spazio dei gnode. 2. Mantenere connessi i nodi all'interno di uno stesso gruppo 3. Mantenere i gruppi di nodi compatti. Più in generale, questa procedura iniziale serve per risolvere il problema di assegnare un nodo ad un gruppo. Sia G un gruppo non vuoto. Un nodo può appartenere al gruppo G se è direttamente connesso ad almeno un nodo d che appartiene a G. Questo presupposto implica alcuni problemi nell'allocazione degli indirizzi IP. – Un gruppo G è detto allocato se e solo se contiene almeno un nodo – Un gruppo G è detto saturo se e solo se i nodi al suo interno sono allocati Si consideri il caso in cui una rete sia costituita da 3 gruppi A, B, C tutti appartenenti all'unico gruppo di livello superiore ( ed anche ultimo) G. Per come è costruita la rete, Alessandro Genovese 566/1364 Pagina 53 di 109 il gruppo G è saturo, perchè non è possibile allocare altri gruppi al suo interno. Si supponga inoltre, che anche il gruppo A sia saturo, mentre nei gruppi B e C ci sia ancora spazio per nuovi nodi. Sia ora n un nuovo nodo connesso solo a nodi nel gruppo A. Questo nuovo nodo n non sarà in grado di agganciarsi alla rete Netsukuku, perchè il gruppo A è saturo, e non è possibile creare un nuovo gruppo solo per esso in quanto il gruppo G è anch'esso saturo. Anche se in realtà c'è ancora spazio disponbile per l'allocazione di nuovi nodi nei gruppi B e C. Una strategia per risolvere il problema della saturazione dei gruppi, è quella di distribuire inmaniera uniforme i nodi: tutti i gruppi avranno approssimativamente lo stesso numero di nodi. Questo può essere ottenuto applicando le seguenti regole, nei diversi casi descritti di seguente. 4.3.6 Nuovo nodo: connessione a Netsukuku Quando un nuovo nodo entra nel sistema ottiene la lista S dei gruppi non saturi ( questa lista può essere facilmente ottenuta dalle mappe dei suoi vicini ). Tra i gruppi in S il nuovo nodo entrerà a far parte del gruppo S* con il minor numero di nodi. 4.3.7 Transizione di un nodo: passaggio da un Gnodes all'altro Durante l'evoluzione della rete, possono entrare o uscire nodi, quindi le dimensioni dei gruppi possono variare anche di molto. Per questo i nodi di confine ( i bnode ) hanno la possibilità di cambiare il proprio gruppo di appartenenza Un bnode passa da un gruppo G ad un gruppo G' nel caso in cui il numero di nodi presenti in G' sia inferiore a quelli presenti in G. Alessandro Genovese 566/1364 Pagina 54 di 109 Questa transizione non può avvenire simultaneamente ad un'altra transizione, in quanto non si avrebbe una conoscenza esatta del numero di nodi in un dato gruppo per ogni istante di tempo. Proprio per questo motivo, tutte le transizioni all'interno del sistema sono gestite da un nodo coordinatore che si occupa di gestire le richieste di transizione, e verificare che una transizione non sia in disaccordo con quanto detto prima riguardo il numero di nodi in un gruppo. Questo potrebbe accadere, in quanto un nodo invia la richiesta di transizione dal gruppo G al gruppo G', ma nel frattempo il gruppo G' è stato ripopolato da altre transizioni. 4.3.8 Connessioni interne ad un gruppo Come definito in precedenza, un gruppo G è internamente connesso se: Nel caso in cui la rottura di un link, o la disconnessione di un nodo, causi a divisoine del gruppo in due parti distinte, verrebbe così a mancare la condizione necessaria per l'esistenza del gruppo. In questo caso di avvia una procedur di controllo, atta a ripristinare i gruppi nel sistema. I nodi che dopo la rottura del link sono stati isolati dal resto del gruppo, avranno comunque connessioni verso altri gruppi ( connessioni tra bnode ). Queste connessioni verrano quindi utilizzate per unire questi nodi ad un altro gruppo già esistente e non saturo. Nel caso in cui sia necessario, può essere anche creato un nuovo gruppo. Alessandro Genovese 566/1364 Pagina 55 di 109 4.3.9 Gruppi compatti Come detto in precedenza, un gnode è definito compatto, se i valori rem tra due qualsiasi nodi del gruppo non differiscono troppo. Più formalmente, per un fissato valore r*: dove per a –> b si intende il percorso migliore dal nodo a al nodo b. I gruppi non devono necessariamente essere mantenuti compatti, ma più lo sono, e più effeciente è l'algoritmo. Una tecnica per mantenere compatti i gruppi è la seguente: Sia n un nodo e Vn l'insieme dei suoi vicini. Per ogni vicino v che appartiene a Vn il nodo n calcola l'attrazione rispetto al nodo v: dove Rv è l'insieme dei percorsi ottimi di n che passano per il v. Il nodo n entrerà quindi nel gruppo del suo vicino v* con il quale avrà il massimo valore di attrazione. 4.3.10 Identificazione dei nodi Si assegna un ID numerico ad ogni Gnode a partire dall'ultimo livello: 1. Nell'ultimo livello OSI ha un solo Gnode, al quale verrà assegnato l'ID Alessandro Genovese 566/1364 Pagina 56 di 109 "0". Quindi l'ID globale di tutta l'intera rete sarà : 0 2. Nel livello sottostante ci saranno 256 gruppi (gnode), ai quali verrà assegnato un ID da 0 a 255. L'ID globale dei gnode a questo livello sarà quindi: 0*i con 0 ≤ i ≤ 255 3. Questo meccanismo di assegnazione viene ripetuto ricorsivamente fino al livello 0, ottenendo ID globali nella forma seguente: 4. Siccome l'ID dell'intera rete, e quindi dell'ultimo livello, sarà sempre 0, questo verrà omesso, e verranno considerati soltanto i primi n livelli. In una rete composta al massimo da 232 nodi (numero massimo ammesso in ipv4) ci saranno 5 livelli (n=4), ed ogni gruppo sarà composto nella classica maniera, da 256 nodi. Proprio per questo motivo, l'ID usato in Netsukuku avrà la forma di un classico indirizzo IP: [0...255] . [0...255] . [0...255] . [0...255] quindi un nodo di livello 0 potrebbe avere un ID del seguente tipo: 14 . 43 . 152 . 123 Inoltre, si ha la garanzia che questo ID sia univoco per ogni nodo, grazie al fatto che è univoca l'appartenenza ai gruppi di livello superiore. Nell'esempio precedente si ha infatti : g3 = 14 g2 = 43 g1 = 152 g0 = 123 dove gi corrisponde all'ID del gnode di livelli i-esimo. Alessandro Genovese 566/1364 Pagina 57 di 109 4.3.11 Mappe gerarchiche Come è stato introdotto in precedenza, la struttura gerarchica della rete permette di risparmiare molto spazio nella memorizzazione della mappa contentete le informazioni di routing. Infatti un generico nodo N, anziché memorizzare informazioni riguardanti ciascun nodo dell'intera rete, memorizzerà solo le informazioni riguardo i gnode presenti. Se si prende in considerazione il nodo N avente ID: g3 . g2 . g1 . g0 Esso memorizzerà informazioni riguardanti: 1. I 256 singoli nodi che appartengono al suo stesso gnode di livello 1, o equivalentemente, i 256 nodi del gruppo g1. 2. I 256 Gnode che appartengono allo stesso gruppo di livello 2, o equivalentemente, i 256 gnode del gruppo g2 . 3. Infine, i 256 Gnode che appartengono al gnode g3 Così facendo, il nodo N on ha informazioni precise riguardo gli altri nodi della rete, che appartengono ad un gruppo diverso dal suo. Nonostante ciò, verrà mostrato in seguito come il nodo N sarà in grado di raggiungere comunque tutti gli altri nodi della rete. Con questa assunzione, il nodo N non dovrà memorizzare informazioni riguardo i 232 nodi della rete, ma avrà bisogno solamente di 256n informazioni (256 gruppi per ogni livello). La mappa che sarà presente in ogni nodo, verrà ulteriormente divisa in una mappa interna, che conterrà le informazioni riguardo i 256 nodi appartenenti allo stesso Alessandro Genovese 566/1364 Pagina 58 di 109 gruppo, ed una mappa esterna che conterrà le informazioni di tutti gli altri gruppi degli altri livello. 4.3.12 QSPN v2 Broken Link Nel caso in cui si verifica una rottura di un link verrà attivata la seguente procedura di recupero: 1 – B crea l'insieme R: R è l'insieme di tutti i percorsi migliori che passano attraverso A. Se R = 0 allora l'algoritmo si ferma. Ogni percorso r che apparitne ad R è salvato come una coppia (dst(r), rem(r)) 2 – B aggiorna la propria porzione di mappa: ed i percorsi vengon ordinati in base alla propria efficienza 3 – B crea il seguente insieme Alessandro Genovese 566/1364 Pagina 59 di 109 4 – B aggiunge all'ETP l'insieme il proprio ID e setta ad 1 il flag d'interesse. 5 – Infine, B invia l'ETP a tutti is uoi vicini eccetto A. A questo punto l'ETP viene propagato nello stesso modo del caso in cui il link muta. La tabella di routing di ogni nodo dovrebbe essere differente e non contenere percorsi ridondanti, come ad esempio la seguente: I percorsi 1 e 2 sono identici, l'unica differenza è nei primi 3 hops. Gli ultimi due invece sono totalmente differenti dagli altri. I primi due percorsi sono quindi ridondanti e il nodo P dovrebbe tenere in memoria solo uno di loro, salvando spazio prezioso per altri percorsi ritenuti interessanti. È di fondamentale importanza non avere memorizzati percorsi ridondanti in quanto se uno di questi fallisce manda in fallimento la maggior parte degli altri percorsi memorizzati. Alessandro Genovese 566/1364 Pagina 60 di 109 4.4 Tracer Packet Il Tracer Packet ( TP ) è di fondamentale importanza per l'algoritmo QSPN, poichè in grado di operare indifferentemente in qualsiasi livello della gerarchia. E' un pacchetto che salva gli ID dei salti trasversali al suo interno. Non è inviato ad una specifica destinazione ma è usato per inondare la rete con un flood di pacchetti. Il flood inviato da un nodo passerà soltanto una volta attraverso ogni nodo della rete il quale una volta ricevuto questo pacchetto lo trasmette a tutti i suoi vicini ad eccezione da quello che è stato ricevuto. Un tracer packet continuerà ad essere inviato nella rete fin quando trasporterà informazioni ritenute interessanti dai nodi che lo riceveranno; il TP è interessante se e soltanto se le informazioni che trasporta, ovvero il routing sul come raggiungere gli altri nodi della rete (i percorsi), non sono già presenti nel nodo di ricezione. Il concetto basilare del TP è basato sulla memorizzazione degli ID dei nodi attraversati; e sarà inoltrato a tutti i suoi nodi vicini eccetto da quello dal quale lo ha ricevuto. 4.4.1 Proprietà di un tracer packet Esempio della funzionamento di un tracer packet flood. Un nodo D, che ha ricevuto un TP ( tracer packet ) può conoscere il suo percorso esatto. Pertanto, D può conoscere il percorso per raggiungere la sorgente del nodo S ( che ha inviato il TP ) e gli itinerari per raggiungere tutti i nodi attraverso i quali è Alessandro Genovese 566/1364 Pagina 61 di 109 passato. Per esempio: supponiamo che il TP ricevuto da D contenga il seguente percorso: { S, A, B, C, D }. D ora saprà il percorso che il TP ha effettuato per giungere fino a lui; pertanto saprà anche che per raggiungere il nodo A dovrà andare prima verso C – B – A. Il bouquet di S è l'insieme di tutti i TP che saranno trasmessi o inviati dal nodo S durante il flood. Il primo TP di questo bouquet ricevuto da un generico nodo D, sarà il TP che ha coperto il percorso più veloce che collega S a D. Il percorso più veloce da S → D è quello con il minimo RTT (round-trip time) tra S e D. Questa proprietà è valida anche se S è il nodo che ha iniziato il flood TP, ossia il primo nodo che ha inviato il bouquet prima del flood del TP. Il flood si fermerà quando nessuno dei nodi a cui è arrivato il TP sarà in grado di spedirlo ad altri nodi vicini. Riassumendo concettualmente il metodo di flooding dei pacchetti ( TP flood ) il flood continuerà ad essere inoltrato al nodo successivo fino a quando incontra un'informazione utile. Un nodo considera un TP ricevuto interessante quando il suo contenuto contiene almeno un nuovo percorso. In altre parole, se TP contiene un percorso già conosciuto dallo stesso nodo è considerato non interessante. 4.4.2 Tracer Packet Acyclic ( ATP ) e il Tracket Packet Continuous CTP Il tracer packet aciclico non è ristretto come un normale TP e permette che uno o più ATP attraversi lo stesso nodo. In questo caso questo tipo di TP non sarà inoltrato a nessun altro nodo vicino se il suo node ID è già presente nel percorso contenuto nel Alessandro Genovese 566/1364 Pagina 62 di 109 corpo del pacchetto. Se ogni nodo della rete invia un flood ATP, allora ogni nodo ricerverà tutti i possibili percorsi per raggiungere ogni altro nodo. Il CTP (tracker packet continuous) è un'estensione di un TP flood: è un TP che non termina mai. 4.5 ANDNA In ogni rete vi è la necessità di poter rintracciare ogni singolo nodo della stessa, per questo motivo si stabiliscono nomenclature per il rintracciamento dei nodi. L'ANDNA ( A Netsukuku Domain Name Architecture ) è il sistema che permette la gestione degli hostname utilizzati da Netsukuku sostituendo l'attuale DNS. Il database ANDNA è disseminato all'interno della rete e richiede un utilizzo di memoria esiguo. Il concetto è quello di dividere la mappa in migliaia di porzioni concentrando queste informazioni soltanto lì dove serve. Ogni hostname h all'interno del sistema è una stringa di 512 bytes al massimo. Facendo l'hash dell'hostnbame si ottine ( H(h) ) un numero che è uguale agli attuali indirizzi IP. 4.5.1 Un esempio di richiesta d'inserimento di un nuovo nodo N è il nuovo nodo. I è un nodo che appartiene ad un Gnode della rete Netsukuku. Per procedere alla registrazione di N avvengono i seguenti passaggi: 1 – N calcola I = H(h) Alessandro Genovese 566/1364 Pagina 63 di 109 2 – N invia una richiesta di registrazione al nodo I 3 – I associa nel suo database, H(h) come IP del nodo N ( chiamato IP(N) ) Ora per effettuare la risoluzione dell'hostname di un generco nodo M della rete Netsukuku, quindi per poter rintracciare il nodo ed inviare le informazioni si deve inviare la richiesta a tutti i singoli nodi di un Gnode proprio perchè all'ingresso del nodo all'interno della rete Netsukuku viene propagato a tutti i suoi nodi vicini che appartengono allo stesso Gnodes. Un volta che la sua presenza è stata comunicata a tutti i suoi vicini, riceverà i database ANDNA dei nodi al quale è collegato. Tutte le richieste saranno soggette alla cifratura a chiave pubblica RSA; questo sistema non è utilizzato per garantire la privacy delle richiesta, ma bensì per garantirne l'autenticità. Ogni nodo quindi ha a disposizione una coppia di chiavi, pubblica e privata, e cifrerà ogni richiesta con la propria chiave privata. Il massimo numero di hostname che possono essere registrati all'interno dei Gnodes è 256, limite imposto per prevenire un sovraccarico del sistma ANDNA ed allo stesso tempo per frenare la diffusione di SPAM. Il ruolo di gestore viene dato dal counter node che è il nodo con IP uguale all'hash della chiave pubblica del nodo n che vuole registrare l'hostname h. Questo viene denotato con cr(n). Per ogni nodo n che vuole registrare un hostname h, esiste il corrispondente cr(n), che si occupa ri regolare il numero di hostname registrati dal nodo. Il procedimento per la registrazione di un nuovo hostname all'interno dei gnodes è il seguente: 1 – il nodo n vuole registrare l'hostname h 2 – n calcola il gruppo rgH(h) e contatta un qualsiasi nodo appartenente ad esso, Alessandro Genovese 566/1364 Pagina 64 di 109 ad esempio y 3 – n invia la registrazione ad y, autenticandola tramite la cifratura del pacchetto con la propria chiave privata 4 – il nodo y contatta il counter node cr(n) ed invia ad esse l'IP del nodo n ed una copia della richiesta 5 – il counter node verifica la possibilità di registrare altri hostname, e lo comunica ad y 6 – in caso positivo, il nodo y accetta la richiesta di registrazione ed aggiorna il proprio database 7 – l'informazione sulla registrazione verrà disseminata all0interno del gruppo cui appartiene il nodo y 4.5.2 Gestione degli indirizzi IP Utilizzando la tecnica denominata "IP restriction" la rete Netsukuku può utilizzare soltanto indirizzi privati di class A ( 10.0.0.0 o 172.16.0.0 ) per ipv4 e inidirizzi di classe Site-local per quanto riguarda ipv6. In questo modo Netsukuku non può interferire con le classi pubbliche di IP in Internet. La classe di indirizzi 192.168.0.0 non può essere utilizzata poichè è la classe privata di default di Netsukuku e viene utilizzata per creare LAN interne a Netsukuku; la classe di indirizzi 10.x.x.x non è privata in quanto è troppo grande e molti degli indirizzi verrebbero sprecati per essere utilizzati come indirizzi privati. Grazie all'utilizzo di un demone ( Net Split ) è possibile avere due modalità di gestione degli indirizzi sullo stesso nodo contemporaneamente, dividendoli in Inet e Ntk. Alessandro Genovese 566/1364 Pagina 65 di 109 Nella modalità di Inet, un IP punterà sempre ad un indirizzo Internet mentre quelli che appartengono alla modalità Ntk punteranno sempre a nodi di Netsukuku. Per questo motivo si creeranno due routing table per Ntk e per Inet; quidi è possibile creare un ponte di comunicazione fra l'attuale topologia della rete internet e la logica della rete che è nettamente diversa per quanto riguarda Netsukuku. Un breve esempio: Assumiamo di essere in NTK mode: • Un client vuole stabilire una connessione a google.com.int( o 64.233.187.99.int ) • ANDNA riceve la query 64.233.187.99.int • ANDNA sceglie l'IP random 127.1.2.3 ( fra 127.0.0.0/8 ) e aggiunge "64.233.187.99 --> 127.1.2.3 nella tabella delle associazioni • ANDNA istruisce netfilter a settare per l'indirizzo di Google come destinazione per tutti i pacchetti che saranno inviati a 127.1.2.3 al client. Inoltre netfilter cambia tutti gli indirizzi sorgenti di tutti pacchetti inviati da 64.233.187.99 a 127.1.2.3 • ANDNA ritorna l'ip 127.1.2.3 al client • Il client crea una connessione con 127.1.2.3 ma attualmente questo ip corrisponde a quello di google • quando la connessione viene chiusa, ANDSN aspetta 300 secondi prima di eliminare l'ip 127.1.2.3 dalla tabella delle associazioni e dalle regole di netfilter Praticamente ciò che è stato fatto è un esempio di bridge di collegamento fra internet e la rete Netsukuku, i quali nodi vicini collegati al client utilizzeranno e propagheranno l'informazione di associazione all'interno del Gnode per reperire il server di Google se ritenuto come distanza minima per raggiungerlo. Alessandro Genovese 566/1364 Pagina 66 di 109 4.5.3 Considerazioni Anche se Netsukuku ha ottime potenzialità di successo nella sostituzione della gerarchia e dalla concezione concepita all'origine dell'attuale rete Internet è necessario che per adesso le due reti restino compatbili poichè esistono diversi problemi ancora irrisolti in Netsukuku, come per esempio la mancanza di link fra i nodi i quali devono essere sostituiti da Tunnel Virtuali tramite internet. Tuttavia, ci sono alcuni aspetti negativi che riguardano questo algoritmo: 1. I cellulari non sono supportati da algoritmi di Netsukuku. 2. La rete non si è aggiorna così velocemente: è necessario solo qualche minuto prima che tutti i nodi vengano a conoscenza delle modifiche alla rete (esempio: nuovi nodi si aggiungono in un Gnodes, i percorsi più efficaci sono stati resi disponibili,etc.). Tuttavia, quando un nodo si unisce alla rete, può raggiungere tutti gli altri nodi dal primo istante con le rotte dei suoi vicini. Alessandro Genovese 566/1364 Pagina 67 di 109 5 La rete Neurale La rete Netsukuku, proprio come detto dagli stessi autori Italiani è "Una rete neurale, una ragnatela, una rete sociale, una rete da pesca - scrivono gli autori - sono delle reti pure. La natura stessa e, infine, l'universo nel suo insieme, dall'infinitamente piccolo all'infinitamente grande, sono delle reti pure. In tutte le reti esistenti in natura non esistono centri di "smistamento del traffico" della rete, perchè non sono di alcuna utilità". Una Rete Neurale è una struttura parallela che processa informazioni distribuite. Tale rete consta di elementi di processazione (neuroni che possono avere una memoria locale e che sono in grado di processare localmente informazioni) interconnessi tramite canali (detti connessioni) che trasmettono segnali unidirezionali. Ogni neurone ha una singola connessione di uscita che si dirama in un certo numero di connessioni collaterali; ognuna di questa trasporta lo stesso segnale il segnale d' uscita del neurone. Questo segnale d' uscita può essere di qualunque tipo matematico. Quindi alla base della nascita delle reti neurali vi è il paragone, come dice il nome stesso, con i neuroni che costituiscono il tessuto nervoso e dei nessi causali tra questi che danno origine alle capacità mentali superiori dell'uomo. Il termine rete rimanda al collegamento tra i diversi neuroni organizzati nel tessuto. Le connessioni presenti sono necessarie per dar luogo a forme di cognizione o di elaborazione delle informazioni. Non si ritiene che sia un singolo neurone a causare il pensiero. La computazione compiuta all'interno di ciascun neurone può essere definita arbitrariamente con l’unica restrizione che deve essere completamente locale; cioè deve dipendere solo dai valori correnti dei segnali d'ingresso che arrivano al neurone Alessandro Genovese 566/1364 Pagina 68 di 109 tramite opportune connessioni e dai valori immagazzinati nella memoria locale del neurone. Fig. 9 - Semplice architettura di una rete neurale La trasmissione all'interno di un neurone avviene attraverso ad una differenza di potenziale transmembrana detto potenziale di riposo (pari a circa 70mV) dovuta ad una diverso accumulo di ioni a ridosso della membrana. Ogni cellula nervosa è eccitabile, ovvero può modificare rapidamente l'accumulo di ioni, e quindi variare il potenziale di membrana. Un neurone a riposo che riceva uno stimolo, sia esso luminoso, meccanico o da parte di altri neuroni, si eccita modificando il proprio potenziale di membrana fino al raggiungimento del valore del potenziale d'azione. L'alterazione del potenziale si propaga lungo l'assone. Questo è un segnale nervoso elementare, treni di questi potenziali costituiscono gli impulsi nervosi. Un impulso nervoso può propagarsi in una sola direzione poiché la membrana ritornata a riposoè refrattaria, per un breve istante, a un'ulteriore eccitazione. L'informazione potrà proseguire solo grazie all'intervento dei neurotrasmettitori, Alessandro Genovese 566/1364 Pagina 69 di 109 molecole liberate nello spazio sinaptico dal neurone presinaptico, e riconosciute da recettori presenti sul neurone postsinaptico. La ricezione dei neurotrasmettitori, che agiscono rapidamente, per breve tempo e localmente, genera un nuovo potenziale d'azione che da origine ad un nuovo impulso, e cosi via di neurone in neurone. L'informazione trasmessa da un neurone è influenzata da quella proveniente dagli altri neuroni, sia inibitori che eccitatori. 5.1.1 Neurobiologia Allo stato attuale, a differenza delle macchine, l’uomo è un ottimo esempio di “sistema” in grado di elaborare informazione sotto-simboliche. Tali elaborazioni, come ogni altro processo cognitivo, hanno sede nel cervello, una complessa struttura neurobiologica, attualmente decifrata in modo piuttosto accurato per quanto riguarda gli aspetti anatomici. Esiste un “mattone elementare” che caratterizza tutte le strutture cerebrali, una cellula, denominata neurone, che è sede di processi elettrochimici responsabili per la generazione di campi elettromagnetici. I neuroni sono composti da un corpo detto soma e da due tipi di diramazioni: i dentriti e il cilindrasse o assone. Nel cervello umano sono presenti tipicamente oltre 100 miliardi di neuroni, ciascuno interconnesso a circa altri 10.000. Nelle interconnessioni ha luogo la sinapsi, un processo elettrochimico atto a rinforzare o inibire l’interazione cellulare. I segnali rilevabili hanno un potenziale dell’ordine di alcune decine di millVolt e si presentano come treni di impulsi con frequenza intorno ai 100 Hz, con opportune modulazioni. Sono noti modelli sofisticati che esprimono il potenziale della cella (attivazione) in funzione del potenziale delle celle interconnesse. È opinione condivisa da ricercatori nel mondo delle scienze cognitive che i segnali elettrici presenti nei neuroni siano alla base dell’elaborazione dell’informazione a livello Alessandro Genovese 566/1364 Pagina 70 di 109 cerebrale. Le capacità cognitive sarebbero, dunque, in relazione all’elaborazione dei segnali presenti nei neuroni. Inoltre, c’è evidenza sperimentale per sostenere che la struttura cerebrale e le sinapsi siano influenzate dalla vita degli individui, dalle loro esperienze, dall’apprendimento di compiti specifici. È il particolare pattern di interconnessioni e la forza delle connessioni sinaptiche che definisce le proprietà funzionali di una particolare porzione del cervello. Si è, infatti, verificato sperimentalmente che le funzioni cognitive risiedono in particolari zone e che tali funzioni possono essere perdute a seguito della “rottura” dei legami sinaptici ed eventualmente recuperate, almeno in parte, con successivi processi di apprendimento atti a instaurare nuovi pattern di interconnessione sinaptica. Dato che la struttura cerebrale e il comportamento elettromagnetico delle singole celle neuronali sono noti, i ricercatori si sono ben preso chiesti se si possono operare induzioni sui comportamenti collettivi delle cellule neuronali, e dunque del cervello umano, e se si possono trarre utili suggerimenti e ispirazioni per la costruzione di macchine in grado di replicare compiti connotati da una forte componente di elaborazione sottosimbolica, attualmente di difficile soluzione per i calcolatori. Il lavoro di McCulloch & Pitts è forse il primo significativo passo in questa direzione, la prima analisi completa, soprattutto dal punto di vista formale, che fa intuire come semplici unità con sinapsi eccitatorie e inibitorie e con apposita soglia siano in grado, in virtù di un processo collettivo, di rappresentare complesse proposizioni. E questo sembra indurli a un certo ottimismo anche per le possibili implicazioni sulla comprensione dei processi cognitivi umani: “Mind no longer goes more ghostly than a ghost”. Tuttavia il lavoro di McCulluch e Pitt sembra essere stato più rilevante per gli sviluppi nel settore dei calcolatori che non delle scienze cognitive. Carpire i segreti della mente dall’osservazione dell’attivazione cerebrale è una sfida affascinante, ma questo problema di reverse engineering sembra essere terribilmente intrappolato nella complessità del sistema neuronale umano. Si tratta sostanzialmente di indurre Alessandro Genovese 566/1364 Pagina 71 di 109 regolarità e leggi dall’osservazione, come in altri settori delle scienze. Questo problema possiede, tuttavia, un’infinità di sfaccettature e, soprattutto, richiede un processo di induzione che sembra inerentemente intrappolato nella complessità dei sistemi dinamici oggetto dello studio. Inferire regole dagli esempi sembra essere difficile anche in casi elementari; si pensi, a titolo di esempio, al problema dell’inferenza induttiva di grammatiche, che consiste nel determinare la grammatica che genera un linguaggio presentato mediante esempi. Sfortunatamente, questo problema e intrattabile perfino in caso di semplici grammatiche. Era, tuttavia, ben chiaro ai padri dell’informatica che non è necessaria una perfetta emulazione dei processi neurobiologici per l’emergenza di capacità cognitive. Molti modelli connessionistici sono, infatti, solo ispirati dal paradigma biologico a livello di unità neuronale e si basano su una struttura, dove si eredita il principio che l’attivazione neuronale (potenziale associato all’unità) è soggetta a eccitazioni e inibizioni dalle unità connesse. In particolare, l’attivazione dell’unità i dipende dall’attivazione della generica unità j mediante un parametro associato alla connessione tra le due unità, che modella il principio elettrochimico della sinapsi. In seguito, sarà illustrato come l’utilizzo di modelli di calcolo basati su reti neurali artificiali sia in grado di esibire quello che Lotfi Zadeh ha definito softcomputing secondo cui il requisito “trova sempre la soluzione esatta” diventa “trova spesso una soluzione approssimata”. La ricerca sulle reti neurali artificiali si è evoluta attraverso alterne vicende. Sin dagli albori dell’informatica, l’elaborazione basata su algoritmi e i modelli neurali centrati sul’apprendimento da esempi si sono sviluppati in parallelo. Verso la fine degli anni ’60, Marvin Minsky e Simon Paper pubblicano “Perceptrons”, un libro che analizza con grande lucidità ed elegante formalizzazione le capacità computazionali del percettrone di Rosenblatt. La comunità scientifica recepisce principalmente l’analisi critica del percettrone e segue una fase di stagnazione che si protrae fino agli inizi Alessandro Genovese 566/1364 Pagina 72 di 109 degli anni ’80. L’interesse rifiorisce, in particolare, per i lavori di Hopfield e del Parallel Distributed Research Center sulle reti neurali multistrato con l’algoritmo di apprendimento Back Propagation. Fig. 10 - il neurone e la sua struttura neurale 5.1.2 Il modello matematico delle reti neurali L'unità fondamentale di una rete neurale è il neurone o nodo o percettrone: una unità costituita da uno o più ingressi, una funzione soglia e uno o più collegamenti in uscita. Per tutti i neuroni, tranne per quelli che svolgono funzione di input o output della rete stessa, i collegamenti sono da/verso uno o più neuroni e consentono solo il passaggio di informazioni, non lo scambio. Le informazioni scorrono solo in una direzione a livello del collegamento. Cosi come avviene per le cellule nervose dove l'informazione può propagarsi in una sola direzione a causa della ripolarizzazione della Alessandro Genovese 566/1364 Pagina 73 di 109 membrana del pirenoforo. Le informazioni trasmesse ed elaborate da un neurone sono numeri. Nelle configurazioni più semplici gli input vengono moltiplicati per un peso, un numero reale, ed in seguito sommati. Il valore cosi trovato viene inviato alla funzione soglia che attiva o inibisce il neurone. Alla somma dei vari input viene aggiunto il valore di soglia, chiamato bias, introdotto per replicare i differenti valori del potenziale d'azione di ogni singolo neurone. Il risultato di questa operazione viene trasmesso agli altri neuroni a questo collegati che agiranno similmente. L'attivazione o l'inibizione del neurone è solitamente graduale ovvero non si utilizzano solo valori come 0 o 1 per indicare due stati (attivo o inibito), sul collegamento possono essere trasmessi valori di qualunque grandezza. Una rete è composta da più neuroni collegati tra di loro in modo tale da individuare almeno 3 livelli: • Neuroni di Input: questi neuroni ricevono i dati dall'ambiente • Neuroni Nascosti: uno o più livelli di neuroni nascosti collegati tra di loro; nelle reti neurali più semplici è presente un solo livello di neuroni nascosi • Neuroni di Output: ultimo passaggio della elaborazione, restituiscono i dati ricevuti. Le informazioni scorrono in una direzione: dallo strato di ingresso, passando per quelli nascosti, si giunge al calcolo degli output nel terzo strato. Analisi del sistema di apprendimento di una rete neurale Una premessa al processo di apprendimento. Una fase importante nello sviluppo di un sistema basato sulle reti neurali è il pre processing dei dati raccolti. I parametri reali che costituiranno l'input della rete neurali dovranno essere convertiti in numeri per poter essere elaborati. Per esempio un suono andrà convertito in bande di frequenza, un'immagine nei valori numerici dei propri pixel. Alessandro Genovese 566/1364 Pagina 74 di 109 Dopo essere stata inizializzata con dei pesi casuali, una rete neurale deve subire un procedimento chiamato apprendimento (o anche addestramento): i pesi dei singoli neuroni vengono modificati in modo da approssimare la risposta della rete neurale ai valori di output noti. I valori di input sono passati ai neuroni dello strato di ingresso, l'output ottenuto dalla rete è confrontato con gli output noti, si calcola l'errore commesso e utilizzando l'algoritmo di retropropagazione dell'errore (error backpropagation ) si modificano i pesi dei neuroni procedendo nel verso opposto a quello seguito per il calcolo degli output. Quest'ultima procedura, denominata nel suo complesso epoca, è ripetuta diverse volte ( 106 109 volte o più ) per migliorare sempre più i pesi delle connessioni dei neuroni. Si dice che una rete abbia eseguito un addestramento di N epoche. Potremmo dire che la rete neurale "impara dall'esperienza commettendo errori" in quanto dalla presentazione degli stessi valori, tra i quali si presuppone l'esistenza di una relazione, riconosce quella funzione che sarà memorizzata nei pesi delle connessioni dei singoli neuroni. Ripetendo più volte il confronto con gli insiemi input output corretti acquista esperienza, gli errori compiuti vengono corretti di epoca in epoca. Le reti neurali possono approssimare funzioni matematiche ma anche trovare relazioni e fornire un modello non studiabile delle relazioni tra input e output. Una rete neurale a singolo livello, ci si riferisce al numero di livelli nascosti,è in grado di apprendere qualsiasi funzione continua, mentre sono necessari almeno due livelli nascosti, rete multistrato, per riprodurre delle funzioni discontinue. Le reti neurali vengo utilizzate per realizzare dei modelli che permettano di calcolare con una certa accuratezza i risultati di una funzione anche al di fuori dei valori di addestramento. Il paragone con una funzione matematica deve considerare funzioni con più di una incognita, in quanto, una rete neurale può avere una elevato numero di neuroni di input. Il numero considerevole di variabili aumenta la complessità delle Alessandro Genovese 566/1364 Pagina 75 di 109 relazioni matematiche da elaborare e fa si che le reti neurali, sebbene non permettano di studiare un modello, possono fornire una previsione del comportamento del fenomeno studiato. Per esempio immaginiamo di aver registrato per diversi mesi l'andamento del meteo in una certalocalità. Sono stati raccolti dati riguardanti la pressione atmosferica, la temperatura e l'umiditàdell'aria, velocità e direzione del vento, la quantità ed i tipo di precipitazioni e l'ora del rilevamentodei dati. E' possibile realizzare una rete neurale, che considerando come input i valori rilevati ad unacerta ora della giornata di oggi, restituisca il tipo di precipitazione nelle prossime 12 h oppure latemperatura nei giorni successivi. In questo esempio la rete neurale, confrontandosi con lo storicodel meteo in quest'area, viene addestrata ad «approssimare» quella funzione, relazione, che non si riesce ad esprimere matematicamente, fornendo una previsione del fenomeno. 5.1.3 Apprendimento di una rete Neurale Nelle reti neurali artificiali, assieme ai corrispondenti schemi computazionali, sono di scarso interesse senza il paradigma centrale dell’apprendimento, che viene ispirato a corrispondente paradigma neurobiliogico. Apprendere in una rete neurale artificiale corrisponde a modificare il valore dei pesi delle connessioni sinaptiche. Tale processo è influenzato dagli esempi che concorrono a sviluppare concetti. I dati e l’interazione con l’ambiente concorrono con diversi protocolli allo sviluppo di competenze cognitive. In particolare, si individuano tre diverse modalità di autoapprendimento (o apprendimento automatico) a seconda del ruolo esercitato dal supervisore del concetto: l’apprendimento con supervisione, l’apprendimento con rinforzo e l’apprendimento senza supervisione. Mentre l'intelligenza artificiale tradizionale cerca di riprodurre le capacità degli esseri umaniin termini di simboli e regole per manipolare questi simboli, le reti neurali sono Alessandro Genovese 566/1364 Pagina 76 di 109 invece modelliispirati alle caratteristiche fisiche del corpo, in particolare del sistema nervoso. Una differenzacruciale, consiste nel fatto che un sistema di intelligenza artificiale in genere nonapprende, perché è previamente programmato. Al contrario, è tipico delle reti neurali e, ingenere, di tutti i sistemi che si ispirano alle caratteristiche degli organismi biologici, che lecapacità di tali sistemi sono frutto di un apprendimento autonomo, spontaneo, avvenutoall'interno del sistema.C'è, quindi, una forma di auto organizzazione, di auto apprendimento autonoma, che non esistenei sistemi tradizionali. Questo può essere realmente un vantaggio nel senso che per determinati problemi complessi e non programmabili possono essere risolti con logiche di autoapprendimento delle reti neurali. Queste logiche, fanno sì che lo stesso sistema trovi da solo le soluzioni piùinteressanti a cui noi non avremmo pensato se avessimo dovuto programmarlo. L'apprendimento descritto nell'esempio precedente è un apprendimentosupervisionato in quanto è presente un insieme di valori di input ed il corrispettivo output.L'obiettivo finale dell'apprendimento supervisionato è la previsione del valore dell'uscita per ogni valore valido dell'ingresso, basandosi soltanto su un numero limitato di esempi di corrispondenza(vale a dire, coppie di valori input/output tipicamente un vettore). Per fare ciò, la rete deve essere infine dotata diun'adeguata capacità di generalizzazione, con riferimento a casi ad essa ignoti. La differenza tra le reti neurali e le normali intelligenze artificiali consiste anche nella diversaprogettazione: mentre i sistemi esperti si basano sulla logica umana, le reti neurali si fondano sullastruttura del cervello umano. Questa differenza è notevole poichè è causa del grande potenziale edell'imprevidibilità delle reti neurali: cosi come possono fornire soluzioni laddove non si riesca adescrivere un algoritmo, può risultare difficile la predisposizione di algoritmi di apprendimentoefficaci per una determinata situazione. La loro complessità rende difficile determinare cosa una rete possa fare o meno dal punto di vista matematico. Alessandro Genovese 566/1364 Pagina 77 di 109 L'apprendimento non supervisionato il problema diventa quello di trovare strutture nascoste in strutture dati non pre-classificate da cui non è possibile valutare una possibile soluzione. Questo metodo di apprendimento è strettamente collegato al problema di stima di densità in statistica. L'apprendimento con rinforzo è una tecnica di programmazione basata sul presupposto di potere ricevere degli stimoli dall'esterno a seconda delle scelte dell'algoritmo. Gli algoritmi per il reinforcement learning tentano di determinare una politica tesa a massimizzare gli incentivi cumulati ricevuti dall'agente nel corso della Fig. 11 - rete neurale feed forward sua esplorazione del problema. L'apprendimento con rinforzo differisce da quello supervisionato poiché non sono mai presentate delle coppie input-output di esempi noti, né si procede alla correzione esplicita di azioni subottimali. Per reti ricorsive invece, come è può essere vista l'intera architettura della rete Netsukuku, risulta difficile concepire schemi di apprendimento in grado di coniugare entrambe queste proprietà, mentre questo è possibile per architetture speciali, in cui le Alessandro Genovese 566/1364 Pagina 78 di 109 connessioni che produ- cono la ricorsività sono solo locali ai neuroni. In alcuni protocolli di apprendimento, si è assunto che l’apprendimento consiste solo nella variazione dei pesi e che questo ha luogo a partire da una rete neurale con architettura predefinita. Il principio di indeterminazione, precedentemente menzionato, suggerisce, tuttavia, che la definizione stessa dell’architettura possa ragionevolmente costituire oggetto del processo di apprendimento. Tale assunzione, che ha solide basi neurobiologiche, conduce dunque allo studio di algoritmi atti creare e cancellare connessioni si- naptiche oltre che a variarne il peso corrispondente. Sono stati concepiti algoritmi di growing e di pruning delle connessioni basati tipicamente sul principio della sensibi- lità dei pesi rispetto al comportamento della rete. Sono stati anche proposti algoritmi genetici per sviluppare l’architettura adeguata a un certo “task”. Infine, la supervi- sione può essere fornita in modo più sofisticato mediante uno schema di insegnamen- to, che mira a presentare il desiderato target in modo progressivo. 5.1.4 L'apprendimento supervisionato Nell’apprendimento con supervisione, il supervisore fornisce l’informazione completa sul concetto, definendo, in questo caso, esattamente la classe di appartenenza. L’apprendimento di un concetto non richiede necessariamente l’interazione con un supervisore e può aver luogo anche mediante un’auto-organizzazione degli esempi. Apprendere senza supervisione significa aggregare esempi simili in regioni neuronali topologicamente vicine: l’apprendimento, quindi, è guidato da criteri di “similarità” nei dati. Alessandro Genovese 566/1364 Pagina 79 di 109 5.1.5 L'apprendimento con rinforzo Con il termine di Apprendimento per Rinforzo (Reinforcement Learning) si intende più una problematica di addestramento che un metodo di addestramento. L’apprendimento per rinforzo è un metodo che permette di apprendere da prove ed errori; dal punto di vista psicologico il meccanismo di rinforzo consiste nell’idea che le azioni che producono un buon risultato tendono ad essere scelte sempre più frequentemente, mentre quelle seguite da cattivi risultati finiscono per essere gradualmente escluse dalla scelta. L’utilizzo dell’apprendimento per prove ed errori nei sistemi intelligenti artificiali risale alle prime speculazioni di Turing nel 1950, ma le prime pubblicazioni riguardano Minsky, Farley e Clark nel 1954. Nella sua tesi di dottorato Minsky descrive un modello computazionale di apprendimento per rinforzo e una sua possibile realizzazione concreta, sotto forma di macchina analogica, chiamata SNARC (Stochastic Neural Analog Reinforcement Calculator); mentre Farley e Clark descrivono un sistema di tipo rete neurale. Ma poiché l’apprendimento per rinforzo non è un semplice metodo di modifica dell’azione associata allo stimolo, ma riguarda anche il problema di stimare il beneficio futuro ed il problema di gestire la ricerca di soluzioni migliori, esso fa riferimento anche agli studi matematici del controllo ottimale sviluppati nel 1950. Il termine controllo ottimale definisce il problema (generale) del controllo nel tempo di un sistema per ottimizzare un valore di riferimento. L’approccio proposto fu quello di utilizzare il concetto di stato dinamico del sistema (ovvero configurazione delle variabili di ingresso ad un istante) e della funzione valore dello stato per definire una equazione funzionale chiamata successivamente equazione di Bellman. Alessandro Genovese 566/1364 Pagina 80 di 109 5.1.6 Intelligenza Artificiale Gli esseri umani ritengono che le proprie capacità mentali siano molto importanti in quanto strettamente relazionate ad istinti sensoriali e alle loro facoltà innate di cimentarsi nella risoluzione di problemi più o meno complessi. Per migliari d'anni abbiamo cercanto di comprendere i meccanismi che stanno alla base del pensiero umano; ovvero come un semplice "mucchio di materia" sia capace di percepire, predire, capire, manipolare un mondo molto sempre più grande e complicato. L'IA non è una scienza nuovissima: le sue origini risalgono al periodo immediamente successivo alla seconda Guessa Mondiale, e il termine stesso fu coniato subito dopo nel 1956. Cos è realmente l'IA ? E' una disciplina che studia le facoltà mentali attraverso l'utilizzo di modelli computazionali i quali rendono possibile percepire, ragionare e agire; è lo studio, anche, della progettazione di agenti intelligenti che sappiano prendere decisioni, poichè "istruiti". L'approccio del test di Turing del 1950, è stato concepito per fornire una soddisfacente definizione operativa dell'intelligenza. Invece di proporre una lunga e probabilmente controversa lista di carateristiche richieste a un computer per essere considerato intelligente, Turing propose un test basato sull'impossibilità di distinguerlo da entità che lo sono indubbiamente: gli esseri umani. In sostanza il test si basava sul semplice concetto che se un esaminatore umano, dopo aver posto alcune domande in forma scritta, non sarà in grado di capire se le risposte provengono da una macchina o meno allora il computer passerà il test. Notiamo che programmare una macchina in grado di superare il test richiede un molto Alessandro Genovese 566/1364 Pagina 81 di 109 lavoro, poichè la macchina dovrebbe pertanto possedere le seguenti capacità: • interpretazione del linguaggio naturale per comunicare con l'esaminatore nel suo linguaggio umano • rappresentazione della conoscenza per memorizzare quello che sa o sente • ragionamento automatico per utilizzare la conoscenza memorizzata in modo da rispondere alle domande e trarre nuove conclusioni • apprendimento per adattarsi a nuove circostanze, individuare ed estrapolare pattern Il test di Turing evita deliberatamente l'interazione diretta tra l'esaminatore e il computer, dato che la simulazione fisica di una persona non è richiesta per la determinazione dell'intelligenza. Tuttavia, esiste anche un cosidetto test di Turing totale che include un segnale video in modo che l'esaminatore possa verificare le capacità percettive del soggetto. Per poter passare questo tipo di test, il computer necessiterà anche di: • visione artificiale per percepire gli oggetti • robotica per manipolare gli oggetti e spostarsi fisicamente Le sei discipline elencate qui sopra abbracciano gran parte dell'intelligenza artificiale, e bisogna dare credito a Turing di aver concepito un test che è rimasto significativo a distanza di oltre cinquant'anni. I ricercatori non hanno dedicato molti sforzi al tentativo di costruire un sistema capce di passare il test di Turing, ritenendo più importante studiare i principi alla base dell'intelligenza che dedicarsi alla creazione di un duplicato: dopotutot, la ricerca del "volo artificiale" ha raggiunto il successo quando i fratelli Wright e altri hanno smesso di imitare gli uccelli per studiare l'aerodinamica. I manuali d'ingegneria aerospaziale non definiscono l'obiettivo della loro disciplina come la creazione di "macchine che volano esattamente come un piccione, in modo Alessandro Genovese 566/1364 Pagina 82 di 109 così perfetto da ingannare anche gli altri piccioni". Il filosofo greco Aristotele è stato uno dei primi a cercare di codificare formalmente il "pensiero corretto", ovvero i processi di ragionamento irrefutabili. I suoi sillogismi forniscono pattern di deduzione che portano sempre a conclusioni corrette quando sono corrette le premesse: ad esempio, il famoso "Socrate è un uomo; tutti gli uomini sono mortali; quindi Socrate è mortale". Si riteneva che queste leggi del pensiero governassero il funzionamento della mente; il loro studio ha dato origine alla disciplina chiamato logica. Quindi la logica è un metodo di procedere indipensabile per il raggiungimento dello scopo che si prefigge l'intellingenza artificiale; già nel 1965 esistevano programmi che potevano, in linea di principio, risolvere qualsiasi problema descritto in linguaggio logico e dotato di soluzione. La tradizione logicista spera di partire da programma siffatti per costruire sistemi intelligenti. Quest'approccio ha però due punti deboli: in prima istanza, non è affatto facile esprimere una conoscenza non formalizzata nei termini strettamente formali richiesti dalla notazione logica, in particolare quando tale conoscenza non è sicura al 100%; inoltre, come secondo punto debole, c'è una grande differenza tra essere in grado di risolvere un problema "in linea di principio" e farlo praticamente. Alessandro Genovese 566/1364 Pagina 83 di 109 6 Approccio Proposto Problemi non riscontrati attualmente in Netsukuku sono quelli di reggere un carico molto più ampio rispetto ad altri tipi di rete Wireless Mesh Networks e riesce pertanto a riconfigurarsi senza cambiare l’indirizzo degli host: l'aggiornamento di spostamenti continui, come nel caso di una rete mobile risulterebbe alquanto complicata, in quanto è necessaria una continua comunicazione per rendere disponibile questa informazione (porzioni di mappe) ai nodi vicini; la rete verrebbe quindi inondata da un flooding continuo di pacchetti di dati che portano informazioni soltanto di localizzazione. Il mezzo di trasmissione più efficiente ed economico per stabilire ed effettuare connessioni tra gli utenti di una rete mobile (quindi tra i nodi) è quello delle onde radio. In uno scenario di adozione su larga scala, un utente che utilizzerà un protocollo Netsukuku per il suo dispositivo benificerà di tutti i vantaggi di una rete del genere, descritti ampiamente nel paragrafo 4. Per affrontare un'adattamento di Netsukuku ad una rete ad alta mobilità come quella dei dispositivi cellulari, è bene tenere presente determinati fattori. Per esempio salti continui nella rete tra i vari Gnodes, dovuti agli spostamenti, continue situazioni di broken link, causate per esempio da un cosnumo eccessivo della batteria, oltre che un conseguente ed elevanto numero di pacchetti di scambio dati per rendere nota l'informazione del salto o di una qualsiasi altro aggiornamento della rete. Ogni cellulare, è inteso come nodo, ammettendo che non esista il gap strumental,e quali interferenze nelle onde radio durante l'invio dei dati da un dispositivo all'altro allora possiamo stabilire una condivisione, o sharing, dei pacchetti dati, quali telefonate, messaggi e navigazione che attraverseranno i singoli nodi della rete. Alessandro Genovese 566/1364 Pagina 84 di 109 Ciò che si vuole creare è una rete topologicamente diversa da quella esistente, adattabile durante il cambio generazionale anche alla tecnologia preesistente. Il vantaggio è già stato reso evidente dalla descrizione effettuata precedentemente ma è bene sottolineare che questa nuova architettura permetterà la disponibilità dell'informazione, a portata realmente di palmo, in molti paesi denominati con il termine politico, ben noto, terzo mondo, oltre che avere il grande potenziale di poter raggiungere un'informazione più libera e priva di filtri, ad oggi, quasi un'utopistica visione. 6.1 Introduzione In molti paesi non ancora completamente sviluppati, dal punto di vista tecnologico e non solo, il problema delle infrastrutture di base grava, in maniera estremamente onerosa sui costi d’implementazione ed installazione delle tecnologie odierne di comunicazione cellulare, nonchè internet. Anche in paesi strutturalmente e tecnologicamente avanzati si riscontrano in maniera notoriamente frequente le zone d’ombra all’interno di strutture o di zone periferiche alla città, nelle quali la comunicazione è impedita. Oggigiorno la copertura del territorio nazionale è quasi al 75% con un massiccio impiego di investimenti per l'installazioni di diverse e numerose antenne e ripetitori di diverse varie compagnie telefoniche; una rete autogestita come quella teorizzata in questo documento potrebbe risolvere problemi sintomatici odierni delle attuali reti cellulari, ed aumentarne, estendendone la copertura su qualsiasi territorio, anche in paesi in via di sviluppo dove l'interesse delle big company è minimo per ovvie ragioni economiche. Il modo migliore per poter creare una rete Netsukuku su mobile è quella di effettuare un'upgrade di “intelligenza” ai singoli nodi della rete ipotizzata in questa tesi; i Alessandro Genovese 566/1364 Pagina 85 di 109 moderni smartphone hanno una struttura hardware e software che ci permette di ipotizzare modelli di network avanzati nonchè software di intelligenza artificiale come si sta attualmente sperimentando la DARPA per progetti a scopi militari. I dispositivi mobiles sono in grado di poter supportare un sistema operativo (come iOS®, Android®) senza alcun peso o eccessivo consumo delle risorse energetiche, considerando anche che l'avanzamento tecnologico in termini di "risorse hardware" sarà sempre più similare ai nostri computer desktop o portatili, ci permetterà la teorizzazione di questo modello che sfrutta logiche di calcolo statistico, AI e gli algoritmi di funzionamento sintetizzati in questa tesi per gestire l'architettura Netsukuku senza alcun peso. Come già accennato nel paragrafo 4 Netsukuku è in grado di poter "girare" su computer con ristretta capacità di calcolo grazie alla compressione dell'algoritmo di ricerca e alle logiche insite in questo protocollo. Un modello come quello delle reti mobile ci pone dinanzi ad uno scenario in continua mutazione, una condizione in cui la rete verrà sovraccaricata o inondata da continui pacchetti informativi riguardante la mutazione della mappa, come già accennato precedentemente. 6.1.1 La soluzione proposta Per i problemi appena discussi ed accennati si propone la modifica di alcune logiche di propagazione delle informazioni del protocollo di Netsukuku che permetta l'organizzazione di Gnodes geolocalizzati costituiti proprio dalla natura stessa dei singoli nodi di appartenenza. Supponiamo uno scenario in cui un nodo si sposta all'interno del Gnodes della rete e supera i confini delimitati dalla stessa effettuando un "salto" in un altro Gnodes il quale dovrà rendere reperibile al suo ingresso (ammesso non sia saturo) a tutti suoi Rnodes (nodi relativi o immediatamente vicini) e agli altri vicini appartenenti al Alessandro Genovese 566/1364 Pagina 86 di 109 Gnodes stesso, oltre che informare i suoi ex Rnodes della sua assenza all'interno dell'ex-Gnodes di appartenenza dal quale è partito. Il chè comporta un numero considerevole di scambi di pacchetti dati considerando che questi salti sono estremamente frequenti, talvolata ridonandanti, e numerosi. Anche in termini di secondi possiamo ipotizzare uno scenario in cui vi è un singolo mobile che attraversa diversi Gnodes poichè in movimento estremamente veloce (rispetto agli altri). Secondo quanto riportato da aziende come la Gartner, specializzata nel settore di raccolta dati per analisi di data mining e statistiche nel settore tecnologico di livello internazionale, e da ricercatori dell'università tedesca di Darmstadt e da quella di Princeton hanno rilasciato documenti e pubblicazioni basati sui comportamenti, spostamenti e abitudini giornaliere in cui si sintetizza che, le persone si riducono in impegni quotidiani quasi sempre uguali giorno dopo giorno, come, per esempio, accompagnare i propri figli a scuola prima di andare successivamente al lavoro; quindi ci si muove poi verso una palestra ad orari ben precisi ed impegando tempi più o meno gli stessi per mesi. Gli studi evincono quindi che con una stima approssimativa, si il ben oltre il 70% delle persone compie abitudini giornaliere uguali in tempo più o meno gli stessi; questa importante informazione ci conduce ad una soluzione ovvia per eliminare il problema dei salti incondizionati e frequenti dei nodi in una rete mobile Netsukuku. In base a documenti studiati, per rendere possibile la topologia della rete mobile netsukuku è quella di influire sulla comunicazione degli scambi della porzione di mappa e non solo, rendendo il nodo in grado di dover compiere decisioni in merito alla comunicazione della propria presenza, oppure se attingere alla rete esterna per effettuare lo scambio dei dati sulla rete o addirittura se essere in hidden mode in cui il dispositivo non è reso reperibile dagli altri poichè in uno stato di movimento elevato (è uno dei casi di situazione limite) ma usufruisce allo stesso modo della rete. Alessandro Genovese 566/1364 Pagina 87 di 109 6.1.2 Creazione e aggregazione di informazioni associative Come abbiamo già detto prima ogni persona effettua giornalmente spostamenti o percorsi abituali il che comporta "salti" abituali quasi identiche ogni giorno; gli spostamtenti, ovvero le posizioni dei mobiles, non sono altro che delle coordinate geografiche, reperibili dallo stesso dispositivo, che verranno associate ad un timestamp con un numero associato che gestisce la pesantezza (o importanza) dell'informazione memorizzzata. In questo modo avremo una tabella di importanza degli spostamenti più usuali relazionati strettamente ai tempi in cui avvengono queste rilevazioni; l'informazione tabellare è continuamente aggiornata ed è sottoposta ad un garbage collector che eliminerà percorsi o rotte non più effettuati, in quanto il livello di pesantezza sarà di valore negativo. Le informazioni così salvate permetteranno al dispositivo una ricerca basandosi sull'attuale posizione geografica e temporanea per trovare il posizionamento di altri Rnodi confinanti aventi parametri di riscontro con le informazioni salvate. E' possibile stabilire, quindi, e tracciare spostamenti usuali delle persone, creando connessioni in modo più rapido, veloce e con minor rumore possibile (minor numero possibile di comunicazioni in un determinato lasso di tempo). Con questa soluzione è possibile comunicare in modo più flessibile e stabile sicuro evitando di aumentare l'ingolfamento della rete stessa soltanto a scopi di comunicazione. La costruzione della "tabella di POI" è basata sulla determinazione di percorsi o rotte giornalieri ritenuti interessanti: un percorso è ritenuto interessante soltanto se è stato percorso in precedenza, quindi vi è già un match o found di questa informazione al minimo n volte (con n >0). Più volte, quindi, si riscontra il matching maggiore sarà il peso della rotta. Alessandro Genovese 566/1364 Pagina 88 di 109 Se ogni rotta è indipendente dalle altre allora possiamo stabilire che per ogni coincidenza venga ricevuto un "pay-off" ( che in inglese significa compenso ) che può risultare essere positivo (caso in cui avviene una corrispondenza), negativo ( o fault) oppure nullo (in caso di non spostamento in cui non vi è motivo alcuno di memorizzazione di dati); positivo se il percorso è ancora lo stesso e quindi vi è un match tra la navigazione attuale e quella memorizzata, negativo se è diverso e nullo invece nel caso in cui mancano all'appello nodi previsti lungo la rotta. Si costruisce di fatto una tabella in cui gli stessi Gnodes e nodi conoscono esattamente il comportamento generale adottato da ogni singolo nodo in quanto rispecchia le abitudini di spostamento delle persone. La navigazione ottimale da seguire, per evitare comunicazioni in eccesso, è strettamente determinata dalle rotte memorizzate e dal cambio o meno delle abitudini. Le informazioni possono essere pertanto aggregate in logiche statistiche al crescere dei dati che rispecchino determinati parametri. La comunicazione della sua esistenza è prioritaria pertanto ed intriseca nel tipo di rete descritta finora, poichè per rendere le informazioni accessibili e trasmissibili vi è bisogno di costruire la rete con il più alto numero di nodi attivi; pertanto un modello ibrido potrebbe risultare ottimale in contesti odierni fino al raggiungimento di un upgrade tecnologico futuro. 6.1.3 Intelligenza Artificiale nei nodi "L'installazione" di un intelligenza artificiale è strettamente legata alle decisioni da intraprendere, durante la navigazione del dispositivo, per la comunicazione della sua esistenza nella rete (decisione basata su 3 diversi stati di esistenza) e alle eccezioni riscontrate nell'ambiente esterno. Le funzioni (o scelte) salvate resteranno memorizzate poichè pertanto, in quel preciso momento, sono ritenute interessanti ma verranno rimosse, grazie all'uso di un garbage collector, se l'evento che le ha generate non si Alessandro Genovese 566/1364 Pagina 89 di 109 presenterà successivamente nell'arco di un periodo di tempo ben definito. Un'evento (quale, per esempio, un fault durante una ricerca nella tabella) può essere generato e deve essere identificato e categorizzato per poter prendere decisioni in merito a parametri di input determinati dall'ambiente esterno. Per questo motivo l'utilizzo dell'intelligenza artificiale con apprendimento con rinforzo è stata ipotizzata come soluzione per poter istruire i nodi rendendoli in grado di risolvere problemi di difficile formalizzazione, come, per esempio, potrebbero essere i diversi casi limiti generati dall'ambiente esterno, una decisione in merito allo stato d'identificazione del nodo nella rete o una ricerca di un Rnode. Si è analizzato principalmente due tipi di apprendimento: apprendimento supervisionato e con rinforzo. Con l'apprendimento supervisionato si parte dal presupposto che se forniamo un numero adeguato di esempi l'algorimo sarà in grado di creare una funzione h1 che approssimerà la funzione h. Se l'approssimazione di h risulterà adeguata quando proporremo ad h1 dei dati in ingresso mai analizzati la funzione dovrebbe essere in grado di fornire delle risposte in uscita simili a quelle fornite da h e quindi corrette o quasi. Si può facilmente intuire che il buon funzionamento dipende in modo significativo dai dati in ingresso; se si forniscono pochi ingressi l'algoritmo potrebbe non aver abbastanza esperienza, mentre molti dati in ingresso potrebbero rendere eccessivamente lento l'algoritmo, dato che la funzione h1 generata dagli ingressi potrebbe essere molto complicata. Questi algoritmi sono molto sensibili al rumore, anche pochi dati errati potrebbero rendere l'intero sistema non affidabile e condurlo a decisioni errate. Ma l'adattamento di questo algoritmo per la rete mobile Netsukuku è difficilmente adattabile in quanto l'algoritmo dovrebbe pertanto adattarsi all'ambiente esterno. Per quanto riguarda invece l'apprendimento con rinforzo che punta a realizzare algoritmi in grado di apprendere dall'ambiente esterno e quindi adattarsi alle diverse scelte adottate nel corso del tempo, in quanto non potendo ipotizzare in quali situazioni Alessandro Genovese 566/1364 Pagina 90 di 109 e ambienti circostanti ad un nodo il sistema si possa trovare. Questo tipo di apprendimento, infatti, è in funzione degli stilmoli esterni, quindi una scelta corretta comporterà un premio mentre una scorretta porterà ad una penalizzazione. L'algoritmo ha potere quando, per esempio, non vengono più riconosciuti n spostamenti abituali dal sistema e quindi si crea un'eccezione in esso; avrà a disposizione inizialmente un numero ristretto di informazioni e un ampio spazio di libertà, sulla base dei suoi errori e successi potrà imparare ad affrontare situazioni imprevedibili. Infatti se per esempio scegliesse di rendersi visibile, in quel periodo di tempo con quelle determiante coordinate geografiche, in determinate circostanze ambientali circostanziate ad esso, dovrà successivamente analizzare la scelta: in caso di successo, determianto da attributi ben precisi quali il segnale deve essere eccellente (è al 50%) e non genera molto rumore, con la comunicazione agli altri nodi della sua presenza, allora si può dire che la scelta è stata vincente e verranno salvati i dati in tabelle apposite per questo tipo di eccezione o meno; caso in cui il segnale è minore del 50% la scelta non è ottimale e genererà un ulteriore punteggio. Gli altri casi sono gestiti in modo analogo. Inoltre grazie all'algoritmo ideato dal prof. Solomonoff e in seguito con il contributo del prof.Hutter si è giunti ad ideare un nuovo tipo di algoritmo di apprendimento con rinforzo, denominato con il termine AIXI. La teoria di partenza, stilata dal prof.Solomonoff è basata nella previsione di dati futuri basati sull'osservazione di dati passati, nel caso in cui i dati siano generati secondo una distribuzione probabilistica. AIXI riesce ad estendere questa teoria in ambienti sconosciuti; è una teoria universale, che non ha parametri da calibrare e che non fa ipotesi sull'ambiente eccetto quella di seguire una distribuzione computabile (sconosciuta). AIXI rappresenta un nuovo algoritmo di apprendimento, che promette di superare tutti i problemi (tranne quelli computazionali) dei precedenti algoritmi di apprendimento con rinforzo. Questo tipo di teoria è ottimale se apportata in ambiti in Alessandro Genovese 566/1364 Pagina 91 di 109 oggetto di questa tesi, rendendo più efficiente l'apprendimento con rinforzo in casi in cui gli spostamenti abituali di una persona non rientrano nel 70% del comportamento abituale ipotizzato. 6.1.4 Ricerche in merito all'AI sui mobile Fondato dalla DARPA e dall'SRI International, Adam Cheyer scienziato e ricercatore alla SRI, Dag Kittlaus and Tom Gruber stanno attualmente lavorando per portare un'intelligenza artificiale sui dispositivi mobile. Visto il crescente aumento delle prestazioni dei dispositivi cellulari dotati sempre più di maggiore capacità di calcolo e di memoria di storage oltre che quella virtuale sarà possibile in un prossimo futuro avere applicazioni molto più avanzate di quella prototipale sviluppata recentemente dalla SRI; la loro invenzione si chiama Siri, una guida personale, un'intelligenza che assiste attraverso l'iPhone l'utente. Una volta lanciato l'applicativo basta effettuare una richiesta verbale che Siri la processa e trova possibili soluzioni come mostrare un numero di telefono, organizzare l'agenda aggiungendo un nuovo appuntamento all'agenda o persino comprare dei biglietti per il cinema. È è un progetto creato su concetti di ricerca avanzata basati sul progetto CALO (Cognitive Assistant that Learns and Organizes), il più grande progetto degli States sull'intelligenza artificiale. Alessandro Genovese 566/1364 Pagina 92 di 109 6.2 Privacy In un problema di forte interesse ed attualità come quello della privacy è da tenere ben presente riguardo la soluzione proposta in questa tesi per il modello Netsukuku; la soluzione non comporta nessun problema di privacy anzi forse l'esatto opposto. Ogni cellulare disporrà di questa tabella delle sue localizzazione che sarà incondivisibile con gli altri dispositivi, poichè la creazione della stessa è strettamente legato soltanto al miglioramento della rete Netsukuku sui dispositivi mobile e rafforzerebbe sempre di più l'anonimato di un nodo nel network. Un'articolo molto interessante che evidenzia la netta e voluta mancanza di privacy odierna è quello portato in evidenza da un famoso giornale di fama internazionale il Guardian, il giorno 20 Aprile 2011, nel quale descrive ampiamente sul come la Apple attualmente stia raccogliendo questo tipo di dati. Simon Davies, direttore del gruppo di Privacy International, ha dichiarato, in un'intervista rilasciata al Guardian che questa scoperta è altamente allarmaente in quanto l'identificazione della posizione è uno degli elementi più delicati nella vita di ognuno; basti pensare dove andare la sera. L'esistenza di tali dati crea una reale minaccia alla nostra privacy. La mancanza di comunicazione agli utenti o qualsiasi opzione di controllo non può che derivare da ignoranza sulla privacy in fase di progettazione. Punto di Warden e Allan che il file che salva queste informazioni è spostato di volta in volta su nuovi dispositivi, quando quello vecchio viene sostituito. Apple potrebbe avere nuove funzionalità in mente che necessitano di una storia della vostra posizione. Il fatto che (il file) è trasferito attraverso durante la migrazione è la prova che la Alessandro Genovese 566/1364 Pagina 93 di 109 raccolta dei dati non è casuale. Deputati nel 2009, ha criticato il motore di ricerca Google gigante per il suo sistema di "Latitude", che ha permesso alle persone di consentire ai propri cellulari per dare i dettagli della loro posizione ai contatti di fiducia. Al momento questo applicativo minaccia la privacy delle persone che lo utilizzano in modo sostanziale, ma Google ha sottolineato che gli utenti hanno dovuto scegliere proprio quello di rendere disponibili i loro dati prima di installare l'applicativo. Fig.14 - Rappresentazione del file trovato da Simon Devies Vengono abitualmente raccolti dati sensibili di questo tipo poichè progetti come Magitti ( sviluppato dal 2007 dai ricercatori di Palo Alto ) che continuino ad esistere per profilare ogni singolo utente ricavandone un'immagine virtuale sempre più veritiera e corrispondente alla realtà. Alessandro Genovese 566/1364 Pagina 94 di 109 7 Applicativo L'applicativo sviluppato inerente agli argomenti trattati in questa tesi è basato sulla ricerca e la comunicazione tra due dispositivi connessi in una rete Wifi atraverso protocollo Bonjour. L'applicativo, sviluppato su un framwork che permette il deploy su sistemi operativi di diversa natura, è in grado di poter ricercare nella rete Wifi connessa diversi mobile in ascolto su una porta pre-determinata. Una volta effettuata la localizzazione del dispositivo si effettua la connessione che mette in grado entrambi gli utenti ( in maniera sincrona ) di inviare ad uno dei due il numero di cellulare dove poter dover la telefonata. E' nato con lo scopo di dimostrare la ricerca di n nodi all'interno di un network wifi dove sono presenti altri dispositivi; s'ipotizza che al massimo n-1 nodi o cellulari siano in assenza di segnale e che invece 1 soltanto quindi sia in grado di fornire il segnale per la comunicazione. L'applicativo creato effettua 1 hop, ovvero crea una comunicazione diretta tra due dispositivi mettendoli in comunicazione fra loro simulandone, in parte, la funzionalità della rete qui proposta come oggetto di tesi. Fig.15 - Rappresentazione dell'architettura di Titaniume dei file sviluppati Alessandro Genovese 566/1364 Pagina 95 di 109 7.1 Framework di sviluppo : Titanium E' un innovativo framework che permette di poter sviluppare in un unico linguaggio ( Javascript ) applicativi per dispositivi mobile ed effettuare il deploy per diversi sistemi operativi quali iOS®, Android® o Symbian®. Il framework è open source e mette a disposizione le API che vengono interpretate da Titanium e scritte nei diversi linguaggi nativi dei singoli dispositivi, quali Objective C e Java. Le caratteristiche principali della Appcelerator Titanium includono: – Supporto per le tecnologie web basate su standard: HTML, CSS e Javascript su tutte le piattaforme con PHP, Python e Ruby per le piattaforme desktop – Supporto integrato per JavaScript e AJAX Frameworks compresi jQuery , YUI , MooTools , Scriptaculous e altri. – Un'indipendenza dalla piattaforma API per l'accesso nativo ai componenti di UI (User Interface) comprese le barre di navigazione, menu, finestre di dialogo, gli alert e le funzionalità native del dispositivo tra cui il file system, audio, network e database locali – API native per accedere a funzionalità di telefonia mobile, come la geolocalizzazione, accelerometro e mappe – Estensibilità attraverso interfacce aperte e le licenze, permettendo agli sviluppatori di introdurre il supporto per altri linguaggi di scripting, codec multimediali e funzionalità specifiche del dispositivo Alessandro Genovese 566/1364 Pagina 96 di 109 7.2 Codice Sviluppato Il seguente codice è stato sviluppato utilizzando le API di Titanium che generano i relativi codici sorgenti per iOS in Objective C, Android in Java. 7.2.1 Titanium App.js Titanium.UI.setBackgroundColor('#000'); Titanium.include('bj.js'); var win = Titanium.UI.createWindow({ backgroundColor:'#000', layout:'vertical' }); win.add( Titanium.UI.createLabel({ text:'Scegli il tuo pallino', color:'#fff', textAlign:'center', font:{ fontWeight:'bold', Alessandro Genovese 566/1364 Pagina 97 di 109 fontSize:28 }, height:40, top:0 })); var textfield = Titanium.UI.createTextField({ color:'#336699', height:35, top:50, left:50, width:250, borderStyle:Titanium.UI.INPUT_BORDERSTYLE_ROUNDED, player:{ name: this.value, color:'#f00' } }); win.add(textfield); win.open(); Alessandro Genovese 566/1364 Pagina 98 di 109 var button = Ti.UI.createButton({ // cordinates using top, right, left, bottom visible: true, title: 'Send', backgroundColor: '#fff', enabled: true, touchEnabled: true, top: 100, color:'#fff', width:100, height:50 }); win.add(button); var play_win = Titanium.UI.createWindow({ url:'play.js', width:320, height:480, backgroundColor:'#000' }); Alessandro Genovese 566/1364 Pagina 99 di 109 var tr = Titanium.UI.create2DMatrix(); tr = tr.scale(1.5); button.addEventListener('click',function(_ev){ play_win.player = textfield.value; play_win.open({transition:Titanium.UI.iPhone.AnimationStyle.FLIP_FROM_LEFT}) ; }); BJ.js var bjnet = function(name,fn_receive) { var services = null; Titanium.API.info('NETWORK_WIFI '+ Titanium.Network.NETWORK_WIFI); Titanium.API.info('---------------------------------------------'); Titanium.API.info('hostname '+ Titanium.Network.INADDR_ANY); Titanium.API.info('---------------------------------------------') var bonjourSocket = Titanium.Network.createTCPSocket({ hostName: Titanium.Network.INADDR_ANY, port: 40402, mode: Titanium.Network.READ_WRITE_MODE Alessandro Genovese 566/1364 Pagina 100 di 109 }); // servizio locale var localService = Titanium.Network.createBonjourService({ name: name, type:'_utest._tcp', domain:'local.' }); // searcher for finding other services var serviceBrowser = Titanium.Network.createBonjourBrowser({ serviceType:'_utest._tcp', domain:'local.' }); var update_services = function(e) { testo.text = 'Updating services!'; services = e['services']; for (var i=0; i < services.length; i++) { var service = services[i]; if ( (service.name != name) && (service.socket == null || ! service.socket.isValid) ) { service.resolve(); service.socket.addEventListener('read', function(x) { Alessandro Genovese 566/1364 Pagina 101 di 109 Ti.API.info('service socket read: '+ x['data']); fn_receive(x['data'].text); testo.text = 'reading on socket '+ x['data'].text; Ti.Platform.openURL('tel:'+ x['data'].player); }); service.socket.connect(); testo.text = 'Connected!'; } } }; // updateServices: This object describes a service on the network which is published by Bonjour. serviceBrowser.addEventListener('updatedServices', update_services); return { start: function(){ bonjourSocket.listen(); Titanium.API.info('----------------------- bonjour listen'); try { localService.publish(bonjourSocket); serviceBrowser.search(); Alessandro Genovese 566/1364 Pagina 102 di 109 } catch (e) { Titanium.API.info('[bj.js] - errore sul return - start: '+ JSON.stringify(e) ); } }, write: function(data) { // // inviare lo stream dati audio del proprio cellulare sulla socket // al secondo dispositivo // Ti.API.info('writing: '+ data); bonjourSocket.write(data); }, stop: function(){ if (serviceBrowser.isSearching) { serviceBrowser.stopSearch(); } Titanium.API.info('Stopped search...'); localService.stop(); Titanium.API.info('Stopped service...'); if (bonjourSocket.isValid) { Alessandro Genovese 566/1364 Pagina 103 di 109 bonjourSocket.close(); } Titanium.API.info('Closed socket...'); for (var i=0; i < services.length; i++) { var service = services[i]; if (service.socket.isValid) { service.socket.close(); } Titanium.API.info('Closed socket to service '+service.name+"..."); } } } }; PLAY.js var win = Titanium.UI.currentWindow; Titanium.include('bj.js'); // // richiamo bjnet ( bj.js ) // var connection = bjnet(win.player, function(data){ Alessandro Genovese 566/1364 Pagina 104 di 109 var json_data = JSON.parse(data); Ti.API.info('connection data: '+ data); Ti.API.info('json_data.player: '+ json_data.player); }); connection.start(); var tr = Titanium.UI.create2DMatrix(); tr = tr.scale(1.5); } win.addEventListener('click', function(_ev) { testo.text = 'Clicked!'; connection.write(JSON.stringify({coords:_ev.globalPoint, player:win.player})); }); win.addEventListener('close', function(e) { connection.stop(); }); var testo = Ti.UI.createLabel({ text:"Click the button to start", width:"auto", height:"auto", backgroundColor: '#fff', top:10, left:10, Alessandro Genovese 566/1364 Pagina 105 di 109 right:10 }); win.add(testo); Alessandro Genovese 566/1364 Pagina 106 di 109 Bibliografia 1. UMTS networks: architecture, mobility, and services – Heikki Kaaranen 2. GSM-GPRS. Tecniche, architetture, procedure – Onelio Bertazioli, Lorenzo Favalli, Onelio Bertazioli 3. UMTS. Tecniche e architetture per le reti di comunicazioni mobili multimediali – Gennaro Columpsi, Marco Leonardi, Alessio Ricci 4. Wireless Mesh Network – Gilbert Held 5. Handbook of Mobile Ad Hoc Networks for Mobility Models – Radhika Ranjan Roy 6. Intelligenza artificiale – Nils J. Nilsson 7. Intelligenza artificiale – Stuart J. Russell, Peter Norvig 8. Slides riguardanti l'Intelligenza Artificiale – prof. Carlo Sansone 9. Introduzione alle reti Neurali – prof.Marco Gori 10. Slides inerenti alle Reti Neurali – prof.Roberto Prevete 11. Intelligenza Artificiale un approccio moderno vol.2 Seconda Edizione – Stuart Russell, Peter Norvig 12. Artificial Intelligence – An international Perspective – Max Bramer 13. Slides sulle reti MANET presso Università di Bologna - http://lia.deis.unibo.it/research/AGAPE/Docs/TesiBonazza.pdf 14. Adaptive Networks Theory, Models and Applications – Thilo Gross, Hiroki Sayama Alessandro Genovese 566/1364 Pagina 107 di 109 15. Opportunistic Wireless Access Networks – Johan Nykvist e Kaustubh S.Phanse ( Università Lulea, Svezia ) 16. A new approach of Mobile Position Tracking – Sinan Gezici, Hisashi Kobayashi and H. Vincent Poor Department of Electrical Engineering Princeton University Princeton 17. Identifying Important Places in People’s Lives from Cellular Network Data – Sibren Isaacman1, Richard Becker, Ramo ́n Caceres, Stephen Kobourov, Margaret Martonosi, James Rowland, and Alexander Varshavsky from Princeton University 18. Scalable Mesh Networks and The address space balancing problem - Andre Lo Pumo, University of Cambridge 19. Visual Analytics Tools for Analysis of Movement Data – Gennady Andrienko, Natalia Andrienko, Stefan Wrobel 20. 4G and MANET, Wireless Network of Future Battlefield – Marcin Szczodrak and Dr. Jinwoo Kim - John Jay College of Criminal Justice NY 21. Artificial Intelligence goes on mobile – Rainer Malaka – European Media Laboratory Alessandro Genovese 566/1364 Pagina 108 di 109 Sitografia 1. Documentazione ufficiale e documenti riguardanti la rete Netsukuku – http://netsukuku.freaknet.org/ 2. 3G to 4G – http://www.scribd.com/document_downloads/direct/34536968? extension=pdf&ft=1297782984&lt=1297786594&uahk=0QcDyqdzLasrYnzNL ShwCVgkJOg, http://www.scribd.com/doc/34536968/3G-to-4G Alessandro Genovese 566/1364 Pagina 109 di 109