Ćwiczenia z SKO2

SPIS TRESCI

1.ROUTING

1.1 Algorytmy Routujące

ROUTING

Algorytmy Routujące

Wektor Odległości

Wektor odległości jest jednym z ogólnie uznanych algorytmów służących do tworzenia tzw. tabeli Routingu.Tabela ta jest "drogowskazem" według którego nasz komputer przesyła, lub wysyła pakiety w sieć. Jak działa algorytm wektora odległości? Wyobraźmy sobie, że mamy następującą strukturę sieci:

Rozmiar: 11820 bajtów

Przy czym za poszczególne punkty uznamy konkretne sieci reprezentowane przez routery(czyli komputery przesyłające dane pomiędzy sieciami o rożnych topologiach) Zalóżmy teraz że A chce wysłać pakiet do B? skąd ma wiedzieć przez jaki interfejs sieciowy wypuścić informacje?W tym przypadku problem nie jest aż tak wielki router B jest bezpośrednio połączony z A wiec zdobycie informacji o jego położeniu nie nastręcza A specjalnych trudności. jednak wysłanie pakietu do E lub F wymaga znacznie trudniejszej procedury. i tu tablica routingu jest nieocenionym źródłem wiedzy, algorytm natomiast pozwoli nam to źródło szybko i sprawnie wypelnić(ręczne wypełnianie nie jest polecane, aczkolwiek możliwe:)) Na początku tabela routingu A wygląda następująco:

