Retelele cu difuzare

      In citeva din articolele precedente ne-am ocupat de unele aspecte ale transmisiei de date. Deoarece transmisia datelor este cea mai importanta componenta a unei retele, ne vom ocupa in continuare de un alt aspect al acesteia, si anume: tehnologia de transmisie.
      In principal exista 2 tipuri de tehnologii de transmisie: 1. Retele cu difuzare - au un singur canal de comunicatie care urmeaza a fi partajat de toate calculatoarele din retea. Un calculator, care doreste sa intre in "discutie" cu un altul, va trimite in retea un pachet de date. Pachetul respectiv va contine, obligatoriu, o modalitate de identificare a calculatorului destinatie (adresa IP, adresa MAC, etc.). Intr-o retea cu difuzare toate calculatoarele vor primi acest pachet dar el va fi prelucrat doar de masina careia ii este destinat. Celelalte il vor ignora. Intr-o astfel de retea este posibila si adresarea unui grup de calculatoare (multicast). Adica pachetul va fi prelucrat de intregul grup nu numai de un singur calculator. De asemeni mai este posibil si un alt tip de transmisie: catre toate calculatoarele (broadcast). 2. Retele punct-la-punct - acest tip de retea dispune de numeroase conexiuni intre perechi de calculatoare individuale. Pentru a ajunge la destinatie un pachet este nevoit sa treaca prin una sau mai multe masini intermediare. In acest caz sunt implementate diferite modalitati de dirijare a pachetului de date de la sursa la destinatie. Ca o regula generala (exceptiile intaresc regulile) retelele mici (LAN-uri) utilizeaza difuzarea, iar retelele mari (ca raspindire geografica) sunt proiectate sa foloseasca transmisii punct-la-punct.
      In acest articol ne propunem sa discutam despre retelele cu difuzare si vom incepe cu:

Problema alocarii canalului

      Problema majora intr-o retea cu difuzare consta in a determina ce calculator poate utiliza canalul de transmisie, atunci cind exista mai multe masini care folosesc acelasi cablu. Pentru a intelege mai bine problema, facem comparatie cu o discutie amicala intr-un cerc de prieteni, la o "masa rotunda". Ce s-ar intimpla daca toti participantii la discutie ar vorbi in acelasi timp? Ar iesi un adevarat haos. Dar nu se intimpla asa. In cazul nostru, pe baza unor reguli "de bun simt", fiecare participant la discutie ia cuvintul atunci cind crede ca este necesar si il cedeaza pe baza acelorasi criterii. In lumea calculatoarelor sunt necesare niste reguli mult mai restrictive si o tehnologie care sa determine carui calculator i se "da cuvintul" la un moment dat.
      Tehnologia de care vorbeam este implementata prin intermediul unor protocoale care apartin unui anumit nivel din stiva de protocoale. Mai exact, aceste protocoale, fac parte dintr-un subnivel al nivelului legatura de date (modelul ISO/OSI), numit subnivelul MAC (Medium Access Control - controlul accesului la mediu).
      In principal, putem clasifica metodele de alocare a canalului in 2 categorii:

  1. Alocare statica. Folosind aceasta metoda, fiecarui calculator, conectat la canalul de comunicatie, I se acorda un anumit interval de timp pentru transmiterea datelor. Alocarea statica are avantajul simplitatii (fata de alocarea dinamica). In schimb prezinta dezavantajul unor "timpi morti", timpi in care canalul nu este folosit de nici un host. De multe ori, aceste intervale de timp inactive sunt mai mari decit timpii utili (in care canalul este folosit). Chiar daca un calculator nu are de transmis date, nici un alt calculator din retea nu poate folosi canalul in intervalul respectiv.
  2. Alocare dinamica. Majoritatea retelelor implementeaza acest tip de alocare a canalului de comunicatie. Ideea de baza este ca orice calculator, care are de transmis date, poate folosi canalul. Nu trebuie sa astepte "sa-I vina rindul". Poate sa transmita date in orice moment. Bineinteles, aceasta se face cu riscul aparitiilor coliziunilor. Problema care apare este cum reusim sa preintimpinam aceste coliziuni? Sa le reducem numarul si astfel eficienta folosirii canalului sa creasca. In acest sens alocarea dinamica introduce un concept nou: arbitrajul magistralei, care poate fi de 2 feluri: centralizat si descentralizat.
  1. Arbitrajul centralizat foloseste un sistem de transfer bazat pe existenta unui "jeton", care va fi "pasat" de la un calculator la altul, trecind astfel pe la toate calculatoarele conectate la acel canal de transmisie. Un calculator poate transmite date numai in momentul in care jetonul a ajuns la el. Nici un host nu poate transmite date daca nu detine jetonul. Putem considera, deci, jetonul ca fiind o autoritate centrala pentru controlul accesului la canalul de transmisie.
  2. Intr-o schema descentralizata a arbitrajului fiecare host poate determina daca poate transmite sau nu. Nu exista o autoritate centrala. In acest caz apar coliziunile. Ca urmare, este necesar un sistem de detectie a coliziunilor.

      Exista multi algoritmi de alocare a unui canal cu acces multiplu. Vom prezenta in continuare anumiti algoritmi mai cunoscuti.

ALOHA

      Bazele acetui sistem au fost puse in anii '70 la Universitatea din Hawaii. Se cunosc mai multe versiuni ale protocolului ALOHA. Vom discuta, doar, despre 2 dintre acestea.

  1. ALOHA pur. Orice calculator poate transmite date atunci cind doreste. Datorita proprietatilor de reactie a difuzarii, un emitator poate determina oricind daca pachetul de date transmis a fost distrus ca urmare a unei coliziuni. In cazul in care se determina o coliziune, emitatorul va astepta un anumit timp si va emite din nou pachetul de date. Timpul de asteptare trebuie sa fie aleator, altfel coliziunea se va produce din nou.
          O coliziune nu apare numai atunci cand timpii de emisie a cadrelor de date se suprapun total unul peste celalalt, ci si atunci cand primul bit de la al doilea cadru se suprapune peste ultimii biti ai primului cadru. Cu alte cuvinte, un pachet de date nu va suferi coliziuni daca nici un alt cadru nu va fi emis pana la sfirsitul transmiterii integrale a primului cadru. Aceasta suprapunere "partiala" a cadrelor este posibila in ALOHA pur din cauza faptului ca statiile nu "asculta" canalul inainte de transmisie. Si in acest fel nu poate sa stie daca un alt cadru se afla deja in curs de transmisie.
          S-a calculat, ca intr-un sistem ALOHA pur, cea mai buna performanta la care se poate ajunge este o utilizare a canalului in proportie de 18%. Acest randament scazut este cauzat, in primul rand, de faptul ca fiecare calculator poate transmite date in orice moment.
          Pornind de la aceasta "libertate" prea mare a sistemului ALOHA pur s-a dezvoltat un nou sistem care imparte timpul in intervale discrete, suficient de mari ca un cadru sa fie transmis complet. Acest sistem se numeste ALOHA cuantificat.
  2. ALOHA cuantificat. Utilizarea acestui sistem cere ca mai intai sa se stabileasca marimea cuantelor de timp. O metoda pentru a obtine sincronizarea este transformarea unei statii de lucru obisnuite intr-o statie speciala care sa emita cate un "bip" la inceputul fiecarui interval, ca un tact de ceas.
          In acest sistem, in contrast cu ALOHA pur, unui calculator nu ii este permis sa emita pachetul de date oricind doreste. El este "nevoit" sa astepte inceputul urmatoarei cuante.
          Performanta maxima a acestui sistem poate ajunge la 37%.