Redundance a Spanning Tree
Proč jedna linka nestačí: smyčky a broadcast storm, Spanning Tree (root bridge, stavy portů), RSTP, EtherChannel.
Lekce 1: Smyčka, která zabije síť
Chceme zálohu
Z kurzu Zabezpečení sítě víš, že jeden prvek nebo linka = jediný bod selhání (anglicky SPOF – single point of failure; na ten termín narazíš běžně). Tady to vyřešíme – a narazíme na nečekaný problém. Mezi dvěma switchi vede jeden kabel. Když přestřihneš ten kabel (nebo se porouchá), půlka sítě se odřízne. Logické řešení: přidat záložní kabel. Jenže právě tím si – jak hned uvidíš – můžeš síť úplně položit.
Krok za krokem
- Dva switche, jeden kabel mezi nimi. PC1 přes ně dosáhne na SERVER. Funguje – dokud ten kabel drží.
- Kabel praskne → SW-B (a SERVER) se odřízne. Jediný bod selhání. Chceme zálohu.
- Přidáš druhý kabel jako zálohu. Teď výpadek jednoho přežiješ… ale máš mezi switchi smyčku (dvě cesty). A to je, světe div se, katastrofa – další modul.
Broadcast storm
Vzpomeň si na broadcast z kurzu Switching a VLANy: switch ho rozešle na všechny porty. Teď máš mezi switchi dvě linky (smyčku). PC pošle jeden broadcast – SW-A ho pošle po obou linkách na SW-B. SW-B ho zase rozešle na všechny porty… včetně té druhé linky zpátky na SW-A. A znovu. Rámec se nekonečně točí a množí – každý switch pošle kopii na každý port, takže z jednoho rámce jsou hned dva, čtyři, osm… a během vteřin zahltí všechny linky. Tomu se říká broadcast storm – a síť spadne.
Krok za krokem
- PC pošle jeden broadcast (třeba ARP) na SW-A. Zatím nic zvláštního.
- SW-A ho rozešle na všechny porty → po obou linkách na SW-B. Broadcast se rozdvojil.
- SW-B ho taky rozešle na všechny porty – včetně druhé linky zpět na SW-A. Ten zas… Rámec krouží dokola a množí se.
- Za pár vteřin je smyčka plná kopií jednoho broadcastu. Linky se ucpou, switche přetížené – celá síť spadne. Jedna smyčka, totální výpadek.
MAC nestabilita
A je tu druhá zákeřnost smyčky: nestabilní MAC tabulka. Switch se učí, na kterém portu je která MAC adresa (kurz ISO/OSI a TCP/IP: mapa sítě). Když rámec od PC krouží smyčkou, dorazí k SW-A jednou z jednoho portu, podruhé z druhého. Switch tak vidí stejnou MAC střídavě na dvou portech a pořád ji přepisuje (tzv. MAC flapping). Tabulka přestane dávat smysl a switch neví, kam co posílat. K bouři se přidá chaos v adresách.
Krok za krokem
- SW-A se naučí: MAC PC je na portu 1 (kam je PC přímo připojené). Správně.
- Ale kopie rámce obkroužila smyčku a přišla z portu 2. SW-A si pomyslí: „aha, PC je teď na portu 2" a přepíše tabulku.
- A pořád dokola: port 1, port 2, port 1… MAC flapping. Switch už netuší, kam PC patří, a doručování se rozpadá. Smyčka ničí síť dvojím způsobem – bouří i chaosem v MAC.
- Vyzkoušej si to. V simulátoru postav smyčku ze dvou switchů (dvě linky mezi nimi), zapni si Pokročilý režim a otevři modál každého switche → STP režim → Vypnuto. Linky ve smyčce zčervenají a začnou blikat s cedulkou „BOUŘE". Pak zapni na jednom switchi RSTP – bouře zmizí a jedna linka se změní na „STP blok" (záloha). Přesně tenhle rozdíl teď probereme.
- Závěr: záložní linka je nutná, ale aktivní smyčka je smrtelná. Potřebujeme zálohu, která nedělá smyčku, dokud není potřeba. Přesně to řeší Spanning Tree – další lekce (a uvidíš ho v akci v simulátoru).
Lekce 2: Spanning Tree
Myšlenka STP
Chceme zálohu, ale ne smyčku. Spanning Tree Protocol (STP) to vyřeší elegantně: switche si mezi sebou popovídají, najdou smyčky a u každé logicky zablokují jeden port, takže zůstane strom bez smyčky (odtud „spanning tree" – kostra). Záložní linka tam fyzicky je, ale STP ji drží zablokovanou, dokud není potřeba. Žádná bouře – a přesto redundance. Tohle celé běží i v tomhle simulátoru.
Krok za krokem
- Tři switche propojené do kruhu = smyčka. Bez ochrany by tu hned byl broadcast storm.
- Zapneme STP. Switche si vymění zprávy (BPDU), poznají smyčku a domluví se, který port obětovat.
- STP zablokuje jeden port (tady linku SW2–SW3). Smyčka je pryč → strom bez smyčky. Žádná bouře, provoz teče.
- A pozor: ten kabel fyzicky pořád je – jen je logicky vypnutý. Když hlavní cesta spadne, STP ho zapne. Záloha bez smyčky! Jak STP vybere, co zablokovat, jsou další moduly.
Root bridge
Aby se switche domluvily, který port zablokovat, potřebují jeden pevný bod – kotvu, od které se celý strom staví. Tomu se říká root bridge (kořenový switch). Volí se automaticky: každý switch má bridge ID (priorita + jeho MAC adresa) a vyhrává nejnižší. Root je střed sítě – od něj se měří vzdálenosti a podle nich se rozhoduje, které porty zůstanou aktivní. Prioritu lze nastavit, takže si root můžeš zvolit ty (ideálně nejvýkonnější centrální switch).
Krok za krokem
- Tři switche. Každý má své bridge ID (priorita + MAC). Než se postaví strom, musí se vybrat root.
- Switche si porovnají bridge ID a nejnižší vyhrává: tady SW1 se stává root bridge – kotvou celého stromu.
- Od rootu se teď měří, jak je každý switch daleko (cena cesty). Podle toho se rozhodne, které porty zůstanou a který se zablokuje – další modul.
Stavy portů
STP nevypíná celé switche, ale jednotlivé porty. Port může být ve dvou hlavních stavech: forwarding (přeposílá provoz – normální funkce) nebo blocking (provoz nepřeposílá, jen poslouchá STP zprávy, aby věděl, kdyby se měl zapnout). Zablokovaný port tedy není „mrtvý" – je to připravená záloha, která jen mlčí. (Při přepínání projde port ještě krátkými mezistavy listening a learning, než začne přeposílat – proto klasické STP chvíli trvá.)
Krok za krokem
- Porty na cestě ke stromu jsou ve stavu forwarding – normálně přeposílají provoz. Tudy data tečou.
- Redundantní port (SW2–SW3) je ve stavu blocking: provoz nepřeposílá, ale poslouchá STP. Tím je smyčka rozpojená.
- Blokovaný port není mrtvý – je to tichá záloha. Kdykoli bude potřeba, STP ho přepne na forwarding. (Klasické STP to chvíli trvá kvůli mezistavům listening/learning – to zrychlí RSTP, další lekce.)
Výběr blokovaného portu
Který port se tedy zablokuje? STP počítá cenu cesty k rootu (podle rychlosti linek – rychlá = levná). Na každé lince mezi dvěma switchi vyhraje port toho switche, který je blíž k rootu (ten zůstane forwarding); port toho vzdálenějšího se zablokuje. Při shodě rozhodne nižší bridge ID. Zjednodušeně: STP nechá u každé smyčky aktivní tu cestu, která vede nejlevněji k rootu, a tu „navíc" obětuje.
Krok za krokem
- SW1 = root. SW2 i SW3 jsou od něj jeden skok (přímá linka). Tyhle linky k rootu zůstanou forwarding.
- Zbývá přebytečná linka SW2–SW3 (ta dělala smyčku). Oba její konce vedou k rootu jinou, lepší cestou. Tahle linka je navíc.
- STP ji zablokuje na konci toho switche, který je k rootu „dál" (vyšší cena / vyšší bridge ID). Smyčka zmizí, nejlepší cesty k rootu zůstanou. Cenu linky si v simulátoru nastavíš sám a uvidíš, jak se blok přesune.
Výpadek a přepnutí
A teď to nejlepší – proč to celé děláme. Když aktivní linka spadne, STP to pozná, přepočítá strom a zablokovaný port přepne na forwarding. Záloha naskočí sama a síť běží dál. Získal jsi redundanci bez smyčky i bez bouře. Přesně tohle si teď vyzkoušíš v simulátoru: v úloze stp-loop je zapojená smyčka, STP automaticky zablokoval jeden port (uvidíš „STP blok"), provoz přesto teče – a když shodíš aktivní switch, záloha se zapne.
Krok za krokem
- Normální stav: strom přes SW1, záložní linka SW2–SW3 blokovaná. PC1 dosáhne na SRV. Vše OK.
- Linka SW1–SW3 spadne. SW3 (a SRV) ztratí cestu k rootu. Klasicky by tu byl výpadek – ale máme zálohu.
- STP přepočítá strom a odblokuje SW2–SW3 (přepne na forwarding). SRV je dostupný přes SW2. Síť se opravila sama.
- To je celé STP: záloha bez smyčky, automatické přepnutí při výpadku. Otevři úlohu stp-loop a vyzkoušej si to naživo – shoď switch a sleduj, jak se blok přesune.
Lekce 3: RSTP a PortFast
Proč je klasický STP pomalý
STP má jednu nepříjemnost: je pomalý. Klasický (původní) STP nechá port před přepnutím na forwarding projít mezistavy – listening a learning – a každý trvá kolem 15 vteřin. Dohromady to dělá 30 až 50 sekund, než po výpadku záloha naskočí nebo nově zapojené zařízení začne komunikovat. To je v dnešní síti věčnost (hovor spadne, aplikaci vyprší čas). Proto vznikla rychlejší verze – RSTP (další modul).
Krok za krokem
- Po výpadku (nebo zapojení) port začíná v Blocking – nepřeposílá, jen poslouchá.
- Pak Listening (~15 s): port poslouchá BPDU, ale ještě nepřeposílá ani se neučí MAC.
- Pak Learning (~15 s): port už se učí MAC adresy, ale pořád nepřeposílá provoz.
- Teprve teď Forwarding. Celé to trvalo 30–50 s – příliš dlouho. RSTP to zkrátí na ~vteřinu (další modul).
RSTP: rychlá konvergence
RSTP (Rapid Spanning Tree, 802.1w) dělá přesně totéž co STP – jen mnohem rychleji. Místo čekání na pevné časovače se sousední switche aktivně domluví (mechanismus „proposal / agreement"): jeden navrhne „budu přeposílat", druhý hned souhlasí. Konvergence tak spadne z desítek sekund na zlomky sekundy (~1 s). Dnes je RSTP standard – klasický STP už skoro nepotkáš. Myšlenka (root, blokovaný port) zůstává stejná, jen rychlost je jinde. Kromě RSTP existují i další varianty (např. MSTP kvůli škálování a PVST+ od Cisco – strom zvlášť na každou VLANu, tak to počítá i tenhle simulátor); pro pochopení principu je znát nemusíš.
Krok za krokem
- Nahoře klasický STP: port se rozjíždí dlouho (30–50 s) – marker leze pomalu přes celou lištu. Dole RSTP: skoro hned.
- RSTP nečeká na časovače – sousedé si aktivně řeknou „já přeposílám / souhlasím" a port naskočí během ~1 vteřiny.
- Princip (root, blokovaný port, strom) je stejný jako u STP – RSTP jen výrazně zrychlí přepnutí po výpadku. Proto je dnes výchozí volbou.
PortFast
Pomalé přepínání vadí hlavně u access portů – těch, kam je připojené koncové zařízení (PC, tiskárna). Tam žádná smyčka vzniknout nemůže (na druhém konci není switch), takže nemá smysl čekat 30 sekund, než PC po zapnutí dostane síť. PortFast takový port nechá okamžitě přeposílat – přeskočí mezistavy. Výsledek: PC má síť hned po zapojení. Pozor: PortFast patří jen na access porty ke koncovým zařízením, nikdy mezi switche.
Krok za krokem
- Na tomhle portu je PC, ne switch. Smyčka tu vzniknout nemůže. Tak proč čekat 30 s?
- S PortFast port přeskočí mezistavy a přeposílá okamžitě. PC má síť hned po zapnutí.
- Důležité pravidlo: PortFast jen na access porty ke koncovým zařízením. Kdybys ho dal omylem mezi switche, vrátil bys riziko smyčky bez ochrany. Proto se PortFast chrání – další modul.
BPDU Guard
PortFast je rychlý, ale důvěřivý – předpokládá, že na access portu je koncové zařízení, ne switch. Co když někdo (omylem nebo schválně) do takové zásuvky zapojí switch? Vznikla by nechráněná smyčka nebo by cizí switch mohl převzít roli root bridge. BPDU Guard to pohlídá: access port s PortFastem by nikdy neměl dostat STP zprávu (BPDU). Jakmile nějaká přijde, BPDU Guard port okamžitě vypne (err-disabled). Bezpečné a jednoduché.
Krok za krokem
- Access port s PortFastem – očekává se tu PC. Vše v pořádku, port přeposílá hned.
- Jenže někdo do té zásuvky zapojil switch a ten začne posílat BPDU. Na PortFast portu se to nemá stát – hrozí smyčka nebo přebrání rootu.
- BPDU Guard zareaguje: jakmile na PortFast portu uvidí BPDU, port okamžitě vypne. Cizí switch je odpojen, smyčka nevznikne, root zůstává tvůj. Bezpečno.
Lekce 4: EtherChannel
STP plýtvá šířkou pásma
STP nás zachránilo před smyčkou – ale za cenu, kterou je teď vidět. Mezi dvěma switchi máš dvě linky (třeba 2× 1 Gb/s), jenže STP jednu zablokuje. Takže ač jsi natáhl dva kabely, reálně využiješ jen jeden (1 Gb/s); druhý jen leží jako záloha a plýtvá šířkou pásma. Co kdybychom uměli mít zálohu a zároveň využít obě linky najednou? To řeší EtherChannel.
Krok za krokem
- Natáhl jsi dva kabely mezi SW-A a SW-B – kvůli záloze i kvůli výkonu. Logicky chceš 2 Gb/s.
- Jenže STP jednu linku zablokuje (jinak smyčka). Druhý kabel leží ladem. Reálně máš jen 1 Gb/s – polovinu jsi zaplatil nadarmo.
- Chceme obojí: redundanci i plnou kapacitu. Řešení: přesvědčit switche, aby ty dva kabely braly jako jednu linku – pak není co blokovat. To je EtherChannel (další modul).
Svaž je v jednu
EtherChannel (taky „port channel" nebo link aggregation) sváže víc fyzických linek do jedné logické. Oba switche se domluví, že ty např. čtyři kabely berou jako jeden velký port. Co z toho plyne: STP vidí jen jednu linku → nemá co blokovat → žádné plýtvání. Šířka pásma se sečte (4× 1 Gb/s = až 4 Gb/s). A když jeden kabel ze svazku praskne, ostatní jedou dál (jen s menší kapacitou) – redundance je uvnitř. Jeden chytrý trik vyřeší výkon i zálohu.
Krok za krokem
- Mezi switchi vede víc kabelů (tady čtyři). Bez EtherChannelu by STP nechal aktivní jen jeden.
- EtherChannel je sváže do jedné logické linky. Oba switche je teď berou jako jeden port.
- STP teď vidí jednu linku → nic neblokuje. Provoz jede po všech kabelech, kapacita se sečte (4× 1 Gb/s). Žádné plýtvání.
- A když jeden kabel praskne, svazek běží dál po zbývajících (jen s menší kapacitou). Redundance i výkon v jednom. Jak se svazek vytvoří, je další modul (LACP).
LACP
Jak switche poznají, že mají ty kabely svázat? Můžeš to nastavit natvrdo ručně na obou stranách – jenže když se spleteš (jedna strana svazek má, druhá ne), vznikne smyčka. Bezpečnější je LACP (Link Aggregation Control Protocol): oba switche si vymění zprávy a domluví se, že linky agregují. Svazek vznikne, jen když obě strany souhlasí. Když ne, porty zůstanou samostatné (a STP je pohlídá). Proto se v praxi používá LACP, ne ruční nastavení.
Krok za krokem
- Switche si přes LACP vymění zprávy: „chceš agregovat tyhle porty?" Když obě strany souhlasí…
- …vznikne svazek. Bezpečně – obě strany ho mají stejně, takže nehrozí smyčka z nedorozumění.
- A kdyby souhlasila jen jedna strana, LACP svazek nevytvoří – porty zůstanou samostatné a STP je pohlídá. Proto je LACP bezpečnější než ruční nastavení.
Load balancing
Poslední otázka: když je ve svazku víc kabelů, jak se mezi ně rozdělí provoz? EtherChannel použije hash z adres (zdroj/cíl IP nebo MAC): podle něj každé spojení dostane jeden konkrétní kabel ze svazku. Tím se provoz rozprostře a žádný kabel se nepřetíží. Pozor: jeden tok (jeden přenos) jede pořád jen po jednom kabelu – takže jeden obří přenos nezrychlíš nad rychlost jedné linky; výhoda je v součtu mnoha spojení. A jak víš, při výpadku jednoho kabelu se hash přepočítá a jede se dál.
Krok za krokem
- Víc spojení (různé barvy) se podle hashe z adres rozdělí mezi kabely – každé spojení svůj kabel. Provoz je rovnoměrně rozprostřený.
- Ale pozor: jeden tok (jeden velký přenos) jede pořád po jednom kabelu. EtherChannel zrychlí součet mnoha spojení, ne jeden obří soubor.
- Když jeden kabel vypadne, jeho spojení se přehashují na zbylé kabely a běží dál. Redundance, výkon i vyvážení – to je celý EtherChannel.
Lekce 5: Trunk do hloubky a syntéza
VLAN pruning
Trunk ve výchozím stavu nese všechny VLANy. Jenže ne každý switch každou VLANu potřebuje. Tady SW-B nemá VLAN 30 – přesto by se k němu po trunku tahaly i broadcasty z VLAN 30, které tam nemají co dělat (zbytečně zabírají pásmo a zatěžují SW-B). VLAN pruning tomu zabrání: na trunku povolíš jen ty VLANy, které druhá strana opravdu používá. Méně zbytečného provozu, čistší síť.
Krok za krokem
- SW-A má VLANy 10, 20, 30. SW-B jen 10 a 20 (VLAN 30 tam vůbec není). Trunk mezi nimi nese ve výchozím stavu všechny.
- Broadcast ve VLAN 30 se přesto tahá po trunku až na SW-B – kde VLAN 30 vůbec není. Zbytečné pásmo a zátěž.
- Pruning: na trunku povolíš jen V10 a V20. VLAN 30 se přes něj už nepřenáší – broadcasty zůstanou tam, kde mají. Čistší a rychlejší síť.
Native VLAN a VLAN hopping
Vzpomeň na native VLAN z kurzu Switching a VLANy (neoznačený provoz na trunku – VLANy se jinak na trunku rozlišují značkou/tagem s číslem VLANy). Tady je bezpečnostní past: když je native VLAN trunku ponechaná jako výchozí VLAN 1 – tedy tatáž, ve které může sedět útočník – může útočník provést VLAN hopping (víc v kurzu Switch do hloubky) – „dvojitým otagováním" rámce proklouznout do cizí VLANy, na kterou by neměl mít přístup (první switch sundá vnější tag, protože odpovídá jeho native, a odkryje vnitřní – krok za krokem níže). Obrana: pro native VLAN použít vyhrazenou nevyužitou VLANu (ne VLAN 1, ve které jsou uživatelé), nastavit ji na obou koncích stejně a ideálně neoznačený provoz na trunku zakázat.
Krok za krokem
- Native VLAN trunku je ponechaná jako výchozí VLAN 1 – tatáž, ve které sedí útočník. To je díra, kterou útok využije.
- Útočník vyrobí rámec se DVĚMA 802.1Q tagy: vnější VLAN 1 (native trunku) a pod ním vnitřní VLAN 20 (tajná cílová VLANa).
- SW-A se podívá na vnější tag = VLAN 1 = jeho native → tag sundá a rámec pošle po trunku dál. Zůstane odkrytý vnitřní tag VLAN 20.
- SW-B přečte zbylý tag VLAN 20 a doručí rámec do tajné VLANy, kam útočník nemá přístup. VLAN hopping – a je to jednosměrné (odpověď se stejnou cestou nevrátí).
- Obrana: native VLAN na obou koncích stejná a nastavená na nevyužitou VLANu (ne VLAN 1). Pak nemá vnější tag co „zneužít" a útok padá.
Redundantní síť pohromadě
Dáme to dohromady do odolné sítě. Dvě distribuční switche (DIST-1, DIST-2) spojené EtherChannelem (plná kapacita), pod nimi access switche (ACC-A, ACC-B), ke kterým jsou PC a servery. Každý access switch je zdvojeně připojený nahoru (na obě distribuce) – takže když jedna cesta nebo switch padne, je tu druhá. A aby ty zdvojené linky nedělaly smyčku, hlídá je STP/RSTP (blokuje, co je navíc, a po výpadku přepne). Redundance na všech úrovních, žádná bouře.
Krok za krokem
- Nahoře dvě distribuční switche, spojené EtherChannelem – obě linky využité, redundance uvnitř svazku.
- Dole access switche s PC a servery. Každý je zdvojeně připojený nahoru – na obě distribuce. Když jedna padne, druhá drží.
- Ty zdvojené uplinky tvoří smyčky – proto je hlídá STP/RSTP: jeden z nich drží blokovaný (záloha), aby nevznikla bouře.
- Výsledek: žádný jediný bod selhání na L2. EtherChannel dává kapacitu, dvojité připojení a STP/RSTP dávají odolnost. Co se stane při výpadku, je poslední modul.
Výpadek a co dál
Závěrečná zkouška návrhu: něco spadne. Třeba switch DIST-1 nebo jeho linka. V ploché síti bez redundance by to znamenalo výpadek. Tady ne: STP/RSTP přepočítá strom, odblokuje záložní uplink a provoz během vteřiny teče přes DIST-2. Uživatel si ničeho ani nevšimne. To je smysl celého kurzu: redundance + STP/RSTP + EtherChannel = síť, která přežije výpadek. A co dál? Máš za sebou L2 i L3 základ; pokračuje se kurzem OSPF do hloubky a dál – OSPF do hloubky a bezpečnost sítě.
Krok za krokem
- Normální stav: ACC-A jede přes DIST-1 (hlavní uplink), záložní uplink na DIST-2 je blokovaný.
- DIST-1 (nebo jeho linka) spadne. Hlavní uplink ACC-A zmizel. V síti bez zálohy by tu byl výpadek.
- RSTP to ale do vteřiny vyřeší: odblokuje záložní uplink, ACC-A teď jede přes DIST-2. Bez výpadku.
- A to je celý kurz o redundanci a STP: postavil jsi síť, která přežije výpadek, a rozumíš, jak to dělá. Gratuluju – máš solidní základ L2 i L3 sítí. A jede se dál: v kurzu OSPF do hloubky tě čeká OSPF do hloubky a potom bezpečnost sítě. Uvidíme se tam!