← Všechny kurzyZpět do simulátoru →

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.

Tohle je textový náhled lekcí pro čtení. Plná verze – interaktivní simulátor s animacemi, úlohami a kvízy – běží v aplikaci.

▶ Spustit interaktivní verzi

Lekce 1: Kdy statika nestačí

Ruční cesty nestíhají

R1R2R3R4PCSRV

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

  1. Síť se čtyřmi routery a dvěma LAN. Představ si, že jich jsou desítky.
  2. Se statickými cestami bys musel na každém routeru ručně popsat cestu ke každé síti. Noční můra.
  3. 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

R1R2R3R4PCSRV

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

  1. Provoz teče horní cestou R1→R2→R4. Vše běží.
  2. Linka R1–R2 spadne. Statická cesta o tom neví → pakety padají do prázdna, dokud to někdo ručně nespraví.
  3. 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

R1R2R3R4PCSRV1) najdou se (sousedé)

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

  1. Krok 1: routery se navzájem objeví a stanou se sousedy (lekce 2).
  2. Krok 2: každý řekne, co vidí; vznikne u všech stejná mapa (lekce 3).
  3. Krok 3: z mapy si každý spočítá nejkratší cesty (Dijkstra, lekce 4). Pojďme krok po kroku.

▶ Otevřít v simulátoru

Lekce 2: Jak se OSPF routery najdou

Hello pakety

R1R2R3R4PCSRV

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

  1. R1 posílá Hello na všechna rozhraní: „jsem tu, jsem v area 0…".
  2. Sousedé odpovídají vlastním Hello. Když parametry sedí, uznají se navzájem za sousedy.
  3. Hotovo – routery se znají. Hello chodí dál jako tep; když utichne, soused se prohlásí za mrtvého (dead interval).

Sousedství (adjacency)

R1R2R3R4PCSRVDown →Init →2-Way →Exchange →Full

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

  1. Po Hello jsou R1 a R2 v Two-Way – vidí se. Ještě ale nemají stejnou mapu. (Stavy ukazujeme zjednodušeně.)
  2. Vymění si popis databáze a doplní, co komu chybí (Exchange/Loading).
  3. Stav Full: oba mají identickou LSDB. Teď jsou opravdu adjacency a můžou počítat cesty.

DR a BDR

R1R2R3R4PCSRVkaždý s každým = chaos

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

  1. Čtyři routery na jedné sdílené síti = až 6 vztahů. S deseti routery 45. Neúnosné.
  2. Zvolí se DR (a záložní BDR) podle priority. Tady DR = R2, BDR = R3.
  3. Všichni navazují Full jen s DR. DR rozesílá změny ostatním. Sdílená síť zůstane přehledná.

▶ Otevřít v simulátoru

Lekce 3: Sdílená mapa (LSDB)

LSA: střípek mapy

R1R2R3R4PCSRVLSA: R1

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

  1. R1 vytvoří svůj LSA: „mám linky k R2 a R3 (cena 10) a síť LAN-A".
  2. To samé udělá každý router – každý popíše jen své okolí. Čtyři routery = čtyři střípky.
  3. Střípky dohromady = kompletní mapa. Jak se LSA dostanou ke všem, je další modul (flooding).

Flooding

R1R2R3R4PCSRV

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

  1. R1 rozešle svůj LSA sousedům R2 a R3.
  2. R2 i R3 ho přepošlou dál k R4 (ne zpět odkud přišel). Lavina pokračuje.
  3. 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

R1R2R3R4PCSRVvšichni: stejná LSDB

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

  1. Všechny čtyři routery mají teď identickou mapu sítě (LSDB).
  2. 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.
  3. Jak z mapy vznikne nejkratší cesta? To je algoritmus Dijkstra – příští lekce, bez matematiky.

▶ Otevřít v simulátoru

Lekce 4: Dijkstra bez matematiky

Cena podle rychlosti

R1R2R3R4PCSRV101055

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

  1. Každá linka má cenu podle rychlosti. Horní cesta R1→R2→R4 = 10+10 = 20. Dolní R1→R3→R4 = 5+5 = 10.
  2. Obě cesty mají stejný počet skoků (2), ale dolní je levnější (10 < 20) → OSPF zvolí dolní.
  3. 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

