Vyšlo v měsíčníku CHIP č. 6/99, červen 1999
Vytištěno z adresy: http://www.earchiv.cz/a99/a907c701.php3

Layer 4 switching

Jedním z nejnovějších marketingových hitů v oblasti aktivních prvků pro počítačové sítě je schopnost přepínání na úrovni 4. vrstvy neboli tzv. “Layer 4 Switching”. Je to něco, co má reálný smysl a konkrétní přínos, nebo je to jen prázdné heslo, které nepřináší fakticky nic nového? A o co vlastně jde?

Přenosové protokoly z rodiny protokolů TCP/IP nejsou schopné rozlišovat různé druhy provozu a ke všem přenášeným datům se chovají stejně, na principu “maximální snahy” (anglicky: best effort). Pokud je to možné, snaží se je přenášet co nejrychleji, ale pokud to nejde – například kvůli momentálně nedostatečné přenosové kapacitě – krátí všechny požadavky na přenos rovnoměrně. Kvůli tomu může docházet k různým zdržením v přenosu dat, a dokonce i k jejich ztrátě.

Vadí absence QoS?

To, co sítě TCP/IP postrádají, je obvykle označováno jako QoS (Quality of Service, doslova: “kvalita služeb”). Vysvětlení této skutečnosti je jednoduché: v době, kdy protokoly TCP/IP vznikaly, nebyla takováto podpora pro “kvalitu služeb” vyžadována. Protokoly TCP/IP vznikaly v lůně rodícího se internetu, pro jeho potřeby a služby, a ty v té době měly téměř výhradně charakter dávkového přenosu souborů či elektronické pošty a tzv. vzdáleného přihlašování. Proto onen důraz na maximálně efektivní využití přenosových cest, byť za cenu pouhé “maximální snahy” vůči přenášeným datům, ale žádné garance.

Dnes je ale situace dosti odlišná, a to nejen v internetu, ale i ve všech sítích na bázi TCP/IP. Dnes se objevuje celá řada aplikací, které ke svému fungování vyžadují určité specifické chování přenosové části sítě. Příkladem mohou být snahy přenášet po sítích TCP/IP (které jsou ze své podstaty paketovými sítěmi) digitalizovaný lidský hlas, a to pro potřeby telefonování, v rámci tzv. IP telefonie, resp. telefonie internetové. Pro takovéto “živé” služby, mezi které patří i různé druhy video- a audiokonferencí, je velmi důležitá rychlost a pravidelnost, s jakou jim budou doručovány jednotlivé části dat. Sítě na bázi TCP/IP ale nedokážou dát těmto “živým” datům při jejich přenosu přednost před jinými daty, u kterých rychlost a pravidelnost doručování nemusí hrát příliš velkou roli.

Jiným příkladem, který je asi nejčastěji uváděn jako argument pro přepojování na 4. vrstvě, je možnost rozkladu zátěže v závislosti na aplikacích a probíhajících relacích. Představíme-li si například velký počet uživatelů, kteří používají určitou službu současně (například chtějí komunikovat se servery virtuálního města v eCity, abychom nechodili pro příklady daleko), pak veškerý provoz, který generují, je standardně směrován k jedinému výkonnému serveru, který nemusí vždy “stíhat” tak velkou zátěž. Možným řešením je zřídit několik serverů, které by se o zátěž podělily, ale otázkou je, jak to udělat. Není dost dobře možné rozdělit uživatele tak, aby se každý sám obracel na nejméně vytížený server, a tím se staral o rovnoměrný rozklad zátěže. To musí být realizováno automaticky a z pohledu uživatele plně transparentně – tak aby se uživatel vždy obracel k jedinému poskytovateli určité služby, ale fakticky byl jeho požadavek vyslyšen a realizován takovým poskytovatelem (serverem), který je momentálně nejméně vytížený. Obecněji pak může jít o takovýto “rozklad” zátěže i v závislosti na tom, jaká služba je požadována – zda jde například o požadavek na WWW stránku, o dotaz do systému DNS, o požadavek na soubor z FTP archivu apod.

Otázka ale je, jak takovýmto požadavkům, závislým na konkrétní aplikaci, co nejlépe vyhovět. To není možné bez dostatečné znalosti konkrétních aplikací ani bez schopnosti rozpoznat z přenášených dat dostatečně přesně, kdy jde o jaké požadavky. Celou věc přitom komplikuje i fakt, že data tvořící konkrétní požadavky mohou být přenášena po jednotlivých datových paketech, které však tvoří určitý logický celek – a tak není možné zpracovávat každý datový paket nezávisle na ostatních, ale je nutné uvažovat jejich vzájemné vazby (například požadavek přenášený v podobě několika datových paketů je třeba zpracovat vždy stejně, např. směrovat jej stejnému serveru). Ještě další komplikací jsou logické vazby, jež vyplývají ze spojovaného charakteru různých relací na aplikační úrovni: Pokud konkrétní uživatel začne komunikovat s konkrétním fyzickým serverem a tato komunikace má spojovaný charakter a podobu relace (tj. má nějakou historii a další průběh), pak všechny dílčí požadavky musí být fakticky směrovány ke stejnému fyzickému serveru, aby byla zajištěna potřebná logická kontinuita. A to opravdu není jednoduché, zejména pro zařízení zajišťující potřebný rozklad zátěže, protože to vyžaduje dosti hlubokou znalost konkrétní aplikace i poměrně velkou inteligenci pro příslušné rozhodování.

