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:
- Open oznamuje otevření nového spojení
- Update obsahuje aktualizaci směrovacích informací
- Notification je zaslána v případě, chyby nebo jiné mimořádné situace
- KeepAlive je posílána pravidelně; oznamuje, že směrovač stále pracuje
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