Protokoły Mostków i BPDU
Komunikaty Spanning Tree Protocol i mechanizmy komunikacji mostków.
Wprowadzenie: Obosieczny Miecz Redundancji
W świecie sieci komputerowych niezawodność jest najważniejsza. Sieć, która przestaje działać, staje się bezużyteczna. Aby osiągnąć wysoką dostępność, projektanci sieci stosują podstawową zasadę: redundancję. Oznacza to tworzenie wielu, alternatywnych ścieżek, którymi mogą podróżować dane. Jeśli jedno łącze lub urządzenie ulegnie awarii – na przykład kabel zostanie przypadkowo przecięty podczas prac budowlanych – ruch może zostać automatycznie przekierowany przez ścieżkę zapasową, zapewniając ciągłość usług.
W nowoczesnych sieciach lokalnych (LAN) redundancję tę uzyskuje się poprzez łączenie przełączników (historycznie nazywanych mostami) wieloma połączeniami. Chociaż tworzy to odporną na awarie topologię fizyczną, jednocześnie wprowadza katastrofalny problem w : pętle mostkowania.
Bez mechanizmu kontrolnego, te redundantne ścieżki stworzyłyby nieskończoną pętlę sprzężenia zwrotnego, doprowadzając całą sieć do zatrzymania w ciągu kilku sekund. Właśnie tutaj wkraczają protokoły mostkujące, a w szczególności Protokół Drzewa Rozpinającego (STP). Są one niezbędnymi kontrolerami ruchu, które umożliwiają działanie redundantnych sieci.
Katastrofa: Zrozumienie Burz Rozgłoszeniowych i Niestabilności Tablicy MAC
Aby zrozumieć, dlaczego pętle mostkowania są tak niszczycielskie, musimy przeanalizować, co dzieje się z prostą ramką rozgłoszeniową w redundantnej, niezarządzanej sieci. Ramka rozgłoszeniowa to komunikat przeznaczony dla każdego urządzenia w sieci LAN. Powszechnym przykładem jest żądanie ARP, które komputer wysyła w celu znalezienia adresu MAC innego urządzenia.
Anatomia Katastrofy w Pętli
- Początkowe Rozgłoszenie: Komputer wysyła pojedynczą ramkę rozgłoszeniową. Dociera ona do Przełącznika A.
- Zalewanie: Fundamentalnym zachowaniem przełącznika jest przekazywanie ramki rozgłoszeniowej przez każdy port z wyjątkiem tego, którym ramka nadeszła. Przełącznik A zalewa ramkę w kierunku Przełącznika B i Przełącznika C.
- Początek Pętli:
- Przełącznik B otrzymuje ramkę od Przełącznika A i zalewa ją przez wszystkie swoje pozostałe porty, w tym ten połączony z Przełącznikiem C.
- Jednocześnie Przełącznik C otrzymuje ramkę od Przełącznika A i zalewa ją, w tym w kierunku Przełącznika B.
- Nieskończone Wzmocnienie: Teraz Przełączniki B i C otrzymują od siebie nawzajem zduplikowane kopie tej samej oryginalnej ramki. Nie widzą powodu, aby przestać, więc kontynuują zalewanie tych kopii tam i z powrotem. Pojedyncza ramka uległa zwielokrotnieniu i krąży teraz bez końca po sieci, zużywając całą dostępną przepustowość. Zjawisko to nazywa się burzą rozgłoszeniową.
Konsekwencja 1: Niestabilność Tablicy MAC
Przełączniki uczą się, które urządzenia są podłączone do których portów, analizując źródłowy adres MAC przychodzących ramek. W pętli przełącznik zobaczy ramkę od tego samego komputera źródłowego, docierającą na wielu różnych portach. Na przykład, Przełącznik C zobaczy ramkę od komputera najpierw od Przełącznika A, a chwilę później od Przełącznika B. To powoduje, że przełącznik nieustannie aktualizuje swoją tablicę adresów MAC, gorączkowo zmieniając port powiązany z tym adresem MAC. Zjawisko to nazywa się trzepotaniem tablicy MAC (MAC table flapping) i skutecznie uniemożliwia przełącznikowi podejmowanie prawidłowych decyzji o przekazywaniu ruchu unicast.
Konsekwencja 2: Wielokrotna Transmisja Ramek
Nawet jeśli ramka ma określonego odbiorcę (unicast), niestabilność tablicy MAC oznacza, że urządzenie docelowe może otrzymać wiele kopii tej samej ramki. Chociaż niektóre protokoły wyższych warstw radzą sobie ze zduplikowanymi danymi, powoduje to znaczną nieefektywność i może dezorientować wiele aplikacji. Sieć staje się jednocześnie całkowicie nasycona i zawodna.
Rozwiązanie: Protokół Drzewa Rozpinającego (STP)
Genialnym rozwiązaniem tego problemu jest Protokół Drzewa Rozpinającego (STP), zdefiniowany w standardzie IEEE 802.1D. Wynaleziony przez Radię Perlman, misją STP jest zapobieganie pętlom mostkowania poprzez tworzenie pojedynczej, logicznej ścieżki bez pętli w sieci.
Robi to, zaczynając od fizycznie redundantnej sieci (grafu z cyklami) i logicznie „przycinając” ją do postaci drzewa rozpinającego. Drzewo to typ grafu, który nie ma pętli; istnieje tylko jedna aktywna ścieżka między dowolnymi dwoma węzłami. STP inteligentnie identyfikuje redundantne łącza i umieszcza je w stanie blokowania.
Port w stanie blokowania nie przekazuje ramek z danymi użytkownika, skutecznie przerywając pętlę. Pozostaje jednak fizycznie aktywny i nasłuchuje komunikatów kontrolnych. Jeśli główna, aktywna ścieżka ulegnie awarii, STP może automatycznie wykryć awarię i przełączyć wcześniej zablokowany port w stan przekazywania, reaktywując w ten sposób redundantną ścieżkę i przywracając łączność. Daje to to, co najlepsze z obu światów: sieć bez pętli podczas normalnej pracy, z możliwością automatycznego przełączania awaryjnego.
Jak STP Buduje Drzewo: Proces Wyborczy
Aby stworzyć to logiczne drzewo, wszystkie przełączniki w sieci LAN uczestniczą w dynamicznym procesie wyborczym. Komunikują się za pomocą specjalnych ramek kontrolnych zwanych . Cały proces odbywa się automatycznie w kilku krokach.
- Krok 1: Wybór Mostu Głównego (Root Bridge)
Pierwszym i najważniejszym krokiem jest wybranie jednego przełącznika, który będzie Mostem Głównym. Most Główny działa jako centralny punkt odniesienia dla całego drzewa rozpinającego; wszystkie ścieżki będą obliczane na podstawie odległości od tego przełącznika. To jak wybór prezydenta lub wyznaczenie stolicy dla sieci.
Wybory wygrywa przełącznik z najniższym ID Mostu. ID Mostu to 8-bajtowa wartość składająca się z:
- Priorytet Mostu (2 bajty): Konfigurowalna wartość od 0 do 65535. Domyślnie wynosi 32768. Administrator może wpłynąć na wybory, ustawiając niższy priorytet na określonym przełączniku.
- Adres MAC (6 bajtów): Unikalny adres sprzętowy przełącznika. Służy jako rozstrzygacz remisu, jeśli wiele przełączników ma ten sam priorytet.
Początkowo każdy przełącznik uruchamia się, myśląc, że jest Mostem Głównym. Zaczynają wysyłać BPDU z własnym ID Mostu jako ID Głównego. Gdy przełącznik otrzyma BPDU z lepszym (niższym) ID Mostu, przestaje reklamować się jako główny i zaczyna przekazywać BPDU od lepszego kandydata. Ten proces szybko się zbiega i wkrótce wszystkie przełączniki zgadzają się co do tego, który z nich jest Mostem Głównym.
- Krok 2: Wybór Portów Głównych (Root Ports) na Mostach Innych Niż Główny
Każdy przełącznik, który nie jest Mostem Głównym, musi określić swoją jedną najlepszą ścieżkę w kierunku Mostu Głównego. Port na tym przełączniku, który leży na tej najlepszej ścieżce, jest wybierany jako Port Główny. Na każdym moście innym niż główny może być tylko jeden Port Główny.
Decyzja opiera się na najniższym Koszcie Ścieżki do Głównego. Koszt to skumulowana wartość oparta na prędkości łączy wzdłuż ścieżki:
- Przełącznik otrzymuje BPDU od Mostu Głównego (bezpośrednio lub przez pośredników). Te BPDU zawierają bieżący Koszt Ścieżki do Głównego.
- Przełącznik dodaje do tej wartości koszt portu, na którym otrzymał BPDU. Standardowe (choć już przestarzałe) koszty to: 10 Gb/s (Koszt 2), 1 Gb/s (Koszt 4), 100 Mb/s (Koszt 19), 10 Mb/s (Koszt 100).
- Port, który daje najniższy całkowity skumulowany koszt do głównego, jest wybierany jako Port Główny.
- Rozstrzyganie remisów: Jeśli przełącznik ma wiele ścieżek o tym samym koszcie, wybierze ścieżkę od sąsiedniego przełącznika z najniższym ID Mostu. Jeśli to również jest remis, wybiera ścieżkę podłączoną do portu sąsiada o najniższym ID Portu.
- Krok 3: Wybór Portów Desygnowanych na Każdym Segmencie
Na każdym segmencie sieci (np. kablu łączącym dwa przełączniki) jeden port musi być odpowiedzialny za przekazywanie ruchu na ten segment w kierunku Mostu Głównego. Ten port jest wybierany jako Port Desygnowany. Na każdym segmencie może być tylko jeden Port Desygnowany.
Wszystkie porty na Moście Głównym są zawsze Portami Desygnowanymi. Na innych segmentach, port na przełączniku z niższym Kosztem Ścieżki do Głównego dla tego segmentu staje się Portem Desygnowanym. Te same zasady rozstrzygania remisów (ID Mostu, ID Portu) mają zastosowanie, jeśli koszty są równe.
- Krok 4: Zablokowanie Wszystkich Pozostałych Portów
Każdy port, który nie jest Portem Głównym ani Portem Desygnowanym, jest łączem redundantnym, które mogłoby stworzyć pętlę. Te porty są umieszczane w Stanie Blokowania. Nie będą one przekazywać żadnych ramek z danymi użytkownika, ale będą nadal nasłuchiwać BPDU, aby wiedzieć, kiedy przejąć rolę w przypadku awarii aktywnej ścieżki.
Cykl Życia Portu STP: Stany Portu
Port obsługujący STP nie włącza się i wyłącza natychmiast. Przechodzi przez kilka odrębnych stanów, aby zapobiec tworzeniu się tymczasowych pętli podczas zmiany topologii sieci.
- Wyłączony (Disabled): Port jest administracyjnie wyłączony. Nie uczestniczy w STP.
- Blokowanie (Blocking): To początkowy stan portu oraz stan dla portów redundantnych w stabilnej topologii. Port nasłuchuje BPDU, aby dowiedzieć się o topologii sieci, ale nie przekazuje ramek z danymi użytkownika i nie uczy się adresów MAC. To przerywa pętlę.
- Nasłuchiwanie (Listening): Pierwszy stan przejściowy, gdy port przechodzi od blokowania do przekazywania. Przełącznik zdecydował, że ten port może stać się Portem Głównym lub Desygnowanym. W tym stanie port nadal przetwarza BPDU i aktywnie uczestniczy w wyborach STP, ale wciąż nie przekazuje danych użytkownika ani nie uczy się adresów MAC. Trwa to przez czas licznika Opóźnienia Przekazywania (Forward Delay, zazwyczaj 15 sekund).
- Uczenie się (Learning): Drugi stan przejściowy. Port jest teraz potwierdzony jako przyszły port przekazujący (Główny lub Desygnowany). Nadal nie przekazuje ramek z danymi, aby zapobiec tymczasowym pętlom. Zaczyna jednak nasłuchiwać przychodzących ramek i uczyć się źródłowych adresów MAC, aby wypełnić swoją tablicę adresów MAC. To również trwa przez czas Opóźnienia Przekazywania (kolejne 15 sekund). Wstępne wypełnienie tablicy MAC zapewnia, że gdy rozpocznie się przekazywanie, przełącznik już wie, dokąd wysyłać ruch.
- Przekazywanie (Forwarding): Port jest w pełni operacyjny. Wysyła i odbiera BPDU, przekazuje ramki z danymi użytkownika i kontynuuje uczenie się adresów MAC. Jest to normalny stan dla wszystkich aktywnych, nieredundantnych portów w drzewie rozpinającym.
Całkowity czas przejścia portu od stanu blokowania do przekazywania wynosi zazwyczaj 30 sekund (15 nasłuchiwanie + 15 uczenie się), chociaż może to potrwać do 50 sekund, jeśli najpierw musi poczekać, aż stara informacja o topologii wygaśnie (20 sekund Max Age + 30 sekund). Chociaż jest bardzo niezawodny, ten powolny czas zbieżności był główną wadą oryginalnego STP i doprowadził do rozwoju szybszych wersji, takich jak RSTP (Rapid Spanning Tree Protocol).