Potrzeba redundancji i problem pętli
Redundancja zwiększa dostępność sieci i ogranicza skutki awarii pojedynczego łącza lub urządzenia. Pojedynczy punkt awarii może przerwać łączność i spowodować przestój. Administratorzy dodają więc redundantne łącza i urządzenia. W sieci przełączanej przełączniki łączy się wieloma fizycznymi łączami. Po przecięciu jednego kabla ruch może zostać skierowany przez alternatywną ścieżkę. Alternatywna ścieżka podtrzymuje obsługę ruchu po awarii pojedynczego kabla.
Redundancja zwiększa dostępność. Wprowadza też problem na warstwie 2, czyli warstwie łącza danych. Przełączniki Ethernet przekazują ramki zgodnie z tablicami adresów, dlatego fizyczna pętla w topologii może powodować wielokrotne przesyłanie tych samych ramek. Bez mechanizmu kontroli topologii każdy przełącznik może ponownie przekazać ramkę otrzymaną z sąsiedniego łącza. W niekontrolowanej pętli takie przekazywanie może trwać bez końca i przeciążyć przełączniki oraz łącza. Problem ten jest znany jako pętla komutacyjna lub pętla mostkowania.
Skutki pętli warstwy 2
Ramki Ethernet nie mają mechanizmu „czasu życia” (TTL), takiego jak pakiety IP w Warstwie 3. Jeśli ramka wpadnie w pętlę, jej nagłówek nie zawiera licznika, który zakończyłby dalsze przesyłanie. Ramka może krążyć przez kolejne przełączniki, zużywając zasoby do czasu zablokowania łącza, wygaśnięcia wpisów lub przerwania pętli. Pętla komutacyjna prowadzi do trzech podstawowych problemów:
1. Burze rozgłoszeniowe (Broadcast Storms)
To zwykle pierwszy widoczny objaw pętli. Gdy urządzenie wysyła (na przykład żądanie ARP w celu znalezienia adresu MAC innego urządzenia), ramka ta wpada w pętlę. Każdy przełącznik w pętli otrzymuje ramkę i zalewa ją przez pozostałe dozwolone porty tej samej domeny rozgłoszeniowej. Ramka wraca wtedy do pętli i może być ponownie kopiowana przez kolejne przełączniki. Powielanie ramek zużywa przepustowość oraz zasoby przełączników i podłączonych urządzeń. Zjawisko obejmuje także kolejne rozgłoszenia generowane przez urządzenia, więc obciążenie może rosnąć bardzo szybko. Sieć może szybko utracić użyteczność, co jest stanem znanym jako burza rozgłoszeniowa.
2. Niestabilność tablicy adresów MAC
Przełączniki uczą się lokalizacji urządzeń, analizując źródłowy adres MAC przychodzących ramek. W pętli ten proces uczenia się załamuje. Rozważmy komputer podłączony do Przełącznika A. Wysyła on ramkę. Przełącznik B może zobaczyć tę ramkę przychodzącą z łącza od Przełącznika A. Chwilę później, z powodu pętli, ta sama ramka może dotrzeć do Przełącznika B z jego łącza z Przełącznikiem C. Z perspektywy Przełącznika B, adres MAC komputera pojawia się w dwóch miejscach jednocześnie. Będzie on szybko i nieustannie aktualizował swoją , zjawisko zwane „trzepotaniem MAC” (MAC flapping). Wpis może zmieniać port przy każdym kolejnym duplikacie, zanim wygaśnie lub zostanie nadpisany. Przełącznik może wtedy podejmować błędne decyzje o porcie wyjściowym albo zalewać ramki, gdy wpis jest nieaktualny.
3. Wielokrotne dostarczanie ramek
Nawet ramka unicast, wysyłana z jednego urządzenia do drugiego, może zostać powielona w pętli. Jeśli docelowego adresu MAC nie ma jeszcze w tablicach przełączników, ramka zostanie początkowo zalana. Urządzenie docelowe może wtedy otrzymać tę samą ramkę wielokrotnie z różnych ścieżek. Może to zakłócić działanie aplikacji i protokołów, które nie obsługują zduplikowanych ramek.
Protokół drzewa rozpinającego
Redundancja fizyczna zwiększa niezawodność. Pętle w warstwie 2 zakłócają przekazywanie ramek. Protokół drzewa rozpinającego (STP) ogranicza to zjawisko. STP to (opisany pierwotnie w IEEE 802.1D), zaprojektowany do zapobiegania pętlom komutacyjnym w sieciach z redundantnymi ścieżkami.
STP tworzy wolną od pętli topologię logiczną przez selektywne blokowanie portów. Analizuje informacje o przełączanej sieci i buduje drzewo dla danej instancji STP, dzięki czemu aktywne ścieżki nie tworzą pętli. Redundantne łącza pozostają fizycznie podłączone. Ich porty przechodzą do stanu blokowania lub równoważnego stanu nieprzekazującego danych. Gdy aktywne łącze ulegnie awarii, STP może ponownie obliczyć drzewo i odblokować łącze zapasowe, aby przywrócić łączność.
Jak działa STP: wybory i obliczenia
STP buduje drzewo bez pętli w czterech głównych etapach. Przełączniki uczestniczą w tym procesie, wymieniając specjalne wiadomości zwane jednostkami danych protokołu mostu (BPDU). BPDU przenoszą między innymi identyfikator mostu głównego, koszt dojścia oraz identyfikator nadawcy i portu. Na tej podstawie przełączniki porównują ścieżki i wybierają topologię.
Krok 1: wybór mostu głównego
Pierwszym zadaniem STP jest ustanowienie punktu odniesienia dla danej instancji. Ten punkt odniesienia nazywany jest mostem głównym (Root Bridge). Wszystkie inne decyzje w obliczeniach STP są podejmowane z perspektywy dotarcia do mostu głównego. Aby go wybrać, przełączniki porównują swoje . BID składa się z dwóch części:
- Priorytet mostu: Konfigurowalna wartość pola priorytetu (w klasycznym STP domyślnie często 32768). Administratorzy mogą obniżyć tę wartość, aby wpłynąć na wybór mostu głównego.
- Adres MAC: 6-bajtowy adres MAC używany przez przełącznik.
Przełącznik z numerycznie najniższym ID mostu wygrywa wybory i zostaje mostem głównym.
Najpierw porównywane jest pole priorytetu. Przy równych wartościach rozstrzygaczem jest adres MAC, przy czym niższy adres wygrywa.
Krok 2: wybór portu głównego na każdym moście innym niż główny
Każdy przełącznik, który nie jest mostem głównym, wybiera najlepszą ścieżkę do tego mostu. Port prowadzący do tej ścieżki zostaje wybrany jako port główny (Root Port). O wyborze decyduje najniższy całkowity .
Przykładowe wartości kosztu w metodzie short, spotykanej w implementacjach STP, są następujące:
- Koszt łącza 10 Gb/s: 2
- Koszt łącza 1 Gb/s: 4
- Koszt łącza 100 Mb/s: 19
- Koszt łącza 10 Mb/s: 100
Przełącznik sumuje koszty łączy na każdej drodze do mostu głównego. Port rozpoczynający ścieżkę o najniższym koszcie staje się portem głównym.
Przy równych kosztach stosuje się kolejne rozstrzygacze, między innymi BID przełącznika nadającego oraz ID portu nadającego, zgodnie z kolejnością określoną przez STP.
Krok 3: wybór portu wyznaczonego na każdym segmencie sieci
Na każdym segmencie sieci, czyli łączu między przełącznikami, jeden port zostaje wybrany jako port wyznaczony (Designated Port). Port wyznaczony przekazuje ruch na ten segment i sygnalizuje najlepsze BPDU dla segmentu. Wszystkie porty mostu głównego są portami wyznaczonymi. Na pozostałych segmentach wybierany jest port przełącznika z niższym kosztem ścieżki do mostu głównego, z uwzględnieniem dalszych rozstrzygaczy. Drugi port może pozostać nieprzekazujący danych.
Krok 4: umieszczenie pozostałych portów w stanie blokowania
Po wybraniu portów głównych i wyznaczonych pozostałe porty są niewyznaczone. STP umieszcza je w stanie blokowania. W klasycznym STP taki port odbiera BPDU potrzebne do wykrywania zmian topologii. Nie przekazuje ramek użytkownika i nie uczy się adresów MAC. Zablokowanie tych portów przerywa pętlę fizyczną i pozostawia aktywne drzewo bez pętli.
Timery i stany portów w STP
Konwergencja do stabilnej topologii bez pętli nie jest natychmiastowa. Oryginalny STP z 802.1D używa kilku timerów i stanów portów. Przy klasycznych wartościach hello wynoszących 2 sekundy, max age 20 sekund i forward delay 15 sekund zmiana topologii może powodować przerwę rzędu 30-50 sekund. Port przechodzący od blokowania do przesyłania przechodzi przez dwa stany pośrednie:
- Blokowanie (Blocking): Port nie przekazuje ramek użytkownika, aby zapobiec pętli. Odbiera BPDU.
- Nasłuchiwanie (Listening, 15 sekund): Pierwszy stan przejścia. Przełącznik ocenia topologię i wysyła oraz odbiera BPDU. Nie przekazuje danych.
- Uczenie się (Learning, 15 sekund): Port nadal nie przekazuje danych użytkownika. Zaczyna uczyć się adresów MAC z przychodzących ramek, aby wypełnić tablicę.
- Przesyłanie (Forwarding): Port jest w pełni operacyjny, przesyła ramki z danymi i aktywnie uczestniczy w sieci.
Ta konwergencja ( oczekiwania w stanach przejściowych) ograniczała oryginalny STP. Timer max age określa, jak długo przełącznik uznaje odebrane informacje za aktualne, dlatego jego wygaśnięcie może wydłużyć reakcję na awarię.
Rozszerzenia drzewa rozpinającego
Aby skrócić konwergencję i obsłużyć wiele instancji VLAN, opracowano rozszerzenia oryginalnego STP.
Szybki protokół drzewa rozpinającego, IEEE 802.1w
RSTP jest określony w IEEE 802.1w i zachowuje interoperacyjność z klasycznym STP. Wprowadza role portu alternatywnego i zapasowego oraz aktywny mechanizm propozycji i zgody między przełącznikami. Stany blokowania i nasłuchiwania są w RSTP ujmowane jako stan odrzucania, a uczenie pozostaje osobnym stanem. Upraszcza to przejścia portu. W topologiach z odpowiednio skonfigurowanymi łączami punkt-punkt może osiągnąć konwergencję poniżej jednej sekundy po awarii łącza, zależnie od implementacji i topologii.
Protokół drzewa rozpinającego dla VLAN, PVST+
Klasyczne STP oraz pojedyncza instancja RSTP obliczają jedno drzewo dla całej instancji. W sieci z VLAN-ami łącze może przez to pozostawać zablokowane dla ruchu, mimo że mogłoby obsługiwać konkretny VLAN. PVST+ jest rozszerzeniem firmy Cisco, które uruchamia oddzielną instancję STP dla każdego VLAN-u. Pozwala to na , ponieważ administrator może skonfigurować jedno łącze jako ścieżkę przesyłania dla VLAN 10, a inne redundantne łącze jako ścieżkę dla VLAN 20, wykorzystując oba łącza.
Protokół wielu drzew rozpinających, MSTP, IEEE 802.1s
Uruchamianie setek instancji STP w dużej sieci może zużywać zasoby procesora przełącznika. MSTP, rozwijany w IEEE 802.1s i włączony do późniejszych wydań 802.1Q, pozwala przypisać wiele VLAN-ów do jednej instancji. Dla każdej instancji obliczane jest osobne drzewo, dzięki czemu liczba obliczeń jest mniejsza niż przy osobnym drzewie dla każdego VLAN-u, a różne instancje mogą korzystać z różnych łączy. Przełączniki należące do jednego regionu MST muszą mieć zgodną mapę VLAN-ów, nazwę regionu i numer rewizji.