Vyšlo na www.novinky.cz dne 26.4.1999
Vytištěno z adresy: http://www.earchiv.cz/anovinky/ai2013.php3

Proč má Ethernet svou metodu CSMA/CD?

Ethernet je přenosovou technologií, která vznikla s určitou vizí. Touto vizí byl předpoklad, že jednotlivé uzly sítě jsou navzájem propojeny takovým způsobem, že své propojení sdílí - neboli že všechny uzly budou napojeny na jedno společné (a tudíž i společně sdílené) přenosové médium, které bude fungovat jako jeden jediný (společný) přenosový kanál. V praxi to znamená, že kdokoli něco vyšle do tohoto přenosového média, budou to současně "slyšet" (a budou moci přijímat) všechny ostatní uzly sítě připojené k témuž přenosovému médium. Paralela tohoto chování s existencí všudypřítomného éteru pak dala vzniknout i jménu celé přenosové technologie - Ethernet (viz například zde).

Výše popsaná vize, ze které vychází i celá koncepce Ethernetu, je důsledkem použití takzvaného koaxiálního (souosého) kabelu pro propojení jednotlivých uzlů. Z tohoto koaxiálního kabelu jsou přitom vytvářeny odbočky, a na ně jsou připojovány jednotlivé uzly - čímž vzniká takzvaná sběrnicová topologie (bus topology).

[Obr: nb12_2.gif (2699 Bytes)]
Představa sběrnicové topologie

Takováto síť se sběrnicovou topologií má jeden základní problém: souběžné vysílání více uzlů. Pokud totiž bude nějaký uzel vysílat (tj. šířit svůj signál do společně sdíleného přenosového média - koaxiálního kabelu), budou jeho vysílání "slyšet" všechny ostatní uzly současně. Lze to interpretovat také tak, že vysílání jediného uzlu "plně obsadí" celé přenosové médium. Pokud by takto vysílalo více uzlů současně, jejich signály by se "smíchaly", a příjemci by je nedokázali následně rozlišit a "odseparovat".

Proč je nutná přístupová metoda?

Současné vysílání více uzlů v ethernetové síti (se sběrnicovou topologií ve výše uvedeném smyslu) je fakticky možné, v tom smyslu že nezpůsobí žádné fyzické poškození sítě ani připojených uzlů. Samozřejmě ale není žádoucí, protože neumožňuje korektní přenosy a vzájemnou komunikaci uzlů. Otázkou ale je, jak se těchto nežádoucích stavů vyvarovat.

Jedním možným přístupem je učinit taková opatření, aby k nim vůbec nedocházelo. Tato varianta, označovaná obvykle jako "řízená", vyžaduje, aby existoval nějaký mechanismus, který by umožňoval všem aktuálním zájemcům o vysílání dohodnout se, a ze svého středu vybrat jednoho, který pak dostane právo skutečně vysílat po společně sdíleném přenosovém médiu. Takto je tomu například v sítích Token Ring, FDDI, 100VG-AnyLAN a dalších. Jejich nevýhodou je skutečnost, že na "apriorní" koordinaci více zájemců o vysílání je nutná nezanedbatelná režie a inteligence sítě.

Autoři Ethernetu se vydali jinou cestou, cestou "neřízené" varianty, resp. cestou neřízené přístupové metody (tj. metody regulující přístup jednotlivých uzlů ke společnému přenosovému médiu). Ethernet se nesnaží dopředu předcházet nežádoucím situacím (souběžnému vysílání více uzlů), ale snaží se je řešit až teprve tehdy, když skutečně nastanou. Lze to vysvětlit také tím, že autoři Ethernetu spíše očekávali, že jejich technologie nebude využívána "nadoraz", neboli s velkou intenzitou požadavků jednotlivých uzlů na vysílání. Pak je totiž pravděpodobnost souběžných pokusů o vysílání relativně nízká a je výhodnější řešit vše ex-post než dopředu.

Jak funguje přístupová metoda CSMA/CD?

Konkrétní přístupová metoda, kterou využívá Ethernet, se jmenuje CSMA/CD. Její název je zkratkou a první dvě písmena CS znamenají "Carrier Sense" (doslova: detekce nosné). Jde o vyjádření skutečnosti, že v ethernetové síti má každý uzel možnost zjistit, zda právě někdo vysílá, nebo nikoli - má možnost rozpoznat (detekovat) "nosnou frekvenci" jeho vysílání. To umožňuje, aby každý zájemce o vysílání mohl nejprve dát pozor, aby někomu "neskočil do řeči" resp. aby nezahájil vysílání v době, kdy po společně sdíleném přenosovém médiu již vysílá nějaký jiný uzel.

Samotná "detekce nosné" však ještě nedokáže zabránit vzniku souběžného vysílání více uzlů. Nejsnáze to lze demonstrovat na případu, kdy se během vysílání jednoho uzlu projeví své přání vysílat jiné dva uzly - oba sice rozpoznají, že právě vysílá, a korektně počkají, až své vysílání ukončí. Pak ale začnou vysílat oba současně, protože v Ethernetu nemají žádný způsob, jak se mezi sebou dohodnout (jak se "rozpočítat") - jednotliví zájemci o vysílání dokonce ani nevědí o sobě navzájem.

