Approfondimento sull’algoritmo di LINK STATE corso: Reti di Calcolatori prof. Gianluca Foresti Approfondimento Reti di Calcolatori Algoritmo Link State Demartini Gianluca Del Favero Dante Indice 1 Introduzione Pag. 3 1.1 Il livello di rete Pag. 3 1.2 Algoritmi di routing Pag. 3 2 Algoritmo Link State Pag. 4 2.1 Descrizione Pag. 4 2.2 LSP Database Pag. 5 2.3 Link State Packet Pag. 5 2.4 Flooding Pag. 6 2.5 Algoritmo di Dijkstra Pag. 7 2.5.1 Esempio Pag. 9 2.6 Router LSP Pag. 10 2.7 Canali adiacenti e costi Pag. 11 2.8 Link State su LAN Pag. 11 2.9 Link State vs Distance Vector Pag. 11 3 Esempio funzionamento Pag. 12 3.1 Avvio “a freddo” Pag. 13 3.1.1 Esempio Pag. 14 3.2 Cambio costo collegamenti Pag. 16 3.3 Caduta link Pag. 17 3.3.1 Esempio Pag. 17 4 Pag. 21 Conclusioni 2 Approfondimento Reti di Calcolatori Algoritmo Link State Demartini Gianluca Del Favero Dante 1. Introduzione 1.1 Il livello di rete Il livello dello standard ISO per le reti (OSI) che si occupa degli algoritmi di routing è il livello 3 (rete). Il livello di rete di occupa della trasmissione punto-punto di dati da una macchina sorgente a un’altra di destinazione. In questo livello si gestisce l’instradamento dei messaggi; esso determina se e quali sistemi intermedi devono essere attraversati del messaggio per raggiungere la destinazione; a tale scopo deve gestire delle tabelle di instradamento e provvedere percorsi alternativi in caso di guasti (fault tollerance). Spesso al livello 3, oltre ai protocolli per trasportare i dati utente, sono definiti anche dei protocolli ausiliari per permettere ai router di scambiarsi informazioni di instradamento. 1.2 Algoritmi di routing Ci sono molti algoritmi diversi e la scelta di uno non è semplice in quanto esistono più criteri di ottimalità contrastanti. E’ necessario che la scelta sia preceduta dalla definizione di criteri misurabili, quindi bisogna introdurre parametri in base ai quali misurare le caratteristiche di un cammino per sceglierne il migliore. Degli esempi di parametri tra cui scegliere sono: - hops (numero salti effettuati, cioè IS attraversati in un cammino) - costo (somma dei costi di tutte le linee nel cammino) La scelta dell’algoritmo dipende anche dalle risorse di calcolo disponibili sui router: algoritmi troppo complessi su reti molto grandi potrebbero richiedere tempi di calcolo inaccettabili. Quindi, le caratteristiche che un algoritmo di routing deve avere sono: - semplicità, perché i router hanno risorse limitate che non devono utilizzare per la maggior parte del tempo al fine di calcolare le tabelle di instradamento. - robustezza, in caso di variazioni della topologia della rete l’algoritmo deve modificare dinamicamente le tabelle senza interrompere il funzionamento della rete. 3 Approfondimento Reti di Calcolatori Algoritmo Link State Demartini Gianluca Del Favero Dante - ottimalità, scegliere il cammino migliore possibile in base ai parametri di costo prescelti. - stabilità, non modificare le tabelle se non variano le caratteristiche della rete. - equità, nessun nodo viene privilegiato. Gli algoritmi di routing si dividono in: adattativi e non adattativi. I primi calcolano le tabelle di routing in funzione delle informazioni raccolte sulla topologia della rete, sul costo dei cammini e sullo stato degli elementi che la compongono, che sono criteri che cambiano nel tempo; quelli non adattativi invece usano dei criteri di instradamento fissi. Quelli più interessanti e usati sono gli adattativi. Questi possono essere centralizzati, isolati o distribuiti. Il routing centralizzato prevede l’esistenza di un Routing Control Center (RCC) che riceve tulle le informazioni dalla rete e distribuisce ai nodi le tabelle di instradamento dopo averle calcolate. Nel routing isolato invece ogni IS calcola le tabelle senza scambiare informazioni con altri. Nel routing distribuito non esiste un RCC, ma le sue funzionalità sono distribuite tra gli IS della rete che si scambiano informazioni per calcolare le tabelle di routing. Gli algoritmi distribuiti si suddividono in algoritmi distance vector e algoritmi link state: nell’algoritmo distance vector ogni router mantiene la tabella di instradamento e un distance vector per ogni linea; il calcolo delle tabelle avviene attraverso la fusione dei distance vector associati alle linee al quale segue l’invio di un distance vector ai IS vicini. Adesso vedremo la struttura e il funzionamento di un algoritmo di routing di tipo link state. 2. Algoritmo Link State 2.1 Descrizione L’algoritmo LS assume che ogni IS contenga la mappa della rete per calcolare l’instradamento con l’algoritmo di Dijkstra. La mappa della rete viene costruita dai router tramite l’utilizzo di Link State Packet (LSP): ogni router comunica a tutti gli altri quali nodi sono a lui adiacenti inviando un LSP in selective flooding (pacchetti ritrasmessi solo su linee selezionate) a 4 Approfondimento Reti di Calcolatori Algoritmo Link State Demartini Gianluca Del Favero Dante tutti gli IS della rete. Ogni IS contiene un LSP database (che sarà lo stesso su ogni IS della rete) dove memorizza il LSP più recente generato da ogni IS. 2.2 LSP Database Il LSP DB è un rappresentazione completa della rete, ed è quindi sufficiente ad ogni router per calcolare la tabella di instradamento in modo autonomo (al contrario del distance vector dove i router cooperano direttamente per calcolare le tabelle). Ogni record contiene: il router di partenza, quello di arrivo, l'identificativo del link e la metrica o costo relativo da attribuire al link. L'allineamento del database tra stazioni adiacenti e' implementato mediante scambio di messaggi fra i vari nodi; le informazioni più recenti aggiorneranno le più vecchie Per determinare l’età del pacchetto sono utilizzati opportuni identificatori di link e numeri di versione (sequence number). E' tipicamente necessario proteggere il database da vari tipi di corruzione, volontaria e involontaria. Tipiche protezioni sono: • inclusione di conferme alla propagazione dei messaggi di flooding • trasmissione dei messaggi di descrizione database su canali sicuri • tempo di validita' massimo dei record del database non confermati regolarmente • protezione dei record da corruzione tramite checksum • autenticazione dei messaggi di propagazione record, p.es. con password 2.3 Link State Packet Quando un router ha raccolto le informazioni necessarie, costruisce un LSP contenete tutti i dati. Il pacchetto contiene il mittente, un numero di sequenza, in quanto un router può ricevere un LSP vecchio dopo uno nuovo, quindi deve poter valutare qual è il più recente; un’età e una lista di vicini in cui, per ogni vicino c’è il ritardo/costo necessario per raggiungerlo. Il LSP contiene inoltre: 5 Approfondimento Reti di Calcolatori Algoritmo Link State Demartini Gianluca Del Favero Dante - Stato per ogni linea uscente dal router - Checksum per la rilevazione di eventuali errori. Va deciso anche quando costruire i LSP. Essi vengono generati ad intervalli regolari oppure se avviene un fatto significativo, ad esempio viene riconosciuto un nuovo nodo adiacente, il costo di una linea è cambiato, una linea si guasta o viene ripristinata dopo un guasto. Per distribuire i pacchetti viene utilizzata la tecnica del flooding (2.x). Nel momento in cui un router riceve un LSP dovrà compiere una serie di azioni: - se non ha mai ricevuto LSP da quel router o se l’LSP è più recente (sequenze number) di quello memorizzato, lo memorizza e lo ritrasmette utilizzando la tecnica del flooding (2.x). - se l’LSP ha lo stesso sequenze number di quello memorizzato non fa nulla - se l’LSP è più vecchio di quello memorizzato, trasmette in flooding (2.x) quello più recente. In questo modo i LSP Database di tutti i router si mantengono allineati e coerenti al fine di garantire un corretto instradamento. 2.4 Flooding In questo algoritmo (statico) ogni pacchetto in arrivo viene inoltrato su ogni linea in uscita eccetto quella da cui è arrivato. Il problema di questo algoritmo è che genera un notevole numero di pacchetti duplicati, quindi sono necessarie delle tecniche per fermare l’inondazione. Si può usare un contatore di salti all’interno dei pacchetti che verrà decrementato facendo si che quando raggiunge lo zero venga scartato. Questo contatore viene inizializzato con il caso peggiore, cioè il diametro della rete. In alternativa si può tener traccia dei pacchetti già inoltrati ed evitare di rispedirli. Ogni pacchetto contiene un numero di sequenza che viene incrementato per ogni nuovo pacchetto; vengono utilizzati numeri di sequenza a 32 bit che garantiscono sufficientemente di definire con certezza quando un numero x è più grande di un numero y. 6 Approfondimento Reti di Calcolatori Algoritmo Link State Demartini Gianluca Del Favero Dante Nei pacchetti viene inoltre inserita l’età che viene decrementata una volta al secondo e quando sarà uguale a zero farà si che il pacchetto venga scartato. Per affrontare gli errori lungo le linee router-router, si spedisce al mittente una conferma per tutti gli LSP. Elencando per punti, l'algoritmo di flooding consiste nei seguenti passaggi: • riceve il messaggio e ricerca il record nel database • se il record non e' presente lo aggiunge e propaga il messaggio • se il record esiste ed il campo Numero Messaggio del database e' minore del campo Numero del messaggio, aggiorna il database e propaga il messaggio • se il campo Numero del database e' maggiore del Numero del messaggio, propaga invece il record del database • se in numeri sono uguali non compie alcuna operazione L'operazione di propagazione del messaggio avviene verso tutti i vicini tranne quello che l'ha inviato. 2.5 Algoritmo di Dijkstra L’algoritmo mantiene un insieme S che contiene i vertici il cui peso di cammino minimo dalla sorgente è già stato determinato . L’algoritmo seleziona il vertice u ∈ V \ S con la minima stima di cammino minimo, inserisce u in S e rilassa gli archi uscenti da u. Un arco (u,v) è rilassato se d[v] ≤d[u] + ω(u,v) dove d[x] è la stima del costo minimo da sorgente a nodo x e ω è la funzione peso che associa ad ogni arco un intero non negativo. L’insieme V \ S viene rappresentato con una coda di priorità Q che usa come chiave i valori d. All’inizio i valori d per ogni nodo avranno distanza ∞, mentre per la sorgente il valore assegnato sarà 0. Per rappresentare l’albero si usa un puntatore al padre contenuto nel vettore π[ ]. Quindi come prima fase di inizializzazione avremo: 7 Approfondimento Reti di Calcolatori Algoritmo Link State Demartini Gianluca Del Favero Dante INIZIALIZE-SINGLE-SOURECE(G,s) 1 for ogni vertice v ∈ V[G] 2 do d[v] ← ∞ 3 π[v] ← NIL 4 d[s] ← 0 L’algoritmo di Dijkstra funzionerà in questo modo: DIJKSTRA(G, ω, s) 1 INIZIALIZE-SINGLE-SOURCE(G, s) 2S←∅ 3Q←V 4 while Q ≠ ∅ 5 do u ← EXTRACT_MIN(Q) 6 S ← S ∪ {u} 7 for ogni vertice v ∈ Adj[u] 8 do RELAX(u, v, ω) All’inizio S sarà vuoto, Q sarà V ed il primo nodo ad uscire da Q sarà la sorgente s che ha d[s] = 0. Il nodo s verrà messo in S e per ogni arco uscente da s verrà calcolata la stima del costo minimo ed associato il predecessore nel Minimum Spanning Tree. RELAX(u, v, ω) 1 if d[v] > d[u] + ω(u, v) 2 then d[v] ← d[u] + ω(u, v) 3 π[v] ← u Ad ogni ciclo il vertice u estratto da Q viene inserito in S e ha la minima stima di cammino minimo. Il ciclo 4-8 di DIJKSTRA viene ripetuto |V| volte in quanto all’inizio Q = V, non vengono inseriti nodi in Q e ad ogni iterazione esce un nodo da Q. La complessità di DIJKSTRA varia a seconda di come si implementa Q. Se utilizziamo un array il costo di EXTRACT_MIN sarà O(V) e quindi la complessità totale dell’algoritmo di DIJKSTRA sarà O(V2 + E). Se invece si utilizza una heap ESXTRACT_MIN costerà O(logV) e DIJKSTRA O( (V+E) logV). 8 Approfondimento Reti di Calcolatori Algoritmo Link State Demartini Gianluca Del Favero Dante 2.5.1 Esempio Ecco i passi dell’algoritmo su questo grafo: S ∅ {1} { 1, 2 } { 1, 2, 4 } { 1, 2, 3, 4 } 2 d[2], π[2] ∞, NIL 10, 1 3 d[3], π[3] ∞, NIL ∞, NIL 60, 2 50, 4 4 d[4], π[4] ∞, NIL 30, 1 30, 1 5 d[5], π[5] ∞, NIL 100, 1 100, 1 90, 4 60, 3 L’albero dei cammini minimo così ottenuto sarà il seguente: 9 Approfondimento Reti di Calcolatori Algoritmo Link State Demartini Gianluca Del Favero Dante 2.6 Router LSP Il receive process riceve un pacchetto e, a seconda del tipo, si comporterà in un certo modo: - se è un pacchetto dati in transito lo passa al forwarding process che, consultando il forwarding Database usando come chiave l’indirizzo del destinatario, determina la linea su cui trasmettere il pacchetto. - Se è un pacchetto dati (di gestione) di cui il router è destinatario, lo passa ai protocolli di livello superiore. - Se è un LSP lo ritrasmette in flooding se questo ha modificato il LS Database (vedi 2.y LSP). 10 Approfondimento Reti di Calcolatori Algoritmo Link State Demartini Gianluca Del Favero Dante 2.7 Canali adiacenti e costi Affinché gli IS (intermediate system) conoscano gli ES (end system) adiacenti a loro che verranno inclusi nei LSP, gli IS ricevono dei ESH (End System Hello), trasmessi dagli ES periodicamente e in multicasting, e rispondono con degli ISH che serviranno agli ES per venire a conoscenza degli IS. Il metodo per conoscere il ritardo tra un nodo e i suoi vicini è di spedire un pacchetto ECHO su tutte le linee e dall’altro lato si risponde immediatamente. Un’alternativa è quella di tenere in considerazione il carico della linea; a questo scopo la misurazione del tempo di risposta dell’ECHO deve partire quando il pacchetto viene messi in coda. Includere nella misurazione anche i ritardi dovuti al traffico fa si che verrà scelto il percorso attraverso la linea meno carica garantendo prestazioni migliori; un difetto di questa tecnica è che le tabelle di routine possono oscillare notevolmente in quanto una linea poco trafficata diventerà presto molto trafficata e viceversa. 2.8 LS su LAN Le LAN sono difficilmente rappresentabili con grafi in quanto è facile che si ottenga un grafo completamente connesso con un numero di archi quadratico rispetto al numero di nodi (molto elevato nelle LAN). Per evitare ciò si vede la LAN come uno pseudo-nodo realizzato da uno dei router sulla LAN. Ogni ES, indipendentemente dalla destinazione, invia i pacchetti allo pseudo-nodo che provvederà al corretto instradamento. 2.9 Link State vs Distance Vector DISTANCE VECTOR - lenta + DV per ogni vicino - tanta banda + basso LINK STATE CONVERGENZA + veloce (meno di 5 secondi) MEMORIA - LSP di ogni router + debugging facile BANDA + frequenti “hello” - refresh completo CALCOLO - alto 11 Approfondimento Reti di Calcolatori Algoritmo Link State Demartini Gianluca Del Favero Dante Se un nodo non funziona correttamente: LINK STATE: i nodi possono annunciare i costi dei canali scorretti: - Ogni nodo calcola la propria tabella, tutti sbagliano. - Non si possono creare anelli. - Al prossimo annuncio tutto si corregge. DISTANCE VECTOR: i nodi possono annunciare i costi dei cammini scorretti: - Ogni annuncio è usato da tutti i nodi (indirettamente) - Gli errori si propagano nella rete - Errori di routing creano anelli 3. Esempio funzionamento Prendiamo in considerazione un esempio semplice per capire come funziona l’algoritmo di routing Link State. La rete presa in esame è costituita da dieci nodi (router) interconnessi fra loro nel seguente modo: La rete non è molto stabile, dato che basta che cada il router D per sconnettere la rete; la gestione dei nodi raggiungibili è affidata all’algoritmo Link State che deve tener traccia di tutti i nodi (raggiungibili) della rete. Di seguito sono riportati alcuni eventi che potrebbero essere problematici per il funzionamento corretto dell’algoritmo in questione, come la caduta di un collegamento, il cambio del costo di un collegamento e la fase di 12 Approfondimento Reti di Calcolatori Algoritmo Link State Demartini Gianluca Del Favero Dante inizializzazione della rete. Cominciamo con quest’ultimo che è più semplice da comprendere. 3.1 Avvio “a freddo” L’algoritmo di Link State prevede l’esistenza di un database comune a tutti i nodi che servirà per la costruzione della routing table di ogni nodo. La difficoltà è nell’avere sempre una copia aggiornata per tutti i nodi della rete e soprattutto uguale per tutti. Il database di cui sto parlando è semplicemente la matrice di adiacenza dei vari nodi che indica per ogni nodo quali si possono raggiungere e a quale costo. Il problema è che all’avvio della rete i vari nodi non hanno la mappa della rete, dato che questa può variare nel tempo, quindi non ha senso averla caricata staticamente in memoria. Ecco cosa devono fare i nodi per conoscere la topologia della rete: inviare un pacchetto “HELLO” su tutte le interfacce; misurano il tempo in cui ricevono il pacchetto di risposta per ogni interfaccia; questa misura (diviso due) la possono considerare come misura per il costo del collegamento. Adesso ogni nodo conosce il costo per raggiungere i nodi adiacenti; questo sistema di invio dei pacchetti “HELLO” riguarda esclusivamente i nodi adiacenti (A non manda il pacchetto “HELLO” fino a G). Dopo questo primo passo, i nodi hanno la loro lista di adiacenza; ecco un esempio per i router A e D: Il prossimo passo è la diffusione dei pacchetti LSP sulla rete: ogni nodo condivide la sua lista di adiacenza con tutti i nodi della rete; il protocollo da seguire è quello riportato nel punto (2.3). Consideriamo un caso pratico. 13 Approfondimento Reti di Calcolatori Algoritmo Link State Demartini Gianluca Del Favero Dante 3.1.1 Esempio Il nodo A ha solo la sua lista di adiacenza nel suo LS Database e D a sua volta avrà solo la propria lista di adiacenza nel proprio LS Database; a questo punto sorge un problema: tutti gli LS Database devono essere uguali! Si deve procedere con l’allineamento dei database. I vari nodi manderanno i loro LSP sulla rete seguendo il protocollo di flooding marcandoli con un apposito sequence number; all’inizio questo è uguale a uno (o zero) e indica il livello di aggiornamento degli LSP. Il nodo B spedisce ai nodi adiacenti i LSP riguardanti alla sua lista di adiacenza, inoltre riceverà da A e da D le rispettive liste di adiacenza sottoforma di LSP; supponiamo che giunga prima il pacchetto LSP di A con la lista di adiacenza di A e subito dopo ne arriva un altro, sempre da A, contenente le informazioni di D. I LSP che arrivano a B sono i seguenti: Interf 0 0 1 Nodo A D D Link/Cost B/7;C/10;D/9 A/9;B/5;E/7;F/14 A/9;B/5;E/7;F/14 SeqNum 1 1 1 (1’ LSP ricev) (2’ LSP ricev) (3’ LSP ricev) B accerta che non ci sono occorrenze di precedenti LSP derivanti da A e quindi registra il primo pacchetto (il sequence number pari a 1) nel suo LS DB; poi, vedendo arrivare anche quello riguardante D dall’interfaccia 0 (cioè da A) registra anche quello, dato che porta informazioni nuove; poi lo invia sull’interfaccia 1 come prevede il protocollo di Link State. Arriva il LSP da D e B procede con il confronto del sequence number della riga riguardante il nodo D presente nel LS Database e quello appena arrivato: dato che sono uguali, lo ignora perchè il pacchetto appena arrivato porta informazioni già note (in questo modo lo rimuove dalla rete). Similmente faranno gli altri nodi che non ho citato; alla fine tutti i nodi avranno una matrice di adiacenze di questo genere: 14 Approfondimento Reti di Calcolatori Algoritmo Link State Demartini Gianluca Del Favero Dante Una volta che tutti i nodi avranno la loro copia del LS Database, avranno cioè tutte le informazioni riguardanti la rete, ogni nodo potrà conoscere il percorso minimo per raggiungere tutti i nodi mediante l’applicazione dell’algoritmo di Dijkstra, ottenendo lo Shortest Path Tree, che sarà la Routing Table da utilizzare. Ad esempio A avrà la seguente Routing Table: 15 Approfondimento Reti di Calcolatori Algoritmo Link State Demartini Gianluca Del Favero Dante 3.2 Cambio costo collegamenti Il cambio del costo dei collegamenti è critico per la generazione dello Shortest Path Tree di ogni nodo; l’algoritmo Link State gestisce però con una certa robustezza queste situazioni. I Link State Packet sono trasmessi periodicamente da tutti i nodi (in una rete affidabile, un tempo ragionevole è circa 10 min.), per rilevare eventuali cadute di linee, cambiamenti dei costi dei collegamenti, in modo da preferire certe linee al posto di altre. Classico esempio è l’intasamento di un nodo per il flusso consistente di pacchetti; nella nostra rete, un nodo potenzialmente instabile è il nodo D, per cui passano tutti i pacchetti che da A devono arrivare ai nodi E,G,F,H,I,L (e D naturalmente): la linea A-D è continuamente “bombardata” dal flusso di pacchetti tanto che il suo costo può salire. Supponiamo che salga di 4 unità: a questo punto per raggiungere i nodi E ed F, A può dirottare il traffico dei pacchetti E ed F dall’interfaccia 1 all’interfaccia 2; quindi modifica il suo LS Database e invia un LSP con la notifica del costo cambiato del collegamento A-B; ogni nodo si vedrà arrivare questo LSP e aggiornerà il suo LSP Database. F per esempio riceverà questo LSP Interf 0 0 Nodo A D Link/Cost B/7;C/10;D/13 A/13;E/7;B/5;F/14 SeqNum 2 2 Ogni nodo calcolerà nuovamente lo SPT per vedere se questo comporta modifiche nella tabella di instradamento: difatti A ed F avranno le seguenti Routing Table: 16 Approfondimento Reti di Calcolatori Algoritmo Link State Demartini Gianluca Del Favero Dante Similmente anche H,I ed L non avranno più la stessa routine table, dato che per raggiungere A non passeranno più per la linea D-A, ma per D-B-A. Se il costo A-B ritorna alla normalità, i relativi LSP si diffonderanno nella rete nella seguente forma: Nodo A D Link/Cost B/7;C/10;D/13 A/13;E/7;B/5;F/14 SeqNum 3 3 3.3 Caduta link Anche questo è un caso che produce inconsistenze negli LS DB, dato che alcuni nodi possono risultare irraggiungibili, quindi possono avere costo infinito. Ancora più dannoso è il caso della guasto dei nodi che porta alla caduta di più collegamenti simultaneamente (se cade il nodo H è come se non funzionassero contemporaneamente i collegamenti F-H e L-H). L’algoritmo di Link State offre comunque le strategie per la rilevazione dei guasti ed offre rimedi piuttosto efficienti ai malfunzionamenti della rete. Ecco qui di seguito riportato un esempio significativo. 3.3.1 Esempio Cadono i link A-D, C-E, F-L. La situazione che si verifica è la seguente: i nodi A,D,C,E,F,L (ovvero quelli che rilevano la caduta della linea) invieranno in flooding opportuni pacchetti per notificare la caduta di queste linee mentre gli altri nodi riceveranno i pacchetti con i dati aggiornati e modificheranno il LSP Database e, se necessario, inoltreranno in flooding l’informazione. 17 Approfondimento Reti di Calcolatori Algoritmo Link State Demartini Gianluca Del Favero Dante Dopo pochissimo tempo, i vari nodi saranno aggiornati sui collegamenti guasti: se una linea è caduta, il suo costo è ∞. Per complicare ulteriormente la situazione introduciamo anche questo fatto: per ottimizzare la comunicazione, si decide di sostituire il lento 18 Approfondimento Reti di Calcolatori Algoritmo Link State Demartini Gianluca Del Favero Dante collegamento D-F con uno più veloce, quindi per un certo tempo la comunicazione su questa linea è sospesa. Mentre si opera con la sostituzione del canale D-F, avviene un guasto all’interfaccia 2 per una disattenzione del tecnico; E ed G sono isolati. La modifica però viene rivelata solo dalla sottorete di sinistra, dato che quella di destra non riesce a recepire il pacchetto. I due database, quello della sottorete A e quello della B, presentano una potenziale inconsistenza, anche se per il momento non comporta gravi danni per il calcolo dello SPT, dato che le due sottoreti sono sconnesse; i problemi sorgeranno quando si ripristinerà il collegamento D-F: una volta ristabilita questa linea, D ed F diffonderanno i loro pacchetti di aggiornamento. 19 Approfondimento Reti di Calcolatori Algoritmo Link State Demartini Gianluca Del Favero Dante I nodi E ed G sono irraggiungibili dal resto della sottorete A, ma i nodi F,H,I,L non lo sanno. Ecco come si presenta la rete dopo le varie modifiche: Problema: gli LSP Database delle due sottoreti sono diversi! 20 Approfondimento Reti di Calcolatori Algoritmo Link State Demartini Gianluca Del Favero Dante Per la sottorete B, i nodi E ed G sono scollegati dalla rete, quindi se uno dei nodi della subnet B tenta di inviare pacchetti ad E o a G, perderanno dati; verranno a conoscenza della loro non operatività solo dopo il timeout di allineamento degli LS Database. Se la connessione D-E (oppure C-E) riprende, E invierà i pacchetti di stato sulla rete, e tutti i nodi provvederanno all’aggiornamento del SLP Database, compresi F,H,I. 4. Conclusioni Benché sia molto complesso da realizzare (alla Digital ci sono voluti 5 anni per ottenere una prima versione efficiente) l’algoritmo di Link State risponde molto bene all’evoluzione della topologia della rete, sia in termini di cambiamenti dei costi dei vari collegamenti, sia in caso di guasti e malfunzionamenti di link o dei nodi della rete. I LSP, diffusi sulla rete ad intervalli regolari, garantiscono la consistenza dei vari database, mantenuti da ogni nodo, sulla topologia della rete, in modo che tutti i nodi possano calcolare il cammino minimo per raggiungere ogni nodo della rete. Nel caso di reti di dimensione consistente, tipo WAN a copertura mondiale, l’algoritmo ha converge rapidamente ma la mole di LSP che circolano per tenere aggiornato un LSP Database per tutti i nodi del mondo è consistente, inoltre per le LAN c’è bisogno di meccanismi speciali. Attualmente il protocollo di routing utilizzato dalla rete Internet è OSPF (Open Shortest Path First) che è un algoritmo di tipo Link State, il quale funziona piuttosto bene (o almeno i milioni di utenti del Web non si sono ancora lamentati delle sue prestazioni). 21