Link State Routing

Link State Routing jest techniką, w której każdy router dzieli się wiedzą o swoim sąsiedztwie z każdym innym routerem w sieci internetowej.

Trzy klucze do zrozumienia algorytmu Link State Routing:

  • Wiedza o sąsiedztwie: Zamiast wysyłać swoją tablicę routingu, router wysyła informacje tylko o swoim sąsiedztwie. Router rozgłasza swoje tożsamości i koszt bezpośrednio dołączonych linków do innych routerów.
  • Flooding: Każdy router wysyła informacje do każdego innego routera w sieci Internetwork z wyjątkiem swoich sąsiadów. Proces ten jest znany jako Flooding. Każdy router, który otrzyma pakiet, wysyła jego kopie do wszystkich swoich sąsiadów. W końcu każdy router otrzymuje kopię tej samej informacji.
  • Udostępnianie informacji: Router wysyła informację do każdego innego routera tylko wtedy, gdy następuje zmiana w informacji.

Link State Routing ma dwie fazy:

Reliable Flooding

  • Stan początkowy: Każdy węzeł zna koszt swoich sąsiadów.
  • Stan końcowy: Każdy węzeł zna cały graf.

Obliczanie tras

Każdy węzeł używa algorytmu Dijkstry na grafie, aby obliczyć optymalne trasy do wszystkich węzłów.

  • Algorytm routingu stanu łącza jest również znany jako algorytm Dijkstry, który jest używany do znalezienia najkrótszej ścieżki od jednego węzła do każdego innego węzła w sieci.
  • Algorytm Dijkstry jest iteracyjny i ma tę własność, że po k-tej iteracji algorytmu ścieżki najmniejszego kosztu są dobrze znane dla k węzłów docelowych.

Opiszmy kilka pojęć:

  • c( i , j): Koszt połączenia z węzła i do węzła j. Jeśli węzły i i j nie są bezpośrednio połączone, to c(i , j) = ∞.
  • D(v): Określa koszt ścieżki od kodu źródłowego do docelowego v, która ma aktualnie najmniejszy koszt.
  • P(v): Określa poprzedni węzeł (sąsiad v) wraz z aktualną ścieżką o najmniejszym koszcie od źródła do v.
  • N: Jest to całkowita liczba węzłów dostępnych w sieci.

Algorytm

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

W powyższym algorytmie po kroku inicjalizacji następuje pętla. Liczba powtórzeń pętli jest równa całkowitej liczbie węzłów dostępnych w sieci.

Zrozumiejmy to na przykładzie:

Na powyższym rysunku wierzchołek źródłowy to A.

Krok 1:

Pierwszym krokiem jest krok inicjalizacji. Obecnie znane najmniej kosztowne ścieżki z A do jego bezpośrednio dołączonych sąsiadów, B, C, D wynoszą odpowiednio 2,5,1. Koszt z A do B jest ustawiony na 2, z A do D jest ustawiony na 1, a z A do C jest ustawiony na 5. Koszty z A do E i F są ustawione na nieskończoność, ponieważ nie są one bezpośrednio powiązane z A.

Krok 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

Krok 2:

W powyższej tabeli zauważamy, że wierzchołek D zawiera ścieżkę o najmniejszym koszcie w kroku 1. Dlatego jest on dodany w N. Teraz musimy wyznaczyć najmniej kosztowną ścieżkę przez wierzchołek D.

a) Obliczenie najkrótszej ścieżki z A do B

b) Obliczenie najkrótszej ścieżki z A do C

c) Obliczenie najkrótszej ścieżki z A do E

Uwaga: Wierzchołek D nie ma bezpośredniego połączenia z wierzchołkiem E. Dlatego wartość D(F) jest nieskończona.

Krok 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

Krok 3:

W powyższej tabeli obserwujemy, że zarówno E jak i B mają ścieżkę o najmniejszym koszcie w kroku 2. Rozważmy wierzchołek E. Teraz wyznaczamy najmniej kosztowną ścieżkę pozostałych wierzchołków przez E.

a) Obliczenie najkrótszej ścieżki z A do B.

b) Obliczenie najkrótszej ścieżki z A do C.

c) Obliczenie najkrótszej ścieżki z A do F.

Krok 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

Krok 4:

W powyższej tabeli obserwujemy, że wierzchołek B ma najmniej kosztowną ścieżkę w kroku 3. Dlatego jest on dodawany w N. Teraz wyznaczamy najmniej kosztowną ścieżkę pozostałych wierzchołków przez B.

a) Obliczenie najkrótszej ścieżki z A do C.

b) Obliczenie najkrótszej ścieżki z A do F.

Krok 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

Krok 5:

W powyższej tabeli obserwujemy, że wierzchołek C ma najmniej kosztowną ścieżkę w kroku 4. Dlatego jest on dodawany do N. Teraz wyznaczamy najmniej kosztowną ścieżkę pozostałych wierzchołków przez C.

a) Obliczanie najkrótszej ścieżki z A do F.

Krok 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

Tabela końcowa:

Krok 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

Wady:

Ważny ruch jest tworzony w routingu stanu Line z powodu Flooding. Flooding może powodować nieskończoną pętlę, ten problem można rozwiązać za pomocą pola Time-to-leave

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.