R1R2R3R4PCSRV„já jsem střed"

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

  1. R1 se postaví doprostřed: cena k sobě = 0. Začne objevovat okolí.
  2. Najde nejbližší uzel (nejnižší cena), zafixuje ho a počítá dál od něj. Krok za krokem objeví celou síť.
  3. 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

R1R2R3R4PCSRV55

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

  1. Levná dolní cesta (5+5=10) je aktivní.
  2. Zvedneš cenu dolní cesty na 50+50=100. Teď je dražší než horní (20).
  3. OSPF sám přepočítá a pošle provoz horem (20 < 100). V simulátoru to uvidíš naživo.

▶ Otevřít v simulátoru

Lekce 5: Oblasti (areas)

Velká oblast = problém

R1R2R3R4PCSRV1 oblast: 1 obří mapa

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

  1. Malá síť? Jedna oblast stačí. Ale představ si stovky routerů v jedné mapě…
  2. Velká mapa = hodně paměti, pomalý přepočet a každá změna zaplaví celou síť. To nejde donekonečna.
  3. Ř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

R1R2R3R4PCSRVarea 0 (backbone)

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

  1. Uprostřed je area 0 – páteř, na kterou se vše napojuje.
  2. Ostatní oblasti (area 1, 2…) visí na area 0, nikdy ne přímo mezi sebou. Provoz mezi oblastmi jde vždy přes backbone.
  3. Router na hranici dvou oblastí = ABR. Drží mapu obou a překládá mezi nimi souhrny.

ABR a souhrny

R1R2R3R4PCSRVABR: zná obě oblasti

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

  1. ABR má plnou mapu obou oblastí.
  2. Do druhé oblasti pošle jen souhrn – ne všechny detaily. Cizí oblast zůstane malá a klidná.
  3. 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.

▶ Otevřít v simulátoru

Lekce 6: Konvergence

Výpadek a přepočet

R1R2R3R4PCSRV

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

  1. Provoz teče horní cestou R1→R2→R4.
  2. Linka R1–R2 spadne. R1 i R2 pošlou nový LSA, ten se floodne, všichni přepočítají mapu.
  3. 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

R1R2R3R4PCSRVHello … Hello … Hello

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

  1. Hello chodí pravidelně (ve výchozím nastavení např. každých 10 s) – tep mezi sousedy.
  2. 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.
  3. 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

R1R2R3R4PCSRV

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

  1. Provoz teče horem. Teď v simulátoru shodíme R4–R2 linku.
  2. Linka dolů → OSPF to pozná a přepočítá.
  3. Provoz sám přeteče dolní cestou. Tohle si naklikáš v úloze ospf-fix.

▶ Otevřít v simulátoru

Lekce 7: OSPF v kontextu

Výchozí cesta do internetu

R1R2R3R4PCSRVR4 → ISP / internet

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

  1. R4 je na hranici k ISP a má výchozí cestu 0.0.0.0/0 ven.
  2. R4 řekne OSPF „neznámé posílejte ke mně". Default cesta se rozšíří všem.
  3. Každý router teď ví: vnitřní sítě z OSPF, cokoli jiného → k R4 ven. Vnitřek i internet pokryté.

Redistribuce

R1R2R3R4PCSRVstatická cesta

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

  1. R1 má statickou cestu k partnerské síti – OSPF o ní zatím neví.
  2. Redistribucí tu statickou cestu vpustíš do OSPF. Teď o ní vědí všichni.
  3. 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

R1R2R3R4PCSRV

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

  1. Routery se našly, sdílí mapu, počítají nejkratší cesty a po výpadku se samy opraví. To je OSPF.
  2. Plus výchozí cesta do internetu a redistribuce se statikou/jinými protokoly. Vnitřní páteř hotová.
  3. 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í

eBGPpolitika · internet (mezi AS)AD 20EIGRPsložená metrika · CiscoAD 90OSPFcena (rychlost) · standardAD 110IS-IScena · páteře ISPAD 115RIPskoky · zastaralýAD 120

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.

▶ Otevřít v simulátoru