Vyšlo v týdeníku CHIPweek č. 9/97, 25. února 1997
Vytištěno z adresy: http://www.earchiv.cz/a97/a709k150.php3

Propojování na úrovni síťové vrstvy, směrovače

Vedle možnosti propojit dílčí sítě či kabelové segmenty na úrovni fyzické či linkové vrstvy, tak jak jsme si popisovali v minulých dílech, samozřejmě existuje možnost učinit tak na úrovni vrstvy síťové, prostřednictvím zařízení zvaných směrovače. V čem ale budou faktické rozdíly při propojení směrovačem, oproti propojení mostem či switchem?

Již u propojování na úrovni linkové vrstvy (pomocí mostů a switchů) jsme dospěli k tomu, že propojovací zařízení pracující na vyšších úrovních (tj. vyšších než úroveň fyzické vrstvy) se "dívají dovnitř" přenášených datových bloků, snaží se porozumět té části jejich obsahu, která je relevantní pro potřeby přenosu, a pak podle získaných informací také skutečně přijímají konkrétní rozhodnutí a v praxi je naplňují. Toto obecné schema je samozřejmě společné jak pro propojování na úrovni linkové vrstvy, kdy příslušnými propojovacími zařízeními jsou mosty a switche, tak i pro propojování na úrovni síťové vrstvy, kdy se již jedná o směrovače. Rozdíl je ale v tom, do čeho se příslušná zařízení na jednotlivých úrovních "dívají" a čemu musí rozumět: například most či switch "nahlíží" do hlaviček linkových rámců, zatímco směrovač nahlíží až do hlaviček síťových paketů.

Z této základní úvahy pak také vyplývá závislost jednotlivých zařízení na konkrétních protokolech: například most (a stejně tak switch) musí rozumět hlavičkám linkových rámců, ale už mu může být vcelku lhostejné, jaké druhy síťových paketů jsou v těchto rámcích přenášeny (natož pak to, co je vloženo do těchto síťových paketů - zda například jde o zprávu elektronické pošty, o přenášení souboru apod.). Takže například do sítě, ve které je na úrovni linkové vrstvy provozován Ethernet, budete potřebovat Ethernetový most či Ethernetový switch, a tomuto mostu či switchi bude jedno, zda ve své síti provozujete například protokoly TCP/IP, Novellské protokoly IPX/SPX, či dokonce NetBIOS.

Multiprotokolové směrovače

Naproti tomu směrovače, jakožto propojovací zařízení fungující na úrovni síťové vrstvy, musí rozumět formátu síťových paketů (tak, aby si z jejich hlaviček mohly odvodit informace potřebné pro správné doručení). Směrovače tedy musí být "šity na míru" konkrétním síťovým protokolům, jako IP, IPX atd., a jedno jim může být až to, co je v těchto paketech přenášeno jako "užitečný náklad" (zda jde například o již citovanou el. poštu, přenos souborů apod.). V nejjednodušším případě pak každý směrovač "zvládá" jeden konkrétní síťový protokol, takže se jedná například o IP směrovač, IPX směrovač atd.

V reálné praxi se ale s takovýmito "jednoprotokolovými" směrovači již většinou nelze setkat. Důvodem je skutečnost, že v mnoha sítích se v rámci jediného "linkového prostředí" (tedy například "po Ethernetu") souběžně provozuje více síťových protokolů - což je možné díky tomu, že různé síťové protokoly mohou úspěšně koexistovat vedle sebe "na jednom drátě" (přesněji: mohou být vkládány do stejných linkových rámců, přenášeny a posléze zase vyjímány, aniž by se přitom ztratila jejich původní "identita"). Kdyby ale jednotlivé sítě či dílčí segmenty byly propojeny pouze jednoprotokolovým směrovačem, neboli takovým který rozumí jen jednomu síťovému protokolu a pouze ten dokáže propouštět, byla by výsledná soustava vzájemně propojených sítí průchodná jen pro jeden příslušný síťový protokol, a pro ostatní nikoli. V praxi se proto směrovače vyrábí téměř výhradně v tzv. multiprotokolovém provedení.

Fungování multiprotokolového směrovače si lze nejlépe představit tak, že jde o několik logicky samostatných jednoprotokolových směrovačů, realizovaných jako jeden fyzický celek. Ke zpracování každého jednotlivého paketu je vždy "povolán" jen jeden z těchto logických směrovačů - o tom, který z nich to bude, se přitom rozhoduje již v okamžiku, kdy je příslušný paket "vybalen" z přijatého datového rámce, a je rozpoznán jeho typ.