Souvisí to i s dalšími dvěma písmeny ve jménu přístupové metody: písmenka MA ve jméně CSMA/CD znamenají "Multiple Access" neboli vícenásobný přístup - souběžné vysílání více uzlů zde je možné (a nezpůsobuje žádné fyzické poškození), ale je nežádoucí. Říká se mu kolize (collision).

S kolizemi souvisí i poslední dvě písmenka v názvu přístupové metody Ethernetu: CD zde znamená Collision Detect neboli možnost detekce kolize. V praxi to znamená, že jednotlivé uzly mají možnost rozpoznat, zda došlo ke kolizi (zda jejich vysílání koliduje se souběžným vysíláním jiných uzlů).

Jak jsme si již naznačili výše, Ethernet se nesnaží výskyt kolizí apriorně vyloučit. Možností detekce nosné se pouze snaží jejich výskyt snížit, ale i přesto k nim může stále docházet. Přístupová metoda Ethernetu proto musí pamatovat na situaci, kdy ke kolizi již došlo, a následně tento nežádoucí stav řeší.

Podstata řešení je opět ovlivněna tím, že jednotlivé uzly, zúčastněné v kolizi, nemají žádnou možnost vzájemné koordinace. Nevědí například, kolik se jich do kolize dostalo - ze samotného faktu, že ke kolizi došlo, si každý uzel může odvodit, že se o vysílání pokoušel ještě alespoň jeden další uzel. Nemá ale žádnou možnost zjistit, kolik takovýchto uzlů bylo.

Po kolizi nastupuje náhoda

V situaci, kdy není možná žádná forma "řízeného rozpočítání" uzlů zúčastněných v kolizi, musí nastoupit náhodný faktor. Uzly, zúčastněné v kolizi, si doslova "hodí kostkou" - ve skutečnosti se odmlčí na dobu, kterou si náhodně zvolí z předem stanoveného intervalu. Toto opatření usiluje o to, aby se různé uzly odmlčely na různě dlouhou dobu, s tím že když se první z nich "probudí", má šanci najít společně sdílené přenosové médium volné a úspěšně jej využit k vysílání. K tomu v mnoha případech skutečně dochází a první "probuzený" je pak faktickým vítězem kolize.

[Obr: nb12_1.gif (2176 Bytes)]
Představa kolize a následného odmlčení zúčastněných uzlů na náhodně zvolenou dobu

Problém je ale v tom, že ani takovéto "náhodné rozpočítání" nemusí vést ke kýženému cíli. Stále se totiž může stát, že i po svém "probuzení" se konkrétní uzel dostane znovu do kolize.

Přístupová metoda CSMA/CD s touto možností počítá a snaží se vhodně minimalizovat pravděpodobnost jejího výskytu. Dělá to zejména tak, že při každé opakované účasti v kolizi si dotyčný uzel sám zdvojnásobí časový interval, ze kterého náhodně volí dobu svého odmlčení. Tím se pravděpodobnost další následné kolize snižuje, ale nemizí úplně. Pokud se konkrétnímu uzlu ani na desátý pokus nepodaří úspěšně zahájit vysílání (a tedy po desátém prodloužení časového intervalu na dvojnásobek), pak své pokusy vzdá (a vyšší vrstvě ohlásí neúspěch).

Důsledek: Ethernet je nedeterministický

Právě popsané chování přístupové metody CSMA/CD má jeden velmi silný důsledek na podstatu celého Ethernetu jako takového. Kvůli náhodnému faktoru, který se v metodě CSMA/CD uplatňuje, je celý Ethernet nedeterministický. Žádnému uzlu nedokáže garantovat, že se v konečném čase dostane k vysílání, pokud o něj projeví zájem.

Tomuto tvrzení je ale nutné správně rozumět. Ethernet nedokáže zajistit možnost vysílání s absolutní, 100% zárukou. Dokáže ji ale zajistit s vysokou pravděpodobností, která je navíc závislá na míře zatížení celé sítě - čím menší je momentální zátěž (a tím menší je procento kolizí), tím větší je pravděpodobnost, že se nějaký uzel skutečně dostane "ke slovu". Naopak při větší zátěži roste pravděpodobnost kolizí, dokonce i kolizí opakovaných, a v jejich důsledku dokonce klesá i celková efektivní propustnost Ethernetu. Jinými slovy: při nízké zátěži funguje Ethernet bezproblémově a efektivně, s malou režií (připadající na kolize). Při rostoucí zátěži se chování Ethernetu relativně zhoršuje, a při překročení určité hranice (odpovídající asi 60 až 80 procentům maximální teoretické propustnosti přenosového média) dochází při dalším zvyšování zátěže dokonce ke zhoršování propustnosti Ethernetu (dochází k tolika kolizím, že se přenáší čím dál tím méně "užitečných" dat).

Pro praktické použití například v kancelářském prostředí nemají tyto vlastnosti Ethernetu významnější vliv, a naopak se uplatňuje jeho jednoduchost a přímočarost (i nízká cena ethernetových produktů). V kancelářském prostředí příliš nevadí, když se něco občas zpozdí (typicky o zlomky sekund), nebo se dokonce něco nepodaří přenést vůbec - pravděpodobnost je zde sice nenulová, ale opravdu velmi malá. Naproti tomu třeba tam, kde by mělo docházet k nějakému řízení v reálném času (třeba při řízení technologických procesů) by nedeterminismus Ethernetu byl velmi na závadu.