Łącze danych

Protokoły Mostków i BPDU

Komunikaty Spanning Tree Protocol i mechanizmy komunikacji mostków.

Redundancja i pętle mostkowania

Projektanci sieci stosują redundancję, czyli wiele alternatywnych ścieżek dla danych. Gdy łącze lub urządzenie ulegnie awarii, na przykład kabel zostanie przecięty podczas prac budowlanych, ruch może zostać przekierowany przez ścieżkę zapasową. Połączenie wielu ścieżek zwiększa dostępność usług.

W sieciach lokalnych (LAN) redundancję uzyskuje się przez łączenie przełączników, historycznie nazywanych mostami, wieloma połączeniami. Fizyczne połączenia zwiększają odporność na awarie, lecz mogą wprowadzić w pętle mostkowania.

Bez mechanizmu kontrolnego przełączniki mogą przekazywać te same ramki w pętli, zużywając przepustowość i utrudniając pracę całej sieci. Dotyczy to ramek rozgłoszeniowych, nieznanego unicastu oraz części ramek multicastowych, które są zalewane przez wiele portów. Protokoły mostkujące, w szczególności Protokół Drzewa Rozpinającego (STP), blokują wybrane ścieżki logiczne i pozostawiają je jako zapasowe. W przypadku rozgłoszenia przełącznik nie ogranicza przekazywania do jednego portu docelowego. Każdy aktywny segment może otrzymać kolejną kopię, więc liczba ramek rośnie przy każdym obiegu.

Burze rozgłoszeniowe i niestabilność tablicy MAC

Skutki pętli można prześledzić na przykładzie ramki rozgłoszeniowej w redundantnej, niezarządzanej sieci. Ramka rozgłoszeniowa jest przeznaczona dla każdego urządzenia w LAN. Przykładem jest żądanie ARP wysyłane w celu znalezienia adresu MAC innego urządzenia. Przełącznik zalewa ramkę na portach wyjściowych, ponieważ nie ma pojedynczego adresu docelowego, na podstawie którego mógłby wybrać jeden port.

Przebieg pętli

  1. Początkowe rozgłoszenie: Komputer wysyła pojedynczą ramkę rozgłoszeniową. Dociera ona do Przełącznika A.
  2. Zalewanie: Przełącznik przekazuje ramkę rozgłoszeniową przez każdy port z wyjątkiem portu wejściowego. Przełącznik A wysyła ramkę w kierunku Przełącznika B i Przełącznika C.
  3. Początek pętli:
    • Przełącznik B otrzymuje ramkę od Przełącznika A i wysyła ją przez pozostałe porty, w tym port połączony z Przełącznikiem C.
    • Przełącznik C równocześnie otrzymuje ramkę od Przełącznika A i wysyła ją także w kierunku Przełącznika B.
  4. Powielanie ramek: Przełączniki B i C otrzymują od siebie kopie tej samej ramki i ponownie je zalewają. Ramka krąży po sieci, zajmując przepustowość. Zjawisko to nazywa się burzą rozgłoszeniową.

Konsekwencja 1: Niestabilność Tablicy MAC

Przełączniki uczą się portów na podstawie źródłowych adresów MAC ramek. W pętli ta sama ramka może docierać przez wiele portów. Przełącznik C może zobaczyć adres komputera najpierw od Przełącznika A, a następnie od Przełącznika B, więc wielokrotnie zmienia wpis w tablicy. Zjawisko to nazywa się trzepotaniem tablicy MAC (MAC table flapping) i utrudnia prawidłowe przekazywanie ruchu unicast. Wpis może także szybko wygasać albo wskazywać port, przez który rama nie powinna być wysłana.

Konsekwencja 2: Wielokrotna Transmisja Ramek

Nawet ramka unicast może dotrzeć do urządzenia docelowego w wielu kopiach, gdy tablica MAC jest niestabilna. Protokoły wyższych warstw mogą obsługiwać duplikaty, lecz dodatkowy ruch zmniejsza wydajność i może zakłócać pracę aplikacji.

Protokół Drzewa Rozpinającego (STP)

Protokół Drzewa Rozpinającego (STP), zdefiniowany w standardzie IEEE 802.1D i opracowany przez Radię Perlman, zapobiega pętlom mostkowania przez utworzenie logicznej topologii bez pętli. Przełączniki wymieniają informacje kontrolne w BPDU, odrębnych od ramek danych użytkownika. Informacje te pozwalają obliczyć korzeń, koszty ścieżek i role portów.

