Vyšlo v týdeníku CHIPweek č. 4/97, 21. ledna 1997
Vytištěno z adresy: http://www.earchiv.cz/a97/a704k150.php3

Switching

Zajímavou novou technikou, která se v poslední době velmi intenzivně prosazuje ve světě lokálních počítačových sítí, je tzv. switching. V čem spočívá, a jak zapadá do celkové koncepce přepojování paketů, kterou jsme se až doposud zabývali?

V prvním přiblížení si můžeme říci, že switching je variantou přepojování paketů na úrovni linkové vrstvy, tedy jednou z forem přepojování rámců. To, co tuto variantu charakterizuje, je samozřejmě konkrétní mechanismus fungování - pro správné pochopení switchingu je ale vhodnější vyjít spíše z motivace, která ke vzniku této techniky vedla. Jelikož ale příslušná motivace spadá spíše do oblasti vzájemného propojování sítí, kterou se budeme podrobněji zabývat v následujícím modulu, vezměme to jen stručně: srovnejme si poslání mostu (jako "klasického" zařízení zajišťujícího přepojování rámců na úrovni linkové vrstvy), a tzv. switch-e (který také zajišťuje přepojování rámců na úrovni linkové vrstvy, ale na bázi switchingu).

Úkol mostu a switche

Hlavním úkolem mostu je propojovat mezi sebou dílčí části jedné a téže lokální sítě, nejčastěji jednotlivé kabelové segmenty (souvislé úseky kabelů). Typicky jde o takové sítě, které jsou budovány na koaxiálním kabelu, mají tudíž fyzicky sběrnicovou topologii, a důvody pro jejich rozdělení na více segmentů jsou spíše technické (například maximální možná délka souvislého kabelu). V praxi pak bývá takovýchto dílčí segmentů v rámci jedné sítě několik málo (například dva, tři, ...), a most má za úkol propojovat tyto segmenty takovým způsobem, aby byl možný přenos dat mezi nimi (k tomu se využívá jeho schopnost předávat data z jednoho segmentu do druhého, kterou jsme si minule označili jako tzv. forwarding). Kromě toho se ale most snaží chovat i dostatečně inteligentně a nedělat některé zbytečné věci - pokud například zjistí, že určitý rámec je adresován příjemci ve stejném segmentu, ve kterém se nachází i jeho odesilatel, domyslí si že příslušný rámec nemá smysl šířit i do dalších segmentů, a tak to nedělá (tuto schopnost jsme si minule označili jako tzv. filtrování). Výsledkem je pak to, že většina "provozu" se odehrává lokálně v jednotlivých segmentech sítě, a vzájemná komunikace mezi segmenty (a jejich vzájemné ovlivňování) je minimalizována na nejnižší nutnou míru.

Obrázek 1.
Obr. 1: Mosty vs. switche
Naproti tomu vznik tzv. switchů souvisí se snahou optimálně využít vlastností a možností nových druhů kabeláže, které již nemají sběrnicovou topologii - zejména kabeláže na bázi kroucené dvoulinky, ve které každý jednotlivý uzel může mít jen a jen pro sebe svou vlastní přípojku k nejbližšímu přepojovacímu uzlu. Představme si nyní takovýto stav, dovedený až do dokonalosti (například v prostředí klasického desetimegabitového Ethernetu) - tedy stav kdy každý jednotlivý uzel má svou vlastní přípojku k nejbližšímu switchi, neboli co jeden segment, to jeden uzlový počítač. Pak ovšem nemůže existovat žádný "lokální" provoz, který by mohl zůstat lokální v určitém segmentu a nemusel být propouštěn do dalších segmentů - veškerý provoz mezi kterýmikoli dvěma uzly naopak musí procházet přes zmíněný switch. Na druhé straně ale tento provoz nemusí být propouštěn do dalších "jednouzlových" segmentů. Každé dva komunikující uzly pak v důsledku toho mají k dispozici plnou přenosovou kapacitu Ethernetu (který v tomto příkladu předpokládáme), tedy "plných 10 megabitů", a nemusí se o ni dělit s jinými dvojicemi komunikujících uzlů (jako by tomu bylo v případě sdílených segmentů s více uzly). A právě to je hlavní cíl techniky, označované jako switching.

