Protocolli strato Strato : Instradamento Gruppo Reti TL nome.cognome@polito.it http://.telematica.polito.it/ Funzioni strato rete Instradamento (routing) ffettuato consultando tabelle di instradamento per ogni PU in rete datagram per ogni connessione in rete a circuito virtuale Tabelle di instradamento contengono informazioni tipo per ogni next-hop (prossimo router) Tre elementi Protocolli di instradamento (routing protocols) lgoritmi di instradamento (routing algorithms) Procedure di inoltro pacchetti (forarding) Strato - Instradamento - Strato - Instradamento - Funzioni strato rete Indirizzamento Indirizzi univoci Risoluzione indirizzi (mapping) Tariffazione su rete pubblica ontrollo di congestione Pre-allocazione memorie Scarto pacchetti Invio segnali di congestione Instradamento Protocollo di instradamento: definizione delle modalità di scambio di informazioni sullo stato della rete al fine di costruire tabelle di instradamento lgoritmo di instradamento: operazioni necessarie per scegliere il percorso verso la, date le informazioni sullo stato della rete crea tabelle di instradamento Procedura di forarding: operazioni necessarie per instradare i singoli pacchetti verso la corretta porta di uscita usa tabelle per inoltrare pacchetti Strato - Instradamento - Strato - Instradamento - lgoritmi di instradamento Obiettivo degli algoritmi di instradamento: determinare un buon percorso (sequenza di link o nodi) nella rete da nodo sorgente a nodo per semplicità si utilizza un solo identificativo per ogni nodo, che rappresenta un aggregato di sorgenti/destinazioni Si trasforma la topologia in un grafo nodi sono vertici link fisici sono archi Si assegnano costi agli archi uon percorso: percorso a costo minimo F osto istanza, ritardo, euro, livello di congestione Statico o dipendente dallo stato della rete Influenza le politiche di aggiornamento Possibili oscillazioni: sempio: costo canali legato al carico trasportato +e 0 0 0 e e Situazione iniziale +e 0 +e 0 0 0 +e 0 0 +e +e 0 +e 0 0 ricalcolo percorsi ricalcolo ricalcolo Strato - Instradamento - Strato - Instradamento - 6 Pag.
Protocolli strato lgoritmi di instradamento: esempi Semplici algoritmi senza necessità di coordinamento da parte dei nodi Random Scelgo a caso una porta di uscita Flooding Instrado verso tutte le porte disponibili eflessione o hot potato Su topologie regolari Instrado verso la porta corretta. Se occupata, instrado verso una altra porta libera lgoritmi complessi per il calcolo del percorso ottimo iversa classificazione lassificazione algoritmi di instradamento alcolo percorso entralizzato: Un nodo si occupa di raccogliere l informazione da tutti gli altri nodi alcola i percorsi Ridistribuisce il risultato del calcolo a tutti gli altri nodi istribuito: Tutti i nodi si scambiano informazione tra loro (utilizzando protocolli di instradamento) alcolano i percorsi (indipendentemente o in base a quanto fatto dai nodi adiacenti) Strato - Instradamento - Strato - Instradamento - 8 lassificazione algoritmi di routing entralizzato: Vantaggi: Possibile usare di calcolo percorsi algoritmi e metriche complesse Tutti i nodi usano piano di instradamento coerente Svantaggi: Sensibile al guasto nodo centrale Scambio informazione da/verso nodo centralizzato genera congestione istribuito: Vantaggi: Robusto ai guasti Scambio informazione uniforme su tutta la rete Svantaggi: Richiede intelligenza nei nodi Scambio informazione parziale/errata porta a incongruenze nell instradamento Strato - Instradamento - 9 lassificazione algoritmi di routing lgoritmi distribuiti - informazione: Globale: Tutti i nodi conoscono la topologia completa, compresi i costi dei canali Scambio informazione tra tutti i nodi lgoritmi link state Parziale: I nodi conoscono i nodi cui sono fisicamente collegati ed i costi dei canali cui sono collegati Scambio di informazione solo con i nodi adiacenti lgoritmi distance vector Strato - Instradamento - 0 lgoritmi Link-State Ogni nodo invia informazioni di costo (stato) dei soli suoi canali in (multi)broadcast a tutti gli altri nodi della rete Tutti nodi si costruiscono topologia della rete e conoscono i costi di tutti gli archi ata la topologia, ogni nodo calcola i percorsi a minimo costo verso tutti gli altri nodi Si ottengono tabelle di routing per questo nodo lgoritmo di ijkstra: usato per determinare cammini ottimi lgoritmo iterativo: dopo k iterazioni si ottengono i cammini a costo minimo per k destinazioni Funziona solo con costi positivi lgoritmo di ijkstra Notazione: c(i,j): costo del canale dal nodo i al nodo j Infinito se nodo non collegato direttamente al canale (n): costo corrente del percorso migliore da sorgente alla n p(n): nodo che precede n nel percorso da sorgente a n N: insieme di nodi per cui il cammino ottimo è noto Strato - Instradamento - Strato - Instradamento - Pag.
Protocolli strato lgoritmo di ijkstra ijkstra: esempio Inizializzazione (nodo ): N = {} per tutti i nodi n N if n adiacente ad then (n) = c(,n), p(n) = 6 else (n) = infinito 8 repeat 9 trova nodo N tale per cui () è minimo 0 aggiungi ad N aggiorna (n) per tutti gli n adiacenti a, n N: if ( (n) > () + c(,n)) then (n) = () + c(,n), p(n) = /* il nuovo costo verso n è o il vecchio costo verso n o il cammino a minimo costo verso più costo da a n*/ until tutti i nodi in N Strato - Instradamento - Step 0 start N F (),p(),,, (),p(),,,, F (),p(), F (),p() infinity, Prossimo nodo, costo,,,,, Strato - Instradamento - (F),p(F) infinity infinity,,, lgoritmo di ijkstra: proprietà omplessità con M nodi Ogni iterazione: ontrollo tutti i nodi N ggiungo a distanza minima M*(M+)/ confronti: O(M**) sistono implementazioni migliori: O(M log(m)) lgoritmi istance Vector lgoritmi iterativi: continuano fino a quando i nodi non scambiano più informazioni Termina in modo autonomo: nessun segnale esplicito di fine algoritmo istribuito: ogni nodo comunica solo con nodi adiacenti Strato - Instradamento - Strato - Instradamento - 6 istance Vector Ogni nodo scambia periodicamente con i vicini diretti un vettore contenente: le destinazioni che può raggiungere la distanza dalle destinazioni misurata in costo (ad esempio: numero nodi da attraversare compreso se stesso) Il nodo che riceve il vettore lo confronta con le proprie RT ed effettua modifiche: aggiunge nuove destinazioni cambia instradamenti se nuovi sono più brevi modifica costi se usa nodo adiacente come miglior scelta istance Vector Vantaggi facile da implementare Problemi: lento a convergere propaga errori di routing non molto scalabile (le dimensioni dei messaggi scambiati dai nodo crescono al crescere della rete) Strato - Instradamento - Strato - Instradamento - 8 Pag.
Protocolli strato istance Vector Implementazione Struttura dati: tabella distanze Ogni nodo possiede la propria Una riga per ogni possibile Una colonna per ogni nodo adiacente sempio: nel nodo, per la attraverso nodo adiacente : Sorgente estinazione (,) = Next hop c(,) + min { (,)} Strato - Instradamento - 9 (,) (,) (,) Tabella distanze: esempio 8 c(,) + min { (,)} = = + = c(,) + min { (,)} = = + = anello! = c(,) + min { (,)} = 8+6 = anello! () osto verso attraverso nodo 6 8 9 Strato - Instradamento - 0 () Tabella di instradamento a partire da tabella distanze osto verso atttraverso nodo 6 8 9 Prossimo nodo, costo,,,, Instradamento istance Vector Iterativo, asincrono: una iterazione (locale al nodo) causata da: modifica costo canale a cui nodo collegato messaggio ricevuto da nodo adiacente, che causa modifica del cammino ottimo istribuito: ogni nodo avvisa i vicini solo quando il suo cammino migliore verso una certa è cambiato i vicini avviseranno a loro volta nodi vicini se necessario Tabella distanze Tabella di Routing Strato - Instradamento - Strato - Instradamento - Instradamento istance Vector Ogni nodo esegue un loop infinito aspetta modifica costo canale locale oppure messaggio da nodo adiacente ricalcola tabella distanze se percorso migliore verso qualche cambiato, avvisa i vicini lgoritmo istance Vector d ogni nodo : Inizializzazione: per tutti i nodi adiacenti v: (*,v) = infinito /* l operatore * significa per ogni riga" */ (v,v) = c(,v) per tutte le destinazioni, y 6 invia min (y,) verso ogni nodo adiacente /* sono tutti i vicini di */ Strato - Instradamento - Strato - Instradamento - Pag.
Protocolli strato lgoritmo istance Vector 8 loop 9 ait (until I see a link cost change to neighbor V 0 or until I receive update from neighbor V) if (c(,v) changes by d) /* change cost to all dest's via neighbor V by d */ /* note: d could be positive or negative */ for all destinations y: (y,v) = (y,v) + d 6 else if (update received from V rt destination ) 8 /* shortest path from V to some has changed */ 9 /* V has sent a ne value for its min W V (,) */ 0 /* call this received ne value is "neval" */ for the single destination y: (,V) = c(,v) + neval if e have a ne min W (,) for any destination send ne value of min W (,) to all neighbors 6 forever Strato - Instradamento - istance Vector: esempio (,) = c(,) + min W = + = 8 (,) = c(,) + min W = + = Strato - Instradamento - 6 { (,)} { (,)} istance Vector: esempio lgoritmo V: modifica costo canale Nodo riconosce modifica costo canale Modifica tabella distanze (passo ) good nes travels fast Se modifica implica modifica del cammino migliore avvisa nodi adiacenti (passi,) 0 algoritmo termina Strato - Instradamento - Strato - Instradamento - 8 lgoritmo V: modifica costo canale Modifica costo canale: good nes travels fast bad nes travels slo - problema del count to infinity! 60 0 algoritmo prosegue istance Vector: poisoned reverse Se instrada via per raggiungere : comunica ad sua distanza verso è infinito ( non instraderà verso passando da ) non risolve il problema completamente 60 0 algoritmo termina Strato - Instradamento - 9 Strato - Instradamento - 0 Pag.
Protocolli strato onfronto tra algoritmi LS e V omplessità messaggi: con M nodi, canali per nodo LS: ogni nodo invia O(M) messaggi, ciascuno lungo O() V: ogni messaggio contiene tutte le destinazioni O(M), ed è mandato a O() vicini O( M) Velocità di convergenza LS: ogni volta che un link state è propagato, ho nuova topologia: convergenza immediata V: scelte nodo dipendono da scelte nodi vicini; si richiedono più scambi di messaggi: tempo di convergenza variabile onfronto tra algoritmi LS e V ffidabilità: cosa succede se un nodo funziona non correttamente? LS: i nodi possono annunciare costi dei canali scorretti Ogni nodo calcola la propria tabella: tutti sbagliano Non si possono creare anelli l prossimo annuncio tutto si corregge V: i nodi possono annunciare costi dei cammini scorretti Ogni annuncio è usata da tutti i nodi (indirettamente) Gli errori si propagano nella rete rrori di routing creano anelli Strato - Instradamento - Strato - Instradamento - Pag. 6