Větší složitost směrovačů

Další významnou odlišností mezi mosty a switchi na straně jedné, a směrovači na straně druhé, je složitost jejich rozhodování o tom, co učinit s přijatým rámcem resp. paketem. V případě mostů a switchů je toto rozhodování obecně jednodušší, zatímco v případě směrovačů je obecně složitější, protože bere do úvahy více relevantních skutečností - jak jsme si již uvedli v předchozím modulu, mostu například stačí znát topologii sítě v jeho bezprostředním okolí, zatímco směrovač musí "vidět dále", a musí znát topologii celé sítě.

Obrázek 1.
Konkrétní postupy, které směrovače aplikují při rozhodování o dalším osudu přijatých paketů, se mohou i velmi výrazně lišit - záleží totiž na tom, jaký tzv. algoritmus směrování je používán. V případě mostů a přepojování na úrovni linkové vrstvy bylo optimální chování propojovacího uzlu ("směrování") víceméně pevně dáno - v úvahu připadalo buď filtrování, nebo cílené předání do směru, ve kterém se nachází příjemce. V případě směrovačů a přepojování na síťové vrstvě je ale mnohem větší prostor pro různé algoritmy směrování. Většina z nich přitom je výrazně komplikovanějších, než vcelku jednoduché chování mostu nebo switche. Podrobnější rozbor algoritmů směrování i popis by však by si však zasloužil spíše samostatný modul.

Některé strategie směrování přitom mohou být neadaptivní, neboli takové které se nesnaží přizpůsobovat případným změnám stavu sítě, a pak ani nepotřebují získávat žádné informace o takovýchto změnách. Většina v praxi používaných algoritmů směrování však má adaptivní charakter, snaží se přizpůsobovat změnám, a vyžaduje proto neustálé monitorování stavu sítě, resp. neustále probíhající předávání aktualizačních informací, díky kterým je možné případné změny zaznamenat. Také na této průběžné aktualizaci se jednotlivé směrovače musí umět podílet, což dále zvyšuje jejich celkovou složitost.

Celkově lze konstatovat, že složitost práce směrovače, neboli složitost přepojování na úrovni síťové vrstvy, je výrazně vyšší než složitost přepojování na úrovni linkové vrstvy, a v důsledku toho jsou směrovače obecně pomalejší než mosty či switche. Tento fakt je navíc umocněn skutečností, že přepojování na úrovni linkové vrstvy lze díky její jednoduchosti poměrně dnes již zabudovat přímo do technických prostředků (a tudíž provádět velmi rychle), zatímco přepojování na úrovni síťové vrstvy bývá stále ještě řešeno programovými prostředky, a tudíž výrazně pomaleji. Konkrétní rozdíly v rychlosti se ale s rostoucí výkonností soudobých technologií postupně zmenšují, a dnes již nemusí být příliš významné.

Mnohem podstatnějším se naopak stává fakt, že zatímco mosty a switche jsou zařízení typu "plug & play" a nevyžadují žádnou konfiguraci, směrovače jsou na tom opačně: správně nakonfigurovat směrovač bývá dosti netriviální záležitostí, vyžadující poměrně pokročilé znalosti a dovednosti.

Směrovače jsou vidět

Velmi zajímavým rozdílem mezi mosty a směrovači je i otázka jejich viditelnosti pro ostatní uzly. Mosty (ani switche) totiž nejsou pro ostatní koncové uzly vůbec viditelné, zatímco směrovače ano. Když koncový uzel potřebuje odeslat nějaký datový paket příjemci v jiné síti, musí znát alespoň jeden směrovač "vedoucí ven" z dané sítě. Samotný paket sice opatří síťovou adresou koncového příjemce, ale vloží jej do datového rámce který ve skutečnosti zašle příslušnému směrovači.

V případě přenosu datových rámců přes mosty či switche je tomu jinak. Zde odesilatel neví o existenci mostů či switchů, a domnívá se že koncového příjemce má v dosahu přímého spojení. Datový rámec proto adresuje přímo jeho koncovému příjemci, a odešle jej. Každý most přitom pracuje v tzv. promiskuitním režimu, kdy přijímá úplně všechny datové rámce které někdo někde vyšle - díky tomu přijme i rámec, který mu není explicitně adresován, a cíleně jej předá do směru, ve kterém se nachází příjemce. Celou situaci názorně shrnuje obrázek.