Dynamické smerovanie

Miroslav Szabó


Obsah


Úvod

Bežný router
Cieľová adresa získaná z hlavičky paketu sa porovnáva so záznamami v statickej smerovacej tabuľke, a na základe výsledku porovnania je určené rozhranie, kam sa paket prepošle. Pokiaľ by tabuľka bola nesprávna, alebo by došlo k výpadku staticky pridelenej cesty, paket nebude (správne) doručený.

Dynamický router
Tabuľka sa pre jednotlivé routery dynamicky vytvára, a to tak, že router, ktorý ma nejakú adresu v svojej lokálnej sieti všetkým okolitým routerom posiela informáciu, aby si patrične upravili svoje tabuľky a pakety pre danú adresu preposielali k nemu. Tento postup je kaskádovitý. Informácia o smerovaní tak putuje opačným smerom než vlastné pakety, ktoré môžu byť po takto vytvorenej ceste následne posielané. Je ale nutné zábraniť vzniku smerovacích kruhov, vhodné je tiež ošetriť možné výpadky niektorých ciest, a tiež snažiť sa o rovnomerné rozloženie záťaže.


Autonómne systémy, vnútorné a vonkajšie smerovanie

Autonómnym systémom sa rozumie sieť jednotlivého poskytovateľa, pričom smerovanie v rámci takejto siete nazývame vnútorným. Smerovanie medzi jednotlivými autonómnymi systémami sa nazýva vonkajšie. Pre vnútorné smerovanie sú špecifickými protokolmi tzv. IGP (Interior Gateway Protocols), a to napríklad: RIP (Routing Information Protocol), OSPF (Open Shortest Path First), IS-IS (Intermediate System-to-Intermediate System). Naopak pre vonkajšie smerovanie sú to tzv. EGP (Exterior Gateway Protocols), akým je napriklad BGP (Border Gateway Protocol).

RIP (Routing Information Protocol)

Využíva tzv. Distance Vector Algorithm, ktorý spočíva v tom, že každý z routerov si vytvorí svoju vlastnú tabuľku, pričom informácie si vymieňajú navzájom len susedné routery, a to tak, že každých 30 sekúnd vyšle jednotlivý router svoju tabuľku všesmerovým vysielaním do sietí, do ktorých je priamo pripojený. Vysielaná informácia pozostáva z adries vlastnej tabuľky routeru doplnených adresami už získanými od susedných routerov. Opakovaním tohto postupu sa zrejme všetky navzájom dosiahnuteľné routery dozvedia všetko o cestách v sieti do ktorej sú pripojené. Vybudovanie úpných a správnych tabuliek takýmto spôsobom však môže byť z hľadiska času náročné najmä vo veľkých sieťach. Navyše sa neprenášajú informácie o podsieřach.

Tento protokol bol implementovaný ako routed v BSD systémoch. Používa protokol UDP (port 520). Výhodou je ľahká implementovateľnosť, z čoho vyplynula aj následná všeobecná kompatibilita. Zaťaženie jednotlivého systému procesom implementujúcim RIP je nízke. Nevýhodou je nezanedbateľný čas potrebný na naplnenie tabuliek pri spustený systému, ako aj premávka po sieti. RIP sa neodporúča používať v sieťach s viac ako pätnástimi úrovňami. Tiež je obtiažne správne rozložiť záťaž na jednotlivé cesty. Nakoniec je problémom aj nekompatibilita s VLSM (Variable Length Subnet Mask), kedže sa neprenášajú informácie o podsieřach.

RIP2
Vylepšená verzia spätne kompatibilná s RIP1. Prenáša sa informácia o maske podsiete, vysielať smerovacie informácie možno metódami broadcast alebo multicast. Pridaná je aj možnosť použitia autentizačného mechanizmu. Nevhodné pre rozsiahle siete.


OSPF (Open Shortest Path First)

Základom je tzv. Link-State Algorithm, v ktorom je na základe informácii jednotlivých routerov o priamych spojeniach vybudovaná zdieľaná databázy s topológiou siete, ktorú následne každý z routerov využije na vybudovanie svojho vlastného stromu obsahujúceho najkratšie cesty (s použitím Dijkstrovho algoritmu) so sebou samým v koreni. Z vytvoreného stromu si potom router odvodi svoju smerovaciu tabuľku.

