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

Síťová vrstva - II

Otázka volby mezi spojovanými a nespojovanými službami (connection-oriented vs. connectionless službami, viz 27. díl našeho seriálu) je snad nejkontroverznější právě na úrovní síťové vrstvy. Když vznikal referenční model ISO/OSI, mezi jeho tvůrci měli značnou převahu zastánci spojovaných služeb. Proto také referenční model původně počítal jen s tímto druhem síťových služeb. Zastánci druhé alternativy však alespoň dodatečně prosadili do referenčního modelu i služby spojované. V čem je ale skutečné jádro sporu mezi oběma tendencemi?

Připomeňme si nejprve, že spojovaná služba funguje obdobně jako veřejná telefonní síť - předpokládá nejprve navázání spojení mezi oběma účastníky, pak vlastní přenos dat prostřednictvím tohoto spojení, které se v jistém smyslu chová jako roura, kterou se vlastní data "protlačují", a nakonec vyžaduje ukončení (rozvázání) spojení. Naopak nespojovaná služba funguje obdobně jako běžná listovní pošta - každý jednotlivý paket (resp. datagram) doručuje samostatně a nezávisle na ostatních, bez toho, že by se navazovalo spojení mezi příjemcem a odesilatelem. Další analogií s listovní poštou je rozdíl mezi spolehlivou a nespolehlivou nespojovanou službou - spolehlivá varianta je obdobou doporučené zásilky, která se nemůže (alespoň teoreticky) ztratit, zatímco nespolehlivá verze je obdobou obyčejné zásilky, u které pošta negarantuje její doručení, a která se může beze stopy ztratit.

Zastánci spojovaných služeb, rekrutující se především z kruhů spojových organizací, zastávají názor, že uživatelé resp. vyšší vrstvy potřebují maximálně spolehlivou a jednoduše použitelnou službu pro přenos dat, která by je zbavila všech starostí se zabezpečením vlastního přenosu dat (např. s potřebným řízením toku, opravou chyb, zajištěním správného pořadí jednotlivých doručovaných paketů atd.). Tedy spolehlivou spojovanou síťovou službu pro přenos paketů.

Druhá strana, reprezentovaná především lidmi kolem sítě Internet, argumentuje svou dlouhodobou zkušeností s provozováním velké počítačové sítě v reálných podmínkách. Podle ní je nutné považovat komunikační infrastrukturu (podsíť, viz minulý díl našeho seriálu) za nespolehlivou, bez ohledu na to, jak je navržena (tedy i v případě, že se sama snaží být spolehlivou). Koncové systémy (hostitelské počítače, viz minule) musí počítat s tím, že pakety se mohou v podsíti ztrácet, a vše potřebné k zajištění spolehlivosti si tudíž musí realizovat sami - tedy detekci a opravu chyb, řízení toku atd. To ovšem vede na požadavek používat na úrovni síťové vrstvy jen ty nejrychlejší a nejjednodušší služby (na úrovni operací typu "vyšli paket" a "přijmi paket"), a spolehlivost zajistit až v bezprostředně vyšší, transportní vrstvě. Tato druhá strana tedy požaduje na úrovni síťové vrstvy jen jednoduchou nespolehlivou nespojovanou službu.

Na celý spor mezi oběma tábory je možné se dívat i z poněkud jiného úhlu. Spojové organizace jako zastánci spojovaných služeb chtějí poskytovat uživatelům co nejkomplexnější a nejúplnější služby - je to asi přirozené, neboť právě za ně jsou placeny. Druhá strana naopak tvrdí, že výpočetní kapacita je dnes tak laciná, že není nejmenší problém, aby si co nejvíce funkcí zajišťovaly až jednotlivé hostitelské počítače (obvykle ve vlastnictví uživatelů). Dalším silným argumentem této skupiny je pak to, že charakter některých síťových aplikací (jako např. přenos digitalizovaného zvuku a sběr dat v reálném čase) upřednostňuje rychlý přenos před přenosem spolehlivým.

