POLITECNICO DI BARI Facoltà di Ingegneria Corso di Laurea Magistrale in Ingegneria Informatica ______________________________________________________________ Tema d'anno di Grafi e combinatoria Applicazione della teoria dei grafi e dei codici correttori alle reti VANET Relatore: Chiar.ma Prof.ssa Bambina LARATO Studenti: Marco COLAPRICO Angelo Antonio SALATINO ______________________________________________________________ Anno Accademico 2010-2011 Sommario Capitolo 1 – Teoria dei grafi ........................................................................................................................... 4 Introduzione................................................................................................................................................... 4 Definizione di grafo ....................................................................................................................................... 6 Isomorfismo di grafi ...................................................................................................................................... 9 Sottografi ....................................................................................................................................................... 9 Grado di un vertice ...................................................................................................................................... 11 Nomenclatura .............................................................................................................................................. 12 Cammini ...................................................................................................................................................... 12 Alberi ........................................................................................................................................................... 16 Applicazioni sui grafi .................................................................................................................................. 18 Algoritmo di Dijkstra............................................................................................................................... 18 Algoritmo di Bellman – Ford .................................................................................................................. 20 Confronto di complessità computazionale............................................................................................... 22 Capitolo 2 - Teoria dei codici ........................................................................................................................ 23 Definizione di codice ................................................................................................................................... 23 Parametri di un codice ................................................................................................................................. 25 Capitolo 3 - Teoria dei codici correttori e rilevatori di errore .................................................................. 29 Introduzione alla teoria dei codici correttori ............................................................................................... 29 Codici ridondanti ......................................................................................................................................... 31 Decodifica di minima distanza e codici correttori ....................................................................................... 32 Codifica di un codice lineare ....................................................................................................................... 35 I codici di Hamming .................................................................................................................................... 43 Capitolo 4 – Analisi delle reti VANET......................................................................................................... 45 Introduzione................................................................................................................................................. 45 Storia delle reti VANET .............................................................................................................................. 46 Applicazioni utente ...................................................................................................................................... 46 Architettura di un nodo ................................................................................................................................ 47 Applicazione dei grafi sulle VANET .......................................................................................................... 47 Livello di rete per VANET .......................................................................................................................... 48 Distance Vector ....................................................................................................................................... 48 Scenario ....................................................................................................................................................... 48 Applicazione del codice Hamming (7, 4) alle reti VANET ........................................................................ 53 Primo metodo con operazioni logiche ..................................................................................................... 54 Secondo metodo con matrici G e H ......................................................................................................... 56 2|Pagina Progressi tecnologici ................................................................................................................................... 58 Bibliografia..................................................................................................................................................... 59 Indice delle figure Figura 1 - Esempio della struttura grafo ............................................................................................................ 4 Figura 2 - Mappa della città di Konigsberg ....................................................................................................... 5 Figura 3 - Mappa dei ponti e degli isolotti di Konigsberg ................................................................................. 5 Figura 4 - Grafo relativo ai ponti di Konigsberg ............................................................................................... 6 Figura 5 - Mappa della metropolitana di Londra ............................................................................................... 7 Figura 6 - Esempio di traduzione da un circuito in un grafo ............................................................................. 8 Figura 7 - Mappa dei maggiori aeroporti degli USA con relative linee aeree pesate ........................................ 8 Figura 8 - Esempio di grafi isomorfi ................................................................................................................. 9 Figura 9 - Esempio di un sottografo ................................................................................................................ 10 Figura 10 - Esempio di un sottografo indotto .................................................................................................. 10 Figura 11 - Esempio di un sottografo indotto da X ......................................................................................... 11 Figura 12 - Grado di un grafo .......................................................................................................................... 12 Figura 13 - Esempio di un cammino di un grafo ............................................................................................. 13 Figura 14 - Esempi di cammini: chiuso (sinistra), aperto (destra)................................................................... 13 Figura 15 - Esempio sulla differenza tra trail e path ....................................................................................... 14 Figura 16 - Esempio di ciclo ........................................................................................................................... 14 Figura 17 - Esempio di grafo per il calcolo della lunghezza ........................................................................... 15 Figura 18 - Differenza tra un grafo connesso e non ........................................................................................ 15 Figura 19 - Esempio di grafi aciclici e foresta................................................................................................. 16 Figura 20 - Esempio 1 di spanning tree ........................................................................................................... 17 Figura 21 - Esempio 2 di spanning tree ........................................................................................................... 17 Figura 22 - Spanning tree creato con l'algoritmo di Kruskal ........................................................................... 18 Figura 23 - Schema di un sistema di comunicazione ...................................................................................... 29 Figura 24 - Canale binario simmetrico ............................................................................................................ 30 Figura 25 - Sfera di Hamming di centro x e raggio r....................................................................................... 33 Figura 26 - Esempio di decodifica di minima distanza ................................................................................... 33 Figura 27 - Reti VANET ................................................................................................................................. 45 Figura 28 - Segnalazione dovuta ad un veicolo d'emergenza .......................................................................... 46 Figura 29 - Inoltro di una notifica raccolta ...................................................................................................... 47 Figura 30 - Scenario di esempio per le VANET.............................................................................................. 49 Figura 31 - Scenario della sola rete VANET ................................................................................................... 49 Figura 32 - Grafo rappresentativo dello scenario ............................................................................................ 50 Figura 33 - Grafo dei cammini minimi per lo scenario analizzato .................................................................. 53 Figura 34 - Copertura dei bit di parità ............................................................................................................. 55 Figura 35 - Schema circuitale dell'encoder e del decoder per Ham(7, 4) ........................................................ 56 3|Pagina Capitolo 4 – Analisi delle reti VANET Introduzione Per evitare di incorrere in quello che esula dalla trattazione di questa tesina, si cercherà in questo capitolo di dare una breve e concisa descrizione sulle reti ed in particolare delle VANET, in modo da lasciare ampio spazio ad una trattazione puramente incentrata sui grafi. Le reti veicolari ad-hoc (Vehicular Ad-hoc NETwork, VANET) sono un tipo di tecnologia emergente che sta trovando ampio spazio nella disciplina delle Telecomunicazioni. Questa rete si basa su tecnologia Wi-Fi tesa ad offrire ai veicoli la possibilità di scambio di informazioni di qualsiasi natura, i cui nodi, essenzialmente veicoli, sono caratterizzati da un'alta mobilità. Assumendo che i collegamenti fisici (onde radio) della rete possano formare dei lati, è possibile impiegare lo scenario su descritto in una struttura a grafo. G = (V,E) con V uguale all’insieme dei veicoli e E l’insieme dei link fisici tra i nodi Nella seguente figura è possibile apprezzare uno scenario delle applicazioni di questo tipo di reti: Figura 27 - Reti VANET Le reti VANET infatti sono una particolare tipologia di reti mobili ad-hoc (Mobile Ad-hoc NETwork, MANET). L’Internet Engineering Task Force (IETF) definisce cosi: “Una MANET é un sistema autonomo di router mobili e dei loro host associati, 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”. Le reti VANET si differenziano dalle semplici reti MANET per l'alta mobilità dei nodi che causano cambiamenti topologici frequenti e radicali. Si può inoltre notare come il set di applicazioni candidate ad essere sviluppate per questa tecnologia (es. notifiche di incidenti stradali e informazioni sul traffico), oltre alle risorse disponibili (es. spettro di frequenze dedicato, ampia capacità energetica e di calcolo) e le limitazioni dovute allo scenario di sviluppo (es. dinamicità del flusso di traffico, vincoli di privacy), fanno delle VANET un’area distinta dell’ ambiente delle comunicazioni wireless. Negli ultimi dieci anni la ricerca su questa tecnologia ha subito una forte accelerazione dovuta ai possibili risvolti commerciali ed al probabile impatto sulla sicurezza stradale che le 45 | P a g i n a VANET potrebbero avere. Ed è per questo che sono sorti negli anni numerosi comitati di sviluppo al fine di dare una spinta alla imminente standardizzazione dei protocolli e dei dispositivi concernenti le VANET [7]. Storia delle reti VANET La storia dell’utilizzo delle comunicazioni radio per l’interazione tra veicoli o tra veicolo e infrastruttura stradale è fortemente tesa alla costituzione di un sistema di trasporto intelligente [8]. Numerosi progetti sono stati sviluppati da altrettanto numerosi enti, privati e statali, dall’inizio degli anni ’80 ad oggi. Già dalla fine degli anni ’60 furono sviluppati i primi sistemi di “automazione stradale” basati su onde radio, che hanno sottolineato come l’attenzione della ricerca con il passare degli anni, si sia spostata dall’egemonia delle esigenze di sicurezza verso la possibilità di ottenere servizi quali la navigazione assistita [8]. L’utilizzo di queste tecnologie si prefiggeva che oltre a ottenere in tempo reale le notizie relative a quello che accadeva sulla strada che si stava percorrendo, permetteva a sua volta la: • • • • Riduzione della congestione del traffico Riduzione dell’emissione di gas di scarico dovuti al traffico Prevenzione di incidenti stradali Miglioramento del ruolo sociale dell’automobile Le comunicazioni vehicle-to-vehicle, cioè quelle destinate allo scambio di informazioni esclusivamente tra veicoli, giocarono però un ruolo dominante: molte delle ricerche prodotte allora [9] risultano attualmente ancora valide. L’interesse per le comunicazioni vehicle-to-vehicle continuarono a spingere le attività in Giappone e USA. La svolta si ebbe quando nel 1999 la FCC21 diede la possibilità di dedicare 75 MHz di banda intorno a 5.9 GHz per le comunicazioni a breve distanza, mettendo cosi a disposizione una fetta di frequenze per le comunicazioni tra i veicoli. Negli anni successivi numerosi furono gli standard prodotti. Solo nel 2004 però viene coniato, nell’ambito dell’ACM International Workshop on Vehicular Ad- hoc Networks a Philadelphia, per la prima volta il termine “VANET” [8]. Applicazioni utente Ci sono applicazioni per la gestione del traffico rivolte a migliorarne il flusso, riducendo così sia la congestione, sia gli incidenti da essa risultanti. La gestione del traffico include anche il monitoraggio dello stesso, la gestione dei semafori, e l’instradamento dei veicoli d’emergenza (fig. 23). Figura 28 - Segnalazione dovuta ad un veicolo d'emergenza 21 FCC: US Federal Communication Commission è l’ente delle comunicazioni statunitense . 46 | P a g i n a In particolare il monitoraggio è in grado di fornire informazioni tempestive e molto precise riguardo le condizioni del flusso veicolare anche a strade distanti parecchi chilometri: infatti ogni veicolo della rete VANET funge da sensore per la raccolta delle informazioni e da ripetitore per le notifiche (fig. 29). Figura 29 - Inoltro di una notifica raccolta La gestione dei semafori inoltre potrebbe essere fondamentale per lo smaltimento del traffico negli orari di punta in modo da creare percorsi ad alto scorrimento. Tuttavia, ci sono applicazioni di supporto alla guida che provvedono a fornire ai passeggeri dei veicoli informazioni locali, mappe e messaggi di tipo generico di validità limitata nello spazio e nel tempo. Ad esempio si pensi a informazioni utili come mappe aggiornate della zona, stazioni benzina, aree parcheggio o punti di interesse. Non di minore rilevanza sono però le cosiddette “comfort application” tese a dare servizi di intrattenimento ai passeggeri al fine di rendere il viaggio più piacevole. Questa classe di applicazioni può essere ad esempio spinta dall’esigenza dei passeggeri di comunicare tramite la rete Internet (si pensi ai client di instant messaging o ai social network) o di sfruttare la forte diffusione dei file multimediali nella rete. Architettura di un nodo Nelle reti VANET come d’altronde in un qualsiasi tipo di rete, un nodo è provvisto di un insieme di protocolli che regolano le trasmissioni dei dati. Evitando di cadere in troppi dettagli si dirà semplicemente che qualsiasi nodo di una qualsiasi rete ha come riferimento il modello ISO/OSI. Il modello appena citato, detto anche stack protocollare, è formato essenzialmente da sette livelli che vanno dal livello fisico ovvero il collegamento wireless nella fattispecie delle reti VANET, fino al livello applicazione dove incontriamo i software che regolano le applicazioni utente (descritte nel paragrafo precedente). Tutti gli altri livelli intermedi ad eccezione del livello di rete non saranno trattati per semplicità. Un nodo di una data rete si differenzia da un altro nodo esterno a tale rete perché implementa diversamente i sette livelli del modello OSI. Applicazione dei grafi sulle VANET Ripartendo dallo stack protocollare precedentemente descritto, vi è un livello tra tutti che fa più uso della teoria dei grafi, in quanto espleta il compito di instradamento dei dati. Si fa uso di questa teoria perché banalmente si pensi alla rete stessa come un grafo, formato dai veicoli come nodi e i collegamenti wireless come lati. In sostanza il livello dello stack protocollare, detto livello di rete, che si occupa dell’instradamento dei dati dovrà essenzialmente implementare delle tecniche basate sugli algoritmi di Bellman-Ford e Dijktra descritti nel capitolo precedente. 47 | P a g i n a Livello di rete per VANET A causa della natura dinamica della rete, trovare e mantenere percorsi di indirizzamento per i pacchetti è un compito a dir poco arduo. Molte, infatti, sono state le proposte per risolvere i numerosi problemi sorti nell'implementazione di protocolli che fossero efficienti per le VANET. Esse però possono essere classificate in cinque macro-gruppi: ad-hoc, position-based, cluster-based, broadcast e geocast. In questi gruppi rientrano tutt’una serie di protocolli differenti tra loro che ricoprono determinate esigenze. Si immagini che tra le esigenze ci siano, risparmio di energie, tempi ridotti, sicurezza, instradamento veloce ecc. Ai fini di questa tesina si provvederà a descrivere una tecnica utilizzata in molti protocolli detta Distance Vector il quale utilizza l’algoritmo di Bellman-Ford. Anche se l’algoritmo di Dijkstra è più efficiente dell’algoritmo di Bellman-Ford, viene spesso usato il secondo perché non possiede vincoli troppo restrittivi sui costi del percorso. Distance Vector Il distance vector è una tecnica di instradamento basato sul vettore delle distanze, noto anche come routing di Bellman-Ford, ed è un tipo di algoritmo di routing dinamico. Questa tecnica consiste essenzialmente nella trasmissione, da parte di tutti i nodi, di una tabella o vettore, contenente le connessioni che un nodo possiede in quel momento con gli altri nodi. In definitiva ogni singolo nodo, verifica le proprie connessioni, crea una tabella con un record per ogni connessione e la scambia con i propri vicini, aggiornando cosi la propria tabella. Questa operazione termina quando tutti i nodi hanno ricevuto tutte le tabelle. Inoltre le tabelle devono essere inviate periodicamente o quando c’è un cambio topologico della rete. In sostanza ogni nodo con lo scambio delle tabelle tende a conoscere la topologia della rete per cui, data la circostanza, è possibile utilizzare l’algoritmo di Bellman-Ford per il calcolo del percorso minimo [9]. Nella tabella di routing memorizzata da ogni nodo, per ogni record vi sono le seguenti informazioni: • • • • • • indirizzo IP del nodo destinazione (destination IP); numero di sequenza del nodo destinazione (destination sequence number); flag di validità della rotta (indica se la rotta è valida o invalida o in riparazione); distanza in numero di hop (hop count); lista dei precursori per quella rotta; tempo di validità (lifetime). Questa operazione comincia ad aver senso perché, si pensi che ogni nodo se deve trasferire un dato, deve innanzitutto sapere chi è connesso alla rete e deve anche conoscere la topologia della rete stessa affinché con l’algoritmo di Bellman-Ford, possa calcolarsi il percorso minimo e procedere poi con l’instradamento. Il routing basato su Distance Vector risulta semplice dal punto di vista computazionale e non richiede grandi quantitativi di memoria. Tuttavia il protocollo richiede tempi più lunghi rispetto ad altri protocolli per stabilire una connessione tra due nodi di una rete [10]. Scenario In questa parte dell’elaborato si procederà con una dimostrazione di un vero è proprio scenario in cui si necessità di comunicare attraverso questo tipo di reti. La seguente figura presenta un incrocio della quale si mostrerà, a titolo di esempio, come i dati passano da un veicolo ad un altro attraverso le considerazioni teoriche su descritte. 48 | P a g i n a Figura 30 - Scenario di esempio per le VANET Le linee gialle all’interno della figura mostrano i link wireless presenti tra i vari nodi (automobili), l’automobile gialla a sinistra possiede tre collegamenti di cui uno con l’auto blu e gli altri due con altre auto tagliate fuori dalla figura, per completezza verranno considerate nel grafo che rappresenta la rete. Andando ora a considerare solo le parti necessarie di questo scenario otteniamo la seguente figura: Figura 31 - Scenario della sola rete VANET La cui rappresentazione a grafo dello scenario proposto è: 49 | P a g i n a Figura 32 - Grafo rappresentativo dello scenario Senza ledere in generalità consideriamo che lo scenario proposto sia formato dai soli nodi mostrati, perché in generale i nodi facenti parte la rete sono in numero leggermente superiore, inoltre qui il peso di ogni lato è stato assegnato arbitrariamente mentre nella realtà viene calcolato a partire da una serie di fattori come velocità del veicolo, condizioni atmosferiche ecc. Ripetendo le nozioni teoriche trattate nei precedenti paragrafi si ha che ogni nodo (veicolo) possiede uno stack protocollare formato da dei livelli. Tra i quali ritroviamo il livello fisico che è formato dal hardware che consente la connessione wireless, poi tra gli ultimi si trova il livello applicativo formato da una serie di utility e tra di essi vi è il livello di rete che implementa dei protocolli i quali usano il Distance Vector che a sua volta fa uso dell’algoritmo di Bellman-Ford per la risoluzione dei percorsi. Alla base del grafo su mostrato, per poter definire un percorso minimo tra due nodi che si scambiano dati si dovrà necessariamente implementare la tecnica del Distance Vector. STEP 1: Creazione delle tabelle da parte di tutti i nodi (S=Source, D=Destination, W=Weight). S 1 Nodo 1 D W 3 5 S 4 4 4 Nodo 4 D W 3 4 5 6 6 5 S 7 Nodo 7 D W 6 2 S 2 Nodo 2 D W 3 3 S 5 5 5 5 Nodo 5 D W 4 6 6 6 9 3 8 4 S 8 Nodo 8 D W 5 4 S Nodo 3 D W 3 3 1 2 5 3 3 4 4 S 6 6 6 Nodo 6 D W 5 6 4 5 7 2 S 9 Nodo 9 D W 5 3 50 | P a g i n a STEP 2: I nodi comunicano ai loro limitrofi le tabelle costruite. S Nodo 1 D W S Nodo 2 D W S Nodo 3 D W 1 3 5 2 3 3 3 1 5 3 3 3 1 2 4 5 3 4 3 3 3 1 2 4 5 3 4 3 3 1 2 2 4 3 3 3 4 5 3 4 4 3 5 4 6 4 6 5 S 4 4 4 3 3 3 5 5 5 Nodo 4 D W 3 4 5 6 6 5 1 5 2 3 4 4 4 6 6 6 9 3 S 5 5 5 5 4 4 4 6 6 Nodo 5 D W 4 6 6 6 9 3 8 4 3 4 5 6 6 5 5 6 4 5 5 6 8 5 4 6 6 8 7 5 2 4 6 4 5 9 5 3 6 7 2 S 7 Nodo 7 D W 6 2 S 8 Nodo 8 D W 5 4 S 6 6 6 4 4 4 5 5 5 5 7 S 9 Nodo 6 D W 5 6 4 5 7 2 3 4 5 6 6 5 4 6 6 6 9 3 8 6 4 2 Nodo 9 D W 5 3 6 5 6 5 4 6 5 4 6 6 6 4 7 5 2 5 5 5 6 9 8 6 3 4 5 5 5 6 9 8 6 3 4 STEP 3: Eliminazione dei record doppioni, questa operazione ha senso perché il grafo si presenta in questo scenario non orientato, quindi sorgente e destinatario sono mutuabili. 51 | P a g i n a S 1 3 3 S Nodo 1 D W 3 5 2 4 3 4 Nodo 4 D W S 2 3 3 S Nodo 2 D W 3 3 1 4 S 3 5 4 Nodo 5 D W Nodo 3 D W 1 5 3 3 2 4 3 4 4 4 5 6 6 5 S Nodo 6 D W 4 4 3 5 4 6 5 5 4 6 6 6 6 6 5 4 6 5 4 3 6 1 5 5 5 5 9 8 3 4 6 4 7 3 2 4 3 5 5 5 6 6 2 6 9 8 5 7 3 6 3 4 6 2 4 4 6 6 3 6 4 7 4 5 5 2 4 5 5 5 5 4 9 8 6 6 3 4 S 7 6 6 Nodo 7 D W 6 2 5 6 4 5 S 8 5 5 5 Nodo 8 D W 5 4 4 6 6 6 9 3 S 9 5 5 5 Nodo 9 D W 5 3 4 6 6 6 8 4 Proseguendo in avanti con lo scambio delle tabelle tra i vari nodi, al termine di tutte le iterazioni si avrà che ogni nodo presenta la seguente tabella: Nodo 1,2,3,4,5,6,7,8,9 S D W 1 2 3 4 4 3 3 4 5 6 5 3 4 6 5 5 5 5 6 8 9 6 4 3 52 | P a g i n a 6 7 2 Dalla precedente tabella si comprende che ogni nodo conosce la topologia del grafo e considerando il caso in cui uno di essi necessita la trasmissione di un dato verso un altro nodo procederà quindi al calcolo del percorso minimo attraverso l’algoritmo più volte richiamato. Si supponga per ipotesi che il nodo 1 voglia trasmettere un pacchetto al nodo 7, quindi si mostrerà la tabella dei pesi minimi: Iterazione h=0 h=1 h=2 h=3 h=4 h=5 Nodo 1 0 0 0 0 0 0 Nodo 2 ∞ ∞ 8 (3) 8 (3) 8 (3) 8 (3) Nodo 3 ∞ 5 (1) 5 (1) 5 (1) 5 (1) 5 (1) Nodo 4 ∞ ∞ 9 (3) 9 (3) 9 (3) 9 (3) Nodo 5 ∞ ∞ ∞ 15 (4) 15 (4) 15 (4) Nodo 6 ∞ ∞ ∞ 14 (4) 14 (4) 14 (4) Nodo 7 ∞ ∞ ∞ ∞ ∞ 16 (6) Nodo 8 ∞ ∞ ∞ ∞ 19 (5) 19 (5) Nodo 9 ∞ ∞ ∞ ∞ 18 (5) 18 (5) I valori tra parentesi tonde sono definiti come etichette ovvero il nodo precedente da cui attinge il calcolo del peso. Dalla seguente tabella si ricava cosi il grafo delle etichette, ovvero l’albero dei cammini minimi: Figura 33 - Grafo dei cammini minimi per lo scenario analizzato Al di la del grafo dei cammini minimi appena mostrato, guardando la tabella, su il nodo 1 desidera trasmettere un dato verso il nodo 7, esso saprà che l’intero percorso ha peso uguale a 16 e risalendo a ritroso tra le iterazioni riesce a capire quali sono i nodi intermedi che il dato deve attraversare grazie alle etichette, p = 1,3,4,6,7. Applicazione del codice Hamming (7, 4) alle reti VANET Per l'applicazione esaminata la codifica di canale riveste un ruolo fondamentale perché il canale trasmissivo potrebbe essere facilmente affetto da rumore vista la sua natura, per cui è importante avere una codifica di canale che permetta la correzione degli errori. È necessario inoltre considerare un altro aspetto che riguarda il contesto applicativo: gli apparati a disposizione in questo tipo di applicazione non hanno grandi capacità computazionale (in termini di processore e memoria) per cui un codice che richiede operazioni onerose di codifica e decodifica renderebbe la comunicazione tra dispositivi nella rete estremamente lenta. 53 | P a g i n a Per questi motivi si è optato per la scelta di Hamming (7, 4): un codice lineare, perfetto, in grado di correggere un errore e rilevarne due, per il quale è possibile implementare direttamente in hardware la codifica e la decodifica. In particolare, per questo codice è possibile implementare due possibili strategie di codifica/decodifica. Primo metodo con operazioni logiche Per il codice Hamming (7, 4), sfruttando lo schema in tabella 2 si ottengono le seguenti parole di codice: d1 0 d2 0 d3 0 d4 0 p1 0 p2 0 d1 0 p3 0 d2 0 d3 0 d4 0 0 0 0 1 → 1 1 0 1 0 0 1 0 0 1 0 → 0 1 0 1 0 1 0 0 0 1 1 → 1 0 0 0 0 1 1 0 1 0 0 → 1 0 0 1 1 0 0 0 1 0 1 → 0 1 0 0 1 0 1 0 1 1 0 → 1 1 0 0 1 1 0 0 1 1 1 → 0 0 0 1 1 1 1 1 0 0 0 → 1 1 1 0 0 0 0 1 0 0 1 → 0 0 1 1 0 0 1 1 0 1 0 → 1 0 1 1 0 1 0 1 0 1 1 → 0 1 1 0 0 1 1 1 1 0 0 → 0 1 1 1 1 0 0 1 1 0 1 → 1 0 1 0 1 0 1 1 1 1 0 → 0 0 1 0 1 1 0 1 1 1 1 → 1 1 1 1 1 1 1 → Tabella 4 - Parole del codice Hamming (7, 4) Dalla tabella 1 si ricava che per Hamming (7, 4) vale che (la somma è applicata in GF(2) per cui 1 + 1 = 0): p1 = d1 + d2 + d4 p2 = d1 + d3 + d4 p3 = d2 + d3 + d4 La copertura dei bit di parità può essere definita dal seguente diagramma: 54 | P a g i n a Figura 34 - Copertura dei bit di parità Asserendo che il bit di parità 1 (p1) copre se stesso, il bit di dati d1, d2 e d4 vuol dire che esso è in grado di correggere un errore su uno di questi bit. La parola p1 p2 d1 p3 d2 d3 d4 che giunge al destinatario deve essere codificata in modo da generare altri tre bit k1 k2 e k3 definiti come k1 = p1 + d1 + d2 + d4 k2 = p2 + d1 + d3 + d4 k3 = p3 + d2 + d3 + d4 e che individuano la posizione dell'errore secondo la tabella seguente: k3 0 0 0 0 1 1 1 1 k2 0 0 1 1 0 0 1 1 k1 0 1 0 1 0 1 0 1 Significato Nessun errore in ricezione Errore nella posizione 1 (bit p1) Errore nella posizione 2 (bit p2) Errore nella posizione 3 (bit d1) Errore nella posizione 4 (bit p3) Errore nella posizione 5 (bit d2) Errore nella posizione 6 (bit d3) Errore nella posizione 7 (bit d4) Uscita Encoder 0000000 1000000 0100000 0010000 0001000 0000100 0000010 0000001 Tabella 5 - Bit per la decodifica Questo tipo di codifica si presta molto bene ad un'implementazione circuitale estremamente veloce e semplice per via del fatto che richiede l'utilizzo delle sole porte logiche XOR. Un possibile schema hardware è il seguente: 55 | P a g i n a Figura 35 - Schema circuitale dell'encoder e del decoder per Ham(7, 4) Secondo metodo con matrici G e H Le tre cifre di parità sono combinazioni diverse delle quattro cifre d’informazione nel seguente schema [6]: p1 = i 2 + i 3 + i 4 p2 = i 1 + i 3 + i 4 p3 = i 1 + i 2 + i 4 che sono disposte in i1 i2 i3 i4 p1 p2 p3 per formare le 16 parole del codice: i1 0 i2 0 i3 0 i4 0 i1 0 i2 0 i3 0 i4 0 p1 0 p2 0 p3 0 0 0 0 1 → 0 0 0 1 1 1 1 0 0 1 0 → 0 0 1 0 1 1 0 0 0 1 1 → 0 0 1 1 0 0 1 0 1 0 0 → 0 1 0 0 1 0 1 0 1 0 1 → 0 1 0 1 0 1 0 0 1 1 0 → 0 1 1 0 0 1 1 0 1 1 1 → 0 1 1 1 1 0 0 1 0 0 0 → 1 0 0 0 0 1 1 1 0 0 1 → 1 0 0 1 1 0 0 1 0 1 0 → 1 0 1 0 1 0 1 → 56 | P a g i n a 1 0 1 1 → 1 0 1 1 0 1 0 1 1 0 0 → 1 1 0 0 1 1 0 1 1 0 1 → 1 1 0 1 0 0 1 1 1 1 0 → 1 1 1 0 0 0 0 1 1 1 1 → 1 1 1 1 1 1 1 Tabella 6 - Parole del codice Hamming (7, 4) In totale si utilizzano 2k = 16 delle 2n = 128 configurazioni di 7 bit. Si può verificare che le 15 parole non nulle contengono almeno tre uni, e quindi che le parole di codice differiscono in almeno tre posizioni. Quindi d = 3 e il codice può rivelare tutti gli errori semplici e doppi (ed altri di peso maggiore) ed è in grado di correggere tutti gli errori semplici: per la correzione basta cercare la parola che differisce in un solo bit da quella ricevuta. Si può rappresentare la codifica nella forma c = i G dove c è il vettore di 7 elementi trasmesso (parola di codice), i è il vettore di 4 elementi delle cifre d’informazione, G è la matrice generatrice di dimensione 4x7: 1 0 0 0 0 1 1 0 1 00 1 01 0 0 1 0 1 1 0 0 0 0 1 1 1 1 Le parole di codice sono tutte le combinazioni lineari delle righe della matrice generatrice. Le tre equazioni di parità riportate nel blocco X della matrice G sono c5 = c2 + c3 + c4 c6 = c1 + c3 + c4 c7 = c1 + c2 + c4 possono essere scritte come c H = 0 dove H è una matrice 7x3 detta matrice di parità: 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 0 1 0 0 0 1 Ricevuta la n-pla y = c + e dove e è il vettore errore, si calcola la sindrome s = y H = c H + e H = e H La sindrome è un vettore di n - k = 3 componenti, che dice se le tre regole di parità sono o meno soddisfatte. La sindrome può presentarsi in 23 = 8 modi, mentre le possibili configurazioni d’errore (inclusa la mancanza di errori) sono 27 = 128. Si verifica facilmente che la stessa sindrome corrisponde a 128/8=16 diverse configurazioni d’errore. Se il calcolo della sindrome s produce un vettore nullo vuol dire che la parola ricevuta è corretta, altrimenti sommando il coset leader, corrispondente alla sindrome ottenuta, alla parola ricevuta sarà possibile correggere l'errore. In questo, l'SDA(Standard Decoding Array) sarà così costituito: Coset leaders u 0000000 1000000 0100000 0010000 Sindrome u H 000 011 101 110 57 | P a g i n a 0001000 0000100 0000010 0000001 111 100 010 001 Tabella 7 - SDA per il codice Hamming (7, 4) Ad esempio, se la parola ricevuta è w = 1110000 allora w H = 000 che è la sindrome di 0000000. Da ciò v = w + u = 1110000 + 0000000 = 1110000. Se la parola ricevuta è w = 1110001 allora w H = 001 che è la sindrome di 0000001. Da ciò v = w + u = 1110001 + 0000001 = 1110000. La parola ricevuta è stata corretta. Progressi tecnologici Finora si è visto come si applica la teoria dei grafi sulle VANET grazie alla tecnica del distance vector. Tuttavia recenti ricerche hanno confermato ulteriori tecniche/protocolli innovativi che consentono la trasmissione dei dati tra veicoli con meno problemi, es. perdite di dati, scarsa sicurezza, ecc. Tra questi protocolli si contempla l’AODV ovvero Ad-hoc On-demand Distance Vector, che si basa sempre sul distance vector ma introduce nuovi meccanismi di interazione tra i nodi in modo da migliorare ulteriormente quello che il distance vector è in grado di offrire. Tuttavia degli studi e comparazioni su AODV dimostrano che questo algoritmo non è in grado di trovare rapidamente lunghi percorsi (path) di indirizzamento, né tantomeno di aggiornarli e mantenerli efficientemente. Per ridurre gli effetti deleteri dei continui cambiamenti di topologia l'AODV è stato modificato in modo tale da contenere algoritmi di previsione: nascono così PRAODV e PRAODVM [4]. Entrambi i protocolli utilizzano la posizione del nodo e la sua velocità per prevedere l'intervallo di tempo in cui il canale sarà attivo. Mentre PRAODV calcola un percorso alternativo prima che l'intervallo di vita stimato del canale scada, PRAODVM seleziona, tra i percorsi alternativi presenti, quello con la durata di vita stimata più alta. Un'altra modifica interessante all'AODV è quella che permette di inoltrare notifiche solo nelle zone di interesse (ZOR) [10], solitamente zone rettangolari o circolari: si pensi ad esempio, in uno scenario autostradale, in cui si deve inoltrare una notifica di incidente solo ai veicoli retrostanti nel proprio senso di marcia. In questo caso verrà data ai pacchetti una maggiore priorità (safety application), in modo che vengano trasmessi con il minor ritardo possibile. Per quanto concerne la codifica di canale, in contesti applicativi reali si utilizzano altri tipi di codici come ad esempio i codici convoluzionali o i turbo codici in grado di correggere più di un errore e con elevate prestazioni in termini di tempo necessario per la codifica o la decodifica. Sebbene i primi sono già noti in letteratura, i turbo codici sono attualmente in fase di studio. 58 | P a g i n a Bibliografia [1] : Larato B. “Appunti del corso di Grafi e Combinatoria 2010/2011 di Colaprico e Salatino” [2] : Bolla R., Caviglione L., Davoli F. “Appunti del corso di Reti di Telecomunicazioni, Lez. 31 - Tecniche di Instradamento” [3] : De Giovanni L. “Appunti del corso di Ricerca Operativa, Cammini minimi: Algoritmi di Bellman-Ford e Dijkstra” [4] : Hill R. “A First Course in Coding Theory”, Oxford University Press [5] : Mazzocca F. “Lucidi del corso di codici lineari”, Seconda Università degli Studi di Napoli - Corso di laurea in Matematica [6] : Cauchi L., La Terra V., Grasso G., Gullo F. “Appunti di teoria dei codici”, Università di Catania Facoltà di Ingegneria [7] : Scavo G. “Modelli di mobilità nelle reti VANET”, Tesi di Laurea in Ingegneria Informatica – Politecnico di Bari, A.A. 2009/2010 [8] : Hartenstein, Laberteaux, “VANET: Vehicular Application and Inter-Networking Technologies”, Wiley edition, 2010 [9] : Grieco A., “Algoritmi e Protocolli di Routing”, Appunti del corso di Telematica 1, Politecnico di Bari, A.A. 2009/2010. [10] : Li, Wang, “Routing in Vehicular Ad Hoc Networks: A Survey”, IEEE Vehicular Technology Magazine, 2007 59 | P a g i n a