SiećBCDEF
Odleglość1niesk.niesk.niesk.niesk.
Następny etap-----
gdzie:
  • Sieć - identyfikator routera danej sieci
  • Odlegość - mierzona w "skokach"(krawedzie z waga 1)
  • Następny etap - następny przystanek w drodze do celu
  • Zilustrujemy działanie algorytmu na przykładzie routera C jego tablica na początku wygląda tak:

    SiećBADEF
    odleglość1niesk.1niesk.niesk.
    Następny etap-----

    Idea polega na tym, że każdy router wysyła do swoich sąsiadów pakiet z informacjami zapisanymi w swojej tabeli, wiadomość ta składa się z dwóch pól:

  • Odbiorca - router docelowej sieci
  • Odległość - patrz wyżej
  • wiec załóżmy że propagację rozpoczął D:
    Rozmiar: 11820 bajtów

    Co robi C po otrzymaniu pakietu? Sprawdza czy do niektórych sieci nie będzie mu się łatwiej dostać przesyłając informacje przez D niż bezpośrednio. W jaki sposób według algorytmu:):

    jeśli(moja_trasa_do_X > trasa_do_X zawarta_w_uaktualnieniu + odleglosc_do_routera_uaktalniajacego(czyli 1));
    uaktualnij tablice i wpisz uaktualniajecego jako następny etap;
    w_przeciwnym_razie olej:)

    jak to działa dla naszego przykładu? C sprawdza jak daleko ma do E i F, wychodzi mu nieskończoność porównuje to z informacjami od D, które mówią mu że jeśli prześle dane zaadresowane do E lub F poprzez D odleglość wyniesie 1, C dodaje do tego koszt dotarcia do D czyli 1 i wychodzi mu 2, ponieważ 2 < nieskończoności aktualizuje tabelę która po tym zabiegu wyglada tak:

    SiećBADEF
    odleglość1niesk.122
    Następny etap---DD

    W ten sposób wysyłając pakiety zawierające uzupełnienia poszczególne routery uzupełniają swoje tablice routingu, bardzo istotnym jest fakt, że pakiety te są wysyłane jedynie do sąsiadów.C nigdy nie otrzyma uaktualnienia od A, jedynie B może go poinformować jak dotrzeć do A.

    Uaktualnienia są wysyłane w następujących sytuacjach:
  • Bazowo - czyli po odpaleniu progamu wykorzystującego algorytm
  • Po modyfikacji tablicy - żeby powiadomić sąsiadów o nowych drogach
  • Co jakiś czas - jakiś router mógł przestać być dostępny
  • W praktyce zależnie od implementacji:)

    Na koniec podam jeszcze w pełni uzupełnioną tablicę routingu dla C:)
    SiećBADEF
    odleglość12122
    Następny etap-B-DD

    Stan łącza

    Algorytm stanu łącza jest drugim z powszechnie stosowanych algorytmów routujących. Bazowe założenia są identyczne jak te przy wektorze odległości. Uznajemy że każdy węzeł jest zdolny do poznania stanu łączy do swoich sąsiadów a także do określani ich kosztu. Pomysł tego algorytmu zakłada że jeżeli węzeł posiada powyższe informacje i uda się je rozpowszechnić w sieci to każdy węzeł będzie w stanie zbudować sobie mapę sieci. Możliwość dokonania takiego rozpowszechnienia zapewniają dwa mechanizmy:

  • Niezawodny rozpływ
  • Obliczenie trasy
  • Niezawodny rozpływ

    Niezawodny rozpływ jest procesem którego zadanie polega na upewnieniu się czy, każdy węzeł biorący udział w wyborze trasy, otrzymał kopię informacji o stanie łącza każdego innego węzła. "Rozpływ" polega na tym że każdy węzeł przesyła do wszystkich swoich sąsiadów całość posiadanej przez siebie informacji o stanie łącza . Każdy węzeł który tą informacje dostanie przesyła ja dalej, proces ten trwa tak długo, aż wszystkie węzły w sieci otrzymają te informacje.

    Przekazanie informacji odbywa się poprzez wysłanie kopii pakietu aktualizującego LSP(Link-state packet) składa się on z następujących pól:
  • identyfikator węzła który utworzył pakiet
  • Listę sąsiadów bezpośrednio dołączonych do węzła, razem z kosztem łącza do każdego węzła
  • numer sekwencyjny
  • czas zycia(TTL) dla tego pakietu
  • Pierwsze dwa składniki są potrzebne by umożliwić obliczenie trasy, nie wymagają dodatkowego tłumaczenia. Dwa ostanie są niezbędne aby usługa była niezawodna. Przez niezawodność rozumiemy tutaj utrzymywanie jedynie najnowszych wersji informacji w każdy z węzłów

    W jaki sposób się to odbywa?

    Określmy dwa węzły dla potrzeb przykładu:
  • Y - węzeł który wysłał pakiet LSP
  • X - węzeł który otrzymał pakiet Y
  • Kiedy węzeł X otrzymuje kopie pakietu LSP węzła Y wykonuje następujące czynności:

    1.sprawdza czy ma już kopie LSP węzła Y jeśli nie dodaje jeśli ma to

    2.porownuje numery sekwencyjne jeśli nowy przybyły ma wyższy numer od już posiadanego LSP zastępuje go i przesyła nowy pakiet do wszystkich swoich sąsiadów za wyjątkiem tego od którego go otrzymał, w przeciwnym przypadku odrzuca nowy pakiet

    każdy węzeł jest zobowiązany do okresowego tworzenia nowego LSP.Za każdym razem gdy generowany jest nowy LSP jego numer sekwencyjny jest zwiększany o 1. Nie jest wymagane "zawijanie się" numerów. Dlatego pole numeru sekwencyjnego powinno być możliwie duże(zwykle 64 bity). jeśli węzeł ulegnie awarii i powróci po jakimś czasie do działania wtedy rozpoczyna nadawanie z ustawionym numerem 0. jeśli węzeł nie nadawał przez dłuższy okres czasu wszystkie jego LSP "zmarly"(o tym za chwile), jeśli nie po jakimś czasie uda mus się odebrać kopie własnego pakietu LSP i ustawić odpowiedni numer sekwencyjny. Pakiet "umiera" kiedy jego TTL osiągnie 0, każdy węzeł posiadający taki pakiet natychmiast go usuwa, TTL zmniejsza się ze stałą określona szybkością. Istotnym problem jest synchronizacja wieku pakietu tak aby wszystkie węzły usuwały go jednocześnie.

    Obliczenie trasy

    jeśli dany węzeł posiada kopie LSP każdego innego węzła sieci , potrafi obliczyć kompletna mapę topologii sieci i za jej pomocą wybrać optymalna ścieżkę. Obliczanie to odbywa się za pomocą algorytmu obliczania najkrótszej ścieżki Djikstry. nie będę nikogo tutaj zanudzał stronę teoretyczna i od razu przejdę do strony praktycznej zagadnienia. W praktyce węzły stosują zmodyfikowana wersje algorytmu Djikstry zwana przeszukiwaniem w przód. Polega to na tym ze każdy węzeł utrzymuje dwie listy, listę WSTEPNA i listę POTWIERDZONA, każda z list przechowuje elementy w postaci (ODBIORCA, KOSZT, NASTEPNYETAP).Algorytm działa następująco:

    1.Inicjuje listę potwierdzona elementem dla samego siebie, element ten ma koszt 0.

    2.Wezel właśnie dodany do listy listy potwierdzonej w poprzednim kroku, nazwij NASTEPNYM, wybierz jego LSP.

    3.Dla każdego SASIADA węzła NASTEPNEGO, oblicz KOSZT, za cenę którego można dotrzeć do tego SASIADA. jest to suma kosztu ode mnie do węzła NASTEPNEGO i od węzła NASTEPNEGO do SASIADA.

    a) jeżeli SASIAD nie jest aktualnie ani na liście WSTEPNEJ ani na liście POTWIERDZONEJ, wtedy dodaj(SASIAD,KOSZT,NASTEPNYETAP) do listy WSTEPNEJ, gdzie NASTEPNYETAP jest kierunkiem w którym musze się poruszać, aby dotrzeć do węzła NASTEPNEGO.

    b) jeżeli SASIAD jest aktualnie na liście WSTEPNEJ, i KOSZT jest mniejszy od aktualnie umieszczonego kosztu na liście dla SASIADA, wtedy zastąp aktualny element przez (SASIAD, KOSZT, NASTEPNYETAP), gdzie NASTEPNYETAP jest kierunkiem, w którym powinien się poruszać, aby dotrzeć do węzła NASTEPNEGO

    4.jeżeli lista WSTEPNA jest pusta, zatrzymaj się. W przeciwnym przypadku, pobierz element z listy Wstępnej o najmniejszym koszcie, przesuń go na listę POTWIERDZONA, i wróć do kroku 2.

    przykład: Rozmiar: 14893 bajtów

    KrokLista PotwierdzonaLista WstępnaKomentarz
    1(D, 0, -)-ponieważ węzeł D jest jedynym nowym elementem listy POWIERDZONEJ, zbadaj jego LSP
    2(D, 0, -)(B, 11, B),(C,2,C)LSP węzła D podaje, ze możne osiągnąć węzeł B przez węzeł B kosztem 11 jednostek, co jest lepsze od czegokolwiek na innych listach, dlatego umieść go na liście WSTEPNEJ, analogicznie dla węzła C
    3(D, 0, -)(C,2,C)(B,11,B)Umieść element o najniższym koszcie z listy WSTEPNEJ(C) na liście POTWIERDZONEJ. Następnie, badaj LSP tego nowo potwierdzonego elementu)
    4(D, 0, -)(C,2,C)(B, 5, C)(A, 12, C)Koszt osiągnięcia węzła B przy przejściu przez węzeł C jest równy 5, dlatego zastąp nim(B, 11, B). LSP węzła C podaje, ze możemy osiągnąć węzeł A za cenę 12 jednostek
    5(D, 0, -)(C,2,C)(B, 5, C)(A, 12, C)Przesuń element o najniższym koszcie z listy WSTEPNEJ(B) do listy POTWIERDZONEJ sprawdź jego LSP
    6(D, 0, -)(C,2,C)(B, 5, C)(A, 10, C)Ponieważ można osiągnąć węzeł A kosztem 5 jednostek z węzła B, zastąp element na liście WSTEPNEJ
    7(D, 0, -)(C,2,C)(B, 5, C)(A, 12, C)-Przesuń element o najniższym koszcie z listy WSTEPNEJ(A) do listy POTWIERDZONEJ /td>
    Miary

    Sobota wieczór:)