ATM-ul "luat la bani marunti"

      Ideea de baza a protocolului ATM este ca informatia sa se transmita in pachete mici, de lungime fixa, numite celule. O celula ATM are 53 octeti din care 5 octeti sunt rezervati pentru header iar 48 reprezinta datele efective. Nu intamplator, in proiectarea ATM-ului, s-a ales o lungime fixa pentru celule: aceasta permite o procesare rapida a celulelor, operatie realizata hardware. Headerul celulei ATM este impartit in mai multe campuri, avind functia principala de a identifica conexiunea si a dirija celula de la emitator catre destinatie. Sunt 2 tipuri de headere:

  1. UNI - User-to-Network Interface - pentru celulele care conecteaza un utilizator final (calculator, etc) de primul punct de routare (comutare),
  2. NNI - Network-to-Network Interface - pentru celulele care "circula" intre routere.
      Putem reprezenta, schematic, cele 2 tipuri de headere ca in figura de mai jos: unde:
  • GFC - Generic Flow Control -
  • VPI - Virtual Path Identifier
  • VCI - Virtual Circuit Identifier
  • PTI - Payload Type Identifier
  • CLP - Cell Loss Priority
  • HEC - Header Error Control
      Informatia de routare este continuta in campurile VPI (identificatorul caii virtuale) si VCI (identificatorul circuitului virtual). Erorile de transmisie, care pot aparea in header, pot fi detectate cu ajutorul campului HEC (control eroare header). Valorile VPI si VCI au semnificatie locala (intre doua puncte de comutatie), putindu-se schimba de la un segment la altul. Ca urmare, campul HEC trebuie recalculat in fiecare punct de comutatie. Deasemeni HEC nu poate fi utilizat pentru detectarea erorilor care pot apare in segmentul de date al celulei. Aceste erori sunt detectate la destinatie.

Comutatoare ATM

      Asa cum am vazut si mai sus, legaturile ATM pot fi de 2 feluri: intre un calculator si un comutator sau intre 2 comutatoare ATM. Din acest punct de vedere, legaturile ATM pot fi considerate de tip punct-la-punct (spre deosebire de LAN-uri, care au pachete provenite de la mai multi receptori si emitatori pe un singur cablu). Fiecare legatura punct-la-punct este unidirectionala. Pentru a obtine o transmisie full duplex sunt necesare 2 legaturi paralele (cite una pentru fiecare sens).
      Modelul generic al unui comutator ATM poate fi asimilat cu o cutie neagra, cu un numar de linii de intrare si un numar de linii de iesire. In marea majoritate a cazurilor numarul de linii de iesire este egal cu cel al liniilor de intrare, legaturile stabilite fiind bidirectionale.
      Comutatoarele ATM trebuie sa indeplineasca, in principal, urmatoarele 2 functii:
  1. Comutarea tuturor celulelor cu o rata de rejectare cit mai mica posibil. Rata de pierdere acceptabila este de o celula din1012 .
  2. Pastrarea, intotdeauna, a ordinii celulelor de pe circuitul virtual. Sau, cu alte cuvinte, celulele care sosesc pe un circuit virtual intr-o anumita ordine, trebuie sa paraseasca comutatorul in aceeasi ordine. Aceasta necesitate conduce la o proiectare foarte dificila a comutatoarelor.
      O alta problema care trebuie rezolvata, in proiectarea comutatoarelor ATM, este aparitia, pe 2 sau mai multe linii de intrare, a unor celule care trebuie sa fie routate pe acelasi port de iesire, pe durata aceluiasi ciclu. O prima solutie in rezolvarea acestei probleme este sa se transmita doar o singura celula dintre cele sosite, eliminindu-se celelalte. Aceasta solutie, intrind in conflict cu functia de la punctul 1, nu este implementata in practica.
      O alta solutie pentru rezolvarea problemei este utilizarea unor cozi de asteptare pentru fiecare linie de intrare. Atunci cind doua sau mai multe celule sunt in conflict cu privire la linia de iesire, doar una din ele va fi transmisa, restul fiind pastrate pentru urmatorul ciclu. Alegerea celulei care va fi transmisa prima, poate fi facuta aleator sau dupa un anumit criteriu avindu-se in vedere ca nu trebuie sa se favorizeze in mod sistematic o anumita linie, in detrimentul celorlalte.
      Practic, exista 2 modalitati de implementare a cozilor de asteptare. In figurile de mai jos am schitat un posibil scenariu de rezolvare a unui conflict. In interiorul celulelor este trecut un numar care arata linia de destinatie a celulei. Numerotarea liniilor (atit de intrare cit si de iesire) incepe cu 0, de sus in jos. Observam ca pe liniile de intrare 0 si 2 sosesc celule destinate liniei de iesire 2. Sa alegem ca celula de transmis in primul ciclu, celula de pe linia 0.
  1. Cozi de asteptare pe liniile de intrare
    • in ciclul 2 au fost transmise trei celule (liniile de iesire 0, 1, 2), iar celula de pe linia de intrare 2 a fost retinuta. Tot in acest ciclu au mai aparut, pe liniile de intrare 0 si 2, alte doua celule.
    • in ciclul 3 sunt trimise celulele de pe liniile de iesire 2 si 3.
    • in ciclul 4 ramine de transmis doar celula de pe linia 0.
  2. Cozi de asteptare pe liniile de iesire
    • in ciclul 2 sunt transmise tot trei celule
    • in ciclul 3 sunt transmise toate celulele ramase (liniile de iesire 0, 2, 3).
      In cazul folosirii cozilor de asteptare pe liniile de intrare, celulele care asteapta, blocheaza inaintarea tuturor celulelor din spatele ei, chiar daca acestea ar putea fi comutate fara sa apara alte conflicte. Acest efect se numeste "blocare la capatul liniei". In realitate lucrurile sunt ceva mai complexe. Conflictele nu pot fi detectate la intrare. Ele pot fi semnalizate doar dupa parcurgerea comutatorului, atunci cind "se ciocnesc" pe linia de iesire. De aici ideea comutatorului cu cozi de asteptare pe linia de iesire.

