Spanning-Tree je protokol, ktorý rieši problém s L2 slučkami v prepínaných sieťach.
Princíp fungovania tohto protokolu spočíva v tom, že v topológií buduje strom a všetky
redundantné linky softvérovo vypne, čoho dôsledok je, že v topológií je stále aktívna len
jedna
cesta medzi akýmikoľvek dvoma miestami. Komunikácia medzi prepínačmi v rámci STP
prebieha využitím BPDU, kde BPDU je dátová jednotka prenášajúca informácie o prepínačoch
a ceste ku koreňovému prepínaču (od ktorého sa začína vytvárať STP strom).
Roly portov a ich voľba
V rámci klasického STP definujeme tri roly portov a to: root, designated a nondesignated
(alternate) port. Voľba toho, v akej roly sa port nachádza prebieha na základe
porovnávania BPDU. BPDU je možné porovnávať na základe viacerých charakteristík, no
vo
všeobecnosti platí, že nižšia hodnota danej charakteristiky vyhráva. Najlepšie
BPDU nazývame
„Superior BPDU“ a horšie BPDU nazývame „Inferior BPDU“.
Základné pojmy
Bridge ID (BID)
Táto hodnota slúži na jedinečné identifikovanie každého
prepínača
v topológii. BID pozostáva z dvoch hlavných častí a to konfigurovateľnej Bridge
priority
a MAC adresy. Pričom priorita pozostáva z hodnoty priority + čísla VLAN.
Bridge priorita môže nadobúdať hodnoty z rozsahu <0 ; 61 440>, pričom štandardná
hodnota je 32 768. Prioritu je možné konfigurovať v hodnotách násobkov čísla
4096.
Pri porovnávaní tejto hodnoty sa najskôr porovná Priorita, v prípade ak je
priorita rovnaká, tak sa porovná MAC adresa.
Port ID (PID)
Táto hodnota slúži na jedinečné identifikovanie každého
rozhrania
v topológii. PID pozostáva taktiež z dvoch častí a to konfigurovateľnej
Port-Priority
a čísla rozhrania. Číslo rozhrania sa určuje nasledovne (Napr. Fa0/1 má číslo
rozhrania
1, Fa0/24 má číslo rozhrania 24. Ak pokračujeme ďalej a prepínač má aj Gigabitové
rozhrania, tak číslovanie pokračuje – teda napr. Gi0/1 bude mať číslo rozhrania 25).
Port-Priorita môže nadobúdať hodnoty z rozsahu <0 ; 255>, pričom štandardná
hodnota je 128. Port-Prioritu je možné konfigurovať v násobkoch čísla 16. Pri
porovnávaní tejto hodnoty sa najskôr porovná Port-Priorita, v prípade, ak je
PortPriorita rovnaká, tak sa porovná číslo rozhrania.
Cost
Táto hodnota uchováva informáciu o najlepšej kumulatívnej cene ku
koreňovému prepínaču z pohľadu nášho prepínača, na ktorom porovnávame BPDU.
Počíta sa ako súčet cien rozhraní, cez ktoré je potrebné prejsť, aby sme sa dostali
ku
koreňovému prepínaču. Na tomto predmete budeme pracovať s Fa a Gi rozhraniami,
pričom ceny týchto rozhraní sú nasledovné: Fa = 19 a Gi = 4.
BPDU
Je dátová jednotka, ktorá slúži na komunikáciu medzi prepínačmi a nesie
v sebe
množstvo údajov ako napr. Cost, BID suseda, BID koreňového prepínača, PID a pod.
Výsledné BPDU
Je BPDU, ku ktorému sme po jeho prijatí na našom rozhraní
pripočítali
k hodnote Costu hodnotu costu nášho rozhrania. Napríklad, ak v BPDU, ktoré sme
prijali od suseda je hodnota costu 19 a dané BPDU sme prijali cez Gi rozhranie, tak
výsledné BPDU bude mať hodnotu costu 19 + 4 = 23. To znamená, že na to, aby sme sa
dostali z nášho prepínača ku koreňovému prepínaču potrebujeme prejsť cez jedno Fa
a jedno Gi rozhranie.
Pravidlá a poradie pri porovnávaní BPDU
Porovnanie BPDU je možné na základe 4 hlavných charakteristík, pričom je presne určené
poradie porovnania daných charakteristík. Vo chvíli, keď sme schopní rozhodnúť, ktoré BPDU
je lepšie podľa porovnávanej charakteristiky, tak v tej chvíli končíme s porovnávaním.
Poradie,
v ktorom porovnávame charakteristiky BPDU je nasledovné:
Root Path Cost (RPC): Kumulatívna cena ku koreňovému prepínaču.
Sender Bridge ID (SBID): BID prepínača, od ktorého sme prijali BPDU.
Sender Port ID (SPID): PID rozhrania prepínača, od ktorého sme prijali BPDU.
Receiver Port ID (RPID): PID nášho rozhrania, cez ktoré sme prijali BPDU. Využíva
sa
výnimočne, ak sa medzi našim prepínačom a susedným prepínačom nachádza HUB.
Postup pri riešení úloh na STP
Jedná sa o úlohy, kde je potrebné určiť roly jednotlivých rozhraní a znázorniť vytvorený STP
strom. Pri riešení odporúčam postupovať nasledovne:
Voľba koreňového prepínača (Root Bridge - RB):
Koreňovým prepínačom sa stáva
prepínač s najnižším BID v topológii
Voľba práve jedného Root Portu (RP) na každom nekoreňovom prepínači:
Root portom
sa stáva rozhranie, ktoré prijme najlepšie výsledné BPDU (obohatené
o cost rozhrania).
Voľba práve jedného Designated portu (DP) pre každý segment:
Segment je kolízna
doména = jednoducho povedané prepoj medzi prepínačmi.
Designated port je rozhranie, ktoré do daného segmentu posiela lepšie BPDU.
Všetky zvyšné rozhrania sú non-designated (NDP/ALT):
Pozn1.: Každý prepínač odosiela susedným prepínačom stále najlepšie
výsledné BPDU,
ktoré prijal.
Pozn2.: Odporúčam si na každom prepínači zaznačiť hodnotu najlepšieho
Costu ku
koreňovému prepínaču.
Pozn3.: Všetky rozhrania na koreňovom prepínači sú automaticky
Designated, pretože
posielajú do daného segmentu najlepšie BPDU (keďže BPDU generuje koreňový
prepínač,
tak Cost v BPDU má hodnotu 0, čo je najlepšia možná hodnota a preto môžeme s
istotou
povedať, že pre dané segmenty sa bude jednať o DP).
Pozn4.: Oproti RP sa musí nachádzať DP.
Vzorovo riešený príklad
Vzorový náhľad sieťovej topológie
Majme nasledujúcu topológiu, pričom platí, že všetky prepínače majú nastavenú
štandardnú Bridge prioritu. Úlohou je určiť koreňový prepínač, všetky roly rozhraní
a zakresliť výsledný strom vytvorený STP protokolom.
1. krok: Určenie koreňového prepínača
Keďže zo zadania je jasné, že všetky prepínače používajú štandardnú Bridge prioritu
(32 768), tak na určenie koreňového prepínača využijeme MAC adresu. Najnižšiu MAC
adresu má prepínač SW1, teda tento prepínač sa stane Root Bridge.
- Podľa poznámky 3 je možné ďalej okamžite určiť rolu všetkých rozhraní na koreňovom
prepínači na Designated.
2. krok: Voľba Root portov na nekoreňových prepínačoch
Koreňový prepínač začne generovať BPDU a posielať ich do topológie. Všetky ďalšie
prepínače po prijatí BPDU pripočítajú cost a posielajú ďalším prepínačom. Takto sa
BPDU od koreňového prepínača dostane ku každému prepínaču v topológii, pričom platí,
že každý prepínač posiela ďalej len najlepšie výsledné BPDU.
Pozrime sa na prepínač SW2. Tento prepínač má 4 rozhrania, pričom cez každé
rozhranie prijme BPDU, no s rôznym costom. Už na prvý pohľad je možné vidieť, že cez
Gi0/1 sme najbližšie ku koreňovému prepínaču. Najlepšie výsledné BPDU teda tento
prepínač prijme na Gi0/1. Prepínač prijme cez toto rozhranie BPDU s costom 0,
následne sa pozrie, cez aké rozhranie BPDU prijal a pripočíta ku costu hodnotu 4
(Gi). Najlepšie výsledné BPDU bude teda mať Cost 4. S týmto costom bude následne
prepínač SW2 odosielať BPDU ďalším susedom.
Pri prepínači SW3 je postup rovnaký. Tento prepínač prijme BPDU cez 4 rozhrania, no
znova je možné vidieť, že najlepšia cesta ku koreňovému prepínaču bude buď cez
rozhranie Fa0/1 alebo Fa0/24. Cez tieto rozhrania prijme výsledné BPDU s costom 19
(Fa). Cez Gi0/1 a Fa0/2 to bude určite vyššia cena. Teraz, keďže sme ale prijali 2
BPDU s rovnakým Costom, tak je potrebné rozhodnúť, ktoré z nich je lepšie, využitím
inej charakteristiky. Ak porovnáme Sender BID, tak sa znova rozhodnúť nevieme, lebo
obe BPDU sú odosielané rovnakým zariadením (SW1). Preto pokračujeme ďalej a
porovnáme Sender PID. Keďže sa v zadaní neuvádza zmena Port-Priority (je rovnaká pre
obe rozhrania), tak sa rozhodneme podľa čísla portu. Nižšie číslo rozhrania je
Fa0/1. Pozor !!! Porovnávame Sender PID – teda Root portom na prepínači SW3 sa stane
rozhranie Fa0/24.
Prepínač SW4 prijme BPDU cez 3 rozhrania. BPDU od SW2 bude mať cost 4 – po
pripočítaní lokálneho costu bude výsledné BPDU mať cost 4+19=23. Od zariadenia SW3
prijme BPDU s costom 19 – po pripočítaní lokálneho costu bude mať výsledné BPDU cost
19+4= 23. Od prepínača SW5 prijmeme BPDU s costom 8 (4 k SW2 a 4 k SW1) – po
pripočítaní 19 (Fa) bude výsledné BPDU mať hodnotu 27. Znova máme teda situáciu,
kedy sa nevieme rozhodnúť na základe Costu (dve BPDU majú hodnotu 23). Pozrieme sa
teda na Sender BID. Keďže Bridge priorita je rovnaká, tak rozhodne MAC adresa, ktorá
je nižšia v BPDU prijatého od prepínača SW2. Teda Root Portom na SW4 sa stáva
rozhranie Fa0/2.
Prepínač SW5 prijme BPDU od SW2 (s costom 4), SW3 (s costom 19) a SW4 (s costom 23).
Po pripočítaní lokálneho costu bude najlepšie výsledné BPDU prijaté rozhraním Gi0/2
– pričom výsledné BPDU bude mať Cost 4+4=8 a teda Gi0/2 sa stane Root Portom.
Podľa poznámky 4 je možné okamžite oproti RP zaznačiť rozhranie ako DP. Tiež podľa
poznámky 2 si ku každému prepínaču poznačme hodnotu costu, aké má najlepšie výsledné
BPDU – zíde sa to neskôr. Aktuálna topológia teda vyzerá nasledovne:
3. krok: Voľba Designated Portu na každom segmente
Na každom segmente je potrebné určiť DP. DP sa stáva rozhranie, ktoré do segmentu
posiela lepšie BPDU. Pozrime sa teda na prepojenia, kde sa zatiaľ nenachádza DP.
Prepoj medzi SW2 a SW5 cez Fa0/1. Prepínač SW2 posiela do segmentu BPDU s costom 4 a
SW5 s costom 8. Lepšie BPDU teda posiela SW2 a teda DP bude rozhranie Fa0/1 na SW2.
Prepoj medzi SW5 a SW3. SW5 posiela do segmentu BPDU s costom 8, pričom SW3 s costom
19. DP je teda rozhranie Fa0/2 na prepínači SW5.
Prepoj medzi SW5 a SW4, SW5 posiela do segmentu BPDU s costom 8, pričom SW4 s costom
23. DP pre tento segment je rozhranie Fa0/10 na prepínači SW5.
Prepoj medzi SW3 a SW4. SW3 posiela do segmentu BPDU s costom 19, pričom SW4 s
costom 23. DP je teda rozhranie Gi0/1 na prepínači SW3.
Ak by sa stalo, že do daného segmentu by prichádzali BPDU s rovnakým costom, tak by
sme robili porovnanie využitím ďalších atribútov
4. krok: Všetky ostatné rozhrania budú NDP / ALT:
Keďže sme určili na každom nekoreňovom prepínači práve jeden Root Port a zároveň na
každom segmente práve jeden Designated port, tak všetky ostatné rozhrania musia byť
blokované.
Výsledná topológia vyzerá nasledovne:
5. krok: Výsledná bezslučková topológia
Prepojenia, kde je jedna strana v roly ALT sú softvérovo vypnuté. Výsledná
bezslučková topológia by vyzerala nasledovne:
Konfigurácia
Switch(config)# spanning tree vlan 10 priority 4096 - zmena bridge-priority
Switch(config-if)# spanning-tree vlan 10 port-priority 112 -
zmena port-priority
Switch(config-if)# spanning tree vlan 10 cost 10 - zmena costu
Switch(config)# spanning-tree mode ? - zmena STP módu
Switch# show spanning-tree [vlan id][interface Fa0/1][detail] - overenie
konfigurácie
Packet Tracer aktivita
Táto aktivita slúži na interaktívnejšie precvičenie protokolu
STP.
V tejto aktivite si môžete precvičiť:
Nastavenie/zmena bridge-priority
Nastavenie/zmena port-priority
Nastavenie/zmena costu
Nastavenie/zmena STP módu
Overenie konfigurácie pomocou show príkazu
Táto aktivita je v anglickom jazyku, pretože cieľom tohoto predmetu je aj opakovanie
technickej angličtiny.
Aktivita nie je časovo obmedzená a taktiež nebude ani hodnotená.