OSPF do hloubky
Dynamické routování: proč statika nestačí, jak se OSPF routery najdou (Hello, DR/BDR), sdílená mapa (LSDB), Dijkstra, oblasti, konvergence a OSPF v kontextu.
Lekce 1: Kdy statika nestačí
Ruční cesty nestíhají
V kurzu Routing a IP adresy jsi cesty zadával ručně (statické routy). Pro pár sítí super – ale co když jich máš desítky routerů a stovky sítí? Na každém routeru bys musel ručně udržovat cestu ke každé síti, a při každé změně to všude přepsat. To je neudržitelné a plné chyb. Proto existuje dynamické routování: routery si samy řeknou, jaké sítě znají, a společně spočítají nejlepší cesty. Nejrozšířenější vnitřní protokol je OSPF – jeho princip znáš z kurzu Routing a IP adresy, teď se podíváme pod kapotu.
Krok za krokem
- Síť se čtyřmi routery a dvěma LAN. Představ si, že jich jsou desítky.
- Se statickými cestami bys musel na každém routeru ručně popsat cestu ke každé síti. Noční můra.
- OSPF to dělá automaticky: routery si vymění informace a samy spočítají nejlepší cesty. Jak? To je celý tenhle kurz.
Statika nepřežije výpadek
Druhý problém statiky: nepřežije výpadek. Když spadne linka na hlavní cestě, statická cesta o tom neví – pakety dál míří do slepé uličky, dokud to ručně nepřepíšeš. Existuje sice „floating static" záloha, ale je to berlička. Dynamický protokol výpadek pozná do vteřin, přepočítá a pošle provoz jinudy – sám. Tomu se říká konvergence.
Krok za krokem
- Provoz teče horní cestou R1→R2→R4. Vše běží.
- Linka R1–R2 spadne. Statická cesta o tom neví → pakety padají do prázdna, dokud to někdo ručně nespraví.
- S OSPF by se provoz sám přesměroval spodní cestou R1→R3→R4 během vteřin. To je síla dynamiky.
Myšlenka OSPF
Jak to OSPF dělá? Princip znáš z kurzu Routing a IP adresy – tady ho rozebereme do hloubky, ve třech krocích, které projdeme v dalších lekcích: (1) routery se navzájem najdou a stanou se sousedy. (2) Každý ostatním řekne, co vidí (jaké má linky a sítě) – tím vznikne u všech stejná mapa sítě (LSDB). (3) Z té mapy si každý router spočítá nejkratší cesty ke všem sítím (algoritmus Dijkstra). Proto „link-state": každý zná stav všech linek, ne jen co slyšel od souseda.
Krok za krokem
- Krok 1: routery se navzájem objeví a stanou se sousedy (lekce 2).
- Krok 2: každý řekne, co vidí; vznikne u všech stejná mapa (lekce 3).
- Krok 3: z mapy si každý spočítá nejkratší cesty (Dijkstra, lekce 4). Pojďme krok po kroku.
Lekce 2: Jak se OSPF routery najdou
Hello pakety
Než si routery začnou cokoli sdílet, musí se najít. Na každé OSPF rozhraní posílají malé Hello pakety (multicast na 224.0.0.5 – tj. adresa pro skupinu příjemců, ne všem jako broadcast ani jednomu jako unicast) – něco jako „ahoj, jsem router R1, jsem tu". Když dva routery na stejné lince Hello uvidí a shodnou se na základních parametrech (area, masky, časovače…), poznají se jako sousedé. Hello chodí i dál, periodicky – slouží zároveň jako tep: když přestanou chodit, soused je považován za mrtvého.
Krok za krokem
- R1 posílá Hello na všechna rozhraní: „jsem tu, jsem v area 0…".
- Sousedé odpovídají vlastním Hello. Když parametry sedí, uznají se navzájem za sousedy.
- Hotovo – routery se znají. Hello chodí dál jako tep; když utichne, soused se prohlásí za mrtvého (dead interval).
Sousedství (adjacency)
Pozor na rozdíl: soused ≠ plně navázaný (adjacency). Najít se přes Hello je první krok. Aby si routery opravdu vyměnily databázi linek (LSDB), musí projít několika stavy: od Init a Two-Way (vidíme se navzájem) přes výměnu popisu databáze až po Full – plně synchronizovaní. Teprve ve stavu Full mají oba stejnou mapu. Na běžné point-to-point lince se Full naváže mezi oběma; na sdílené síti se to řeší chytřeji (další modul).
Krok za krokem
- Po Hello jsou R1 a R2 v Two-Way – vidí se. Ještě ale nemají stejnou mapu. (Stavy ukazujeme zjednodušeně.)
- Vymění si popis databáze a doplní, co komu chybí (Exchange/Loading).
- Stav Full: oba mají identickou LSDB. Teď jsou opravdu adjacency a můžou počítat cesty.
DR a BDR
Na sdílené síti (víc routerů na jednom switchi) by se každý navazoval s každým – počet vztahů by explodoval (n×(n−1)/2). OSPF to řeší volbou DR (Designated Router) a zálohy BDR. Všichni navazují Full jen s DR/BDR, ne mezi sebou; DR pak rozesílá změny ostatním. Volí se podle priority (a při shodě router ID). Díky tomu zůstane sdílená síť přehledná i s mnoha routery. (Na point-to-point lince se DR neřeší – jsou tam jen dva.)
Krok za krokem
- Čtyři routery na jedné sdílené síti = až 6 vztahů. S deseti routery 45. Neúnosné.
- Zvolí se DR (a záložní BDR) podle priority. Tady DR = R2, BDR = R3.
- Všichni navazují Full jen s DR. DR rozesílá změny ostatním. Sdílená síť zůstane přehledná.
Lekce 3: Sdílená mapa (LSDB)
LSA: střípek mapy
Teď se routery znají – ale ještě neznají celou síť. Každý zatím ví jen o svých přímých linkách. Proto pošle LSA (Link-State Advertisement) = malý lísteček „já, R1, mám linku k R2 (cena 10) a k R3 (cena 10) a sítě LAN-A". LSA je střípek mapy – popisuje jen okolí jednoho routeru. Když takový lísteček vytvoří každý router, dohromady z nich vznikne kompletní mapa.
Krok za krokem
- R1 vytvoří svůj LSA: „mám linky k R2 a R3 (cena 10) a síť LAN-A".
- To samé udělá každý router – každý popíše jen své okolí. Čtyři routery = čtyři střípky.
- Střípky dohromady = kompletní mapa. Jak se LSA dostanou ke všem, je další modul (flooding).
Flooding
Jak se LSA dostane ke všem routerům? Pomocí floodingu (zaplavení): když router dostane nový LSA, přepošle ho na všechny ostatní rozhraní (kromě toho, odkud přišel). Soused udělá totéž – a tak se LSA lavinovitě rozšíří celou oblastí během chvilky. Aby to nekroužilo donekonečna, má každý LSA sekvenční číslo: duplikát (stejné číslo) router zahodí, a když mu soused nabídne starší verzi, pošle mu zpátky svou novější. Tím flooding spolehlivě skončí.
Krok za krokem
- R1 rozešle svůj LSA sousedům R2 a R3.
- R2 i R3 ho přepošlou dál k R4 (ne zpět odkud přišel). Lavina pokračuje.
- R4 dostane LSA z obou stran – druhý je duplikát, zahodí ho podle sekvenčního čísla. Flooding skončí, mají to všichni.
Stejná LSDB u všech
Po floodingu má každý router v oblasti naprosto stejnou databázi všech LSA – LSDB (Link-State Database). To je ten klíčový rozdíl oproti starším protokolům (distance-vector), kde router věřil jen tomu, co mu řekl soused („z druhé ruky"). Tady má každý kompletní mapu z první ruky. A z identické mapy spočítají všichni stejné, bezesmyčkové cesty. Mapa = pravda, na které se všichni shodnou.
Krok za krokem
- Všechny čtyři routery mají teď identickou mapu sítě (LSDB).
- Z té stejné mapy si každý sám spočítá cesty – a protože je mapa stejná, výsledky do sebe zapadnou bez smyček.
- Jak z mapy vznikne nejkratší cesta? To je algoritmus Dijkstra – příští lekce, bez matematiky.
Lekce 4: Dijkstra bez matematiky
Cena podle rychlosti
OSPF nevybírá cestu podle počtu skoků, ale podle ceny (cost) – a ta jde podle rychlosti linky: rychlá linka = nízká cena, pomalá = vysoká. Cena celé cesty je součet cen linek po ní. Proto OSPF klidně zvolí delší cestu přes víc routerů, pokud je rychlejší (levnější) než jedna pomalá linka. To je chytřejší než jen „nejmíň skoků".
Krok za krokem
- Každá linka má cenu podle rychlosti. Horní cesta R1→R2→R4 = 10+10 = 20. Dolní R1→R3→R4 = 5+5 = 10.
- Obě cesty mají stejný počet skoků (2), ale dolní je levnější (10 < 20) → OSPF zvolí dolní.
- Kdyby ses řídil jen skoky, je to jedno. OSPF je chytřejší: rozhoduje podle rychlosti. Cenu si v simulátoru nastavíš pravým klikem na linku.
Strom nejkratších cest
Algoritmus Dijkstra (SPF – Shortest Path First) zní složitě, ale myšlenka je prostá: každý router se postaví doprostřed mapy a postupně objevuje nejlevnější cestu ke každé síti – vždy si vybere zatím nejbližší neobjevený uzel a od něj počítá dál. Výsledkem je strom nejkratších cest z pohledu toho jednoho routeru (SPF tree). Z něj se naplní routovací tabulka: ke každé síti ten nejlevnější příští skok. Každý router počítá svůj vlastní strom – ale ze stejné mapy, takže to do sebe zapadá.
Krok za krokem
- R1 se postaví doprostřed: cena k sobě = 0. Začne objevovat okolí.
- Najde nejbližší uzel (nejnižší cena), zafixuje ho a počítá dál od něj. Krok za krokem objeví celou síť.
- Výsledek = strom nejkratších cest z R1. Z něj se naplní routovací tabulka. Každý router má svůj strom ze stejné mapy.
V simulátoru
Tohle všechno běží i v tomhle simulátoru. Postav pár routerů s redundantními cestami, pravým klikem na linku nastav cenu – a sleduj, jak se nejlevnější cesta sama přepočítá. Když cenu hlavní cesty zvedneš, provoz přeteče na tu druhou, levnější. Přesně to dělá OSPF: nejde o nejkratší vzdálenost, ale o nejnižší cenu. Vyzkoušej si to v úloze ospf-cost.
Krok za krokem
- Levná dolní cesta (5+5=10) je aktivní.
- Zvedneš cenu dolní cesty na 50+50=100. Teď je dražší než horní (20).
- OSPF sám přepočítá a pošle provoz horem (20 < 100). V simulátoru to uvidíš naživo.
Lekce 5: Oblasti (areas)
Velká oblast = problém
OSPF s jednou velkou mapou je super do určité velikosti. Ve velké síti (stovky routerů) ale jedna obří LSDB znamená: hodně paměti, dlouhý přepočet Dijkstry a každá malá změna zaplaví celou síť. Řešení: rozdělit síť na oblasti (areas). Uvnitř oblasti se routery znají detailně; mezi oblastmi se posílá jen souhrn. Změna v jedné oblasti pak neobtěžuje ostatní.
Krok za krokem
- Malá síť? Jedna oblast stačí. Ale představ si stovky routerů v jedné mapě…
- Velká mapa = hodně paměti, pomalý přepočet a každá změna zaplaví celou síť. To nejde donekonečna.
- Řešení: rozdělit na oblasti. Každá má svou menší mapu; mezi nimi jen souhrn. Detaily v dalším modulu.
Páteř: area 0
OSPF oblasti mají pevné pravidlo: existuje páteřní oblast „area 0" (backbone) a všechny ostatní oblasti se připojují na ni (ne mezi sebou). Provoz mezi dvěma oblastmi vždy projde přes area 0. Díky tomu má topologie oblastí hvězdicový tvar bez smyček a je předvídatelná. Router, který stojí na hranici dvou oblastí, se jmenuje ABR – a ten dělá tu důležitou práci (další modul).
Krok za krokem
- Uprostřed je area 0 – páteř, na kterou se vše napojuje.
- Ostatní oblasti (area 1, 2…) visí na area 0, nikdy ne přímo mezi sebou. Provoz mezi oblastmi jde vždy přes backbone.
- Router na hranici dvou oblastí = ABR. Drží mapu obou a překládá mezi nimi souhrny.
ABR a souhrny
Co přesně ABR dělá: uvnitř každé oblasti zná plnou mapu, ale směrem do druhé oblasti pošle jen souhrn dosažitelnosti – „za mnou jsou sítě oblasti (např. z bloku 10.1.0.0/16) za tuhle cenu", tj. kam se dá dojít a za kolik, ne detailní topologii linek. Tím se v cizí oblasti nezaplaví každá maličkost a mapy zůstanou malé. Když uvnitř oblasti spadne linka, přepočítá se jen ta oblast; ostatní to ani nezaznamenají (souhrn se nezměnil). To je celé kouzlo škálování OSPF.
Krok za krokem
- ABR má plnou mapu obou oblastí.
- Do druhé oblasti pošle jen souhrn – ne všechny detaily. Cizí oblast zůstane malá a klidná.
- Spadne linka v area 0 → přepočítá se jen area 0. Area 1 to nezajímá – souhrn se nezměnil. Tak OSPF škáluje.
Lekce 6: Konvergence
Výpadek a přepočet
Vrátíme se k tomu, proč jsme s OSPF začali: samoopravení po výpadku (konvergence). Když linka spadne, router to pozná (přestane chodit Hello / zhasne rozhraní), vytvoří nový LSA „tahle linka už není", ten se flooduje celou oblastí, všichni si aktualizují mapu a přepočítají Dijkstru. Výsledek: provoz teče jinudy – bez zásahu člověka. Celé to trvá typicky jednotky sekund (když router výpadek pozná okamžitě; jinak až po dead intervalu – další modul).
Krok za krokem
- Provoz teče horní cestou R1→R2→R4.
- Linka R1–R2 spadne. R1 i R2 pošlou nový LSA, ten se floodne, všichni přepočítají mapu.
- Dijkstra najde novou nejlepší cestu R1→R3→R4 a provoz teče dál. Žádný zásah člověka. Hotovo za pár vteřin.
Rychlost: Hello/Dead a BFD
Jak rychle OSPF výpadek pozná? Hlídá ho Hello/Dead interval: Hello chodí pravidelně (ve výchozím nastavení např. každých 10 s) a když po dobu dead intervalu (typicky 4× hello, tedy 40 s) žádný nepřijde, soused se prohlásí za mrtvého. To je řádově vteřiny až desítky vteřin. Když je nutná ještě rychlejší reakce (milisekundy), nasadí se BFD – maličký rychlý „tep" na lince, který OSPF řekne „spadlo to" dřív, než by si toho Hello vůbec všiml. Časovače se dají ladit, ale moc agresivní nastavení zase plodí falešné poplachy.
Krok za krokem
- Hello chodí pravidelně (ve výchozím nastavení např. každých 10 s) – tep mezi sousedy.
- Když po dobu dead intervalu (typicky 4× hello) nepřijde žádný Hello, soused je mrtvý → spustí se přepočet. Řádově vteřiny až desítky vteřin.
- Potřebuješ milisekundy? Přidej BFD – bleskový tep, který výpadek nahlásí OSPF okamžitě. Pozor na příliš agresivní časovače (falešné poplachy).
Reroute v simulátoru
Reroute si vyzkoušíš naživo: postav redundantní cesty, nastav ceny a pak shoď aktivní prvek nebo linku (v simulátoru ho můžeš administrativně vypnout). Sleduj, jak se provoz sám přesune na druhou cestu – přesně jako konvergence OSPF. V simulátoru tohle ukazuje úloha ospf-fix: zvedneš cenu na blokující cestě a provoz přeteče na čistou.
Krok za krokem
- Provoz teče horem. Teď v simulátoru shodíme R4–R2 linku.
- Linka dolů → OSPF to pozná a přepočítá.
- Provoz sám přeteče dolní cestou. Tohle si naklikáš v úloze ospf-fix.
Lekce 7: OSPF v kontextu
Výchozí cesta do internetu
OSPF zná vnitřní sítě firmy. Ale internet je příliš velký na to, aby ho někdo celý nalil do OSPF (flooding). Řešení: jeden router (na hranici k ISP) má výchozí cestu (0.0.0.0/0) ven a řekne OSPF „všechno neznámé posílejte ke mně" – tomu se říká default-information-originate. OSPF tu default cestu rozšíří všem a každý vnitřní router pak ví: co neznám (= internet), pošlu k té bráně.
Krok za krokem
- R4 je na hranici k ISP a má výchozí cestu 0.0.0.0/0 ven.
- R4 řekne OSPF „neznámé posílejte ke mně". Default cesta se rozšíří všem.
- Každý router teď ví: vnitřní sítě z OSPF, cokoli jiného → k R4 ven. Vnitřek i internet pokryté.
Redistribuce
V reálu málokdy běží všechno v OSPF. Někde zůstane statická cesta (třeba k partnerovi), jinde běží jiný protokol. Redistribuce je „přemostění": vezmeš cesty z jednoho zdroje (statické, jiný protokol) a vpustíš je do OSPF, aby o nich věděli i ostatní. Je to mocné, ale opatrně – špatná redistribuce umí nadělat smyčky (paket koluje mezi routery dokola, nikdy nedorazí a nakonec mu vyprší TTL) nebo rozbít metriky. Proto se hlídá, co a jak se přelévá.
Krok za krokem
- R1 má statickou cestu k partnerské síti – OSPF o ní zatím neví.
- Redistribucí tu statickou cestu vpustíš do OSPF. Teď o ní vědí všichni.
- Funguje to skvěle – ale opatrně. Špatná redistribuce nadělá smyčky. Proto se přesně řídí, co se přelévá.
Celá cesta a co dál
Pojďme to spojit. OSPF dá síti samoobslužné routování: routery se najdou (Hello), sdílí mapu (LSDB), spočítají nejkratší cesty (Dijkstra), škálují přes oblasti a po výpadku samy přesměrují (konvergence) – plus default cesta do internetu a redistribuce s okolím. Tím máš pokrytou vnitřní páteř sítě. Co dál? Provoz uvnitř běží – teď ho pojďme chránit: hloubková inspekce (DPI), IDS/IPS a reálné útoky. To je kurz Pokročilá bezpečnost.
Krok za krokem
- Routery se našly, sdílí mapu, počítají nejkratší cesty a po výpadku se samy opraví. To je OSPF.
- Plus výchozí cesta do internetu a redistribuce se statikou/jinými protokoly. Vnitřní páteř hotová.
- Provoz teče spolehlivě. Teď ho pojďme chránit do hloubky – DPI, IDS/IPS, reálné útoky. Kurz Pokročilá bezpečnost.
OSPF vs. ostatní
OSPF je jen jeden z několika směrovacích protokolů — liší se metrikou (podle čeho vybírá cestu) a určením. RIP počítá skoky (dnes zastaralý), EIGRP má složenou metriku (Cisco), IS-IS jede na páteřích ISP a BGP drží celý internet mezi operátory. Kdo vyhraje, když jich běží víc naráz? Rozhoduje administrativní vzdálenost. Tohle srovnání sis prošel na konci kurzu o routingu (lekce „Internet a kdo vyhraje") – tady je jen rychlá připomínka, protože celý tenhle kurz jde do hloubky právě u OSPF.