Algoritmo di Dijkstra Dato un grafo diretto G(N,A) e scelto un vertice z di N: Poni inizialmente: D[z]=0, u[]=?, V ={}, F = {z}, S = N-V-F Esegui finchè F {} Scegli x tale che d[x] = min { d[i] } per ogni i ε F V = V {x}, S(x) = {successori di x} F = [F - {x}] (S(x) S), S = S (S(x) S) per ogni i ε Sx d 0 = d[i], d[i] = min (d[i], d[x] + d[x,i]) dove d[x,i] ε A Se d[i] d, u[i] = x 0
Calcolo della tabella di routing step 2 Personalizzazioni dell'algoritmo Dijkstra nel caso OSPF L'insieme dei nodi/vertici è composto dai router e dalle reti Per ogni vertice viene mantenuta una lista dei next hop del cammino minimo dalla radice al vertice (cammini di costo equivalente) Per calcolare l'insieme dei successori di un nodo si considerano tutti gli LSA del database che sono stati generati dal nodo stesso (look sul db basata su Router_id)
Calcolo della tabella di routing step 2 - fase 1 Nel calcolo del nodo più vicino alla radice nell'insieme F, in caso di parità tra una rete e un router si sceglie sempre la rete in modo tra trovare cammini di costo uguale Nell'aggiornamento di d[i], se d[i] = d[x] + d[x,i] aggiorna la lista dei next hop per il nodo i Ogni volta che si esegue l'operazione V = V {x} si sta aggiungendo un vertice allo SPT per cui è possibile aggiornare la tabella di routing associando le route all'area di appartenza, tipo = intra-area, e costo = d[] Se il vertice aggiunto è un un ABR si aggiunge una entry alla tabella di routing classificandola come tipo router Se il vertice è una rete multiaccesso si aggiunge una entry con destination_id uguale alla rete IP ottenuto dall'operazione di and bit a bit tra Link_State_id e network mask dell'lsa
Calcolo della tabella di routing step 2 -fase 1 Esempio Database LSA Network Link Link State_ID ADV Router Network Mask Attached Router 20.250.15.68 20.250.1.41 255.255.255.192 20.250.1.41, 20.250.15.67 Destination_id della routing table: Network = 11001011 11111010 00001111 01000100 Network mask = 11111111 11111111 11111111 11000000 Subnet bitmap: n = network, s = subnet, h = host 110nnnnn nnnnnnnn nnnnnnnn sshhhhhh Subnet id = 11001011 11111010 00001111 01000000 Destination id: 20.250.15.64
Calcolo della tabella di routing step 2 - Calcolo dei next hop Poiché OSPF prevede cammini multipli di costo equivalente per ogni vertice va calcolato l'insieme dei next hop Ogni next hop è composto da: Interfaccia di uscita Indirizzo IP del router a cui inviare il pacchetto L'insieme dei next hop può essere ricalcalato diverse volte durante il processo di costruzione della tabella di routing (ogni volta che viene effettuato il confronto d[i] <> d[x] + d[x,i] Sono possibili diversi casi
Calcolo della tabella di routing step 2 - Calcolo dei next hop- caso 1 Radice Y: router nel percorso radice destinazione X: (vertice aggiunto allo SPT) durante una iterazione dell'algoritmo i destinazione aggiornata (i è uno dei successori di x) Esiste un router nel percoso radice - destinazione In questo caso l'insieme dei next hop per i è ereditato da Y
Calcolo della tabella di routing step 2 - Calcolo dei next hop caso 2 Radice i destinazione aggiornata (i è uno dei successori di x) Il nodo parent di i è la radice (il router che sta eseguendo il processo di calcolo dello Shortest Path Tree); questo implica che i è un router direttamente connesso oppure una rete direttamente connessa. In questo caso l'insieme dei next hop per i è l'interfaccia che connette direttamente il router ad i
Calcolo della tabella di routing step 2 - Calcolo dei next hop caso Radice X (vertice aggiunto allo SPT) durante una iterazione dell'algoritmo i: destinazione aggiornata (i è uno dei successori di x) X è una rete direttamente connessa alla radice (router che sta eseguendo il processo di calcolo dello SPT) In questo caso l'insieme dei next hop per i è determinato dalla destinazione degli LSA di tipo router di i (Link Data di tutti i link connessi al vertice X)
Calcolo tabella di routing step In questa fase si usano solo LSA summary Router ABR: usa solo LSA di tipo summary del backbone Router interno: usa solo LSA iniettati nell'area dal router ABR Si considerano in questa fase: LSA summary tipo (network) LSA summary tipo 4 (ASBR) Per ogni LSA presente nel DB (facciamo riferimento ad un router R1 nell'area A1): Se LSA originato da R1, vai al successivo LSA Se LSA è di tipo e contiene reti raggiungibili con cammini intra-area, vai al successivo LSA
Calcolo tabella di routing step Altrimenti se LSA è di tipo, sia X la destinazione a cui si riferisce (se LSA è di tipo, X è ottenuto facendo l'operazione and bit a bit tra link state id e network mask) e R2 il router ABR che ha originato LSA: Fai look up nella tabella di routing per R2 nell'area A Se non trovi R2, vai a LSA successivo (non è possibile raggiungere la destinazione N attraverso R2) Se trovi R2, X è raggiunbile tramite un cammino di costo C pari al costo c del cammino verso R2 + il costo contenuto nell'lsa;
Calcolo tabella di routing step Fai look up nella tabella di routing per vedere se esiste una entry X (di tipo router o di tipo network a seconda dei casi) : Se non esiste un'entry X o se esiste è di tipo external aggiungi una nuova entry: Area associata A, Costo C, Next hop uguale alla lista dei next hop per R2, Advertising Router = R2 Se esiste un'entry inter-area per X di costo superiore, sostituiscila con la nuova route Se esiste un'entry inter-area di costo uguale, aggiungi il nuovo cammino
Calcolo tabella di routing step - esempio R6 Area 0 N1, N2 R2 R Area 2 R4 Tipo destinazione Area tipo Path Costo Next Hops Adv Router R R2 2 intra-area 4 R4,R5 * R R 2 intra-area 4 R4,R5 * R5 Tabella di routing intra- area di R1 (area 2) LSA iniettati da R2 e R nell'area 2 1 1 R1 LSA tipo Destinazione Advertising Router Metrica N1 R2 5 N2 R2 5 N1 R 4 N2 R 5 LSA tipo 4 R6 R2 10 R6 R 12
Calcolo tabella di routing step - esempio R6 Area 0 N1, N2 R2 R Area 2 R4 R5 1 1 R1 Tabella di routing R1 (area 2) Tipo destinazione Area tipo Path Costo Next Hops Adv Router R R2 2 intra-area 4 R4,R5 * R R 2 intra-area 4 R4,R5 * R R6 2 inter-area 14 R4,R5 R2 N N1 2 inter-area 8 R4,R5 R N N2 2 inter-area 9 R4,R5 R2 N N2 2 inter-area 9 R4,R5 R
Calcolo tabella di routing step 5 Esamina gli LSA di tipo 5 (supponiamo di considerare il router R1 connesso alle aree A i1, A i2,...,a ik Per ogni LSA (N destinazione, R ASBR router di tipo ASBR origine di LSA) se LSA è originato da R1, vai al successivo LSA Se R ASBR non è presente nella tabella di routing nelle aree A i1, A i2,...,a ik, vai al successivo LSA Se LSA specifica un forwarding address che non è presente nelle aree A i1, A i2,...,a ik, vai al successivo LSA
Calcolo tabella di routing step 5 Se N non è presente nella tabella di routing aggiungi una entry Destinazione: N Next hop: lo stesso di ASBR/forwarding address Costo = a + b se LSA external link tipo 1 Costo = b se LSA external link tipo 2 a = costo del cammino verso R ASBR router b = metrica contenuta nel LSA Se N è già presente nella tabella di routing con un costo superiore sostituisci questa entry Se N è già presente nella tabella di routing con un costo uguale aggiungi la nuova entry
Calcolo tabella di routing step 5 Ulteriore criterio: LSA external di tipo 1 sono sempre preferiti rispetto a LSA external di tipo 2
N, N4 Calcolo tabella di routing step 5 - esempio R6 Area 0 N1, N2 R2 R Tabella di routing R1-R4-R5 (area 2) Area 2 Tipo destinazione Area tipo Path Costo Next Hops Adv Router R R2 2 intra-area 4 R4,R5 * R R 2 intra-area 4 R4,R5 * R R6 2 inter-area 14 R4,R5 R2 N N1 2 inter-area 8 R4,R5 R N N2 2 inter-area 9 R4,R5 R2 N N2 2 inter-area 9 R4,R5 R R4 R5 1 1 R1 LSAExternal Link iniettati da R6 Destinazione Advertising Router Metrica Tipo Forwarding Address N R6 5 1 0.0.0.0 N R6 2 2 0.0.0.0 N4 R6 2 0.0.0.0
N, N4 Calcolo tabella di routing step 5 - esempio R6 Area 0 N1, N2 R2 R Area 2 R4 R5 1 1 R1 Tabella di routing R1 (area 2) Tipo destinazione Area tipo Path Costo Next Hops Adv Router R R2 2 intra-area 4 R4,R5 * R R 2 intra-area 4 R4,R5 * R R6 2 inter-area 14 R4,R5 R2 N N1 2 inter-area 8 R4,R5 R N N2 2 inter-area 9 R4,R5 R2 N N2 2 inter-area 9 R4,R5 R N N * Ext- tipo 1 19 R4,R5 R6 N N4 * Ext-tipo 2 R4,R5 R6
Calcolo tabella di routing step 6 Se il router è un ABR: Se è cambiata una entry della tabella di routing di un'area a cui l'abr è connesso (si è aggiunta una rete o un ASBR) genera nuovi LSA summary su tutte le aree direttamente connesse Se una entry precedentemente annunciata come summary LSA è stata rimossa, effettua il flush di questa LSA (invalida LSA rimandandolo con l'age a MaxAge) Se i cambiamenti sono solo su destinazioni esterne, non deve essere eseguita nessuna azione