STP przekształca fizycznie redundantny graf z cyklami w logiczne drzewo rozpinające. Drzewo nie zawiera pętli i wyznacza jedną aktywną ścieżkę między węzłami. Nadmiarowe łącza otrzymują stan blokowania. Ich fizyczne połączenia pozostają dostępne dla procedury przełączenia.

Port w stanie blokowania wstrzymuje przekazywanie ramek danych użytkownika, pozostaje aktywny i nasłuchuje komunikatów kontrolnych. Po awarii aktywnej ścieżki STP może wykryć zmianę i przełączyć wcześniej zablokowany port do stanu przekazywania. Sieć zachowuje topologię bez pętli, a zapasowe łącze może odzyskać rolę po zmianie topologii. Pozostałe porty nadal ograniczają możliwość utworzenia drugiego aktywnego obwodu. BPDU zawiera także informacje potrzebne do oceny aktualności ogłoszenia. Przełącznik porównuje odebraną informację z własnym stanem i może odrzucić gorszą informację.

Jak STP buduje drzewo

Przełączniki w sieci LAN uczestniczą w procesie wyboru i wymieniają specjalne ramki kontrolne zwane . Proces obejmuje kilka kroków.

  1. Krok 1: wybór mostu głównego (Root Bridge)

    Przełącznik z najniższym ID mostu zostaje Mostem Głównym. Stanowi punkt odniesienia dla drzewa rozpinającego, a koszty ścieżek są obliczane względem niego. Najpierw porównuje się pole priorytetu, następnie rozszerzenie ID systemowego i adres MAC, więc administrator może wskazać preferowany korzeń.

    Klasyczny identyfikator mostu ma 8 bajtów i składa się z 2-bajtowego pola priorytetu oraz 6-bajtowego adresu MAC. W rozszerzonym zapisie pierwsze 16 bitów obejmuje 4-bitowe pole priorytetu i 12-bitowe rozszerzenie identyfikatora systemowego:

    • Pole priorytetu (2 bajty w klasycznym STP, 4 bity w rozszerzonym ID): W klasycznym STP jest to konfigurowalna wartość od 0 do 65535, domyślnie 32768. Niższy priorytet zwiększa szansę wyboru przełącznika.
    • Rozszerzenie identyfikatora systemowego (12 bitów): W implementacjach z rozszerzonym ID część pola priorytetu identyfikuje instancję, na przykład VLAN.
    • Adres MAC (6 bajtów): Adres sprzętowy przełącznika. Rozstrzyga remis, gdy wcześniejsze pola mają tę samą wartość.

    ID mostu=pole priorytetu (4 bity)∥rozszerzenie ID systemowego (12 bitoˊw)∥adres MAC (48 bitoˊw)\text{ID mostu} = \text{pole priorytetu (4 bity)} \Vert \text{rozszerzenie ID systemowego (12 bitów)} \Vert \text{adres MAC (48 bitów)}

    Na początku każdy przełącznik ogłasza własne ID jako ID główne. Po otrzymaniu BPDU z niższym ID przełącznik przyjmuje lepszego kandydata i przekazuje jego informacje. Wymiana BPDU prowadzi do uzgodnienia jednego Mostu Głównego. W BPDU przenoszone są między innymi identyfikator korzenia, koszt ścieżki i identyfikator nadawcy.

  2. Krok 2: wybór portów głównych (Root Ports)

    Każdy przełącznik poza Mostem Głównym wybiera jedną najlepszą ścieżkę do korzenia. Port leżący na tej ścieżce zostaje Portem Głównym. Most ma jeden Port Główny, który wskazuje wybraną najlepszą ścieżkę do korzenia.

    Decyzja opiera się na najniższym koszcie ścieżki do głównego. Koszt jest sumą kosztów łączy na ścieżce:

    Koszt portu jest wartością przypisaną do przepustowości łącza według tabeli danego wariantu STP. Sumowanie pozwala porównać ścieżki o różnej liczbie odcinków i różnych prędkościach.

    • Przełącznik otrzymuje BPDU od Mostu Głównego bezpośrednio albo przez pośredników. BPDU zawiera bieżący koszt ścieżki do głównego.
    • Przełącznik dodaje koszt portu, na którym otrzymał BPDU. Historyczne wartości krótkiej skali to: 10 Gb/s (koszt 2), 1 Gb/s (koszt 4), 100 Mb/s (koszt 19), 10 Mb/s (koszt 100).
    • Port dający najniższy całkowity koszt do głównego zostaje Portem Głównym. Koszt jest sumowany na kolejnych odcinkach, więc krótsza ścieżka nie zawsze oznacza niższy koszt.
    • Rozstrzyganie remisów: Przy równym koszcie wybierany jest sąsiad z najniższym ID mostu, następnie port sąsiada z najniższym ID portu, a na końcu niższe lokalne ID portu. Kolejność kryteriów zapewnia deterministyczny wybór.
  3. Krok 3: wybór portów desygnowanych

    Na każdym segmencie, na przykład kablu łączącym dwa przełączniki, jeden port przekazuje ruch na ten segment w kierunku Mostu Głównego. Zostaje on Portem Desygnowanym. Na segmencie może być tylko jeden Port Desygnowany.

    Wszystkie porty Mostu Głównego są Portami Desygnowanymi. Na pozostałych segmentach wybierany jest port przełącznika z niższym kosztem ścieżki do głównego. Przy remisie stosuje się ID mostu i ID portu, aby na każdym segmencie pozostał jeden zwycięski port.

  4. Krok 4: blokowanie pozostałych portów

    Porty bez roli Portu Głównego lub Portu Desygnowanego tworzą nadmiarowe połączenia, które mogą zamknąć topologię w pętlę. Otrzymują Stan Blokowania. Nie przekazują ramek danych użytkownika, lecz nadal nasłuchują BPDU i mogą przejąć rolę po awarii aktywnej ścieżki. Po zmianie topologii proces wyboru może wyznaczyć je ponownie.

