Mihai Budiu -- mihaib+@cs.cmu.edu
http://www.cs.cmu.edu/~mihaib/
ianuarie 2001
Chiar dacă în urmă cu zece ani se ducea o luptă acerbă între mai multe standarde diferite pentru interconectarea calculatoarelor, în ziua de azi a fost stabilit un cîştigător indisputabil: standardul care defineşte funcţionarea Internetului. Am scris de mai multe ori în PC Report încercînd să explic succesul protocoalelor de comunicaţie folosite în Internet (cele mai importante dintre acestea fiind TCP, Transmission Control Protocol şi IP, Internet Protocol); în secţiunea ``Alte surse de informaţie'' puteţi găsi legături on-line spre unele din aceste texte.
În textul de faţă vom vedea însă că unele din trăsăturile care fac aceste protocoale atît de eficiente sunt şi grave slăbiciuni, care fac problematică desfăşurarea unor servicii importante în reţea, cum ar fi transmisiunea de sunet şi imagine în timp real (streaming). Vom discuta apoi pe scurt o clasă de soluţii paradoxale propuse de cercetători pentru a remedia slăbiciunile, care constau toate în a... sta cu mîinile încrucişate chiar şi cînd e multă treabă de făcut. Vom vedea deci că înţelepciunea populară care ne îndeamnă să ``nu lăsăm pe mîine ce putem face azi'' nu este întotdeauna potrivită.
Una din principalele calităţi ale Internetului este robusteţea; aşa cum este concepută, reţeaua poate funcţiona chiar în prezenţa unor defecţiuni majore într-o mulţime din calculatoarele participante. Robusteţea este o trăsătura definitorie a Internetului, care a fost proiectat pentru a servi drept reţeaua forţelor armate americane, trebuind să continue să funcţioneze şi în prezenţa unor atacuri nucleare.
Robusteţea însă a avut nişte consecinţe foarte importante chiar în absenţa calamităţilor: orice sistem complex suferă de malfuncţii şi defecţiuni; legea numerelor mari afirmă ca accidentele sunt norma. Robusteţea protocoalelor este esenţială pentru funcţionarea oricărei reţele mari; Internetul a devenit cea mai mare reţea pentru că era cea mai robustă, şi a fost singura care a putut fi extinsă la scară mondială.
Robusteţea Internetului provine din doi factori:
Acest din urmă factor este o sabie cu două tăişuri. Pe de o parte, dacă cele două puncte care doresc să comunice vor să aibă o discuţie decentă, în pofida eventualelor lipsuri din reţea, printr-un efort de calcul se pot înţelege foarte bine. Pe de altă parte sănătatea întregii reţele depinde de o bună colaborare între punctele terminale; cum am arătat şi în alte articole din PC Report, dacă un punct terminal nu respectă regulile de bună purtare, poate răni şi pe ceilalţi participanţi la trafic.
Serviciul oferit de Internet este numit şi ``cît de bine poţi fără să te speteşti'', sau, în terminologia englezească, ``best effort''. Un astfel de serviciu este satisfăcător pentru multe din aplicaţiile folosite la ora actuală, cum ar fi transferul de fişiere, poşta electronică, sau ``plimbarea'' pe web. Nici una dintre aceste aplicaţii nu are cerinţe foarte stringente de viteză şi fiabilitate, şi ca atare, faptul că din cînd în cînd un pachet se pierde sau vine mai tîrziu decît era aşteptat, poate fi compensat TCP prin retransmisie, fără a irita prea mult utilizatorul.
Situaţia se schimbă însă dramatic atunci cînd vrem să transferăm date care sunt destinate consumului direct de către oameni: fie că transmitem sunete sau imagini, simţurile noastre vor fi foarte neplăcut deranjate chiar de mici imperfecţiuni în transmisie. De exemplu, urechea este sensibilă la pauze mai mari de 100 de milisecunde în conversaţie; ca atare, aplicaţiile de telefonie digitală au cerinţe stringente de performanţă. Cerinţele sunt dificil de satisfăcut pentru că însăşi durata propagării semnalului electromagnetic între două puncte îndepărtate de pe glob este de ordinul zecilor de milisecunde (într-o milisecundă lumina în vid străbate numai 300 de kilometri). Protocoalele nu mai pot compensa pierderea pachetelor folosind retransmisia, pentru că un semnal livrat prea tîrziu face conversaţia foarte neplăcută.
Reţeaua poate fi proiectată pentru a oferi suficiente resurse (capacitate) pentru a face astfel de aplicaţii stringente posibile. Cea mai mare parte din cercetarea curentă în domeniul reţelelor de calculatoare este orientată în direcţia proiectării şi implementării de servicii care garantează o anumită calitate; numele tehnic este ``Quality of Service'', abreviat şi QoS.
Cea mai importantă problemă din QoS este managementul resurselor: cînd ai la dispoziţie o reţea folosită de 500 de milioane de utilizatori, orice resursă este potenţial insuficientă. Pentru a putea garanta calitatea serviciilor resursele necesare trebuie să fie rezervate dinainte de către cei care o vor folosi.
Ideea de rezervare este însă complet opusă întregii filozofii a Internetului; Internetul este o reţea ``fără memorie'', care, de îndată ce primeşte un pachet, încearcă să scape de el trimiţindu-l în direcţia în care crede că se află destinaţia, şi uitînd totul despre existenţa acelui pachet. Termenul tehnic pentru o astfel de arhitectură este ``stateless''. Ideea de rezervare implică însă reţinerea de informaţii care caracterizează traficul: pentru cine este rezervarea, ce resurse sunt rezervate şi pentru cît timp, cît din resursele rezervate sunt folosite, etc.
Noţiunea de rezervare nu este nouă; reţelele telefonice o folosesc ca un ingredient de bază. Pentru că o convorbire telefonică are cerinţe foarte stringente de întîrziere şi trafic (bandwidth), reţeaua telefonică funcţionează complet diferit decît Internetul. Stabilirea unei convorbiri telefonice are trei etape:
Cantitatea de date transmisă prin vocea umană este însă foarte variabilă; o mare parte din timp tăcem la telefon (nu uitaţi că o sută de milisecunde reprezintă o durată importantă pentru reţea). Reţeaua telefonică însă foloseşte aceleaşi resurse, indiferent că vorbim sau că tăcem, pînă eliberaţi conexiunea.
Prin contrast, cînd folosim o aplicaţie pentru a trimite informaţie codificînd voce prin Internet, numai pachetele cu informaţie sunt trimise; liniştea nu consumă resurse ale reţelei. Din această cauza transmisiunea prin Internet este inerent mai ieftină: consumi numai resursele de care ai strictă nevoie. Reţeaua telefonică consumă mult mai multe resurse decît necesar, pentru că le rezervă pentru cazul cel mai defavorabil. Din cauza aceasta convorbirile telefonice sunt mult mai scumpe decît transmisiunea de date, şi companiile care au apărut în ultima vreme, care oferă telefonie prin Internet (numită şi ``voce peste IP'', ``voice over IP'', sau VoIP) pot oferi preţuri mult mai reduse.
Internetul face ceea ce se numeşte ``multiplexare statistică'', adică foloseşte resursele în comun pentru toată lumea (``a multiplexa'' înseamnă a pune o resursă în comun; ``statistic'' vine din faptul că atunci cînd multă lume foloseşte o resursă în mod intermitent, ea poate fi utilizată mult mai eficient). Reţeaua telefonică foloseşte rezervare.
Este important de realizat că noţiunea de rezervare este inseparabilă de cea de control al accesului (access control); dacă nu sunt destule resurse pentru rezervare, acţiunea de transmisiune va fi refuzată (ton de ocupat). Internetul, la ora actuală, nu refuză niciodată pachete, indiferent cît de ``ocupat'' este.
Trebuie să remarcăm că noţiunile de rezervare şi multiplexare statistică nu sunt mutual exclusive, în sensul că pot fi amîndouă folosite în aceeaşi reţea simultan. Toate propunerile care încearcă să aducă QoS în Internet lasă loc şi pentru vechea funcţionare, best effort: resursele rezervate, sau cele care sunt rezervate, dar nu sunt folosite, pot fi folosite pentru trafic de ``prioritate scăzută''.
Cercetarea din domeniul QoS încearcă să construiască o infrastructură pentru rezervarea resurselor folosind arhitectura existentă a Internet-ului. În acest articol nu vom vorbi despre cum se face rezervarea, ci despre un alt aspect: presupunînd că poţi rezerva resurse, cum trebuie să le exploatezi cît mai eficient? Altfel spus, cît de puţine resurse sunt necesare pentru a oferi un serviciu garantat?
Internetul este o colecţie de reţele mici conectate una de alta. Reţelele adiacente sunt conectate una de alta folosind calculatoare specializate numite rutere. Ruterele îşi cheltuiesc toată puterea de calcul pentru două scopuri:
Din punct de vedere al puterii de calcul, a două activitate a ruterelor este cea mai importantă, şi cea care pune cele mai mari constrîngeri. Asta se întîmplă pentru că topologia Internetului nu variază prea des şi prea mult, aşa că informaţia mai veche despre topologie este în general corectă. În schimb, pachetele care vin au la dispoziţie doar cîteva milisecunde pentru a fi procesate2.
Cum manipulează un ruter un pachet? Ce fel de resurse consumă? Figura 1 ilustrează schematic funcţionarea unui ruter.
![]() |
Resursele consumate sunt deci: timp de procesor, pentru analiza pachetului şi deciderea rutei, lărgime de bandă (bandwidth) la intrare, la ieşire şi în reţeaua internă de interconectare care leagă intrările de ieşiri, şi memorie, pentru stocare în vederea prelucrării.
Ruterele comerciale la ora actuală folosesc algoritmi foarte simpli pentru procesarea pachetelor: ele sunt prelucrate în ordinea sosirii, puse în cozi la interfeţele de ieşire în aceeaşi ordine (FIFO: first in, first out) şi trimise de îndată ce transmisia pachetului anterior este terminată.
Să zicem că sunteţi un ruter care primeşte o grămadă de pachete pe toate interfeţele, şi că aveţi ceva memorie în care puteţi gestiona pachetele care nu au fost încă transmise. Ce părere aveţi: e mai bine (A) ca de îndată ce o interfaţă de ieşire e liberă să căutaţi un pachet care poate fi trimis pe acolo, sau (B) să vă relaxaţi un pic şi să nu trimiteţi nimic, chiar dacă ar fi pachete-candidat?
Dacă veţi răspunde (A), veţi proceda la fel ca toţi cercetătorii din reţele pînă acum 10 ani. Ultima decadă însă a adus în atenţie politici din categoria (B), demonstrînd că au unele calităţi superioare.
Algoritmul care decide cînd fiecare pachet trebuie transmis se numeşte algoritm de planificare (scheduling). Despre algoritmii din categoria (A) se spune că ``conservă lucrul'', pe cînd cei din categoria (B), nu. În engleză disciplinele de planificare de tip (A) se numesc ``work conserving'', iar cele din categoria (B) ``non-work conserving''.
Aparent o disciplină care nu conservă lucrul nu are nici un sens: iroseşte timp, în care ar putea face treabă utilă. De ce să întîrzii emiterea unui pachet gata? Răspunsul este subiectul central al acestui articol: pentru că în felul acesta poţi face traficul mai predictibil, ducînd la o economie substanţială de resurse pentru ruterele traversate de trafic.
Pentru a înţelege în ce fel predictibilitatea traficului depinde de disciplina de planificare, să privim figura 2. Presupunînd că pachetele sunt prelucrate în ordinea venirii, o rafală de pachete pe una din conexiuni poate întîrzia pachetele pe cealaltă conexiune. În acest fel, trafic independent poate distorsiona regularitatea unui trafic care intră foarte regulat în reţea.
![]() |
Doi parametri ne vor ajuta să înţelegem importanţa regularităţii: rata medie şi rata instantanee a traficului. Dacă sursa A trimite cîte un pachet pe secundă timp de zece secunde, rata medie şi cea maximă de transmisiune sunt de 1 pachet pe secundă. Dacă sursa A trimite însă 10 pachete în prima secundă şi apoi 9 secunde nimic, rata medie este tot de 1 pachet pe secundă, dar rafala de pachete din prima secundă face rata instantanee de 10 pachete pe secundă.
Chiar dacă traficul respectă în medie rezervarea, neuniformitatea poate duce la probleme:
Ruterele din reţea trebuie deci să prevină apariţia neregularităţilor în trafic. Ruterele au suficiente resurse pentru a prelucra traficul atunci cînd acesta vine cu rata medie, declarată la stabilirea conexiunii, în procesul de rezervare (dacă nu ar avea destule resurse, ar fi respins rezervarea). Cheia este ca traficul să aibă o rată instantanee egală cu cea medie, şi atunci resursele vor fi suficiente. În caz contrar, se vor crea cozi de pachete, care vor cauza şi mai multe neregularităţi.
Soluţia este oferită de algoritmii de planificare care nu conservă lucrul; aceşti algoritmi vor încerca să re-creeze la ieşire un trafic regulat. Chiar dacă pachetele nu vor sosi echidistant, din cauza interferenţelor între diferitele conexiuni care străbat acelaşi ruter, ruterele vor întîrzia unele din pachete, pentru a recrea un trafic regulat la ieşire.
Partea frumoasă a acestei scheme este că, dacă toate ruterele colaborează, traficul rămîne predictibil şi regulat în mare măsură, deci toate ruterele au nevoie de mai puţine resurse, şi pot satisface mult mai bine cerinţele de calitate.
Cercetătorii au ridicat o seamă de obiecţii la adresa protocoalelor care nu conservă lucrul. Unele dintre ele sunt nefondate, dar totuşi interesante de analizat:
În acest articol am discutat pe scurt despre cercetarea curentă din reţele de calculatoare care încearcă să adauge Internetului servicii cu calitate garantată, necesare pentru transmisiuni de sunet sau imagini video. Am văzut că aceasta este o problemă foarte grea, din cauză că Internetul funcţionează în mod minimalist, şi reţine foarte puţine informaţii despre datele care-l tranzitează.
Am discutat apoi pe scurt despre efectul disciplinelor de planificare, folosite pentru a alege ordinea şi momentul la care pachetele primite de un ruter sunt trimise mai departe spre destinaţie. Am văzut de asemenea că a termina treaba cît se poate de repede nu e întotdeauna optim, ci că lucrul regulat este mai sănătos pentru întreaga reţea.
Deocamdată aceste idei sunt testate doar în laboratoare; rămîne de văzut care va fi succesul lor în Internet.