Dynamické směrování

Bukal Tomáš, xbukal@fi.muni.cz


Obsah


Směrovače

Směrovače jsou síťové prvky zahrnující vrstvy fyzickou, linkovou a síťovou. Jejich hlavním úkolem je směrování paketů jednotlivými sítěmi ležícími na cestě mezi zdrojovou a cílovou sítí. Používají se pro oddělení/propojení LAN sítí, připojení sítě LAN k síti WAN a propojení částí sítí WAN. Směrovače tak oddělují dílčí sítě a tak filtrují všesměrové pakety určené pro danou síť. Znalost struktury paketů také směrovače předurčuje k možnosti implementace bezpečnostních mechanizmů (firewall). Směrovače umožňují vytvářet složité síťové konfigurace polygonálního charakteru, které dovolují existenci více cest k danému cíli a tak zajišťují vysoký stupeň zabezpečení konektivity.
Směrovače pracují podle určitého směrovacího mechanizmu, nejčastěji se jedná o distribuovaný způsob směrování, kdy si každý směrovač buduje na základě komunikace s ostatními směrovači podle určitého směrového protokolu vlastní směrovací tabulku. Ta obsahuje záznamy určující, kam mají být pakety s určitou cílovou sítí předány. Pakety (mluvíme o datagramové službě) nesou informace o síťové adrese zdroje a cíli. Síťová adresa se nejčastěji rozděluje na dvě, případně tři základní části (adresa sítě, adresa síťového rozhraní a případně adresa podsítě). Směrovací tabulka nese záznamy pouze o cílové síti, případně o podsíti a také běžně obsahuje záznam o implicitním směru pro směrování do sítí, pro které v tabulce neexistuje záznam.

Směrovací tabulky

Směrovací tabulky jsou buď statické či dynamické. U statických jsou informace uloženy do tabulky ručně při konfiguraci směrovače. Změny taktéž musí být prováděny ručně, popřípadě pomocí nějakého řídícího protokolu (např. ICMP). Tento způsob je vhodný pro jedoduché a stálé sítě.
Dynamické tabulky jsou použity pro rozlehlé sítě, kde si směrovací uzly pravidelně vyměňují směrovací informace. Získávají tedy přehled o struktuře a stavu sítě. Ze zasílaných informací si budují směrovací tabulky výběrem nejlepšího směru pro danou cílovou síť. To oproti statickému směrování částečně zatěžuje síť. Výměny jsou zajišťovány směrovými protokoly. V síti TCP/IP to jsou protokoly RIP (Routing Information Protocol) a OSPF (Open Shortest Path First) a v sítích IPX/SPX pak IPX/RIP a NLSP (NetWare Link State Protocol). Záznam dynamické směrovací tabulky obsahuje tyto základní údaje informace:
Cílová síť: IP adresa cílové sítě
Maska podsítě: určuje jaká část IP adresy je adresa podsítě. Slouží při prohledávání směrovací tabulky k určení rozhraní kterým se bude paket posílat. Cílová IP adresa se vynásobí s maskou a výsledek se porovná s hodnotou cílové sítě. Je-li více kladných výsledků, vybere se ten směr, pro který byla maska podsítě nejdelší (nejdelší sled jedniček)
Adresa následujícího směrovače: pokud cílová síť není připojena přímo k danému rozhraní, posílá se paket dalšímu směrovači ležícímu na cestě k síti
Síťové rozhraní: určuje kterým rozhraním směrovače se bude paket posílat
Stav rozhraní: informace o stavu rozhraní (zapnuto/vypnuto)
Cena/vzdálenost spoje: určuje, jak výhodné je poslat paket danou cestou. Vhodnost spoje může být určena "vzdáleností" (počet mezilehlých směrovačů) či jeho cenou, což je hodnota vypočtená z řady parametrů dané cesty (počet mezilehlých směrovačů, přenosové rychlosti jednotlivých úseků, hodnoty MTU = Maximum Transfer Unit pro jednotlivé úseky, momentální stav úseků, apod.)
Stáří informace: u dynamického směrování je zapotřebí informace pravidelně aktualizovat. To znamená, že pokud informace není obnovena do určité doby, je považována za starou, a tedy neplatnou.
Většinou pro daný cíl existuje pouze jediný záznam, a tedy jediná cesta. Novější směrové protokoly (OSPF) však umožňují existenci více stejně vhodných cest, a tedy možnost rozložení zátěže do více cest.