Stany portu w klasycznym STP

W klasycznym STP port przechodzi przez kilka stanów podczas zmiany topologii. Opóźnienie między stanami ogranicza ryzyko powstania tymczasowej pętli.

Stan AdministracyjnyWyłączony (Disabled)Wyłączony przez administratora
Włączenie portu
Domyślny stan początkowyBlokowanie (Blocking)Nasłuchiwanie BPDU, brak ramek danych
Wybór do drzewa
Stan przejściowy INasłuchiwanie (Listening)Ustalanie roli portu | 15 sekund
Opóźnienie przekazywania
Stan przejściowy IIUczenie się (Learning)Budowanie tablicy MAC | 15 sekund
Opóźnienie przekazywania
Stan docelowyPrzekazywanie (Forwarding)Normalne przesyłanie danych
  • Wyłączony (Disabled): Port jest administracyjnie wyłączony. Nie uczestniczy w STP i nie przekazuje ramek przez to połączenie.
  • Blokowanie (Blocking): To początkowy stan portu oraz stan portów redundantnych w stabilnej topologii. Port nasłuchuje BPDU, poznaje topologię, nie przekazuje ramek danych użytkownika i nie uczy się adresów MAC. W ten sposób przerywa pętlę, pozostając kandydatem do późniejszego przełączenia.
  • Nasłuchiwanie (Listening): Pierwszy stan przejściowy od blokowania do przekazywania. Port może zostać Portem Głównym lub Desygnowanym, przetwarza BPDU i uczestniczy w wyborach STP. W tym stanie nie przekazuje danych użytkownika ani nie uczy się adresów MAC. Stan trwa przez licznik Opóźnienia Przekazywania (Forward Delay, zazwyczaj 15 sekund). W tym czasie przełącznik ustala rolę portu.
  • Uczenie się (Learning): Drugi stan przejściowy. Port jest przeznaczony do przekazywania jako Główny lub Desygnowany i wstrzymuje przekazywanie danych. Odbiera ramki, uczy się źródłowych adresów MAC i wypełnia tablicę. Stan trwa przez kolejne 15 sekund Opóźnienia Przekazywania, więc tablica jest gotowa przed rozpoczęciem przekazywania. Pozwala to ograniczyć liczbę nieznanych adresów po otwarciu portu.
  • Przekazywanie (Forwarding): Port jest w pełni operacyjny. Wysyła i odbiera BPDU, przekazuje dane użytkownika oraz uczy się adresów MAC. Jest to normalny stan aktywnych portów drzewa rozpinającego i rola może zmienić się po odebraniu lepszej informacji BPDU.

W klasycznym STP przejście od blokowania do przekazywania trwa zazwyczaj 30 sekund (15 nasłuchiwania + 15 uczenia się) dla standardowych wartości liczników. Może potrwać do 50 sekund, gdy trzeba odczekać wygaśnięcie starej informacji o topologii (20 sekund Max Age + 30 sekund). Licznik Max Age określa, jak długo przełącznik uznaje otrzymane informacje BPDU za ważne. Po jego wygaśnięciu przełącznik może przeliczyć role portów. Ten czas zbieżności był ograniczeniem oryginalnego STP i przyczynił się do powstania szybszego RSTP (Rapid Spanning Tree Protocol). RSTP skraca zbieżność dzięki innym regułom uzgadniania i rolom portów. Przedstawione stany opisują klasyczny wariant STP oraz jego historyczne liczniki.

Powiązane artykuły