V praxi ovšem nemusí nastávat výše popsaný ideální stav, kdy každý jednotlivý uzel má svou vlastní přípojku, kterou nemusí s nikým sdílet. Místo toho mohou switche propojovat i takové segmenty, které jsou "zabydleny" více počítači (tj. jsou jimi sdíleny), a mají tedy určitou míru čistě lokálního provozu. Ovšem čím více "zabydlený" každý segment bude, tím menší budou výhody přinášené technikou switchingu, a tím více se bude chování switche blížit chování klasického mostu.

Mechanismus fungování switche

Nyní již si můžeme říci, že tzv. switching, neboli princip fungování switch-e, není principiálně odlišný od způsobu fungování běžného mostu. Rozdíl zde není v kvalitě, jako spíše v kvantitě - typické switche mají více rozhraní (portů) pro připojení jednotlivých segmentů, a vyšší (rychlejší) bývají i jejich přepojovací schopnosti. Má-li totiž switch sloužit zejména tomu, aby komunikující uzly měly k dispozici maximální možnou přenosovou kapacitu, bylo by nevhodné tuto jejich komunikaci zpomalovat či jinak zdržovat.

Jak jsme si již také naznačili minule, přepojování na úrovni linkové vrstvy (které provádí switch) je relativně jednodušší (oproti směrování), a může tudíž být i dostatečně rychlé. Zde se přitom úspěšně využívá možnosti realizovat celé toto přepojování na úrovni linkové vrstvy přímo technickými prostředky, hardwarem optimalizovaným pro takovýto účel (zatímco směrování se stále ještě řeší programovými prostředky). Dnes se proto mohou běžně vyrábět a prodávat switche, které mají opravdu velmi vysoké přepojovací schopnosti a slibují výrazné zvýšení celkové propustnosti sítě (při vcelku únosné ceně). Ovšem jejich skutečný přínos je vždy ovlivněn dalšími faktory - zejména tím, kolik uzlů je v jednotlivých segmentech, a jaký je charakter jejich vzájemné komunikace. Někdy může nasazení switche opravdu významně zrychlit komunikace v dané síti, zatímco v jiné síti může být celkový přínos třeba i nulový.

Store&forward vs. cut-through

Až doposud jsme u všech podob mechanismu přepojování paketů předpokládali, že fungují na principu store & forward - neboli že každý jednotlivý blok dat je v každém přestupním uzlu nejprve celý načten, a teprve pak zpracován. V případě switchů, kterým dost záleží na rychlosti, to ale nemusí být zrovna nejvhodnější. Proto některé switche používají ke svému fungování poněkud jiný princip, kterému se říká cut-through (zatímco jiné zůstávají u původního principu store&forward).

Princip cut-through spočívá v tom, že přepojovací uzel (switch) nečeká na načtení celého přenášeného bloku dat, a snaží se jej zpracovat co možná nejrychleji. V konkrétním případě (předpokládejme Ethernetové rámce) si počká jen na načtení hlavičky Ethernetového rámce, ze které již dokáže poznat co má s celým blokem dat udělat, a okamžitě také své rozhodnutí naplní. To pak v praxi znamená, že příslušný rámec začne průběžně odesílat v příslušném výstupním směru ještě v době, kdy jej z jiného směru sám teprve přijímá! Odsud také zřejmě pochází označení celého principu - anglické "through" znamená "skrz", a celý switch se pro přenášený rámec v jistém smyslu stává "průchozí skrz" (i když s jistým malým zpožděním, odpovídajícím době nutné pro načtení hlavičky rámce).

Hlavní výhodou principu cut-through je garance, že rámec projde přestupním uzlem (switchem) za pevně danou dobu (která je navíc hodně malá), zatímco v případě principu store&forward nic takového zaručeno není. Princip cut-through je proto výhodnější pro přenos různých multimediálních formátů a obecně pro přenos dat v reálném čase, kde časové závislosti jsou velmi důležité. Mezi nevýhody naopak patří skutečnost, že switch fungujícímu na principu cut-through musí přenášet i poškozené rámce (který by přenášet nemusel). Důvodem je to, že poškození lze poznat až ze zabezpečovacího údaje, který se typicky nachází až na konci datového rámce - ale switch fungující na principu cut-through se musí rozhodnout a začít přenášet rámec ještě dříve, než sám tento zabezpečovací údaj přijme.