Skip to content

Protokół STP i MST

Przygotowanie, scenariusz

Info

Do realizacji tego zadania wymagany będzie dowolnie wybrany emulator np. Cisco Modeling Labs, GNS3, EVE-NG oraz dostęp do obrazów Cisco IOS.

  • Zobaczymy jak działa Spanning Tree Protocol (STP)
  • Wdrożymy Rapid Spanning Tree Protocol (RSTP).
  • Sprawdzimy mechanizmy modyfikacji i ochrony STP.
  • Zaimplementujemy protokół Multiple Spanning Tree.(MST).

Topologia

Screenshot

Adresacja

  • S1 VLAN1 - 10.0.0.1 255.0.0.0
  • S2 VLAN1 - 10.0.0.2 255.0.0.0
  • S2 VLAN1 - 10.0.0.3 255.0.0.0

Konfiguracja S1

Tryb konfiguracyjny i zmiana nazwy urządzenia.

inserthostname-here#configure terminal
inserthostname-here#hostname S1

Uruchamiamy Per-VLAN Spanning Tree (PVST) na przełączniku.

S1(config)#spanning-tree mode pvst

Tworzymy dodatkowy VLAN.

S1(config)#vlan 2
S1(config-vlan)#name vlan2

Adresujemy VLAN1 domyślnie dostępny na przełączniku.

S1(config)#interface vlan 1
S1(config-if)#ip address 10.0.0.1 255.0.0.0
S1(config-if)#no shutdown

Interfejsy pomiędzy przełącznikami będą pracowały w trybie trunk.

S1(config)#interface range ethernet 0/0-3
S1(config-if-range)#switchport trunk encapsulation dot1q
S1(config-if-range)#switchport mode trunk 

Konfiguracja S2

Tryb konfiguracyjny i zmiana nazwy urządzenia.

inserthostname-here#configure terminal
inserthostname-here#hostname S2

Uruchamiamy Per-VLAN Spanning Tree (PVST) na przełączniku.

S2(config)#spanning-tree mode pvst

Tworzymy dodatkowy VLAN.

S2(config)#vlan 2
S2(config-vlan)#name vlan2

Adresujemy VLAN1 domyślnie dostępny na przełączniku.

S2(config)#interface vlan 1
S2(config-if)#ip address 10.0.0.2 255.0.0.0
S2(config-if)#no shutdown

Interfejsy pomiędzy przełącznikami będą pracowały w trybie trunk.

S2(config)#interface range ethernet 0/0-1, ethernet 1/1-2
S2(config-if-range)#switchport trunk encapsulation dot1q
S2(config-if-range)#switchport mode trunk 

Konfiguracja S3

Tryb konfiguracyjny i zmiana nazwy urządzenia.

inserthostname-here#configure terminal
inserthostname-here#hostname S3

Uruchamiamy Per-VLAN Spanning Tree (PVST) na przełączniku.

S3(config)#spanning-tree mode pvst

Tworzymy dodatkowy VLAN.

S3(config)#vlan 2
S3(config-vlan)#name vlan2

Adresujemy VLAN1 domyślnie dostępny na przełączniku.

S3(config)#interface vlan 1
S3(config-if)#ip address 10.0.0.3 255.0.0.0
S3(config-if)#no shutdown

Interfejsy pomiędzy przełącznikami będą pracowały w trybie trunk.

S3(config)#interface range ethernet 0/2-3, ethernet 1/1-2
S3(config-if-range)#switchport trunk encapsulation dot1q
S3(config-if-range)#switchport mode trunk 

Test bazowej konfiguracji na przełączniku S3

Adresacja VLAN1

S3#show ip interface brief

Screenshot

Lista VLAN-ów na przełączniku.

S3#show vlan

Screenshot

Interfejsy trunk.

S3#show interfaces trunk

Screenshot

Warning

Teraz mogą pojawić się różnice w Waszych wynikach względem tego co będzie u mnie. Takie sytuacje wynikają z wybranego przez Was emulatora, dostępnego obrazu oprogramowania routera / przełącznika lub konfigurcaji wirtualnych interfejsów.

Szukamy root bridge

Wyświetlmy formacje o aktualnym root bridge dla naszej instancji STP na przłączniku S1 oraz S2.

S1#show spanning-tree root

Screenshot

S2#show spanning-tree root

Screenshot

Na przełączniku S1 koszt wynosi 0 i nie mamy podanych root portów ponieważ to własnie ten przełącznik został wytypowany jako root bridge.

Root Port, Designated Port, Alternate Port

Zobaczmy w jakim trybie pracują porty na każdym z przełączników.

S1#show spanning-tree

S2#show spanning-tree

S3#show spanning-tree

Screenshot

Screenshot

Screenshot

  • Root Port (RP) – port prowadzi w stronę root bridge.
  • Designated Port (DP) – aktywny port wybrany na każdym połączeniu.
  • Alternate Port (Altn) – port zapasowy, który trzyma blokadę i jest gotowy do pracy w razie awarii.

Zmiana root bridge dla VLAN1 i VLAN2

Zamieszamy trochę w konfiguracji naszych przełączników. S1 będzie pełnił rolę root bridge dla VLAN1, natomiast S2 będzie pełnił rolę root bridge dla VLAN2.

Na przełączniku S1:

S1(config)#spanning-tree vlan 1 root primary
S1(config)#spanning-tree vlan 2 root secondary