Link-State databáza sa tak vybuduje iba raz a prípadne sa upravuje iba pri zmene topológie siete (alebo automaticky každú polhodinu, pokiaľ k žiadnym zmenám nedošlo). Žiadne smerovacie tabuľky sa neprenášajú. Informácia (tzv. Link-State) vkladaná do databázy obsahuje popis spojení priamo vychádzajúcich z routerových rozhraní (IP adresy, masky podsietí,typy sietí, routery v nich). Do tabuľky sa vždy dostanú len také smery, aby cesty boli najkratšie možné. V prípade výpadku nejakej cesty sa v smerovacej tabulke tabulke tato nahradi tak, aby nahradna cesta bola tiez najkratsia mozna zo zvysnych moznosti. Pokial je viacero ciest rovnakej dlzky, ich zataz sa pri smerovani rovnomerne rozdeli. Tiez sa realizuje pravidlo vyberu (pokial sa taka moznost naskytne) cesty s co najdlhsou maskou podsiete.

Protokol OSPF je vhodný pre väčšie (viacúrovňové) siete, nie je však vhodná štruktúra s príliš veľkým rozsahom adries, ktorú by priamo obluhoval jediny router. OSPF štandardne pracuje nad IP vrstvou paketov (port 89).


BGP (Border Gateway Protocol)

Protokol určený na smerovanie medzi jednotlivými autonómnymi systémami. Využitý je tzv. Path Vector Algorithm, kde ku každej smerovacej informácii v tabuľke je zároveň k dispozícii nielen smer, ale aj konkrétne uzly na trase, ktorou sa má paket vydať. Takýto postup zároveň umožňuje obmedzovať preposielanie paketov na základe administratívnych pravidiel bez ohľadu na zaťaženie jednotlivých ciest alebo dĺžku zvolenej cesty. Informácie o voľbe trasy pre jednotlivé routery sa propagujú podobne ako pri protokole OSPF. BGP pracuje nad vrstvou TCP (port 179).

GNU Zebra

GNU Zebra je voľný software distribuovaný pod GNU GPL, s domovskou stránkou www.zebra.org. V súčasnosti podporuje protokoly RIPv1, RIPv2, RIPng, OSPFv2, OSPFv3, BGP-4 a BGP-4+. Na rozdiel od tradičnźch monoliticky založených dynamických routerov, poskytuje vysokú úroveň modularity, nakoľko pre každý z podporovaných protokolov ma samostatný kód, ktorý sa spúšta ako jednotlivý proces, pričom pokiaľ je to možné, využíva sa multithreading. Pripravená je tiež podpora IPv6 a dokonca SNMP.

Základná inštalácia spočíva v klasickom postupe:

% configure
% make
% make install
Pokiaľ sme sa však rozhodli použiť výhradne klasicky protokol OSPF, je vhodne skriptu configure zadat nasledujúce prepínače:
--disable-ipv6 --disable-ripd --disable-ripngd --disable-ospf6d --disable-bgpd --disable-bgp-announce
Inštalácia štandardne prebieha do /usr/local/sbin a /usr/local/etc. Po inštalácii je potrebné pridať nasledovné riadky do /etc/services
zebrasrv      2600/tcp		  # zebra service
zebra         2601/tcp		  # zebra vty
ospfd         2604/tcp		  # OSPFd vty
Nainštalovaný bol routovací daemon ospdf ako aj manažérový daemon zebra. Zaujímavé sú konfiguračné súbory /usr/local/etc/zebra.conf a /usr/local/etc/ospfd.conf. Jednoduchý konfiguračný súbor zebra.conf by mohol obsahovať napríklad takto:
hostname Router
password zebra
enable password zebra
log stdout
router ospf
Sem možno pridávať aj statické cesty (viď. manuálové stránky). Činnnosť spusteného zebra -d daemona možno otestovať pomocou telnet localhost 2601.

Po správnom nakonfigurovaní a spustení daemona zebra možno pristúpiť k editácii konfiguračného súboru pre daemona protokolu OSPF a jeho následnému spusteniu. V ospfd.conf je potrebné nakonfigurovať samotné správanie sa OSPF. Je možné nastaviť tu aj autentizáciu.