RIP

Routing Information Protocol (RIP) byl jedním z vůbec prvních úspěšných směrovacích protokolů (vyvinut firmou Xerox v r. 1981). První verze protokolu RIP pro IP (RFC 1058) je dnes zastaralá, přechází se na normalizovanou verzi 2 (RFC 2453).
Metrika, kterou používá protokol RIP, je počet směrovačů na cestě k cíli. Nejnižší metrika je pro přímo připojené sítě ke směrovači, nejdelší cesta je 15 skoků (směrovačů), vyšší metrika (16) označuje neplatnou cestu (nedostupnou síť). Již se nezohledňuje propustnost linek, tedy jejich rychlost, maximální velikost přepravovaných rámců, apod. K danému cíli z daného směrovače vede pouze jediná cesta. Nelze tedy využít možnosti rozložení zátěže mezi více stejně dlouhých cest. RIP vysílá aktuální směrovací informace na všeobecnou adresu v periodě 30 s. Pro přenos tabulek se využívá transprotní protokol UDP. Rozšíření informace o změně mezi ostatní směrovače je dosti pomalá. Další nevýhodou je značné zatížení sítě, neboť si směrovače posílají celé tabulky, jejichž velikost závisí na celkovém počtu sítí. Nová verze protokolu RIP 2 je plně založena na charakteristikách protokolu RIP verze 1, které obohacuje o:
- podporu podsíťových masek umožňuje využít RIP i v prostředí s podsíťovými maskami proměnné délky (VLSM) nebo se směrováním na bázi adresových prefixů (CIDR)
- možnost vysílat směrovací tabulky nikoli na všeobecnou, ale na skupinovou adresu
- autentizaci směrovacích informací
- spolupráci s jinými vnitřními směrovacími protokoly (pomocí odkazu na následující skok) i vnějšími protokoly (prostřednictvím označení cest mimo autonomní systém).
RIP lze výhodně použít jako vnitřní směrovací protokol v sítích, které jsou homogenní a mají maximálně střední velikost, neboť jeho jednoduchost i z hlediska konfigurace tam vyváží pomalou konvergenci a nepříliš vhodnou metriku.

OSPF

Protokol Open Shortest Path First (OSPF verze 2, RFC 2328) je v rodině de facto normalizovaných vnitřních směrovacích protokolů pro IP opačným pólem než RIP. Používá algoritmus stavu spojů, který umožňuje rychlou konvergenci sítě reagující na jakékoli topologické změny, jako např. poruchu spoje, a nevede ke směrovacím smyčkám. Aktuální informace pro směrování se zasílají okamžitě po jakékoli detekci změny v topologii sítě, nebo minimálně (periodicky) každých 30 min. Každý směrovač má stejný pohled na topologii sítě (topologická databáze). Směrovací informace jsou zasílány v paketech o stavu spojů (LSP - Link State Packet), v nichž se popisuje stav rozhraní směrovače a jeho sousedů, tj. stav připojených sítí. Souhrn všech LSP tvoří topologickou databázi protokolu.
Metrika protokolu OSPF není omezena hodnotou 16 jako u protokolu RIP. Může nabývat hodnotu až 65535. OSPF využívá hierarchické směrování, kdy sítě a směrovače se v jednom autonomním systému dělí do tzv. oblastí (area), které konfiguruje správce sítě (intersíť může být rozdělena do jedné nebo více oblastí, z nichž jedna je zvolena jako páteřní, má číslo 0). Ostatní oblasti musí být s ní spojeny buď přímou nebo virtuální linkou. Oblasti jsou spojovány hraničními směrovači (Area Border Router - ABR). OSPF autonomní systém je s ostatními autonomními systémy (a případně používajícími jiný směrový protokol, např. RIP) spojen pomocí směrovačů ASBR (Autonomous System Boundary Router). Každý OSPF směrovač je identifikován 4-bytovým číslem. Znalost topologie dané oblasti zůstává skrytá ostatním oblastem, a tak umožňuje provádět změny topologie v každé oblasti nezávisle na ostatních. Právě jedna oblast tvoří tzv. OSPF páteř (backbone), k níž musí být (logicky) připojeny všechny ostatní oblasti. Každá oblast používá individuální kopii algoritmu pro výpočet nejkratších cest, a proto má svou topologickou databázi, která je u všech směrovačů v oblasti totožná. Hraniční směrovače oblastí mají tolik databází, kolik oblastí propojují. Hierarchická struktura intersítě z hlediska OSPF znamená, že směrování probíhá ve dvou stupních: uvnitř oblasti a mezi oblastmi.
Směrování pomocí OSPF je založeno na jediné bezrozměrové metrice, obecně označované cena (nejlepší cesta je ta s nejnižší souhrnnou cenou). Cena spojů ve složené cestě odpovídá propustnosti spojů, nákladů na spoje apod. podle potřeb správce intersítě. OSPF rychle reaguje na topologické změny sítě a vypočítává nejkratší cesty do všech dostupných existujících sítí na bázi Dijkstrova algoritmu. Tento protokol také umožňuje rozdělit zatížení na více cest, existuje-li více cest se stejnou cenou.

