Mihai Budiu -- mihaib+@cs.cmu.edu
http://www.cs.cmu.edu/~mihaib
11 martie 1999
În urmă cu cîteva luni am avut privilegiul de a asista la o prelegere deosebit de interesantă despre evoluția Internetului. Vorbitorul era un ``guru'', unul dintre cei care au contribuit în mod esențial la crearea și dezvoltarea acestei ultime revoluții tehnologice: David Clark, cercetător la Massachussets Institute of Technology, cea mai prestigioasă universitate tehnică din Statele Unite, și probabil și din lume.
David Clark a primit doctoratul tot la MIT in 1973. După primirea doctoratului a lucrat în dezvoltarea rețelei militare ARPANET, care va deveni mai tîrziu Internetul. Dl. Clark a fost unul dintre proiectanții rețelelor token-ring, despre care am vorbit pe scurt într-un articol anterior. De la mijlocul anilor 1970 Dl. Clark a lucrat la dezvoltarea Internetului. Intre 1981 și 1989 a fost arhitectul șet al dezvoltării de protocoale pentru Internet. Dl. Clark a fost și unul dintre proiectanții sistemului de operare Multics, după care s-au inspirat cei care au creat sistemul de operare Unix. Cercetarea sa curentă este în domeniul protocoalelor și arhitecturilor pentru rețele de date de foarte mare viteză; în speță extinderea Internetului pentru a suporta trafic de timp real, alocarea de resurse și tarifare.
Expunerea domnului Clark despre Internet a fost extrem de concentrată; așa cum numai un individ cu o experiență uriașă acumulată poate să o facă, Clark a deslușit trăsăturile esențiale ale rețelei, reușind să facă, așa cum a spus chiar dumnealui, o ``introducere în Internet în 15 minute'' (restul expunerii a fost consacrat discuțiilor despre evoluția ulterioară a rețelei). Voi încerca să prezint în introducerea acestui text unele dintre ideile domnului Clark. Voi reproduce din memorie spusele dînsului; sper să nu fiu o sursă prea mare de distorsiuni. Despre Internet și istoricul său am mai scris și cu alte prilejuri în PC Report, iar copiile articolelor cu pricina sunt disponibile din pagina mea de web; nu o să mă repet aici.
Pe la începutul anilor '70, în timp ce lucram la construirea Internetului -- spunea David Clark -- am discutat cu un inginer de la AT&T1. Insul mi-a împărtășit la un pahar impresia lui despre strădania noastră: ``eu cred că sunteți țicniți; o rețea de felul ăsta nu poate să funcționeze.''
Din punctul de vedere al unei companii de telefoane, într-adevăr, Internetul este o rețea complet paradoxală; totul este cu susul în jos, cu totul altfel decît în rețeaua de telefonie.
De exemplu, în rețeaua telefonică toată ``inteligența'' se află în interiorul rețelei: centralele telefonice, releele, centralele interurbane, sunt mecanisme extraordinar de complicate, care controlează fiecare detaliu al funcționării rețelei: gestiunea apelurilor, formarea circuitelor între sursă și destinație, rezervarea de resurse (circuite) în toate centralele, semnalizarea, multiplexarea convorbirilor pe trunchiurile dintre centrale, controlul accesului la rețea (semnalizat prin tonul de ocupat), tarifarea, etc., sunt toate făcute în interiorul rețelei. Prin comparație, telefoanele, de la capătul sîrmei, sunt niște dispozitive complet inepte, incapabile de altceva decît de a codifica și decodifica vocea, și de o semnalizare primitivă (ex. sonerie, ton de ocupat, etc.).
Dimpotrivă, în Internet miezul rețelei este practic tembel, și oferă un serviciu aproape inexistent nodurilor externe; prin contrast toată inteligența se află în entitățile de la extremități (calculatoarele), care comunică între ele. Internetul nu interzice nimănui accesul, nu rezervă nici un fel de resurse pentru nimeni, nu tarifează nimic, și în general, nu oferă nici un fel de garanții.
Dacă studiem cu atenție unicul serviciu oferit de Internet o să observăm că el sună cam așa: ``utilizatorul dă niște date rețelei, cu indicația de a le trimite undeva. Rețeaua ar putea să transporte unele dintre date, la un moment dat, pînă la capătul celălalt.''
Dacă vi se pare o exagerare, studiați din nou specificațiile protocolului numit IP, (Internet Protocol), care este executat de toate calculatoarele din interiorul rețelei (numite rutere), și o să observați că nu puteți descrie deloc mai precis funcționalitatea acestuia.
Acesta este paradoxul Internetului: o construcție atît de fenomenală (cum poate mărturisi oricine a folosit serviciile sale, de e-mail, ftp, web, telnet, telefonie, jocuri, și atîtea altele) este înălțată pe un eșafodaj atît de ``șubred'' ca IP.
Cînd inginerul de la AT&T l-a întrebat pe David Clark: ``noi am proiectat rețeaua de telefoane pentru convorbiri telefonice, și am optimizat-o la maximum pentru asta; Internetul vostru pentru ce e bun?'', David Clark i-a răspuns: ``nu am nici cea mai mică idee la ce e bun Internetul; noi am optimizat Internetul pentru... schimbare. Internetul trebuie să acomodeze orice fel de aplicație ne-ar trece prin minte, și ca atare trebuie să fie extrem de flexibil''.
În retrospectivă putem spune că proiectarea Internetului a fost un succes ingineresc fenomenal; majoritatea aplicațiilor care se folosesc de Internet astăzi nici nu puteau fi imaginate în urmă cu douăzeci de ani, și suntem abia la început, credeți-mă.
Una dintre cheile funcționării unui sistem atît de ``fragil'' este protocolul TCP, Transport Control Protocol. Dacă două calculatoare conversează între ele prin Internet, numai ele două folosesc TCP, și nu și toate nodurile aflate pe traseul dintre ele. TCP repară toate slăbiciunile protocolului IP, transformînd Internetul într-un mediu predictibil și fiabil. Dacă rețeaua dintre calculatoare funcționează cîtuși de puțin, în sensul că livrează ceva din datele care i se dau, TCP își face treaba:
Mă voi opri aici din rememorarea conferinței domnului Clark, pentru a ataca subiectul de fond al acestui articol. Și anume voi ilustra cum pe baza protocolului IP au fost construite alte servicii sofisticate, care dau rețelei înfățișări foarte diferite.
Conceptul central al acestui articol este tunelul. Este un concept deosebit de simplu, dar cu aplicații uluitoare. Voi ilustra noțiunea printr-o analogie.
Într-un articol anterior, despre rutarea din Internet, comparam transmisiunea datelor prin Internet cu funcționarea sistemului poștal; analogia este destul de precisă, și o voi refolosi și aici.
Calculatoarele care comunică sunt doi cetățeni, iar Internetul este sistemul poștal. Unitatea de transmisiune este scrisoarea (pachetul de date). Un ins pune scrisoarea la poșta, iar apoi o armată de poștași, șoferi, aviatori, hamali, etc. mută scrisoarea la destinatar. Scrisorile se pierd uneori, iar poșta nu garantează că ele vor ajunge la destinație; la fel se petrec lucrurile și în Internet.
Să ne imaginăm acum că avem de a face cu o țară care nu vrea să adere la convențiile poștale internaționale, care nu recunoaște timbrele, care trimite scrisorile în pungi în loc de plicuri și la care plata se face direct funcționarilor. Să ne mai imaginăm că, din anumite motive, scrisorile noastre trebuie să traverseze această țară bizară (și nu avem un avion la dispoziție). Ce ne facem?
Sistemul poștal internațional ar putea crea în acest scop o organizație specială, cu filiale la două granițe ale acestei țări. Atunci cînd un plic trebuie să traverseze această țară, acesta este livrat la graniță, este băgat într-o pungă și plata este făcută unui funcționar, cu rugămintea de a trimite punga la cealaltă graniță. Cînd punga ajunge dincolo, cealaltă filială extrage din pungă plicul, după care îl re-inserează în circuitul poștal normal. Traseul poștal între cele două filiale se numește în terminologia Internetului ``un tunel''. Numele este destul de natural, pentru că obiectul de transportat (plicul) intră într-o zonă întunecoasă (punga) și iese abia la capătul celălalt la lumină, netulburat.
În general, avem de a face cu un tunel cînd datele (plicurile) trimise cu un anumit protocol sunt ``împachetate'' folosind un alt protocol de transmisiune (pungile), și sunt despachetate apoi la celălalt capăt. Împachetarea pachetelor se mai numește încapsulare.
Pentru o vreme în arena rețelelor de comunicații s-a dus o luptă acerbă între protocoalele folosite în Internet, bazate pe IP și TCP, și o serie de protocoale standardizate de organizația mondială a telecomunicațiilor. Lupta a fost incertă pînă în urmă cu doi-trei ani; pentru o vreme balanța a înclinat în sprijinul rețelelor de tip OSI (Open System Interconnection: denumirea standardelor organizației sus-menționate); de curînd a devenit însă evident că Internetul este, cel puțin pentru următorii ani, tehnologia învingătoare.
În afară de TCP/IP și rețelele de tip OSI, există o sumedenie de alte feluri de rețele de calculatoare, în general dezvoltate de marile companii de calculatoare, toate incompatibile între ele. De pildă IBM are propriul model, numit SNA, Digital (acum Compaq) are DecNet, Apple are Appletalk, etc. Din cauza asta, la ora actuală în lume există o bază mare instalată de rețele care funcționează cu protocoale diferite.
Dar aceste rețele nu sunt sortite să rămînă izolate; ele pot fi folosite ca punți de legătură în Internet folosind conceptul de tunel. Figura 1 ilustrează acest fenomen cu un caz real.
Din motive tehnice, la începutul formării rețelei universitare române, acum numită RoEduNet, cîteva rețele erau conectate între ele folosind un protocol de comunicații numit X25, care este un protocol OSI. Legătura la Internetul mondial era oferită de Politehnica din București (PUB: ``Politehnica'' University of Bucharest, pub.ro; între Pub și alte cîteva universități era însă instalată o rețea X25; la Pub se afla un switch X25 (un switch este un ruter, în terminologia X25), la care se cuplau mai multe linii telefonice închiriate, care veneau de la alte universități. Și la ora actuală, Universitatea din București (unibuc.ro) este cuplată în acest fel. Legătura între rețeaua IP (Internet) și cea X25 este făcută cu două cutii care sunt numite rutere multiprotocol. Aceste cutii știu să converseze protocoale diferite pe interfețe diferite; ruterul de la poli vorbea IP cu lumea exterioară și X25 cu switch-ul. Cele două rutere de la extremitățile rețelei X25 deschideau între ele un circuit X25, prin care apoi transmiteau de la unul la altul pachetele IP; acestea deveneau date ordinare pentru protocolul X25. Acesta nu este altceva decît un tunel, care transportă IP prin X25.
Din punct de vedere al restului lumii, rețeaua X25 nici nu există; toate celelalte calculatoare au impresia că ruterul de la Pub este cuplat direct printr-o sîrmă cu ruterul de la UniBuc; toată rețeaua X25 este complet transparentă (invizibilă).
Acest fenomen se întîlnește foarte des; de exemplu în Statele Unite compania de telecomunicații Sprint, care posedă o mare parte din coloana vertebrală a Internetului, folosește pentru asta rețeaua proprie care rulează protocolul ATM; la capetele rețelei ATM se află rutere multiprotocol IP/ATM, care formează tunele prin rețeaua ATM pentru a transporta traficul Internet.
O altă aplicație interesantă a tunelelor este folosită de corporațiile multi-naționale. O firmă ca IBM are rețele pe tot cuprinsul globului, așa că nu poate folosi o singură sub-rețea pentru a-și lega toate departamentele. IBM însă poate crea ceea ce se numește o rețea privată virtuală (Virtual Private Network, VPN), cum ilustrăm în figura 2.
IBM asignează adrese2 și construiește toate rețelele ca și cum ar fi legate direct între ele. Să presupunem că toate rețelele de la IBM folosesc IP. Apoi, pentru fiecare rețea, ruterele de la margine construiesc tunele. Ruterul din New-York deschide o legătură la ruterul din Delhi, formînd un tunel. De aici înainte toate pachetele trimise de la New-York la Delhi sunt împachetate în pachete IP și trimise prin tunel în Delhi. Ruterul din Delhi le despachetează, după care le pune în rețeaua locală, ca și cum le-ar fi primit de la vecinul imediat.
Acesta este un fenomen foarte interesant, în care date ale unui protocol sunt împachetate în pachete ale aceluiași protocol! În analogia noastră anterioară, e ca și cum am de trimis cinci vederi din America în România, dar pentru a nu plăti cinci timbre, le pun într-un plic pe toate, le trimit cu poșta unui amic din România, pe care îl rog să le pună la Poșta Română, cu timbre mai ieftine. Protocolul folosit în ambele cazuri e același, al sistemului poștal, dar cîteodată transport scrisori în scrisori!
Un motiv pentru care corporațiile folosesc această metodă, în loc de a lega direct cele două rețele prin Internet, este securitatea. Adesea companiile restrîng dramatic accesul la informațiile din interior, mai ales pentru a preveni pirateria informatică. Accesul din exterior în rețeaua IBM se poate face numai prin niște puncte înguste (ca punctul de vamă de la frontieră), numite ``pereți de foc'' (firewall). Un administrator permite un acces extrem de limitat printr-un firewall, de pildă doar poștă electronică, dar nu și web sau ftp. Cu toate că accesul din exterior (sau chiar din interior spre înafară) este strict limitat, datorită rețelei private virtuale, calculatoarele din centrele IBM de pe cele două continente pot comunica între ele nestingherite, fără nici un fel de limitări cauzate de firewalls.
O altă aplicație extrem de interesantă a conceptului de tunel a fost construită prin teza de doctorat a lui Steve Deering, la Universitatea Stanford. Este vorba de difuzare.
Rețeaua de televiziune funcționează prin difuzare (broadcast): un post emite și toată lumea receptează. În cazul calculatoarelor comunicația este punct-la-punct: unul vorbește și unul singur ascultă. Dar există aplicații ale calculatoarelor care ar beneficia de difuzare; de exemplu teleconferințele între mai mulți participanți. În engleză se face distincție între difuzarea pe care o primește toată lumea (broadcast) și difuzarea pe care o primește doar o submulțime dintre posibilii ascultători, de pildă doar cei interesați. Ultima se numește multicast.
Implementarea difuzării în sine nu este o treabă deosebit de grea (vom vedea mai jos cum este ea realizată); problema cea mai complicată este cum poate fi implementată difuzarea în Internet, care este deja construit și nu a fost conceput pentru a suporta așa ceva. Asta este o adevărată problemă inginerească, pe care Deering a rezolvat-o cu mult succes.
Soluția lui Deering cere cooperarea unora din ruterele din Internet, pentru a fi eficace. Pentru că nimeni nu poate schimba toate ruterele dintr-o rețea cu 100 de milioane de calculatoare, care se întinde pe tot globul, soluția trebuie să funcționeze chiar dacă numai cîteva rutere sunt de acord să colaboreze, iar toate celelalte nu știu nimic despre difuzare. Vom numi ruterele care participă la mbone rutere multicast. Aceste rutere sunt relativ puține, răspîndite în toată lumea; sunt niște dispozitive experimentale. Totalitatea ruterelor multicast se numește ``coloana vertebrală de difuzare'', sau Multicast backBONE, Mbone. Mbone este operațională din 1988 (http://www.mbone.com). Harta curentă a rețelei este disponibilă la http://www.cs.berkeley.edu/~elan/mbone.html.
Ați ghicit care este tehnologia folosită? Cum se numește acest articol? Figura 3 ilustrează modul în care funcționează MBone.
Ruterele multicast sunt configurate de administratori să știe despre alte rutere multicast. Fiecare ruter multicast este configurat să comunice cu un anumit set de alte rutere multicast, ``vecinii'' săi (de care se poate afla la distanță foarte mare, de altfel). Un ruter multicast construiește cîte o legătură virtuală cu fiecare vecin, un tunel folosind protocolul IP. De aici înainte ruterele multicast transmit pachetele de difuzare numai prin aceste tunele. Ele au impresia că sunt direct conectate unul cu altul, ca și cum restul Internetului nu ar mai exista!
Din cauza aceasta rețeaua MBone este o rețea virtuală. Ca și rețelele private virtuale, în MBone doi vecini aparenți pot fi de fapt la distanțe foarte mari, dar sunt legați de un tunel care le dă iluzia de vecinătate fizică.
Deși este extrem de interesant, nu voi mai intra în amănunte prea multe despre funcționarea Mbone; voi ilustra doar principiile generate, printr-un exemplu:
Metoda aceasta este deosebit de elegantă, pentru că rezolvă problema scalabilității. Observați că efortul fiecărui participant pentru transmisiune este relativ mic pentru fiecare pachet; în nici un caz nu depinde de numărul de recipienți (ci doar de numărul de vecini).
Prin contrast, să ne imaginăm cum am fi rezolvat această problemă dacă nu aveam deloc rutere multicast la dispoziție. Ei bine, atunci sursa trebuia să știe care sunt toți receptorii, și să deschidă cîte o legătură pentru fiecare. Apoi sursa trebuia să transmită fiecare pachet de atîtea ori cîți receptori avea. Asta este clar o risipă, pentru că cele mai multe pachete (identice) vor traversa aceleași legături în mod inutil. Dacă sunt 10 000 de consumatori, aceasta ar depăși capacitățile atît ale sursei, cît și probabil ale legăturii sursei la rețea.
În fine, vom ilustra o ultimă tehnologie spectaculoasă al tunelelor, cu o altă aplicație care funcționează în Internet și este în curs de aprobare de către corpul de standardizare al Internetului, IETF (Internet Engineering Task Force).
Problema are de-a face cu calculatoarele care ``se plimbă'', care nu au o poziție fixă. De pildă, dacă zburăm cu avionul cu un laptop, acest calculator ar putea fi într-o zi în Europa, iar în alta în Japonia. Cum poate comunica acest calculator în Internet ca și cum ar fi tot timpul legat la aceeași rețea?
Problema provine din modul în care adresele sunt atribuite și rutarea pachetelor este făcută în Internet; am consacrat un întreg articol în trecut acestui subiect, așa încît nu o să mă repet aici.
Ideea este că adresa unui calculator indică aproximativ și locul geografic în care acesta se află; astfel, dacă un calculator își schimbă poziția, pachetele care-i sunt destinate nu îl mai pot găsi. (Un calculator nu-și poate schimba adresa, pentru că asta este identitatea lui, după care ceilalți îl recunosc.) Soluția există, este implementată, funcționează, și este ilustrată în figura 4.
Pentru a realiza comunicarea în mod transparent cu un calculator mobil, ne trebuie colaborarea a două rutere: unul în rețeaua unde calculatorul se află de obicei (rețeaua-casă) și unul în rețeaua unde calculatorul se plimbă (rețeaua-gazdă). Iată cum funcționează protocolul, în linii mari:
Din nou, analogia cu sistemul poștal este perfectă; este ca și cum vecinul de bloc are cheia dvs. de la cutia poștală, ia toate scrisorile pe care le primiți, le bagă într-un plic cu timbru de Japonia și le pune din nou la poștă.
Foarte elegant, nu?
Am văzut în acest text cum un mecanism extrem de simplu IP, care transferă în mod ne-fiabil date între două calculatoare, poate fi extins în felurite moduri, pentru a construi mecanisme din ce în ce mai sofisticate. Am văzut cum TCP oferă fiabilitate, tunelele oferă legături virtuale între calculatoare distante, Mbone oferă difuzare cu cost redus, iar protocolul Mobile-IP oferă independență de poziție.
Sper ca de acum înainte să nu mai treceți printr-un tunel fără o umbră de admirație.