Link State Routing

Link state routing è una tecnica in cui ogni router condivide la conoscenza del suo quartiere con ogni altro router nell’internetwork.

Le tre chiavi per capire l’algoritmo Link State Routing:

  • Conoscenza del quartiere: invece di inviare la sua tabella di routing, un router invia solo le informazioni sul suo quartiere. Un router trasmette le sue identità e il costo dei collegamenti direttamente collegati agli altri router.
  • Flooding: Ogni router invia le informazioni ad ogni altro router dell’internetwork tranne i suoi vicini. Questo processo è noto come Flooding. Ogni router che riceve il pacchetto invia le copie a tutti i suoi vicini. Infine, ogni router riceve una copia delle stesse informazioni.
  • Condivisione delle informazioni: Un router invia le informazioni ad ogni altro router solo quando si verifica un cambiamento nelle informazioni.

Link State Routing ha due fasi:

Reliable Flooding

  • Stato iniziale: Ogni nodo conosce il costo dei suoi vicini.
  • Stato finale: Ogni nodo conosce l’intero grafico.

Calcolo del percorso

Ogni nodo usa l’algoritmo di Dijkstra sul grafico per calcolare i percorsi ottimali per tutti i nodi.

  • L’algoritmo Link state routing è anche conosciuto come algoritmo di Dijkstra che è usato per trovare il percorso più breve da un nodo ad ogni altro nodo della rete.
  • L’algoritmo di Dijkstra è iterativo, e ha la proprietà che dopo la kesima iterazione dell’algoritmo, i percorsi meno costosi sono ben noti per k nodi di destinazione.

Descriviamo alcune notazioni:

  • c( i , j): Costo del collegamento dal nodo i al nodo j. Se i nodi i e j non sono direttamente collegati, allora c(i , j) = ∞.
  • D(v): Definisce il costo del percorso dal codice sorgente alla destinazione v che ha attualmente il minor costo.
  • P(v): Definisce il nodo precedente (vicino di v) insieme al percorso meno costoso corrente dalla sorgente a v.
  • N: È il numero totale di nodi disponibili nella rete.

Algoritmo

InitializationN = {A} // A is a root node.for all nodes vif v adjacent to Athen D(v) = c(A,v)else D(v) = infinityloopfind w not in N such that D(w) is a minimum.Add w to NUpdate D(v) for all v adjacent to w and not in N:D(v) = min(D(v) , D(w) + c(w,v))Until all nodes in N

Nell’algoritmo precedente, un passo di inizializzazione è seguito dal loop. Il numero di volte che il ciclo viene eseguito è uguale al numero totale di nodi disponibili nella rete.

Comprendiamo attraverso un esempio:

Nella figura sopra, il vertice sorgente è A.

Passo 1:

Il primo passo è un passo di inizializzazione. Il percorso di minor costo attualmente noto da A ai suoi vicini diretti, B, C, D sono rispettivamente 2,5,1. Il costo da A a B è impostato a 2, da A a D è impostato a 1 e da A a C è impostato a 5. Il costo da A a E e F sono impostati su infinito perché non sono direttamente collegati ad A.

Step N D(B),P(B) D(C),P(C) D(D),P(D) D(E),P(E) D(F),P(F)
1 A 2,A 5,A 1,A

Step 2:

Nella tabella precedente, osserviamo che il vertice D contiene il percorso meno costoso nel passo 1. Pertanto, è aggiunto in N. Ora, abbiamo bisogno di determinare un percorso di minor costo attraverso il vertice D.

a) Calcolo del percorso più breve da A a B

b) Calcolo del percorso più breve da A a C

c) Calcolo del percorso più breve da A a E

Nota: Il vertice D non ha un collegamento diretto al vertice E. Pertanto, il valore di D(F) è infinito.

Step N D(B),P(B) D(C),P(C) D(D),P(D) D(E),P(E) D(F),P(F)
1 A 2,A 5,A 1,A
2 AD 2,A 4,D 2,D

Step 3:

Nella tabella precedente, osserviamo che sia E che B hanno il percorso meno costoso nel passo 2. Consideriamo il vertice E. Ora, determiniamo il percorso meno costoso dei restanti vertici attraverso E.

a) Calcolo del percorso più breve da A a B.

b) Calcolo del percorso più breve da A a C.

c) Calcolo del percorso più breve da A a F.

Step N D(B),P(B) D(C),P(C) D(D),P(D) D(E),P(E) D(F),P(F)
1 A 2,A 5,A 1,A
2 AD 2,A 4,D 2,D
3 ADE 2,A 3,E 4,E

Step 4:

Nella tabella precedente, osserviamo che il vertice B ha il percorso meno costoso nel passo 3. Pertanto, viene aggiunto in N. Ora, determiniamo il percorso meno costoso dei restanti vertici attraverso B.

a) Calcolando il percorso più breve da A a C.

b) Calcolando il percorso più breve da A a F.

Step N D(B),P(B) D(C),P(C) D(D),P(D) D(E),P(E) D(F),P(F)
1 A 2,A 5,A 1,A
2 AD 2,A 4,D 2,D
3 ADE 2,A 3,E 4,E
4 ADEB 3,E 4,E

Step 5:

Nella tabella precedente, osserviamo che il vertice C ha il percorso meno costoso nel passo 4. Pertanto, viene aggiunto in N. Ora, determiniamo il percorso meno costoso dei restanti vertici attraverso C.

a) Calcolo del percorso più breve da A a F.

Step N D(B),P(B) D(C),P(C) D(D),P(D) D(E),P(E) D(F),P(F)
1 A 2,A 5,A 1,A
2 AD 2,A 4,D 2,D
3 ADE 2,A 3,E 4,E
4 ADEB 3,E 4,E
5 ADEBC 4,E

Tabella finale:

Step N D(B),P(B) D(C),P(C) D(D),P(D) D(E),P(E) D(F),P(F)
1 A 2,A 5,A 1,A
2 AD 2,A 4,D 2,D
3 ADE 2,A 3,E 4,E
4 ADEB 3,E 4,E
5 ADEBC 4,E
6 ADEBCF

Svantaggio:

Si crea un traffico pesante nel Line state routing a causa del Flooding. Il Flooding può causare un looping infinito, questo problema può essere risolto utilizzando il campo Time-to-leave

.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.