Možné cesty k řešení

Neschopnost sítí postavených na bázi TCP/IP vyhovět výše naznačeným požadavkům je samozřejmě známa již delší dobu a snahy řešit tento problém také nejsou zcela nové. V současné době existují dva hlavní přístupy k řešení, lišící se svou podstatou.

Prvním možným přístupem je modifikace přenosových vlastností sítí TCP/IP, tak aby vedle dosavadního způsobu fungování přenosové části sítě vznikl určitý “vyhrazený kanál” s lepšími přenosovými vlastnostmi (hlavně: schopný garantovat kvalitu přenosových služeb). Konkrétní podoba je taková, že pomocí “rezervačního mechanismu” (konkrétně protokolu RSVP) se v rámci směrovačů (routerů) předem vyhradí určitá přenosová kapacita pro takovéto přenosy, jež se pak realizují pomocí samostatného přenosového protokolu (protokolu RTP, Real-Time Protocol). Celkový efekt pak bude takový, jako kdyby vedle sebe existovaly paralelně dvě na sobě nezávislé přenosové sítě, jedna fungující jako doposud (na principu “maximální snahy”) a druhá na principu garantovaných vlastností.

Princip přepínání na 4. vrstvě

Druhým možným přístupem, který se v současnosti rýsuje a bývá označován právě jako “přepínání na úrovni 4. vrstvy” (Layer 4 Switching), je přístup založený na modifikaci celého mechanismu, který rozhoduje o dalším osudu dat přenášených přes různé “přestupní uzly” v celé síti (jde tedy o jejich průchod směrovači, switchi atd.). Takový mechanismus lze nazvat mechanismem směrování, přepínání či přepojování. Podstata změny spočívá v tom, že tento mechanismus se vůči různým druhům provozu bude chovat různě – některým datům bude dávat přednost před druhými nebo je bude zpracovávat jinak (například při rozkládání zátěže je bude posílat různými směry, podle momentálního stavu zátěže a dalších kritérií).

Důležité ale je, že k něčemu takovému musí být příslušné rozhodování založeno na dosti hluboké znalosti významu přenášených dat (a tím i aplikací, kterých se tato data týkají). Nejde tedy již o klasické přepojování (switching), jak je obvykle označováno fungování příslušných mechanismů na úrovni 2. vrstvy (ve smyslu sedmivrstvého modelu ISO/OSI) – zde se tento mechanismus rozhoduje výlučně podle adres uzlů na úrovni 2. vrstvy (tedy například podle ethernetových adres). Nejde ani o klasické směrování (routing), jak je označováno fungování příslušných mechanismů na úrovni 3. vrstvy (vrstvy síťové) – zde je příslušné rozhodování založeno výhradně na síťových adresách, tedy na tzv. adresách IP. Místo toho je nutné založit příslušné rozhodovací mechanismy, které rozhodují o dalším zpracování přenášených dat, na informacích, které logicky patří do vyšších vrstev. Konkrétně to znamená, že rozhodovací mechanismus musí jít při své analýze přenášených dat mnohem “hlouběji” a uvědomovat si nejen adresy příjemců a odesilatelů, ale také například tzv. čísla portů (což identifikuje druh aplikace, které se přenášená data týkají). Někdy však musí jít ještě hlouběji a podrobněji analyzovat data “patřící” určité aplikaci – například proto, aby v rámci zátěže mohl respektovat logickou kontinuitu určité relace.

Pravda je, že informace, ze kterých takovéto rozhodování vychází, odpovídají úrovni transportní vrstvy (především tzv. čísla portů), a dokonce úrovni vrstvy aplikační (data patřící příslušné aplikaci). Proto má jisté opodstatnění mluvit o “přepojování” na úrovni 4. vrstvy.

Ano, či ne?

Při hodnocení celého konceptu “přepínání na 4. vrstvě” je dobré mít na paměti, že tak jako u většiny podobných “hitů” je zde určité racionální jádro a kolem něj “marketingový obal”, který se snaží toto jádro prodat.

Racionálním jádrem je snaha ještě dále zlepšit přenosové vlastnosti sítí TCP/IP, a to nikoli extenzivním způsobem neboli “přístupem hrubou silou” – tedy prostým zvyšováním celkové přenosové kapacity a rychlosti přepojování datových paketů bez uvážení jejich významu a charakteru. Jde naopak o snahy “zkvalitnit” přenosové vlastnosti, směřující k respektování významu a povahy dat, tak aby byly respektovány různorodé požadavky na jejich zpracování, samozřejmě včetně celkové rychlosti tohoto zpracování. Na potřebě něčeho takového se odborné prameny vcelku shodují.

V čem se odborné prameny naopak liší, je názor na to, jak kýženého cíle dosáhnout, a zda to vůbec označovat jako “přepínání na 4. vrstvě” – když podobně jako u přepínání na 2. a 3. vrstvě je skutečným rozdílem pouze to, jaké informace se berou v úvahu při příslušném rozhodování o dalším osudu jednotlivých datových bloků, které prochází přes nějaký “přestupní” uzel. Přitom i některá inteligentní zařízení, označovaná jako “přepínače” na 2. či 3. vrstvě, mají již dnes zabudovány určité schopnosti reagovat na povahu přenášených dat a podle toho modifikovat své chování.