BGP

Border Gateway Protocol slouží ke směrování mezi autonomními systémy (AS). Vyvinul se z protokolu EGP a v současné době dospěl k verzi 4, označované jako BGP-4 protokol.
BGP směrovače slouží jako vstupní/výstupní body do autonomních systémů. Podle toho pak jednotlivé spojení mezi směrovači dělíme na externí (jedná-li se o směrovače patřící k různým AS) a interní.
BGP směrovače si neudržují pouze adresu dalšího směrovače, přes který se lze dostat k cílovému uzlu, ale také čísla autonomních systémů, přes které cesta prochází. To umožňuje efektivnější vytváření nejlepších cest (agregování cest apod.). Další výhoda spočívá v tom, že směrovací informace nejsou periodicky vyměňovány, pouze v případě změny topologie. Pravidelně jsou vyměňovány jen KeepAlive zprávy, které jsou mnohem kratší a nezatěžují tak síť.
BGP používá TCP jako svůj transportní protokol, konkrétně pak port 179 pro navázání spojení.
Směrovače si mezi sebou posílají zprávy, které vypadají nasledovně:
Maker: slouží k autentifikaci a zajištění synchronizace. Je to nějaká hodnota, kterou přijímající strana může očekávat, tzn. spočítat podle konkrétní zvolené autentifikační metody. Zároveň slouží pro detekci ztráty synchronizace. Pokud je typ zprávy Open nebo není použita žádná autentifikace, je nastaven na hodnotu nula.
Typ: určuje typ zprávy, musí být jedno z následujících: Length: určuje celkovou délku zprávy včetně hlavičky

BIRD

BIRD Internet Routing Daemon je dynamický směrovač, který byl vyvinut na fakultě matematicko-fyzikální Karlovy Univerzity jako studentský projekt. Může být volně distribuován podle pravidel GNU. Byl navržený aby pracoval na UNIXových systémech. Byl vyvinut a testován pod Linuxem 2.0 až do 2.4. Podporuje protokoly IPv4 a IPv6, BGPv1, RIPv2, OSPFv2, virtuální protokol pro výměnu směrovacích informací mezi rozdílnými směrovacími tabulkami, program příkazové řádky dovolující on-line správu, silný jazyk pro filtrování aj.

Zebra

Je volně stažitelný software spravující směrovací protokol. Podporuje BGP4, BGP4+, OSPFv2, OSPFv3, RIPv1, RIPv2 a RIPng. Zebra je jedinečná v návrhu, vlastní totiž zvláštní proces pro každý protokol. Obsahuje jeden daemon na správu a 5 směrovacích daemonů: ripd, ripngd, ospfd, ospf6d, bgpd.

Konfigurace

Zebra má implicitně umístěny veškeré konfigurační soubory v adresáři /usr/local/etc/, soubory jsou nazvány podle protokolu. Binární soubory jsou podobně uloženy v adresáři /usr/local/sbin. Příklady konfigurací pro OSPF (i pro ostatní protokoly) spolu se zdroji jsou ke stáhnutí na http://www.zebra.org/

Obsah souboru ospfd.conf:

! -*- ospf -*-
!
! OSPFd sample configuration file
!
!
hostname ospfd
password zebra
!enable password please-set-at-here
!
!router ospf
! network 192.168.1.0/24 area 0
!
log stdout