Rozpor mezi spojovanými a nespojovanými službami na úrovni síťové vrstvy je tedy ve své podstatě sporem o to, kam umístit veškerou složitost - tedy funkce, spojené se zajištěním spolehlivosti, které tak jako tak musí být někde realizovány. Zastánci spojovaných služeb je chtějí umístit do síťové vrstvy, zatímco zastánci nespojovaných služeb požadují jejich umístění až do vrstvy transportní (zatímco od vrstvy síťové požadují jen nejjednodušší nespolehlivou nespojovanou službu).

CONS i CLNS

Celý spor byl nakonec vyřešen tak, že aktualizovaná verze referenčního modelu ISO/OSI již počítá na úrovni síťové vrstvy s možností poskytování obou druhů služeb - spojovaných síťových služeb (CONS - Connection-Oriented Network Services) i nespojovaných síťových služeb (CLNS, ConnectionLess Network Services).

Služby vs. jejich realizace

Druh služeb, které síťová vrstva poskytuje své bezprostředně vyšší (tj. transportní) vrstvě, nesmíme mechanicky ztotožňovat s tím, jak síťová vrstva skutečně funguje "uvnitř". Základní možnosti jsme si naznačili již v 17. dílu našeho seriálu, kdy jsme si povídali o veřejných datových sítích. Pomineme-li možnost tzv. přepojování okruhů, která vytváří přímé fyzické spojení mezi oběma koncovými účastníky, jde o dvě základní varianty: první z nich jsou tzv. virtuální okruhy (též: virtuální spoje, virtual calls, virtual circuits) jako mechanismus spojovaného charakteru, který před vlastním přenosem datových paketů předpokládá "vytyčení" logické cesty (virtuálního okruhu) mezi oběma koncovými účastníky.

Druhou alternativou je pak přenos datagramů, který má nespojovaný charakter, každý jednotlivý paket (nyní nazývaný datagram) doručuje samostatně, nezávisle na ostatních paketech, a nepředpokládá žádné vytyčení cesty od odesilatele k jejich příjemci.

Je jistě zřejmé, že spojované síťové služby (CONS) se obvykle realizují prostřednictvím komunikační podsítě, která používá mechanismus virtuálních okruhů, zatímco nespojované síťové služby (CLNS) se realizují prostřednictvím podsítě, které pracuje na bázi přenosu jednotlivých datagramů. Není to ale jediná možnost. Spojované síťové služby lze bez větších problémů poskytovat i pomocí podsítě, která pracuje s přenosem jednotlivých datagramů (jestliže se každý paket místo virtuálním okruhem ve skutečnosti přenáší samostatně jako datagram). Teoreticky je možná i opačná kombinace - nespojované služby v podsíti, která pracuje s virtuálními okruhy. Příliš efektivní to ale není - pro přenos každého jednotlivého datagramu je nutné nejprve zřídit, a pak zase zrušit potřebný virtuální okruh. Pokud je ale k dispozici jen podsíť s virtuálními okruhy, nic jiného nezbývá.

Naznačme si nyní poněkud podrobněji, jak jsou implementovány a jak fungují mechanismy virtuálních okruhů a přenosu datagramů. Pomůže nám to lépe pochopit podstatu sporu mezi zastánci spojovaných a nespojovaných služeb.

Virtuální okruhy vs. datagramy

Obrázek 33.1.
Obr. 33.1.: Představa implementace mechanismu virtuálních okruhů
a/ topologie sítě
b/ tabulky síťové vrstvy v jednotlivých uzlech
Mechanismus virtuálních okruhů předpokládá, že mezi zdrojem dat a jejich koncovým příjemcem je v rámci navazování spojení nejprve "vytyčena" logická cesta (virtuální okruh), po které jsou pak postupně přenášeny jednotlivé pakety.

