UNIVERSITÀ DEGLI STUDI DI TRENTO Dipartimento di Ingengeria e Scienza dell’Informazione Corso di Laurea in Informatica Tesi finale Analisi della Topologia Scale Free Hidden by Terminals Relatore: Prof. Renato Antonio Lo Cigno Correlatore: Dott. Leonardo Maccari Anno Accademico 2014 - 2015 Laureando: Samuel Valentini Indice Introduzione 2 1 Wireless Community Networks 1.1 Storia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Presente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Nodi e Tecnologia . . . . . . . . . . . . . . . . . . . . . . . . . 4 4 5 5 2 Grafi 2.1 Definizioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Metriche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7 8 3 Topologia Scale Free Hidden by Terminals 3.1 Topologia Scale Free . . . . . . . . . . . . . . . . . . . . . . . 3.2 Rete Core e Nodi Terminali . . . . . . . . . . . . . . . . . . . 3.3 Algoritmo per la generazione della topologia . . . . . . . . . . 3.4 Implementazione del generatore . . . . . . . . . . . . . . . . . 3.4.1 Generazione Brute Force . . . . . . . . . . . . . . . . . 3.4.2 Algoritmo per la generazione dei terminali . . . . . . . 3.4.3 Distribuzioni Gamma e distribuzioni Binomiali Negative 3.4.4 Determinazione dei parametri dell’algoritmo . . . . . . 11 11 12 13 13 14 15 17 19 4 Analisi della robustezza 21 4.1 Analisi della robustezza . . . . . . . . . . . . . . . . . . . . . 21 4.2 Approssimazione della Betweennes Centrality . . . . . . . . . 27 4.3 Correlazione tra metriche di centralità . . . . . . . . . . . . . 31 Conclusioni 32 1 Introduzione Negli ultimi anni la diffusione delle reti è aumentata esponenzialmente cosı̀ come i metodi di accesso e le tecnologie a disposizione. Fino a pochi anni fa era impensabile avere un accesso continuo alla rete in mobilità mentre ora le nuove reti cellulari garantiscono un accesso alla rete ubiquo e continuo anche se a costi abbastanza elevati e inoltre vari locali pubblici offrono servizi di connettività come valore aggiunto per i propri clienti. L’accesso alla rete accende dibattiti nel mondo politico come, ad esempio, se la connettività è un diritto fondamentale del cittadino. In questo ambito molti enti pubblici si stanno muovendo per offirire connettività gratuita ai cittadini tramite reti Wi-Fi. Tra i nuovi paradigmi di networking le Wireless Community Network rappresentano un approccio di gestione della rete decentralizzato e orientato alla comunità. In passato il loro scopo principale era quello di garantire la connettività tramite collegamenti Wi-Fi a lungo raggio, in aree dove gli ISP tradizionali non avevano convenienza economica nell’investire mentre attualmente, il loro scopo è più comunitario ed è basato sulla condivisione delle risorse e della conoscenza e sulla costruzione di una rete libera, autogestita dagli utenti i quali detengono la proprietà dei vari nodi. La loro evoluzione è stata anche tecnologica infatti all’inizio venivano utilizzati apparti di rete di fortuna e poco costosi mentre ora quest’ultimi sono affiancati da apparecchiature e infrastrutture di rete complesse. Queste reti rappresentano un’ottima risorsa sperimentale per i ricercatori in quanto la loro natura aperta garantisce che le informazioni sulla rete siano facilmente ottenibili. La ricerca nelle WCN è concentrata in diversi campi: alcuni autori si sono concentrati sulle motivazioni alla base di queste reti, altri hanno sviluppato nuovi protocolli di routing specifici per reti wireless in quanto i classici protocolli sono risultati troppo inefficienti in questo ambito. In questa tesi ci si concentrerà sull’analisi di una particolare topologia tipica di alcune WCN tramite l’implementazione di un generatore di topologie e analizzando alcune caratteristiche come la robustezza e la correlazione tra metriche di centralità della rete. Nel capitolo 1 verranno date alcune informazioni aggiuntive sulle Wireless Community Network riguardo alla loro storia, sviluppo e tecnologie 2 mentre nel capitolo 2 verrà definito il formalismo matematico utilizzato per modellizzare e analizzare la rete. Il capitolo 3 verterà sull’implementazione del generatore aleatorio di topologie e sulle analisi matematico/statistiche utilizzate per determinare gli algoritmi di generazione casuali, le distribuzioni di probabilità utilizzate e la determinazione dei loro parametri. Nel capitolo 4 verrà analizzata la robustezza della topologia su reti di diverse dimensioni analizzando vari scenari di guasti e attacchi; infatti in letteratura c’è molto interesse verso reti reali che rispondono bene a guasti casuali, ma che invece collassano rapidamente quando attaccate in modo mirato. Verranno poi analizzate le varie centralità calcolandone le correlazioni e, in un particolare caso, le approssimazioni fattibili utilizzando un particolare algoritmo. 3 Capitolo 1 Wireless Community Networks Al momento, in letteratura, non esiste una definizione precisa di Wireless Community Network. Per alcuni autori sono delle reti a cui gli utenti hanno accesso e che utilizzano per usufruire di un servizio di connettività come, ad esempio, le reti Wi-Fi pubbliche che molte amministrazioni locali mettono a disposizione dei cittadini. Per altri, invece, sono delle reti nate e gestite dalla cooperazione tra utenti i quali, non solo usufruiscono del servizio, ma partecipano in modo attivo alla costruzione e al mantenimento dell’infrastruttura di rete. Nel corso di questa tesi faremo riferimento a quest’ultimo tipo di rete. 1.1 Storia Le Wireless Community Network si sviluppano alla fine degli anni ’90 come evoluzione delle reti di radio amatori. Dopo l’introduzione dello standard IEEE 802.11, gli appassionati hanno iniziato a sperimentare in modo attivo con questa tecnologia creando autonomamente reti wireless gestite in modo decentralizzato, ovvero senza un’autorità come un ISP o un amministrazione pubblica a gestirne la struttura e la topologia. Nonostante lo standard Wi-Fi sia utilizzato come collegamento locale, con le giuste componenti e sperimentazione, si è riusciti a creare dei collegamenti stabili sulla lunga distanza. Inoltre, le frequenze utilizzate dal Wi-Fi sono considerate deregolamentate e quindi è possibile sperimentare all’interno dello spettro delle frequenze senza incorrere in sanzioni. In alcune aree le Wireless Community Networks si sono evolute come unica alternativa per avere servizi internet data la mancanza di investimenti da parte degli ISP; questa tendenza sopravvive ancora oggi, soprattutto in aree rurali, anche se è in calo rispetto al passato. 4 1.2 Presente Le Wireless Community Networks sono ormai diffuse in tutto il mondo, ad esempio Ninux1 in Italia e Guifinet 2 in Spagna. Quest’ultima, con oltre 25000 nodi sembra essere, al momento, la WCN più grande del mondo. Attualmente la filosofia alla base delle WCN è quella di creare una rete decentralizzata, libera e di proprietà degli utenti in cui vengono si offerti servizi di telecomunicazione, come VoIP, condivisione file e, in alcuni casi, internet condiviso, ma il valore fondamentale è presente nella comunità che partecipa attivamente nella creazione della rete e nella diffusione della conoscenza. Per lo sviluppo della rete ci si affida al lavoro volontario dei membri della comunità i quali, con il loro tempo e la loro esperienza, permettono ai nuovi utenti di entrare a far parte del progetto in modo semplice innescando cosı̀ un processo in cui nuove persone acquisiscono competenze ed esperienza migliorando la rete e la comunità nel complesso. Alcuni di questi progetti puntano a diventare una parte integrante di internet costruita e mantenuta in modo totalmente decentralizzato e, in alcuni casi, alcune reti sono cresciute a tal punto da essere diventate degli Autonomous system. 1.3 Nodi e Tecnologia Nelle WCN coesistono diversi tipi di nodi: si spazia dalla singola antenna monodirezionale con un semplice router a nodi complessi comprensivi di molte antenne le quali instradano su diversi nodi e su frequenze diverse. Figura 1.1: Nodo di una Wireless Community Network. 1 2 http://wiki.ninux.org/PaginaPrincipale https://guifi.net/en/ 5 3 Ogni comunità ha costruito i propri nodi attraverso la sperimentazione e l’esperienza e non esiste quindi uno standard. Ogni nodo inoltre avrà una diversa infrastruttura ed utilizzerà una diversa tecnologia in base alla sua localizzazione: ad esempio un nodo isolato preferirà un collegamento punto a punto molto stabile mentre nodi molto vicini tra loro potranno affidarsi a collegamenti omnidirezionali in modo da creare una rete mesh con tutti i vicini, aumentando la robustezza della rete in caso di guasto, al prezzo di ridurre la banda disponibile tra i vari link. Sebbene la tecnologia Wireless sia predominante in quanto più economica di altre soluzioni viene talvolta integrata con altre tecnologie di livello fisico e, in Guifinet, alcuni nodi risultano addirittura cablati con fibra ottica grazie ai finanziamenti pubblici ottenuti dal progetto. In queste reti una delle difficoltà maggiori consiste nel routing in quanto i comuni protocolli utilizzati per i collegamenti cablati risultano spesso inadeguati su reti wireless di questo tipo. Sono stati quindi sviluppati i protocolli OSLR 4 e, in seguito, B.A.T.M.A.N (Better Approach To Mobile Adhoc Networking) per migliorare le prestazioni di routing in questo tipo di reti. 3 Immagine tratta dalla guida di Ninux.org “Fondamenti per costruire una rete wireless libera”: https://docs.google.com/document/d/1OaV1m08lmJX5wb8kxv31skopSHnXwqzp6ggxlMImsA/edit#heading=h.bxzzdrg0ifuz 4 RFC 3626 6 Capitolo 2 Grafi Senza un formalismo matematico è impossibile descrivere ed analizzare una topologia di rete, verranno quindi date alcune definizioni e verrà fissata la notazione utilizzata in seguito. 2.1 Definizioni Definizione 1. Un grafo G è una coppia ordinata G = (V, E) dove V è detto insieme dei vertici (o dei nodi) e E ⊆ V2 detto inisieme dei lati (o archi). Se e = {vi , vj } ∈ E si dirà che e congiunge i vertici vi e vj i quali saranno detti adiacenti. L’arco e = {vi , vj } sarà in seguito denotato con eij ; Definizione 2. Un grafo diretto è una coppia G = (V, E), dove V è l’insieme (non vuoto) dei vertici ed E è una relazione binaria su V con E ⊆ V × V . E è quindi un insieme ordinato di coppie di V. Definizione 3. Un grafo è detto semplice se ∀ v ∈ V l’arco {v, v} 6∈ E e se esiste al più un arco tra ogni coppia di vertici. Per descrivere una rete verranno considerati solamente grafi finiti, ovvero grafi in cui V e E sono insiemi finiti. Definizione 4. Un grafo è detto pesato se esiste una funzione w : E → R che associa ad ogni arco un numero reale detto peso dell’arco Per modellizzare una rete tramite un grafo ogni nodo della rete viene rappresentato da un vertice, mentre un collegamento tra due nodi verrà rappresentato da un arco. Nelle reti analizzate verranno considerati solamente collegamenti bidirezionali senza collegamenti tra un nodo e se stesso, verrà quindi utilizzato il modello del grafo semplice. Nel caso sia necessario introdurre una metrica di costo sugli archi verranno utilizzati solamente collegamenti bidirezionali simmetrici in quanto tale costo sarà misurato tramite il round trip time. 7 Definizione 5. Sia G = (V, E) un grafo e sia V 0 ⊆ V ; si definisce il 0 sottografo di G su V’ il grafo G[V 0 ] = (V 0 , E ∩ V2 Ovvero il sottografo G[V 0 ] contiene tutti i lati di G che congiungono i vertici di V 0 . Definizione 6. Dato un grafo e (v0 , v1 , ..., vn ) una successione finita di vertici, si dirà che (v0 , v1 , ..., vn ) è • una passeggiata se (vi , vi+1 ) ∈ E ∀ 0 ≤ i ≤ n − 1 • un cammino se è una passeggiata e vi 6= vj ∀ i 6= j • un ciclo se è una passeggiata e vi 6= vj ∀ i 6= j tranne v0 = vn Si dirà lunghezza di una passeggiata P il numero P di archi che la compongono. n−1 w(vi , vi + 1); nel caso Il peso W di una passeggiata sarà dato da W = i=0 di grafo non pesato W coninciderà con la lunghezza della passeggiata. Dato un grafo con cicli non negativi il shortest path tra u e v è un cammino p = (v, v1 , .., u) tale che 6 ∃ p0 = (v, v10 , ..., u) con W (p0 ) < W (p) La lunghezza dello shortest path sarà indicata con duv Definizione 7. Un grafo è detto connesso se ∀u, v ∈ V esite un cammino da u a v Una componente connessa è un sottografo connesso di G. Definizione 8. Sia G un grafo, e sia v ∈ V , si definisce grado di v il numero kv = |{e ∈ E|v ∈ e}| Un vertice v tale che kv = 0 si dirà nodo isolato mentre se kv = 1 si dirà nodo foglia. P Il grado totale di un grafo è definito come v∈V kv . La distribuzione dei gradi di un grafo è una funzione pk : N → [0, 1] definita come: |{v ∈ V |kv = n}| pk (n) := |V | La distribuzione dei gradi è una distribuzione di probabilità discreta in P quanto k pk = 1 2.2 Metriche In network science una questione cruciale è determinare l’importanza di un nodo. Tale importanza dipende dal contesto di utilizzo di una rete; ad esempio in una rete di telecomunicazioni l’importanza di un nodo può essere data dalla quantità di traffico che viene instradato attraverso di esso. Verranno presentate alcune delle metriche principali. 8 Degree Centrality La Degree Centrality è la metrica più semplice, ma anche la meno significativa perché basata su proprietà locali del singolo nodo, è definita come: Cd (v) = kv Dal punto di vista computazionale è la centralità meno costosa e facile da calcolare e, per alcuni tipi di grafi, può approssimare bene altre metriche. Closeness Centrality La Closeness Centrality è basata sulla lunghezza degli shortest path. L’idea su cui è basata è che un nodo importante deve essere vicino a tutti gli altri nodi. Fissato un nodo v si definisce la distanza minima media tra tutti i vertici come: 1 X Cv = duv |V | u Tale quantità tende a essere piccola per nodi importanti e, convenzionalmente, un nodo centrale ha un valore alto per le metriche. Si definisce come Closeness Centrality l’inverso della quantità Cv Cc (v) = |V | 1 =P Cv u duv Questa definizione suppone che il grafo sia connesso; in caso contrario tutti i nodi hanno Cc (v) = 0 perché, per convezione, la distanza duv tra due nodi non connessi è fissata a ∞. Per ovviare al problema è possibile calcolare la Closenness Centrality su ogni componente connessa separatamente, ma in questo modo i nodi delle componenti più piccole tenderanno ad avere centralità più alta rispetto a quelli delle componenti di dimensione maggiore. Betweenness Centrality La Betweenness Centrality è un indice del numero di shortest path che attraversano un nodo. Se le informazioni transitano attraverso il cammino più breve, i nodi con centralità più alta tenderanno a ricevere e instradare molto più traffico rispetto ad altri nodi. Formalmente è definita come: CB (v) = X σ(s, t|v) σ(s, t) s,t∈V dove σ(s, t) indica il numero di shortest path da s a t, mentre σ(s, t|v) è il numero di shortest path che transitano per v. Se s = t si dirà che σ(s, t) = 1 mentre σ(s, t|t) = σ(s, t|s) = 0. 9 La Betweennees Centrality può essere estesa facilmente anche agli archi in questo modo: X σ(s, t|e) CE (e) = σ(s, t) s,t∈V dove σ(s, t|e) indica il numero di shortest path che passano per l’arco e. Eigenvector Centrality La Eigenvector Centrality presuppone che il grafo sia memorizzato tramite matrice di adiacenza. Della matrice verranno calcolati gli autovettori e verrà considerato quello relativo all’autovalore positivo di modulo massimo λ . Definito t l’autovettore normalizzato rispetto a λ a0 λ t = ... an λ la Eigenvector Centrality del nodo i sarà l’i-esimo elemento del vettore t. 10 Capitolo 3 Topologia Scale Free Hidden by Terminals Le Wireless Community Networks sono reti molto interessanti perché possiedono topologie non banali. La topologia Scale Free Hidden By Terminals è stata osservata in alcune sotto reti di Guifinet da L. Cerdà [1], una rete che comprende oltre 15000 nodi operativi. Tali sotto reti, come ad esempio Osona, sono localizzate in zone rurali dove le WCN vengono utilizzate per contrastare il digital divide. 3.1 Topologia Scale Free La topologia Scale Free è una topologia in cui la distribuzione di gradi dei nodi segue la legge: pk = Ck −α Questo tipo di rete presenta una proprietà detta di connessione preferenziale in cui un nuovo nodo che deve collegarsi alla rete, cercherà preferibilimente di connettersi ad un nodo con grado elevato. Tale proprietà è ben descritta dall’algoritmo proposto da A. L. Barabási R. Albert in [2] per generare tale topologia. L’ algoritmo prende in input due paramentri n, ovvero il numero di nodi ed m che controlla il numero di archi della rete. L’algoritmo viene inizializzato con m nodi sconnessi e ad ogni iterazione aggiunge un nodo e lo collega ai rimanenti con m archi. La probabilità di aggiunta di un arco è proporzionale al suo grado quindi nodi con un elevato numero di archi tenderanno a riceverne di nuovi ad ogni iterazione. L’algoritmo termina dopo aver generato un grafo connesso con n nodi e (n − m)m archi. 11 3.2 Rete Core e Nodi Terminali Per analizzare la topologia Scale Free Hidden by Terminals è necessario dare la definizione di nodo terminale. Per alcuni autori i nodi terminali sono tutti i nodi di grado 1 rimossi ricorsivamente dal grafo originale fintanto che i nodi rimanenti avranno grado ≥ 2. Per altri sono invece i nodi foglia di una rete. Quest’ultima sarà la definizione a cui si farà riferimento in seguito. La topologia Scale Free Hidden By Terminals è caratterizzata da una rete con un innumerevole numero di nodi terminali; nella rete Osona il rapporto tra terminali e non terminali è di 25 : 1. Rimuovendo dal grafo i nodi di grado 1 si ottiene una rete detta rete core, la quale è approssimata molto bene da una topologia di tipo scale-free. (a) Rete (b) Rete Core Figura 3.1: Esempio di rete Scale Free Hidden by Terminals con 30 nodi-core e 720 terminali 12 3.3 Algoritmo per la generazione della topologia Cerdà in [1] ha proposto un algoritmo per la generazione di grafi con le proprietà Scale Free Hidden by Terminals. I parametri di input sono: N il numero di nodi della rete Core, T il numero di nodi Terminali, E il numero di archi della rete Core e i parametri α e β della distribuzione Gamma β α α−1 βx = Γ(α) x e utilizzata per estrarre casualmente il numero di terminali. L’algoritmo opera in 4 passi ovvero: 1. Creazione dei nodi Core 2. Generazione dei nodi terminali 3. Creazione degli archi della rete core 4. Collegamento dei nodi terminali L’algoritmo viene istanziato con N nodi disconnessi ai quali verranno in seguito collegati i terminali. Per generare i T terminali al passo 2) vengono estratti N valori da una distribuzione Gamma(α, β) ed ogni valore verrà associato ad un particolare nodo core. Essendo la Gamma una variabile aleatoria continua, è necessario discretizzare i valori, verranno quindi analizzate due diverse strategie di discretizzazione utilizzando la funzione floor e la funzione round. La creazione degli archi della rete core viene eseguita in due passaggi. Per ogni nodo core verrà generato un arco scegliendo come destinazione un altro nodo casuale scelto con probabilità proporzionale al grado, in questo modo verrà garantita la proprietà di collegamento preferenziale. Lo scopo di questo primo passaggio è di garantire la connettività del grafo ottenuto generando almeno un arco per ogni nodo core. Il secondo passaggio genera per ogni coppia di vertici una probabilità pesata sul grado e genera casualmente gli archi rimanenti, anche in questo caso è garantita la proprietà di connessione preferenziale. L’algoritmo termina dopo aver collegato ogni nodo terminale al non terminale al quale è associato. 3.4 Implementazione del generatore Per implementare il generatore sono stati esplorati diversi sistemi e diverse tecniche. Per generare un grafo valido il problema principale è nell’imporre N X T (ni ) = T (3.1) i=1 ovvero che la somma dei terminali sia uguale al T dato in input. Un altra proprietà da tenere in considerazione è che un nodo core deve avere almeno un terminale per rispettare la definizione data a inizio capitolo. Per testare le varie implementazioni sono state effettuate delle simulazioni utilizzando 13 come parametri i valori N = 266, T = 5846, E = 398 e α = 0.25, β = 1.15 · 10−2 ovvero i valori osservati nella rete Osona. 3.4.1 Generazione Brute Force Il primo metodo di generazione tentato è stato un metodo di generazione Brute Force. Oltre alla scarsa efficienza è chiaro che questo metodo soffre di grossi problemi nel rispettare (3.1). Se si definisce X1 ... Xn una successione finita di n v.a di legge Γ(α,β) indipendenti, con media µ = αβ e con varianza σ = βα2 tali che T µ= (3.2) N Definito Sn = X1 + ... + Xn . Si deve stimare P(Sn = T ) (3.3) Supponendo N abbastanza grande, per il teorema del limite centrale, Sn converge in legge a una variabile aleatoria N (N µ, N σ 2 ). Riscrivendo (3.2) otteniamo T = N µ, da cui N (T, N σ 2 ). Si vuole ora calcolare P(N = T ) (3.4) ma essendo la v.a. continua, tale probabilità è 0. Essendo interessati solamente ai valori interi possiamo tuttavia stimare la probabilità come 1 1 = P T − ≤N ≤T + 2 2 ! T − 12 − T T + 12 − T N −T √ P = ≤ √ ≤ √ (3.5) Nσ Nσ Nσ 1 1 P − √ ≤Z≤ √ 2 Nσ 2 Nσ dove Z è la distribuzione N (0, 1). La stima è quindi data da 1 √ 2Φ −1 2 Nσ (3.6) Ora, se istanziamo i valori con α = 0.25, β = 0.0115 e N = 266, abbiamo che µ = 21, 73, σ 2 = 1890, 36 e T = 5846. La stima P(S266 = T ) ≈ 0.0006 Si consideri ora la seconda condizione, cioè che ogni nodo core deve avere almeno un terminale. Formalmente ∀1≤i≤N Xi ≥ 1 Sia p = P(Xi ≥ 1) ovvero la probabilità che il nodo i-esimo abbia almeno un terminale. Poiché indipendenti, la probabilità che si verifichi per tutte 14 le N v.a. è data dal prodotto delle singole probabilità, ovvero pp...p = pn . Istanziamo con α = 0.25, β = 0.0115 e n = 266 otteniamo p = 0.64 dunque pN = 0.64266 ≈ 2−52 . Il metodo di generazione Brute Force è quindi inapplicabile a causa delle scarse probabilità emerse durante l’analisi. 3.4.2 Algoritmo per la generazione dei terminali Per ovviare ai problemi della generazione Brute Force si è deciso di: • traslare l’inizio della coda sinistra della distribuzione Gamma in 1 • utilizzare il seguente algoritmo per avere il corretto numero di nodi terminali Algorithm 1 Generazione dei terminali Require: T, N, α, β rem nodes ← N − T r ← new Array(N) for i ← 1 to N do . Inizializza l’array per traslare la Γ asd r[i] ← 1 i←i+1 end for i←1 while rem nodes AND i ≤ N do v ← random Γ(α, β) if v > rem nodes then . Ho assegnato tutti i nodi disponibili r[i] ← rem nodes rem nodes ← 0 else r[i] ← bvc rem nodes ←rem nodes - bvc i←i+1 end if end while . Non ho assegnato tutti i nodi if rem nodes then . Assegno i rimanenti all’ultimo nodo r[N] ← rem nodes end if return r Si deve ora verificare se tale algoritmo mantiene effettivamente i valori distribuiti secondo una distribuzione Γ(α, β) traslata in 1. Per eseguire la verifica si è utilizzato il test del χ2 su 10000 estratti utilizzando l’algoritmo e 15 discretizzati tramite la funzione floor e la funzione round. Per confronto sono stati eseguiti dei test utilizzando dei campioni estratti da una Gamma non discretizzata. Definita X una v.a. di legge Γ(α, β) non è possibile applicare direttamente il test statistico del χ2 ma è necessario discretizzare la funzione partizionando l’intervallo [1, +∞[ in intervalli di dimensione unitaria, ad esclusione dell’ultimo, e si associando a ciascuno di essi la probabiltà p che ha X di cadere nell’intervallo i-esimo [k, k + 1]. pi = P(k ≤ X ≤ k + 1) = P(X ≤ k + 1) − P(X ≤ k) Non è però possibile partizionare tutto [1, +∞[ in intervalli di dimensione unitaria, si costruisce quindi un ultimo intervallo di dimensione infinita [t, +∞[. Per determinare t si è imposto che npi ≥ 2 in modo da avere circa due campioni in ogni intervallo precedente. La probabilità associata a [t, +∞[ è stata calcolata come P(X > t) = 1 − P(X ≤ t) Ora, estratto il campione casuale, possiamo stimare le frequenze dell’intervallo i-esimo come Ni fi = n dove Ni è il numero di campioni che cadono nell’intervallo i-esimo. Possiamo definire la statistica: m X (pi − fi )2 Tn = n pi i=1 Dove m è il numero degli intervalli. Per il teorema di Pearson, la statistica Tn ∼ χ2 (m − 1), quindi possiamo applicare il test. Per le simulazioni si è fissato Γ(0.25, 0.0115) + 1, n = 266 e l’intervallo di confidenza α = 0.05. Si sono eseguite anche delle simulazioni utilizzando la funzione round anziché floor con una costruzione analoga partizionando l’intervallo [0.5, ∞[. I risultati ottenuti sono i seguenti: Campioni Gamma Campioni Gamma Floored Campioni Algoritmo Floored Successi 9339 9339 9164 Fallimenti 661 661 836 Tabella 3.1: I valori ottenuti dalle simulazioni su 10000 campioni generati con la distribuzione discretizzata con floor Osserviamo che i test superati dalla Gamma sono uguali in numero a quelli superati dalla Gamma discretizzata, sia per la funzione floor che per la funzione round. Ciò avviene poiché ogni intervallo viene costruito in 16 Campioni Gamma Campioni Gamma rounded Campioni Algoritmo Rounded Successi 9327 9327 9182 Fallimenti 673 673 818 Tabella 3.2: I valori ottenuti dalle simulazioni su 10000 campioni generati con la distribuzione discretizzata con round modo tale da confinare al suo interno tutti i campioni discretizzati e dunque le frequenze restano invariate. Inoltre i risultati ottenuti con le due funzioni sono simili perché, per costruzione, viene applicata una semplice traslazione al centro dell’intervallo. L’utilizzo della round non apporta alcun beneficio e verrà quindi utilizzata la floor. I campioni generati dall’algoritmo hanno risultati leggermente inferiori rispetto ai valori estratti da una legge Γ reale ma, consideriamo la v.a Y che conta il numero k ∈ N+ di tentativi necessari per generare un campione valido con l’algoritmo e chiediamoci P(Y = k) = p(1 − p)k−1 quindi Y ∼ G(p). Se consideriamo p ∼ 0.9 come risulta dalle 1 simulazioni, il valore atteso E[Y ] = p1 = 0.9 = 1.11. Ci aspettiamo, in media, circa 2 tentativi per ottenere un campione statisticamente valido. Ora, applicando un metodo di estrazione Try and Reject con l’algoritmo proposto, dobbiamo effettuare un numero di tentativi medio molto piccolo da un punto di vista computazionale al prezzo di un test statistico aggiuntivo. Se consideriamo la probabilità di ottenere un campione tramite generazione diretta (P = 0.0006) l’algoritmo risulta computazionalmente vantaggioso nonostante il test necessario. 3.4.3 Distribuzioni Gamma e distribuzioni Binomiali Negative Utilizzare una v.a. discreta eliminerebbe i problemi di discretizzazione e la distribuzione Gamma ha una controparte discreta detta binomiale negativa N B(p, r) con p ∈ [0, 1] e r ∈ R definita come : k+r−1 P(k) = (1 − p)r pk k la distribuzione ha valore atteso e varianza rispettivamente pr E= 1−p pr V ar = (1 − p)2 sappiamo che la Gamma(α, β) α E= β 17 α β2 vogliamo imporre che le due distribuzione abbiano valore atteso e varianza uguali quindi abbiamo che pr α = 1−p β pr α = 2 2 (1 − p) β da cui segue che p=1−β α r= 1−β Con la condizione 0 < β < 1. Istanziando α = 0.25 e β = 0.0115 possiamo confrontare le due distribuzioni. Ora le due distribuzioni sono molto simili, V ar = 0.45 0.40 0.35 0.30 0.25 0.20 0.15 0.10 0.05 0.00 0 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0.0 0 PDF delle distribuzioni Gamma Binomiale 2 2 4 6 8 10 4 6 8 10 CDF delle distribuzioni Figura 3.2: I grafici di PDF e CDF delle due distribuzioni con differenze più marcate nei valori 0 e 1 con circa 0.04 e 0.02 di differenza nella probabilità rispettivamente, mentre per valori più grandi convergono molto rapidamente. Per controllare ulteriormente le approssimazioni sono stati eseguiti due test del χ2 su campioni estratti da una distribuzione e confrontati con l’altra ottenendo i seguenti risultati. In conclusione, la binomiale approssima molto bene la Gamma ad esclusione dello scarto iniziale con il vantaggio fondamentale di essere una v.a. discreta. Verrà quindi usata la binomiale negativa per generare la rete. 18 Campioni Gamma Discreta Teorica Binomiale Campioni Binomiale Teorica Gamma Discreta Successi 9305 8620 Fallimenti 695 1380 Tabella 3.3: Valori ottenuti dalle simulazioni 3.4.4 Determinazione dei parametri dell’algoritmo Si è cercato di individuare i parametri per generare la rete nel modo più automatico possibile. Dato in input N, per determinare T ed E, si è utilizzata la stessa proporzione dei nodi trovata da Cerdà. I parametri r e p della distribuzione richiedono invece un’analisi più approfondita. Sappiamo che per la distribuzione Binomiale Negativa ha µ= pr (1 − p) (3.7) σ2 = pr (1 − p)2 (3.8) abbiamo che µ = T /N ma, non è possibile determinare la varianza da questi parametri. Dando la possibilità all’utente di fornire la varianza della distribuzione possiamo calcolcare p e r risolvendo (3.7) e (3.8). Abbiamo che pr = µ(1 − p) pr = σ 2 (1 − p)2 da cui (1 − p)(σ 2 (1 − p) − µ) = 0 ottenendo i valori p=1− r= µ σ2 µ2 σ2 − µ La soluzione p = 1 e r = 0 va scartata in quanto la distribuzione non avrebbe senso con questi valori. Per controllarne la validità è necessario verificare che 0 ≤ p ≤ 1 ovvero che µ 0≤1− 2 ≤1 σ Tale valore non potrà mai essere maggiore di 1 in quanto µ > 0 perché indica il numero medio di terminali per nodo, mentre σ 2 è positivo per definizione. Per avere σµ2 > 1 dovrà essere µ > σ 2 valore di input che andrà controllato. Per definire un valore di default della varianza si è studiato il rapporto σµ per capire come la distribuzione cambia tenendo fissata la 19 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0.0 0 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0.0 0 PDF delle distribuzioni 2 2 4 6 8 10 4 6 8 10 CDF delle distribuzioni Figura 3.3: Diverse distribuzioni Binomiali Negative al variare di σ µ σ µ σ µ σ µ σ µ = 0.6 =1 =2 =3 =5 σ µ media. Per σµ < 1 la distribuzione tende a non avere nodi core con un solo terminale, mentre all’aumentare del rapporto questo tipo di nodi cresce fino ad ottenere distribuzioni dove tutti i nodi, escluso l’ultimo per imposizione dell’algoritmo, hanno un solo terminale. Come valore di default è stato scelto σµ = 2 in quanto genera delle distribuzioni senza un numero eccessivo di foglie. Viene data all’utente la possibilità di modificare il rapporto specificando la varianza della distribuzione imponendo di accettare valori solo tra 1 e 4 per evitare distribuzioni troppo estreme per le quali il test statistico potrebbe fallire ripetutamente, non riuscendo di conseguenza a generare la rete. 20 Capitolo 4 Analisi della robustezza In questo capitolo verrà analizzata la robustezza della topologia Scale Free Hidden by Terminals e verranno affrontate problematiche sul calcolo delle centralità e sulle loro correlazioni. 4.1 Analisi della robustezza Per analizzare la robustezza della rete verranno utilizzate le tecniche proposte in [3] e basate sulla Percolation Theory. Tale teoria si basa sul rimuovere nodi o archi dal grafo ed osservare il comportamento della rete residua. La rimozione di un nodo o di un arco può simulare diversi scenari reali, come ad esempio un guasto hardware o un attacco allo scopo di minare la funzionalità di una rete di telecomunicazioni. Per analizzare il comportamento della rete rimanente è necessario introdurre una metrica di robustezza. Tale definizione non è immediata, ma esiste una soluzione basata sulle componenti connesse del grafo. Rimuovendo nodi dalla rete essi vengono rimossi anche dalla loro componente connessa creando, in alcuni casi, altre disconnessioni da parte dei nodi che si affidavano a quelli rimossi per instradare le informazioni. Con il procedere delle rimozioni il grafo inizierà ad essere composto da molte componenti connesse di dimensione sempre minore, tuttavia la componente connessa di dimensione maggiore garantirà la maggiore funzionalità residua della rete. Definita quindi C0 la componente connessa con il maggior numero di nodi, verrà utilizzata come metrica: |C0 | R= |V | Dove V indica l’insieme dei vertici prima di procedere con le rimozioni. In una rete i nodi e gli archi non sono tutti uguali in quanto, in base alle metriche definite nel capitolo 2, essi hanno un’influenza diversa sull’instradamento delle informazioni e sulla connettività del grafo. Verranno analizzati due scenari: il primo riguarda la rimozione casuale di nodi e archi, caso che 21 nella realtà coincide con un guasto casuale, mentre il secondo riguarda la rimozione secondo le diverse metriche già introdotte, caso che corrisponde ad un attacco mirato sulla rete. Verranno analizzati i seguenti casi: • Rimozione casuale dei nodi • Rimozione dei nodi secondo Degree Centrality • Rimozione dei nodi secondo Betweennes Centrality • Rimozione dei nodi secondo Closenness Centrality • Rimozione dei nodi secondo Eigenvector Centrality • Rimozione casuale degli archi • Rimozione degli archi secondo Betweennes Centrality Le simulazioni verranno effettuate su reti di dimesione variabile da 50, 100, 200 ,300 nodi core, con un rapporto nodi core terminali di 1:25. I grafici saranno espressi in percentuale di nodi rimossi per poter confrontare reti di diverse dimensioni. Per le rimozioni casuali il valore ottenuto è una media effettuata su 25 simulazioni. 1.0 50 nodi 100 nodi 200 nodi 300 nodi 0.8 R 0.6 0.4 0.2 0.0 0 10 20 30 Percentuale di nodi rimossi 40 50 Figura 4.1: Robustezza con rimozione di nodi casuali 22 1.0 50 nodi 100 nodi 200 nodi 300 nodi 0.8 R 0.6 0.4 0.2 0.0 0 10 20 30 Percentuale di nodi rimossi 40 50 Figura 4.2: Robustezza con rimozione secondo Degree Centrality 1.0 50 nodi 100 nodi 200 nodi 300 nodi 0.8 R 0.6 0.4 0.2 0.0 0 10 20 30 Percentuale di nodi rimossi 40 50 Figura 4.3: Robustezza con rimozione secondo Betweenness Centrality 23 1.0 50 nodi 100 nodi 200 nodi 300 nodi 0.8 R 0.6 0.4 0.2 0.0 0 10 20 30 Percentuale di nodi rimossi 40 50 Figura 4.4: Robustezza con rimozione secondo Closeness Centrality 1.0 50 nodi 100 nodi 200 nodi 300 nodi 0.8 R 0.6 0.4 0.2 0.0 0 10 20 30 Percentuale di nodi rimossi 40 50 Figura 4.5: Robustezza con rimozione secondo Eigenvector Centrality 24 1.0 50 nodi 100 nodi 200 nodi 300 nodi 0.8 R 0.6 0.4 0.2 0.0 0 10 20 30 Percentuale di archi rimossi 40 50 Figura 4.6: Robustezza con rimozione di archi casuali 1.0 50 nodi 100 nodi 200 nodi 300 nodi 0.8 R 0.6 0.4 0.2 0.0 0 Figura 4.7: Centrality 10 20 30 Percentuale di nodi rimossi 40 50 Robustezza con rimozione di archi secondo Betweenness 25 Per quanto riguarda le rimozioni casuali, in media, la topologia perde nodi linearmente in quanto la probabilità di rimuovere un nodo terminale è molto più alta rispetto alla rimozione di un nodo core. I grafici relativi a Degree Centrality e Betweenness Centrality mostrano l’enorme fragilità intrinseca della topologia in quanto, con rimozioni mirate, basta meno dell’1% dei nodi rimossi per far collassare completamente la struttura di rete. Questo accade per la Degree Centrality, perchè i nodi core hanno grado più elevato dovendo garantire l’accesso di tutti i loro terminali, e quindi per definizione della metrica essi verranno rimossi in successione causando lo scollegamento di tutti i loro terminali e di altri nodi core che si affidavano a loro per l’instradamento. La situazione è analoga per la Betweenness Centrality in quanto, per definizione i nodi terminali hanno centralità uguale a 0 causando quindi l’immediata rimozione di tutti i nodi core. Tale ragionamento si può estendere a reti di qualsiasi dimensione le quali si comporteranno tutte nello stesso modo. La Closeness Centrality assegna un valore positivo ai nodi terminali anche se inferiore rispetto a quello del loro nodo core di riferimento in quanto esso è un hop più vicino del terminale. La robustezza anche in questo caso è minima venendo selezionati i nodi core più importanti come prime rimozioni. La Eigenvector Centrality è l’unica metrica che presenta differenze sostanziali. Essa assegna un valore di metrica positivo proporzionale a quello del nodo core anche ai terminali. I nodi core avranno in ogni caso un valore più alto e verranno rimossi per primi ma, a seguito della rimozione, dalla rete saranno eliminati anche i nodi terminali relativi,ormai scollegati, mantenendo le prestazioni della rete costanti per un periodo. È inoltre l’unica metrca ad avere differenze sostanziali in funzione della dimensione della rete. Per quanto riguarda l’analisi degli archi la rete si comporta in modo analogo per le rimozioni casuali mostrandosi però più robusta rispetto alla rimozione casuale dei nodi, questo perché la rimozione di un arco della rete core non comporta necessariamente lo scollegamento di nodi. La Betweenness Centrality degli archi comporta la rimozione di tutta la rete core la quale mantiene per breve periodo la connettività grazie alla sua natura mesh, ma dopo la rimozione dei circa il 5% degli archi la rete sarà formata da N grafi stella, uno per ogni core, e la robustezza sarà data dalla componente connessa formata dal nodo core di grado più elevato. 26 4.2 Approssimazione della Betweennes Centrality Brandes in [4] ha descritto un algoritmo per il calcolo della Betweenness Centrality in tempo O(|V ||E|) . Per grafi grandi, anche se sparsi, la complessità risulta inaccettabile. Lo stesso autore ha introdotto un altro algoritmo per il calcolo della betweenness in [5] calcolando gli shortest path solamente per un sottoinsieme dei vertici, detti pivot, e stimando probabilisticamente la betweenness degli altri nodi partendo dai percorsi calcolati. Sono state eseguite delle simulazioni calcolando la betweenness reale e stimandola tramite l’algoritmo di approssimazione di Brandes utilizzando come numero di pivot il 10% e il 20% dei nodi del grafo. Le reti analizzate contengono 50, 100, 200, 300, 400 e 500 nodi core per un totale rispettivamente di 1250, 2500, 5000, 7500, 10000, 12500 nodi. I seguenti grafici riportano la betweenness solamente dei nodi core in quanto essa sarà 0, per definizione, per tutti i nodi terminali. Stima Betweenness Centrality Betweenness reale Stima 10% dei nodi Stima 20% dei nodi 1.0 Betweenness Centrality 0.8 0.6 0.4 0.2 0.0 0 10 20 Nodi 30 40 Figura 4.8: Rete con 50 nodi core 27 50 Stima Betweenness Centrality Betweenness reale Stima 10% dei nodi Stima 20% dei nodi 1.0 Betweenness Centrality 0.8 0.6 0.4 0.2 0.0 0 20 40 Nodi 60 80 100 Figura 4.9: Rete con 100 nodi core 1.0 Betweenness Centrality 0.8 Stima Betweenness Centrality Betweenness reale Stima 10% dei nodi Stima 20% dei nodi 0.6 0.4 0.2 0.0 0 50 100 Nodi 150 Figura 4.10: Rete con 200 nodi core 28 200 Stima Betweenness Centrality Betweenness reale Stima 10% dei nodi Stima 20% dei nodi 1.0 Betweenness Centrality 0.8 0.6 0.4 0.2 0.0 0 50 100 150 Nodi 200 250 300 Figura 4.11: Rete con 300 nodi core Stima Betweenness Centrality Betweenness reale Stima 10% dei nodi Stima 20% dei nodi 1.0 Betweenness Centrality 0.8 0.6 0.4 0.2 0.0 0 50 100 150 200 Nodi 250 300 Figura 4.12: Rete con 400 nodi core 29 350 400 Stima Betweenness Centrality Betweenness reale Stima 10% dei nodi Stima 20% dei nodi 1.0 Betweenness Centrality 0.8 0.6 0.4 0.2 0.0 0 100 200 Nodi 300 400 500 Figura 4.13: Rete con 500 nodi core Dalle simulazioni lo scarto tra la betweennes reale e stimata è piccolo anche utilizzando solamente il 10% dei nodi come pivot. Inoltre, all’aumentare del numero di nodi che compongono la rete, l’approssimazione migliora e, per dimensioni pari a quelle di Osona, lo scarto è praticamente nullo. È quindi possibile utilizzare l’algoritmo di Brandes su un sottoinsieme piccolo di pivot per calcolare la metrica di centralità migliorando notevolmente le prestazioni nel calcolo. 30 4.3 Correlazione tra metriche di centralità 31 Conclusioni 32 Bibliografia [1] Llorenç Cerdà-Alabern. On the topology characterization of guifi.net, 2013. [2] Albert-László Barabási and Réka Albert. Emergence of scaling in random networks. Science, 286(5439):509–512, October 1999. [3] Leonardo Maccari and Renato Lo Cigno. A week in the life of three large wireless community networks, 2014. [4] Ulrik Brandes. A faster algorithm for betweenness centrality, 2001. [5] Ulrik Brandes and Pish Christian. networks, 2006. 33 Centrality estimation in large