Vyšlo v týdeníku Computerworld č. 36/92 v roce 1992
Vytištěno z adresy: http://www.earchiv.cz/a92/a236c110.php3

Směrování v TCP/IP sítích - I.

Další z aspektů, důležitých pro pochopení celkové filosofie soustavy protokolů TCP/IP, je otázka směrování ve vzájemně propojených sítích. Z ní jsme si něco naznačili již ve 44. dílu našeho seriálu, nyní se však touto problematikou budeme zabývat podrobněji.

Obrázek 46.1.
Obr. 46.1.: Představa vzájemně propojených sítí
Nejprve si ale připomeňme, jakým způsobem se protokoly TCP/IP dívají na vzájemně propojené sítě (tzv. internet): předpokládají, že jednotlivé (dílčí) sítě jsou propojeny prostřednictvím bran (gateways), označovaných také jako IP směrovače (IP routers) - viz obrázek 46.1. (srovnej s obrázkem 43.1.). Vzájemné propojení je přitom takové, že mezi libovolnými dvěma dílčími sítěmi vždy existuje alespoň jedna cesta, která ovšem může vést i přes více jiných dílčích sítí, resp. procházet posloupností bran, propojujících mezilehlé sítě.

Každá brána je vždy připojena nejméně do dvou dílčích sítí, a slouží pouze potřebám směrování (a nikoli k provozování uživatelských aplikací). Tím se brány odlišují od druhého typu uzlů, které naopak slouží především k provozování aplikačních programů, a které se v terminologii TCP/IP označují jako hostitelské počítače (hosts, host computers). Také hostitelské počítače však mohou být připojeny do dvou či více dílčích sítí současně (pak jde o tzv. multi-homed hosts), a mohou tedy fungovat i jako brány. Přestože se toto řešení v praxi občas používá (hlavně v akademickém prostředí), není vždy bezproblémové. Filosofie TCP/IP však velmi ostře rozlišuje mezi hostitelským počítačem a bránou, a proto i my se přidržíme představy dvou fyzicky různých zařízení.

Přímé a nepřímé směrování

Obecně lze říci, že na směrování jakožto rozhodování o tom, kudy dále poslat datový paket, se podílí oba druhy uzlů TCP/IP sítí, tedy jak brány, tak i hostitelské počítače. Záměr je ovšem takový, aby se hostitelské počítače zabývaly směrováním jen v minimální možné míře, a maximum práce na tomto poli přenechaly bránám.

Obrázek 46.2.
Obr. 46.2.: Představa přímého směrování
Představme si situaci na obrázku 46.2., kdy hostitelský počítač A chce odeslat IP datagram hostitelskému počítači B. Z IP adresy počítače B jednoduchým způsobem rozpozná, že leží v téže dílčí sítí (viz 44. díl našeho seriálu), a tak mu IP datagram pošle přímo. Tento případ je v terminologii TCP/IP označován jako tzv. přímé směrování (direct routing). Jeho režie je minimální: vzhledem k formátu IP adres (viz obr. 44.2. ve 44. dílu) je triviální rozpoznat, zda příjemce leží v téže dílčí síti, a pokud ano, dílčí síť umožňuje odeslat příslušný datagram jeho koncovému adresátovi přímo.

Obrázek 46.3.
Obr. 46.3.: Představa nepřímého směrování
Nyní si ale představme situaci na obrázku 46.3., kdy hostitelský počítač A chce odeslat IP datagram hostitelskému počítači C. Jelikož z jeho IP adresy rozpozná, že leží v jiné dílčí síti, pošle datagram bráně G (ve "své" dílčí síti). Tím úloha hostitelského počítače A jako odesilatele končí, a další je již na bráně G resp. na celé struktuře bran, které musí být schopné si datagram postupně předávat tak dlouho, dokud se nedostane do cílové dílčí sítě, kde pak může být prostřednictvím přímého směrování odeslán hostitelskému počítači, který je jeho konečným adresátem. Právě naznačený případ odpovídá tzv. nepřímému směrování (indirect routing), ke kterému na rozdíl od směrování přímého dochází tehdy, jestliže adresát není v téže dílčí síti jako odesilatel, a ten proto posílá datagram bráně.