Vytyčit cestu ve skutečnosti znamená, že se právě jednou (v rámci navazování spojení) najde taková posloupnost mezilehlých uzlů (resp. uzlů IMP, viz minule), která vede od zdroje dat až k jejich koncovému příjemci, a je v daný moment považována za optimální. Údaje o této cestě (virtuálním kanálu) se pak uchovávají v jednotlivých meziuzlech jako položky speciální tabulky - viz obr. 33.1.b/.

Jednotlivé datové pakety, které jsou pak skutečně přenášeny, nejsou označeny adresou svého konečného příjemce (která může být relativně dlouhá), ale pouze označením příslušného virtuálního kanálu. Síťová vrstva v každém meziuzlu pak podle tohoto údaje zjistí ve své tabulce, kterým směrem má paket předat dále, a učiní tak.

Obrázek 33.2.
Obr. 33.2.: Představa implementace mechanismu datagramů
a/ topologie sítě
b/ tabulky síťové vrstvy v jednotlivých uzlech
Naproti tomu při přenosu datagramů se předpokládá, že mezi zdrojem dat a jejich koncovým příjemcem není navazováno přímé spojení, a jednotlivé datové pakety (datagramy) jsou vysílány "naslepo", v dobré víře, že jejich příjemce vůbec existuje a bude schopen je přijmout. Každý datagram je přitom doručován nezávisle na ostatních (tak jako např. běžný dopis v případě listovní pošty) - to znamená, že v každém meziuzlu musí síťová vrstva vždy znovu rozhodnout, kterým směrem má být datagram poslán dále. V jednotlivých meziuzlech si proto síťová vrstva nevytváří obdobu tabulky, popisující virtuální okruhy. Místo toho pracuje s tabulkou, ve které má alespoň základní informace o topologii sítě (například jako na obrázku obr. 33.2.), a podle ní přijímá svá rozhodnutí o nejvhodnějším směru dalšího přenosu každého jednotlivého datagramu.

Hlavní výhodou virtuálních okruhů je skutečnost, že rozhodování o dalším směru přenosu paketů se v každém meziuzlu přijímá jen jednou, a nikoli pokaždé znovu, jako je tomu v případě datagramů. Nevýhodou je naopak statický charakter tohoto rozhodnutí (a tím i zvolené cesty resp. virtuálního okruhu), které není možné dynamicky přizpůsobovat okamžitému stavu sítě - což je naopak možné v případě přenosu datagramů.

Virtuální okruhy vykazují větší jednorázovou počáteční režii (na navázání spojení resp. vytvoření logického okruhu), a menší relativní režii na přenos jednotlivých paketů, zatímco v případě datagramů je tomu přesně naopak. Srovnání dalších aspektů nabízí také tabulka 33.3.

Obecně lze říci, že mechanismus virtuálních okruhů je výhodnější v případě přenosu menších paketů (jako je tomu např. při interaktivních aplikacích), zatímco varianta s přenosem datagramů je výhodnější pro menší počty relativně větších paketů, a ve verzi nespolehlivé (resp. nepotvrzované) datagramové služby také tam, kde jde především o rychlost.

virtuální okruhy datagramy
navazování a ukončování spojení ano ne
adresování každý paket obsahuje jen číslo virtuálního okruhu každý datagram obsahuje adresu
zdroje i příjemce datagramu
směrování cesta volena jen jednou v rámci navazování spojení, a všechny pakety jsou přenášeny po této jediné cestě každý datagram je směrován samostatně
detekce a oprava chyb realizována v síťové vrstvě realizována v transportní vrstvě
správné pořadí paketů zajištěno není zajištěno
řízení toku dat mezi koncovými účastníky ano ne
efekt výpadku meziuzlu zanikají všechny zřízené virtuální okruhy ztrácí se jen právě přenášené datagramy
složitost soustředěna do síťové vrstvy transportní vrstvy
vhodné pro realizaci spojovaných síťových služeb (CONS) spojovaných i nespojovaných síťových služeb (CONS i CLNS)
Tabulka 33.3.: Srovnání virtuálních okruhů a datagramů