Vyšlo v týdeníku CHIPweek č. 40/97, 30. září 1997
Vytištěno z adresy: http://www.earchiv.cz/a97/a740k150.php3

AAL - Adaptační vrstva ATM

Jaký je smysl adaptační vrstvy AAL, jak je tato vrstva řešena a jak funguje?

Jak jsme si již uvedli v předchozích dílech, autoři přenosové technologie ATM počítali s možností, že by některé aplikace byly natolik šité na míru ATM, že by používaly přímo její "základní" vrstvu - tedy ATM vrstvu, viz předminulý díl, zabývající se vrstvovým modelem ATM. Tomu pak také uzpůsobili samotné chování této vrstvy, která již sama vychází vstříc různým potřebám aplikací, a nabízí jím různé druhy služeb, lišící se především ve své "kvalitě" - to jsou služby CBR, VBR, ABR a UBR, kterými jsme se zabývali v minulém dílu. Hlavní "nápor" však autoři přeci jen očekávali od takových aplikací, které nebudou šity na míru dosti specifické technologii ATM, a budou tudíž potřebovat určité přizpůsobení. Právě za tímto účelem pak byla nad samotnou ATM vrstvou, zabývající se přenosem jednotlivých ATM buněk, zavedena ještě další, přizpůsobovací vrstva - ne nadarmo pojmenovaná "adaptační" (AAL, neboli ATM Adaptation Layer).

Co je zač a jak funguje vrstva AAL?

Adaptační vrstva AAL v některých aspektech připomíná transportní vrstvu - například tím, že se sama nachází nad vrstvou, plnící úkoly síťové vrstvy (a podle filosofie RM ISO/OSI či TCP/IP je tudíž sama transportní vrstvou). Shodné s tradičními transportními vrstvami je ostatně i její celkové poslání - působit jako přizpůsobovací člen mezi požadavky aplikací a možnostmi přenosových vrstev. Odlišné však jsou konkrétní mechanismy fungování adaptační vrstvy AAL, a například také fakt, že vůbec nabízí spolehlivý (zabezpečený) přenos. Proti představě AAL jako transportní vrstvy působí i fakt, že nad ní jsou v praxi provozovány takové vrstvy, které jsou snad ještě typičtějšími představiteli transportních vrstev. Jak ještě záhy uvidíme, celá koncepce i historie vrstvy AAL vykazuje ještě několik zajímavých paradoxů, nedopatření, či přímo chyb.

Jak jsme si již také uvedli v předminulém dílu, vrstva AAL se člení na dvě podvrstvy, CS (Convergence Sublayer) a SAR (Segmenattion and Reassembly). Vyšší podvrstva, CS, se dokonce ještě dále rozděluje na dvě další podvrstvy - vyšší, která je specifická pro aplikaci nad vrstvou AAL, a na nižší podvrstvu, která je nezávislá na této aplikaci. Celkově pak celá podvrstva CS zajišťuje potřebné rozhraní k aplikaci - pod tím je vhodné si představit například to, že podvrstva CS vytváří této aplikaci iluzi, že přenáší celé bloky dat různé velikosti (tzv. zprávy), které jsou ve skutečnosti rozdělovány na malé kousky a vkládány do jednotlivých ATM buněk, nebo naopak vytváří aplikaci iluzi přenosu souvislého přenosu dat - zde si aplikace myslí, že může přenosové části (skrz vrstvu AAL) zadávat postupně jednotlivé byty dat, s představou že jsou byte po bytu přenášeny, a na druhé straně pomyslné "roury" zase ve stejné pořadí vystupují a mohou být byte po bytu odebírány.

Nižší podvrstva, SAR, se již zabývá otázkami přenosu dat v jednotlivých ATM buňkách - zajišťuje například detekci chyb (je-li požadována) či tzv. multiplexing, neboli vedení více logických spojení (relací) jediným ATM spojením. Jak si dalších odstavcích ukážeme, podvrstva SAR sice existuje vždy, ale zdaleka ne vždy plní stejné úkoly, resp. v různých případech má různé množství práce (a někdy, v AAL5, také nedělá vůbec nic).

Režie podvrstev CS a SAR