Volba mezi více bránami

Vzhledem k tomu, že vzájemně propojené sítě tvoří souvislý celek, musí být v každé dílčí síti vždy alespoň jedna brána. Nemusí ovšem být zdaleka jen jedna. Představme si jednoduchý příklad na obrázku 46.4., kde má hostitelský počítač A na výběr dvě brány, G1 a G2. Každá z nich by sice měla být schopna doručit IP datagram kamkoli je třeba, ale žádná z nich nebude zřejmě optimální pro všechny možné cíle - k některým vede kratší cesta přes bránu G1, k jiným zase přes bránu G2. Znalost toho, kdy je výhodnější poslat datagram bráně G1 a kdy bráně G2, by ale měl mít již hostitelský počítač A. Je samozřejmě možné, aby tento hostitelský počítač měl potřebné informace "pevně zabudovány" ve svých konfiguračních souborech, podle nichž si pak vytváří své směrovací tabulky. Ve vzájemně propojených sítích malého rozsahu a s minimem dynamických změn to je rozumné řešení, v případě větších a častěji se měnících konglomerátů sítí již nikoli. Zde již je nutný jiný mechanismus, umožňující provádět dynamickou aktualizaci směrovacích tabulek hostitelských počítačů podle okamžité situace.

Obrázek 46.4.
Obr. 46.4.: Příklad dílčí sítě se dvěma bránami
Filosofie směrování v TCP/IP ale vychází z toho, že znát nejvhodnější cesty a průběžně reagovat na skutečnou situaci je úkolem bran, a nikoli hostitelských počítačů. V soustavě protokolů TCP/IP je proto zabudován mechanismus, pomocí kterého je celý problém velmi elegantně řešen: kdykoli nějaká brána zjistí, že některý hostitelský počítač používá neoptimální cestu, upozorní jej na tuto skutečnost. Ukažme si to na příkladu (viz opět obrázek 46.4.): nechť hostitelský počítač A v dílčí síti X pošle bráně G1 IP datagram, určený počítači C v dílčí síti Y. Brána G1 zná optimální cestu a ví, že ze sítě X do sítě Y je výhodnější použít bránu G2. O doručení přijatého datagramu se brána G1 ještě postará, ale současně s tím upozorní hostitelský počítač A, že další datagramy, směřující do sítě Y, již má posílat přes bránu G2. Hostitelský počítač A si tuto informaci zanese do svých směrovacích tabulek, a nadále se podle ní řídí.

Právě naznačený mechanismus má jeden velmi příjemný efekt - jednotlivé hostitelské počítače vystačí na počátku (tj. při svém spuštění) se znalostí jedné jediné brány ve "své" dílčí síti. Další brány se pak "naučí" používat díky právě popsanému mechanismu. Ten je v praxi zajišťován prostřednictvím protokolu ICMP (Internet Control Message Protocol), který je povinnou součástí protokolu IP, a slouží obecně pro předávání řídících informací a zpráv o chybách a nestandardních situacích.

Připomeňme si však ještě jednu významnou skutečnost, kterou jsme si uvedli již ve 44. dílu našeho seriálu - kvůli minimalizaci rozsahu směrovacích tabulek je veškeré směrování v TCP/IP sítích založeno jen na dílčích sítích jako takových, a nikoli na jednotlivých hostitelských počítačích (přesněji: na té části IP adres, které představují adresy dílčích sítí). V našem konkrétním případě, odpovídajícím obrázku 46.4., to znamená, že hostitelský počítač A si ve svých směrovacích tabulkách bude pamatovat pouze to, že nejvýhodnější cesta do sítě Y vede přes bránu G2, a nikoli že k hostitelskému počítači C se dostane nejlépe přes bránu G2.