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

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

V minulých dílech našeho seriálu jsme se podrobněji zabývali otázkou směrování v TCP/IP sítích. Konkrétní mechanismy, které jsme si v této souvislosti popisovali, však vycházely z určité strategie pro přidělování IP adres, kterou jsme si ukázali již ve 44. dílu. Tato strategie se ale s vývojem Internetu také postupně vyvíjela, a tak muselo nutně dojít k určitým modifikacím i ve způsobu směrování.

O změně strategie při přidělování IP adres jsme se již zmínili ve 44. dílu, kde jsme si o IP adresách povídali podrobněji. Připomeňme si proto, v čem tyto změny spočívají, a hlavně čím jsou motivovány.

Původní záměr byl takový, aby každá dílčí síť měla vlastní samostatnou síťovou adresu. Aby to bylo možné v prostředí, kde se dílčí sítě mohou velmi výrazně lišit co do počtu svých koncových uzlů (hostitelských počítačů, hosts), zavedly se tři různé formáty IP adres - adresy třídy A, B a C (viz 44. díl). Adresy třídy A byly určeny pro sítě s velmi velkým počtem hostitelských počítačů, adresy třídy B pro "středně" velké sítě, a adresy třídy C pro sítě s maximálně 254 hostitelskými počítači. Dlužno ovšem podotknout, že tato strategie vznikla ještě v době, kdy světu vládly velké střediskové počítače a minipočítače, zatímco éra osobních počítačů a malých lokálních sítí měla nastat přibližně o deset let později.

Takový růst nečekali

Tvůrci síťového modelu TCP/IP jistě předpokládali nárůst v nasazení výpočetní techniky, ale s čím již počítali méně je skutečnost, že tento nárůst bude tak prudký, a že se bude ubírat cestou "malých" počítačů a velkého množství relativně malých lokálních sítí. Zatímco zásoba IP adres třídy C ještě zdaleka vyčerpána není, úzkým místem se ukázala být jednak agenda, spojená s přidělováním IP adres, a především rozsah směrovacích tabulek, s nímž pak souvisí i vysoká režie na udržování jejich průběžné konzistence.

Jak jsme si již několikrát ukázali, snaží se TCP/IP protokoly minimalizovat rozsah směrovacích tabulek a režii na jejich aktualizaci dvěma způsoby: směrováním jen na základě adresy dílčí sítě, a používáním implicitního směrování (resp. implicitních cest) v tzv. vedlejších bránách (noncore gateways). Ani to však nestačí, a tak se ukázalo jako nezbytné usilovat o redukci počtu různých IP adres celých sítí. Jinými slovy: usilovat o tom, aby více dílčích sítí mělo přidělenu a sdílelo stejnou síťovou adresu (přesněji: tu část IP adresy, která představuje adresu sítě), a ve směrovacích tabulkách tak zabíralo jen jednu položku. Přišlo se samozřejmě na více možností, jak toho dosáhnout - tou nejefektivnější se ukázala být technika tzv. podsítí (subnets), kterou jsme si naznačili již ve 44. dílu našeho seriálu, a která je dnes již povinnou součástí TCP/IP protokolů. Zopakujme si proto její základní myšlenku.

Podsítě a jejich adresy

Obrázek 50.1.
Obr. 50.1.: Představa podsítí
Určitá skupina dílčích sítí, které by bez použití techniky podsítí měly samostatné adresy, má naopak jednu společnou adresu, a vůči svému okolí vystupuje jako jediný celek, tj. jako jediná dílčí síť (viz obr. 50.1.).

V rámci příslušné skupiny sítí je ale jejich společná IP adresa dále členěna - přesněji ta její část, která navenek představuje číslo (adresu) hostitelského počítače, se nyní rozpadá na dvě části - číslo (adresu) dílčí sítě, resp. tzv. podsítě (subnet) v rámci skupiny, a na číslo (adresu) hostitelského počítače v rámci této podsítě - viz obrázek 50.2. O tom, jak konkrétně má být IP adresa takto členěna, rozhoduje tzv. maska podsítě (subnet mask).

Obrázek 50.2.
Obr. 50.2.: Maska podsítě a její význam
Podstatná je přitom skutečnost, že tato maska nemá žádný povinný tvar. Volí se samostatně pro každou jednotlivou podsíť, což pak ale znamená, že i v rámci jedné skupiny podsítí mohou být používány různé masky. Příslušný standard to sice umožňuje, ale nedoporučuje, neboť tak mohou snadno vznikat nejednoznačnosti v IP adresách. Obvykle se tedy setkáme spíše s tím, že v rámci jedné skupiny podsítí je používána stejná maska.

