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