Routing Crediti Parte delle slide seguenti sono adattate dalla versione originale di J.F Kurose and K.W. Ross (© 1996-2003 All Rights Reserved)
da sorgente a destinazione Routing Routing protocol Obiettivo: determinare un “buon” percorso (sequenza di router) attraverso la rete da sorgente a destinazione 5 3 B C 2 5 A 2 1 F 3 Teoria dei grafi usata per gli algoritmi di routing i nodi del grafo sono i router gli archi del grafo sono i link fisici costo del link: distanza, costo economico, livello di congestione, … 1 2 D E 1 “buon” percorso: tipicamente significa a costo minimo possibili altre definizioni
Classificazione algoritmi di routing Informazione globale o decentralizzata Globale tutti i router hanno informazione completa su topologia e costi dei link “link state” algorithms Decentralizzata i router conoscono i costi dei link dei vicini fisicamente connessi processo di calcolo interattivo, scambio di informazioni con i vicini “distance vector” algorithms Statico o dinamico Statico i percorsi cambiano lentamente nel tempo Dinamico i percorsi cambiano più velocemente aggiornamento periodico in risposta ai cambi di costo dei link
Algoritmo di routing Link-State Algoritmo di Dijkstra topologia della rete e costi dei link conosciuti per tutti i nodi realizzato attraverso “link state broadcast” tutti i nodi hanno le stesse informazioni calcola i percorsi a costo minore da un nodo (sorgente) a tutti gli altri nodi fornisce la routing table per quel nodo iterativo: dopo k iterazioni, determina i percorsi a costo minore per k destinazioni Notazioni: c(i,j): costo link dal nodo i al nodo j. Costo infinito se i e j non direttamente connessi D(v): valore corrente del costo del percorso (a minor costo) dalla sorgente al nodo v p(v): nodo precedente lungo il percorso a minor costo dalla sorgente a v N: insieme di nodi il cui percorso a costo minore è definitivamente conosciuto
Algoritmo di Dijsktra 1 Initialization: 2 N = {A} 3 for all nodes v 4 if v adjacent to A 5 then D(v) = c(A,v) 6 else D(v) = ∞ 7 8 Loop 9 find w not in N such that D(w) is a minimum 10 add w to N 11 update D(v) for all v adjacent to w and not in N: 12 D(v) = min( D(v), D(w) + c(w,v) ) 13 /* new cost to v is either old cost to v or known 14 shortest path cost to w plus cost from w to v */ 15 until all nodes in N
Algoritmo di Dijkstra: esempio Step 1 2 3 4 5 start N A AD ADE ADEB ADEBC ADEBCF D(B),p(B) 2,A D(C),p(C) 5,A 4,D 3,E D(D),p(D) 1,A D(E),p(E) ∞ 2,D D(F),p(F) ∞ 4,E 5 3 B C 2 5 A 2 1 F 3 1 2 D E 1
Algoritmo di Dijkstra: considerazioni Complessità algoritmo: n nodi ogni iterazione: controlla tutti i nodi w non in N n*(n+1)/2 controlli: O(n2) possibile un’implementazione più efficiente: O(nlogn) Possibili oscillazioni: es. costo link = traffico trasportato A A A 1 A 1+e 2+e 2+e 2+e D B D B D B D 1+e 1 B 1+e 1 e 1 e C 1+e C C C 1 1 e … ricalcola routing … ricalcola … ricalcola inizialmente
Algoritmo Distance Vector Iterativo: continua finchè nessun nodo scambia più informazioni auto-terminante: nessun “segnale” di stop Asincrono: i nodi non devono scambiare info o procedere in sincronismo! Distribuito: ogni nodo comunica solo con i vicini direttamente collegati Tabella delle distanze ogni nodo ha la sua una riga per ogni possibile destinazione una colonna per ogni nodo vicino direttamente collegato esempio: nel nodo X, per dest. Y attraverso il vicino Z: D (Y,Z) X distanza da X a Y, via Z come next hop c(X,Z) + min {D (Y,w)} Z w =
Tabella distanze: esempio C D 1 7 6 4 14 8 9 11 5 2 E cost to destination via destination 1 B C 7 A 8 2 1 E D 2 D (C,D) E c(E,D) + min {D (C,w)} D w = 2+2 = 4 D (A,D) E c(E,D) + min {D (A,w)} D w = 2+3 = 5 loop! D (A,B) E c(E,B) + min {D (A,w)} B w = 8+6 = 14 loop!
Distance table fornisce routing table 1 7 6 4 14 8 9 11 5 2 E cost to destination via destination Outgoing link to use, cost A B C D A,1 D,5 D,4 D,2 destination Distance table Routing table
Distance Vector Routing: generalità Iterativo, asincrono: ogni iterazione locale causata da: modifica costo link locale messaggio dal vicino: il suo percorso a costo minore è cambiato Distribuito: ogni nodo notifica i vicini solo quando cambia il suo percorso a costo minore verso una qualunque destinazione i vicini notificano i loro vicini solo se necessario Ad ogni nodo: wait for (change in local link cost or msg from neighbor) recompute distance table if least cost path to any dest has changed, notify neighbors
Algoritmo Distance Vector: Bellman-Ford Per tutti i nodi X: 1 Initialization: 2 for all adjacent nodes v: 3 D (*,v) = ∞ /* the * operator means "for all rows" */ 4 D (v,v) = c(X,v) 5 for all destinations, y 6 send min D (y,w) to each neighbor /* w over all X's neighbors */ X X X w
Distance Vector Algorithm (cont.): 8 loop 9 wait (until I see a link cost change to neighbor V 10 or until I receive update from neighbor V) 11 12 if (c(X,V) changes by d) 13 /* change cost to all dest's via neighbor V by d */ 14 /* note: d could be positive or negative */ 15 for all destinations y: D (y,V) = D (y,V) + d 16 17 else if (update received from V wrt destination Y) 18 /* shortest path from V to some Y has changed */ 19 /* V has sent a new value for its min DV(Y,w) */ 20 /* call this received new value "newval" */ 21 for the single destination y: D (Y,V) = c(X,V) + newval 22 23 if we have a new min D (Y,w) for any destination Y 24 send new value of min D (Y,w) to all neighbors 25 26 forever X X w X X w X w
Distance Vector Algorithm: esempio X Z 1 2 7 Y D (Y,Z) X c(X,Z) + min {D (Y,w)} w = 7+1 = 8 Z D (Z,Y) X c(X,Y) + min {D (Z,w)} w = 2+1 = 3 Y
Distance Vector Algorithm: esempio (cont.) X Z 1 2 7 Y
Distance Vector: variazione costi nei link Costo del link diminuisce: nodo rileva variaz. costo link locale aggiorna distance table se il costo cambia nel percorso a costo minore, informa i vicini 1 Y 4 1 X Z 50 algoritmo termina “solo” due iterazioni
Distance Vector: variazione costi nei link Costo del link aumenta: Percorso ciclico, per raggiungere X: Y passa attraverso Z Z passa attraverso Y conteggio all’infinito 60 Y 4 1 X Z 50 algoritmo continua!
Distance Vector: poisoned reverse Se Z instrada attraverso Y per raggiungere X: Z informa Y che la distanza da Z a X è infinita (così Y non instrada verso X via Z) non risolve completamente il problema del conteggio all’infinito 60 Y 4 1 X Z 50 algoritmo termina
Confronto tra gli algoritmi LS e DV Complessità del messaggio LS: con n nodi ed E link, inviati O(nE) messaggi DV: scambio solo tra vicini tempo di convergenza varia Velocità di convergenza LS: Algoritmo O(n2) richiede O(nE) messaggi può avere oscillazioni DV: tempo di convergenza varia può avere percorsi ciclici problema di conteggio all’infinito Robustezza: cosa accade se il router non funziona? LS: un nodo può trasmettere un costo del link incorretto ogni nodo calcola la sua tabella DV: un nodo può trasmettere un costo di percorso incorretto tabella di ogni nodo usata da altri iterativamente errore si propaga attraverso la rete