Na przełączniku S2:

S2(config)#spanning-tree vlan 1 root secondary
S2(config)#spanning-tree vlan 2 root primary

Sprawdźmy jak wygląda koszt pomiędzy przełącznikami względem VLAN-ów.

S1#show spanning-tree root

S2#show spanning-tree root

Screenshot

Screenshot

Zmiana kosztów połączenia między przełącznikami

Koszt STP wyliczany jest na podstawie przepustowości łącza. Im szybsze łącze, tym niższy koszt, co oznacza, że jest ono preferowane przy wyborze ścieżki do root bridge.

Na przełączniku S3 zmienimy koszt dla VLAN2 na interfejsach ethernet0/2-3.

S3#show spanning-tree 

Screenshot

Teraz wprowadźmy małą aktualizację.

S3(config)#interface range ethernet 0/2-3
S3(config-if-range)#spanning-tree vlan 2 cost 10

Ponownie sprawdzamy koszt.

S3#show spanning-tree 

Screenshot

Zmiana przełącznika pełniącego rolę root bridge

Żeby inny przełącznik został root bridgem, musimy ustawić niższy priorytet na wybranym przełączniku niż na pozostałych. Spróbujmy zatem wykorzystać do tego przełącznik S3.

S3(config)#spanning-tree vlan 1-4094 priority 0 
S3#show spanning-tree root 

Screenshot

Portfast i BPDU Guard

PortFast na porcie przełącznika powoduje, że port natychmiast przechodzi do stanu forwarding, omijając standardowe stany STP (listening i learning). W praktyce przekłada się to na szybsze łączenie urządzeń końcowych z siecią ale skonfigurowane na portach łączących inne przełączniki może spowodować powstawanie pętli!

Skonfigurujemy dwa interfejsy na przełączniku S3 aby działały w trybie portfast.

S3(config)#interface range ethernet 0/2-3
S3(config-if-range)#spanning-tree portfast

Do ochrony przed połączeniem innego przełącznika do skonfigurowanych portów użyjemy komendy:

S3(config-if)# spanning-tree bpduguard enable

MST

Przywracamy nasze przełączniki do stanu fabrycznego i na każdym z nich tworzymy prostą konfigurację. $ pod tym znakiem będzie cyfra 1,2,3 aby nie powielać ponownie tekstu 😄

Tryb konfiguracyjny i zmiana nazwy urządzenia.

inserthostname-here#configure terminal
inserthostname-here#hostname S$

Uruchamiamy Rapid Per-VLAN Spanning Tree (PVST) na przełączniku.

S$(config)#spanning-tree mode rapid-pvst

Tworzymy dodatkowy VLAN.

S$(config)#vlan 2
S$(config-vlan)#name vlan2
S$(config)#vlan 3
S$(config-vlan)#name vlan3
S$(config)#vlan 4
S$(config-vlan)#name vlan4
S$(config)#vlan 5
S$(config-vlan)#name vlan5

Interfejsy pomiędzy przełącznikami będą pracowały w trybie trunk.

S$(config)#interface range ethernet $0/$-$
S$(config-if-range)#switchport trunk encapsulation dot1q
S$(config-if-range)#switchport mode trunk 

Dla lepszego obrazu sprawy MST uruchomimy na S1 oraz S2.

S1(config)#spanning-tree mode mst

S2(config)#spanning-tree mode mst

Podczas sprawdzenia STP na S1 zauważycie, że interfejsy skierowane do S3 mają typ P2p Bound(PVST).

S1#show spanning-tree

MST informuje nas, że po drugiej stronie łącza nie ma innego urządzenia z identyczną konfiguracją MST, więc traktuje ten link jako połączenie do urządzenia PVST, a sam interfejs przechodzi w tryb kompatybilności, aby umożliwić współpracę MST z PVST.

Screenshot

Przechodzimy do najważniejszej konfiguracji na S1. Tworzę region MST o nazwie admin1234, wersja 1. Do tego dochodzą dwie instancje obsługujące VLAN2 i VLAN4, a pozostałe trafiają do domyślnej instancji MST0 utworzonej na samym początku.

S1(config)#spanning-tree mst configuration 
S1(config-mst)#name admin1234
S1(config-mst)#revision 1
S1(config-mst)#instance 1 vlan 2
S1(config-mst)#instance 2 vlan 4

Sprawdźmy regiony MST na S1 oraz S2

S1#show spanning-tree mst

S2#show spanning-tree mst

Screenshot

Screenshot

Przełączniki nie synchronizują ustawień regionów automatycznie, ponieważ to my jesteśmy odpowiedzialni za jak najwydajnieszą konfigurację STP. Skonfigurujmy naalogicznie S2.

S2(config)#spanning-tree mst configuration 
S2(config-mst)#name admin1234
S2(config-mst)#revision 1
S2(config-mst)#instance 1 vlan 2
S2(config-mst)#instance 2 vlan 4

Sprawdźmy teraz jak wygląda połączenie z root bridge między przełącznikami z MST.

S1#show spanning-tree root

Screenshot

Success

Wszystkie przykłady są tylko formą zainteresowania danym zagadnieniem. Zachęcam do zapoznania się ze szczegółami zawartymi w dokumentacji autora lub producenta 😄


🕞 Ostatnia aktualizacja 09.03.2025