Obrázek 1.
Představa fungování adaptační vrstvy
Pro správné pochopení funkce celé adaptační vrstvy je dobré si upřesnit, jak vlastně fungují obě podvrstvy - každá z nich obecně přidává k přenášeným datům své vlastní řídící informace (podle konkrétního protokolu, který ke svému fungování používají). Lze to dokumentovat dnešním prvním obrázkem - k datům, které od aplikace dostane horní podvrstva CS (předpokládejme že jde o situaci, kdy tato podvrstva vytváří iluzi blokovaného přenosu, a přenášená data tudíž tvoří obecně velký blok, neboli zprávu). K této zprávě si podvrstva CS přidá svá režijní data (hlavičku a "patičku), načež jsou výsledná data rozdělena do tak malých celků, aby je následně bylo možné umístit do nákladové části jednotlivých ATM buněk. Ještě předtím jsou ale ke každému takovému "kousku" přidána režijní data podvrstvy SAR (tedy další hlavička a patička, tentokráte ale pro každou jednotlivou buňku). Výsledný "kousek", včetně hlavičky a patičky SAR, pak musí být tak velký, aby se vešel do nákladové části ATM buňky (tj. max. 48 bytů).

Protokoly AAL1 až AAL5

Autoři adaptační vrstvy AAL počítali se značnou variabilitou požadavků aplikací, které budou posazeny "nad" adaptační vrstvou. Přisoudily těmto aplikací dokonce tři stupně volnosti, a to:

  • volbu mezi fungováním v reálném čase a nikoli v reálném čase
  • volbu mezi konstatní a proměnnou přenosovou rychlostí (bit rate)
  • volbu mezi spojovaným a nespojovaným druhem přenosu.

Zkombinováním těchto tří dvouhodnotových stupňů volnosti by sice vzniklo osm různých možností, ale pouze čtyři z nich byly prohlášeny za smysluplné, a označeny jako třídy A, B, C a D (se zřejmou souvislostí s třídami CBR, VBR, ABR na úrovni ATM vrstvy). Jejich podstatu vystihuje následující tabulka:

A B C D
Časování
(v reálném čase)
anoneanoneanoneanone
Bit ratekonstantníproměnnákonstantníproměnná
Režimspojovaněnespojovaně

Posléze však byly pro tyto třídy "ustaveny" konkrétní protokoly, označené jako AAL1 až AAL4 (a na původní označení tříd se zapomnělo). Protokol AAL1 byl tedy určen pro spojované přenosy s konstantní přenosovou kapacitou (rychlostí) a v reálném čase - tedy například pro přenosy nekomprimovaného obrazu a zvuku. Jeho podvrstva CS je prázdná (nemá nic na práci), a "obydlena" je pouze podvrstva SAR. Vzhledem k obvyklé praxi (používání zvukové a obrazové komprese) je protokol AAL1 všeobecně považován za zcela zbytečný.

Protokol AAL2 je určen typicky pro komprimované přenosy zvuku a obrazu - jeho podvrstva CS je opět prázdná, a "obydlená" je pouze podvrstva SAR. V praxi je ale tento protokol nepoužitelný, neboť jeho standard neříká, jaké jsou přesné velikosti režijních dat tohoto protokolu (na úrovni SAR). Prý se tak stalo záměrně, protože návrh standardu bylo nutné odevzdat v předem zadaném termínu, ale krátce předtím se zjistilo, že je "všechno špatně" (a tak se konkrétní údaje ze standardu odstranily, aby sice existoval, ale nebylo možné jej použít).

U protokolů AAL3 a AAL4, které měly sloužit potřebám přenosů s proměnnou přenosovou kapacitou a nikoli v reálném čase (a to na spojovaném, resp. na nespojovaném principu) se záhy zjistilo, že rozdíly v požadavcích jsou zde tak malé, že nemá smysl vyvíjet dva samostatné protokoly. Nakonec vzniknul jeden společný protokol AAL3/4, který již "zabydluje" obě podvrstvy AAL, CS i SAR. Bohužel se ale ukázalo, že je značně komplikovaný, a že jeho vlastní režie je neúnosně vysoká - ke každé zprávě (na úrovni podvrstvy CS přidává 4 byty), a ke každé buňce (na úrovni podvrstvy SAR) přidává další 4 byty. Vzhledem k celkové velikosti ATM buněk to je opravdu mnoho.

Praktické uplatnění nalezl až protokol jménem SEAL (od: Simple Efficient Adaptation Layer), který na rozdíl od AAL1 až AAL 3/4 vzniknul "ve světě počítačů" (a již jeho názvem autoři vyjádřili své mínění o předchozích protokolech AAL). Dnes je tento protokol SEAL známější spíše pod označením AAL5.