Směrování v případě podsítí

Jakmile je ale používána technika podsítí, je nutné poněkud upravit konkrétní algoritmus směrování, který jsme si popsali v 47. dílu našeho seriálu. Doposud jsme totiž předpokládali, že ve směrovacích tabulkách jsou dvojice "cílová síť, brána", popisující jednotlivé dílčí sítě, a že algoritmus směrování v nich hledá na základě adresy cílové sítě v příslušném datagramu. Nyní je ale zapotřebí, aby ve směrovacích tabulkách byly trojice: "maska podsítě, cílová síť, brána", popisující i jednotlivé podsítě, a modifikovaný algoritmus směrování musí v takovýchto tabulkách hledat opět podle adresy cílové sítě, s tentokrát navíc s uvážením konkrétní masky podsítě pro každou jednotlivou položku zvlášť.

Tento modifikovaný algoritmus má jednu výhodu - dokáže zobecnit i obě singularity, které se vyskytují u původního algoritmu (viz opět 47. díl), a to směrování na základě adres jednotlivých hostitelských počítačů, a použití implicitních cest. V prvním případě stačí volit takovou masku, díky které bude jako adresa sítě interpretována celá IP adresa příslušného hostitelského počítače (zatímco část, představující číslo hostitelského počítače, bude prázdná). V případě implicitních cest pak stačí použít opačný extrém - masku, která zcela "zamaskuje" adresu sítě.

Otázkou ovšem je, kdo má takto modifikovaný algoritmus směrování používat. Kdyby jej totiž musely používat všechny brány, zcela by se tím negoval výsledný efekt použití techniky podsítí, spočívající v další redukci směrovacích tabulek. Modifikovaný algoritmus směrování musí v každém případě používat všechny brány a hostitelské počítače v jednotlivých podsítích. Pokud jde o ostatní brány a hostitelské počítače, zde platí jednoduché teoretické pravidlo: modifikovaný algoritmus směrování je třeba použít tam, odkud mohou vést různé optimální cesty do různých podsítí se stejnou síťovou adresou.

Toto pravidlo lze jednoduše aplikovat v případě, že do celé skupiny podsítí se stejnou adresou vede jen jediný vstupní bod (jako například na obrázku 50.1.). V ostatních případech je situace mnohem komplikovanější.

Proxy ARP

Jak jsme si již naznačili výše, technika podsítí (subnetting) není jediným způsobem, jak může více dílčích sítí sdílet tutéž adresu. Další možností je mechanismus, označovaný jako proxy ARP či promiscuous ARP, nebo také ARP hack. Ten je ovšem použitelný jen tam, kde je využíván protokol ARP pro transformaci IP adres na adresy fyzické (tj. například v lokálních sítích typu Ethernet, viz 45. díl seriálu). Myšlenka proxy ARP je založená na jednoduchém triku, který ilustruje obrázek 50.3.:

Obrázek 50.3.
Obr. 50.3.: Představa Proxy ARP
a/ při reakci na žádost o fyzickou adresu
b/ při vlastním přenosu dat

brána G se snaží předstírat síti A, že je tím hostitelským počítačem (v síti B), se kterým chce právě komunikovat některý z uzlů sítě A. Dělá to tak, že kdykoli je pomocí protokolu ARP vyslán v síti A dotaz na fyzickou adresu některého hostitelského počítače v síti B, brána G na tento dotaz odpoví, a vrátí svou fyzickou adresu. Všechny datagramy, určené příslušnému počítači, jsou pak posílány na tuto fyzickou adresu, tedy ve skutečnosti bráně G, které je pak prostřednictvím sítě B dále předává jejich konečnému adresátovi. Výsledný efekt je tedy takový, jako kdyby síť B splývala se sítí A, a měla s ní tudíž stejnou síťovou adresu.

Problém je ovšem v omezené použitelnosti (jen tam, kde je používán protokol ARP), a dále také v tom, že některé implementace protokolu ARP se snaží detekovat a hlásit správci sítě tzv. spoofing, jak se označuje situace, kdy jedno zařízení předstírá, že je jiným zařízením (například proto, aby mohlo neoprávněně "odposlouchávat" přenášená data).