OLSR OptimizedLink State Routing
Creative Commons Attribution-NonCommercial 3.0 Unported License Autore Alessandro Gnagni Contributor Claudio Pisa
Caratteristiche Principali: Link State: Ogni router è a conoscenza dell'intera topologia della rete Uso di un flooding selettivo per propagare le informazioni sullo stato della rete permette di diminuire il traffico di controllo
Definito in un RFC: RFC 3626 Utilizzo di pacchetti specifici: Protocollo UDP porta 698 Ideato principalmente per reti MANET: Mobile Ad-Hoc Networks Funzione di calcolo della qualità dei Link ancora sperimentale (non RFC)
Definizione di MANET secondo IETF: Definizione di MANET secondo IETF: Una MANET è un sistema autonomo di router mobili e dei loro hostassociati, connessi con collegamenti di tipo wireless che sono uniti formando un grafo di forma arbitraria. Tali router sono liberi di muoversi casualmente e di auto organizzarsi arbitrariamente, sebbene la topologia wireless vari rapidamente ed in modo imprevedibile. Tale rete può operare da sola oppure essere connessa alla rete Internet.
Abbiamo 2 Tipi di messaggi OLSR: Messaggi HELLO Messaggi TC
Messaggi HELLO: Scambiati solo fra 2 router adiacenti (non vengono inoltrati) Eseguono Neighbor Discovery e selezione degli MPR Neighbor Discovery Un router esegue un broadcast di un messaggio HELLO Tutti i vicini rispondono con un messaggio HELLO Sono stabiliti i link bidirezionali Selezione Multi-Point-Relay (MPR) I nodi con le migliori connessioni e maggior disponibilità vengono selezionati come MPR Gli MPR sono gli unici nodi che inoltrano i messaggi OLSR Flooding Selettivo
Messaggi Topology Control (TC): Gli MPR generano i messaggi TC I messaggi TC sono inoltrati attraverso tutta la rete (solo dagli MPR) I router integrano i messaggi TCricevuti dentro un grafo che rappresenta tutta la rete Attraverso il grafo che ha in memoria, ogni router popola la propria tabella di routing(usa Djkstra) Senza MPR Con MPR
Struttura pacchetto TC Struttura pacchetto HELLO
In questo modo ogni router è a conoscenza del percorso da scegliere per raggiungere gli altri router. Ma come possiamo fare per raggiungere un host che non utilizza olsr? (Pc, Server, etc...) : Hosts Olsr Router Olsr Network HNA Esiste un meccanismo di Host and Network Association (HNA)
Messaggio HNA: Uno o più router direttamente connessi alla sottorete interessata sono configurati opportunamente Il router annuncia al resto della rete che lui è connesso alla sottorete Tutti i messaggi destinati alla sottorete vengono inviati al router, il quale li inoltra come un normale router e viceversa Il router deve essere il default gateway degli host sulla Il router deve essere il default gateway degli host sulla sottorete o devono essere configurate in maniera opportuna delle rotte statiche.
Esistono diverse implementazioni di OLSR Prendiamo in considerazione olsrd: Open source Sviluppato dalla comunità Architettura a plug-in Largamente diffuso http://olsr.org
Dopo una serie di test fatti in germaniasulla rete di freifunk sono seguite delle ottimizzazioni del protocollo per renderlo più usabile. Sono stati disabilitate 2 funzioni: MPR Hysteresis Purtroppo su reti wireless che tendono ad essere molto instabili questi 2 meccanismi non funzionavano bene. Questo di per se ha fatto diventare olsrun semplice protocollo link state, in realtà sono state fatte ulteriori modifiche che hanno portato grossi benefici: È stato aggiunto un meccanismo di calcolo della qualità dei link È stata applicata una strategia per la diffusione dei pacchetti TC modificando il loro TTL
Calcolo della Qualità dei Link: È stata introdotta nelle ultime versioni di olsr la possibilità di calcolare la qualità dei singoli link. Non è compatibile con la versione standard indicata nell'rfc di messaggi HELLO e TC L'attivazione comporta un cambio di configurazione su tutta la rete Definiamo un nuovo tipo di messaggi: LQ HELLLO LQ TC
Ogni router invia pacchetti LQ HELLO ad un intervallo di tempo prefissato (default 2 sec) Possiamo determinare la qualità del link in base al numero di pacchetti ricevuti sul totale inviati Calcoliamo il Link Quality(LQ)come percentuale di pacchetti ricevuti su quelli inviati Indica la qualità del link dal nostro vicino verso di noi Invio 10 pacchetti Intervallo fra i pacchetti costante Ricevo 8 pacchetti Vicino Osservatore LQ = 8/10 = 0,8
Viene calcolato il Neighbor Link Quality (NLQ) dal nostro vicino nello stesso modo Indica la qualità del link da noi verso il nostro vicino I due valori vengono scambiati fra le 2 controparti all interno dei LQ HELLO LQ Vicino NLQ Osservatore Viene calcolato il costo del link da ogni router, chiamato ETX (Expected Transmission Count) sulla base della seguente formula: 1/(LQ * NLQ) Essendo calcolato sulla base di valori comuni è uguale per ogni router ETX Vicino Osservatore Viene propagata tale informazione attraverso i LQ TC
Quello illustrato è l algoritmo di calcolo dell etxsemplice, denominato: «etx_float» Tuttavia attualmente OLSRdusa di default un algoritmo leggermente differente, l «etf_ff»(etx Funkfeuer/Freifunk) Tale algoritmo usa il numero di sequenza dei pacchetti OLSR (specifico per ogni link) per determinare la perdita dei pacchetti sul link.
Transitano 10 pacchetti olsrsul nostro link, ma ne perdiamo 4. Abbiamo ricevuto tutti i pacchetti con numero di sequenza fino a 2, il successivo ricevuto aveva numero 7. Da questo abbiamo capito che sono stati persi i pacchetti da 3 a 6 e a intervalli regolari utilizziamo questi campioni per il calcolo di LQ e NLQ Invio 10 pacchetti Numero di sequenza dei pacchetti 9 8 7 6 5 4 3 2 1 0 Ricevo 6 pacchetti Trasmettitore Ricevitore
Applica inoltre un algoritmo di isteresiper moderare le fluttuazioni dei valori LQ e NLQ sul link: Quando nessun pacchetto viene ricevuto da un vicino per un determinato intervallo di tempo, un timer incomincia a decrescere il valore di LQ. Trasmettitore Ricevitore Questo finchènon viene ricevuto il pacchetto successivo o il link cade. Inoltre questo algoritmo usa solo matematica intera (non a virgola mobile), cosa ottima per dispositivi con capacità di calcolo limitate.
Vogliamo diffondere la topologia della rete tramite i TC Se inviamo troppi pacchetti la rete si satura con traffico di controllo Potremmo fare in modo che i nostri vicini abbiano più informazioni e Potremmo fare in modo che i nostri vicini abbiano più informazioni e diminuire la granularità all aumentare della distanza.
Ogni pacchetto TC ha un campo TTL che indica per quanti hop può viaggiare prima di essere scartato. Agiamo quindi sul TTL dei TC in questo modo: Ogni 8pacchetti TC inviati i loro TTL saranno i seguenti: 2 8 2 16 2 8 2 255 Impostando come intervallo di TC pari a 0,5 secondi: 8 pacchetti verranno visti dai vicini a distanza x<=2 (uno ogni 0,5 secondi) 4 pacchetti da quelli a distanza 2<x<=8 (uno ogni 1 secondo) 2 pacchetti da quelli a distanza 8<x<=16 (uno ogni 2 secondi) Tutto il resto della rete vedrà 1 pacchetto (uno ogni 4 secondi) 8TC 4TC 2TC 1 TC Origine 2Hop 8Hop 16 Hop Questo approccio viene chiamato: LINK QUALITY FISH EYE OLSR Network
Un altro punto di forza per OLSRdè la sua estensibilità mediante l utilizzo di plugin in continua evoluzione e mantenuti dalla comunity. Ecco alcuni esempi: Quagga (permette l interscambio di rotte fra quagga e olsr) mdns(invio di messaggi multicast DNS attraverso la rete) txtinfo(informazioni sul router su cui è attivato) secure(proteggere con autenticazione crittografica il traffico di controllo).
L evoluzione di OLSR È in fase di sviluppo da parte dell IETF una nuova versione di OLSR chiamata OLSRv2. Tale evoluzione mira ad ottimizzare i meccanismi già presenti in OLSR e permettere una maggiore flessibilità. In particolare i messaggi scambiati da OLSRv2 sono in formato TLV (type, length, value), ciò permette una maggiore versatilità utilizzando campi a dimensione variabile in contrasto con quelli a dimensione fissa dell OLSR iniziale.
Olsrdper funzionare ha bisogno di 2 file: L'eseguibile Il file di configurazione Comprende molti parametri Prendiamo in considerazione i 2 più importanti Hna4 Interface
Il parametro Hna4: Qui possiamo definire le sottoretia cui è connesso il router che devono essere annunciate sulla rete. Deveno essere nella forma sopra indicata.
Il parametro Interface: Qui dobbiamo indicare all'interno dei doppi apici i nomi delle interfacce a cui sono connessi gli altri router della rete olsr
Topologia del laboratorio 10.0.4.0/24 2 eth0 1 eth1 E 2 etho 1 eth1 10.0.5.0/24 10.0.2.0/24 2 eth0 A 1 eth1 1 eth0 C 1 eth2 2 10.0.1.0/24 eth1 192.168.1.0/24 B 2 eth0 1 eth1 D 2 eth2 F 1 eth0 G 2 eth0 Pc 1 192.168.0.0/24 10.0.3.0/24 OLSR NETWORK Pc 2 HNA HNA
Nel Laboratorio fornito è presente un piccolo script nella home di rootdi ogni singola macchina virtuale che lancia olsrcon la configurazione personalizzata. Il file della configurazione e l'eseguibile si trovano nella cartella /olsrd/ Solo i router hanno attivo olsr, i pc usano il router nella propria subnet come default gateway.
Una volta avviato il laboratorio attiviamo su ogni router olsr: r1 r1:~#./olsr.sh Fatto questo comparià sul terminale la schermata di olsr con i suoi valori: Dobbiamo aspettare che la rete «converga» prima di poter avere dei valori validi
Questi sono gli indirizzi dei router che si trovano direttamente connessi a r1 Valori di LQ e NLQ per ogni Link ETX risultante Indirizzi raggiungibili a distanza 2 Indirizzi raggiungibili a distanza 1 Costo totale per raggiungere l indirizzo