Nivelul legatura de date la ATM

      Pentru protocolul ATM, functionalitatea nivelului legatura de date (asa cum este definit el in cadrul modelului ISO-OSI - vezi articolul "Retele" din ER - nr. 19 din decembrie 2000) este indeplinita de subnivelul TC al nivelului fizic (vezi articolul precedent din ER).
      Ca si in cazul altor protocoale, cind un program de aplicatie trebuie sa trimita un mesaj in retea, mesajul va parcurge, mai intai, stiva de protocoale ATM (de sus in jos), primind antete si terminatori, fiind, tot odata, segmentat in celule. In cele din urma celulele ajung pe subnivelul TC unde li se adauga un HEC la ficare in parte. Urmeaza convertirea celulelor, astfel rezultate, intr-un sir de biti si potrivirea, acestui sir, la viteza sistemului fizic de transmisie de la baza, prin inserarea de celule OAM ca umplutura. La receptie, subnivelul TC, procedeaza invers. Ia sirul de biti, localizeaza limitele celulelor, verifica antetele (eliminind celulele cu antet necorespunzator), proceseaza celulele OAM si trimite celulele de date, in sus, spre nivelul ATM. Vom vedea mai tirziu ce sunt celulele OAM.
      Sa vedem, mai amanuntit, ce face subnivelul TC in cazul celor 2 subetape distincte ale unui transfer de date: transmisia si receptia.
      1. Transmisia celulelor. Fiecare celula contine un antet de 5 octeti. Ultimul octet reprezinta o suma de control pentru primii 4 si se obtine din restul impartirii antetului de 32 de biti la polinomul x8 + x2 + x + 1, la care se adauga constanta 01010101.
      Daca s-ar fi facut o verificare a datelor continute in intreaga celula, s-ar fi "obtinut" o intirziere a transmisiei si implicit o viteza de transfer mai mica. Pe de alta parte, daca nu se facea nici o verificare, aparea riscul unei transmisii cu o rata mare a erorilor. Din aceste motive s-a facut un compromis si s-a adoptat o verificare a antetului celulelor. Un alt argument in favoarea acestei alegeri il constituie faptul ca ATM a fost proiectat pentru transmisii prin fibra optica, deci un mediu foarte sigur.
      Mediile de transmisie se impart in 2 categorii: sincrone si asincrone. Intr-un mediu asincron celula poate fi transmisa chiar in momentul in care a fost generata. In mediul sincron celulele trebuie transmise dupa un sablon de timp predefinit. Daca, in momentul transmisiei, nu exista suficiente celule, subnivelul TC trebuie sa le "produca" singur. Aceste celule se numesc "celule libere".
      Un alt tip de celule, ce nu contin date utile, sunt celulele OAM (Operation And Maintenance - operare si intretinere). Acestea contin informatii de control si alte date necesare pentru a mentine sistemul in functiune.
      2. Receptia celulelor. Celulele libere sunt prelucrate de subnivelul TC iar celulele OAM sunt trimise nivelului ATM. Celulele OAM se deosebesc de cele de date prin faptul ca au primii trei octeti din antet egali cu zero, ceea ce este absolut interzis pentru celulele de date.
      Subnivelul TC preia sirul de biti de la intrare si il descompune in celule. Aceasta operatie, de localizare a limitelor celulelor, este foarte dificila, dificultate data de faptul ca nu sunt prezenti octeti indicatori pentru a marca inceputul si sfirsitul unei celule (metoda folosita de alte protocoale). Dar sa vedem, totusi, cum se poate rezolva aceasta problema. Cea mai buna solutie este prin utilizarea HEC-ului. Subnivelul TC mentine un registru de deplasare de 40 biti (5 octeti), facand verificarea daca acestia, pot reprezenta un antet corect de celula (adica octetul 5 sa fie HEC-ul valid pentru ceilalti 4 octeti). Daca cei 40 de biti nu satisfac conditiile impuse de un antet valid, se va face "o deplasare" a tuturor bitilor, cu un bit. Astfel, printr-un capat al memoriei tampon, un bit va fi eliminat, iar prin celalalt capat, va intra altul nou, iar subnivelul TC va verifica, din nou, daca acestia pot alcatui un antet valid.
      Problema separarii celulelor este mult mai complexa, dar ne vom opri aici, amintind doar un caz particular care ar putea "da peste cap" algoritmii de detectare a celulelor. In cadrul informatiei utile (48 octeti) ar putea exista, la un moment dat, o grupare de 5 octeti care ar putea reprezenta un antet valid.