1. Nivelul de retea 2. Dirijare 3. Exemple NIVELUL REŢEA
3. Nivelul reţea imparte datele in pachete,
asigură dirijarea unităţilor de date între nodurile sursă şi destinaţie, trecând eventual prin noduri intermediare (routing ). Este foarte important ca ruta de date să fie astfel aleasă încât să se evite aglomerarea anumitor zone ale reţelei (congestionare). Interoperabilitatea reţelelor cu arhitecturi diferite este o funcţie a nivelului reţea. NIVELUL REŢEA Funcţia principală a nivelului reţea este dirijarea (dirijarea) pachetelor de la maşina sursă către maşina destinaţie. în majoritatea subreţelelor pachetele vor face salturi multiple pentru a-şi face călătoria. Singura excepţie remarcabilă o reprezintă reţelele cu difuzare, dar chiar şi aici dirijarea este importantă, atunci când sursa şi destinaţia nu sunt în aceeaşi reţea.
Algoritmii care aleg calea şi structurile de date folosite de aceştia
reprezintă un domeniu important al proiectării nivelului reţea.
Algoritmul de dirijare (routing algorithm) este acea parte a
software-ului nivelului reţea care răspunde de alegerea liniei de ieşire pe care un pachet recepţionat trebuie trimis mai departe. NIVELUL REŢEA Dacă subreţeaua foloseşte intern datagrame, această decizie trebuie luată din nou pentru fiecare pachet recepţionat, deoarece e posibil ca cea mai bună rută să se fi modificat între timp.
Dacă subreţeaua foloseşte circuite virtuale, decizia de dirijare se ia
doar la stabilirea unui nou circuit virtual. După aceea pachetele de date vor urma doar calea stabilită anterior. Acest ultim caz este numit uneori sesiune de dirijare, deoarece calea rămâne în funcţiune pentru o întreagă sesiune utilizator .
Indiferent dacă ruta se alege independent pentru fiecare pachet sau
doar la stabilirea unei noi conexiuni, există anumite proprietăţi pe care un algoritm de dirijare trebuie să le aibă: corectitudine, simplitate, robusteţe, stabilitate, prevenirea defavorizării nodurilor, optimalitate. NIVELUL REŢEA Algoritmii de dirijare pot fi grupaţi în două mari clase: neadaptivi şi adaptivi.
Algoritmii neadaptivi nu îşi bazează deciziile de dirijare pe
măsurători sau estimări ale traficului şi topologiei curente. Astfel, alegerea căii folosite pentru a ajunge de la nodul A la nodul B se calculează în avans, off-line şi parvine ruterului la iniţializarea reţelei. Această procedură se mai numeşte şi dirijare statică.
Algoritmii adaptivi îşi modifică deciziile de dirijare pentru a
reflecta modificările de topologie şi de multe ori şi pe cele de trafic. Algoritmii adaptivi diferă prin locul de unde îşi iau informaţia (de exemplu local, de la un ruter vecin sau de la toate ruterele), prin momentul la care schimbă rutele (de exemplu la fiecare T secunde, când se schimbă încărcarea sau când se schimbă topologia) şi prin metrica folosită pentru optimizare (de exemplu distanţa, numărul de salturi sau timpul estimat pentru tranzit). NIVELUL DE RETEA 1. Dirijare pe calea cea mai scurta Metrica: calea ce mai scurta -in numar de noduri - distanta geografica - intarzierea totala - costul transmisiei - banda totala - trafic Se foloseste algoritmul lui Dijkstra NIVELUL DE RETEA 2. Dirijare prin inundare Pachetul este trimis pe toate caile in afara de calea pe care a venit. Se genereaza un numar mare de pachete duplicat si acest numar poate creste la infinit daca nu se iau unele masuri.
O masura este inserarea unui contor de salturi care scade
la fiecare pas, pachetul va fi distrus cand contorul ajunge la zero.
O alta masura este identificarea pachetelor, pentru a
preveni retransmiterea acestora, prin inserarea unui numar de secventa, ruterul mentine o lista de numere. NIVELUL DE RETEA 2. Dirijare prin inundare O variantă a algoritmului de inundare, care este şi ceva mai practică, este inundarea selectivă. în acest algoritm ruterele nu trimit fiecare pachet recepţionat pe fiecare legătură de ieşire, ci doar pe acele linii care duc aproximativ în direcţia potrivită.
De obicei sunt puţine motive pentru a trimite un pachet spre
partea de vest a reţelei folosind o legătură spre est, excepţie făcând reţelele cu topologii deosebite. Inundarea nu este practică pentru majoritatea aplicaţiilor, Iasă are destule utilizări. NIVELUL DE RETEA 2. Dirijare prin inundare De exemplu, în aplicaţiile militare, unde un mare număr de rutere pot fi scoase din funcţionare la orice moment, robusteţea extraordinară a inundării este necesară. în aplicaţiile de baze de date distribuite, este uneori necesar să fie actualizate toate bazele de date concurent, caz în care inundarea poate fi folositoare. O a treia utilizare posibilă a inundării este ca metrică la care să se raporteze toţi ceilalţi algoritmi de dirijare. Inundarea alege întotdeauna cea mai scurtă cale, deoarece alege în paralel toate căile posibile. în consecinţă, nici un alt algoritm nu poate produce o întârziere mai redusă (dacă ignorăm supraîncărcarea generată de procesul de inundare). NIVELUL DE RETEA 3. Dirijare bazata pe flux Tine cont atat de topologie cat si de flux. Trebuie sa fie cunoscute in avans topologia, fluxul si capacitatile liniilor.
Se calculeaza intarzierea medie a unui pachet pe fiecare linie
folosind elemente de teoria cozilor.
Pe baza întârzierilor medii ale tuturor liniilor se poate calcula
imediat, ca medie ponderată după flux, întârzierea medie a unui pachet pentru întreaga subreţea. Problema dirijării se reduce apoi la găsirea algoritmului de dirijare care produce întârzierea medie minimă pentru subreţea. NIVELUL DE RETEA 4. Dirijare cu vectori distanta - dinamic
Algoritmul de dirijare cu vectori distanţă (distance vector
routing) presupune că fiecare ruter menţine o tabelă (de exemplu un vector) care păstrează cea mai bună distanţă cunoscută spre fiecare destinaţie şi linia care trebuie urmată pentru a ajunge acolo. Aceste tabele sunt actualizate prin schimbul de informaţii între nodurile vecine.
Algoritmul de dirijare cu vectori distanţă este cunoscut şi
sub alte nume, cum ar fi algoritmul distribuit de dirijare Bellman-Ford sau algoritmul Ford-Fulkerson. NIVELUL DE RETEA 4. Dirijare cu vectori distanta - dinamic
În dirijarea pe baza vectorilor distanţă, fiecare ruter
păstrează o tabelă de dirijare conţinând o intrare pentru fiecare ruter din subreţca. Această intrare are două părţi: linia de ieşire preferată care se foloseşte pentru destinaţia respectivă şi o estimare a timpului sau distanţei până la acea destinaţie.
Metrica folosită poate fi numărul de salturi, întârzierea în
milisecunde, numărul total de pachete care aşteaptă în cozi de-a lungul căii. NIVELUL DE RETEA 4. Dirijare cu vectori distanta - dinamic Se presupune că ruterul cunoaşte „distanţa" spre fiecare din vecinii săi. Dacă se foloseşte metrica salturilor, distanţa este de doar un salt.
Dacă metrica folosită este cea a lungimilor cozilor de aşteptare,
ruterul examinează pur şi simplu lungimile acestor cozi.
Dacă metrica este cea a întârzierilor, ruterul o poate măsura
direct prin pachete speciale ECHO, în care receptorul va marca doar timpul curent (ştampila de timp) şi le va trimite înapoi cât mai repede posibil. NIVELUL DE RETEA 4. Dirijare cu vectori distanta - dinamic Fiecare ruter comunica doar cu vecinii, converge greu. Apare problema numararii la infinit. Solutie : despicarea orizontului. Distantele nu sut raportate pe directia rutei. Ex. Dii spune lui C: ruta catre B este infinit. In cazul urmator apare problema numararii la infinit. NIVELUL DE RETEA 5. Dirijare folosind starea legaturilor Foloseste informatie legata de starea legaturilor, converge repede, comunica cu toate ruterele.
1. Să descopere care sunt vecinii săi şi afle adresele de reţea
ale acestora. 2. Să măsoare întârzierea sau costul până Ia fiecare din vecinii săi. 3. Să pregătească un pachet prin care anunţă pe toată lumea că tocmai a terminat de cules datele despre vecini. 4. Să trimită acest pachet către toate celelalte rutere. 5. Să calculeze cea mai scurtă cale spre fiecare ruter – Dijkstra. 6. Exemple: IS-IS, OSPF NIVELUL DE RETEA 6. Dirijare ierarhica Reteaua se imparte in regiuni, fiecare ruter cunoaste numai propria regiune si poate dirija pachetele in interiorul regiunii sale.
Se reduce astfel numarul de
intrari in tabelele de rutare ale ruterelor. Nr opim de niveluri in retea cu N rutere este Ln(N). Dim tabelei: e*LN(N) NIVELUL DE RETEA 7. Dirijare pt calculatoare mobile Fiecare celula are un agent local, si un agent pentru straini. Agentul pt straini emite un pachet prin care isi semnaleaza prezenta. Cand un sistem mobil intra in aria unei celule se inregistreaza la un agent pentru straini, cu adresa fizica si de retea.
Agentul strain anunta agentul local din celula de care
apartine sistemul mobil, cu informatii de securitate. Dupa de primeste confirmarea adauga sistemul mobil in lista sa de clienti. NIVELUL DE RETEA 8. Dirijare prin difuzare O metoda ar consta in trimiterea unui pachet catre fiecare gazda. Necesita lista tuturor destinatarilor. NIVELUL DE RETEA 9. Dirijare prin trimitere multipla (multicast) Pentru unele aplicaţii avem nevoie de o modalitate de a trimite mesaje spre grupuri bine definite, care conţin un număr mare de noduri, dar totuşi redus faţă de dimensiunea reţelei ca un întreg.
Trimiterea unui mesaj către un astfel de grup se numeşte
multicasting, iar algoritmul de dirijare asociat se numeşte dirijare multicast. NIVELUL DE RETEA 9. Dirijare prin trimitere multipla (multicast)
Pentru a realiza dirijarea multicast, este necesară gestiunea
grupului. Trebuie să existe modalităţi de a crea şi distruge grupuri şi ca procesele să intre în grupuri sau să le părăsească. Cum se realizează aceste funcţii nu e treaba algoritmului de dirijare.
Important pentru algoritmul de dirijare este că atunci când un
proces se ataşează unui grup, el trebuie să informeze gazda sa despre aceasta. Este foarte important ca un ruter să ştie căror grupuri aparţin calculatoarele gazdă asociate. NIVELUL DE RETEA 9. Dirijare prin trimitere multipla (multicast) Fie calculatoarele gazdă trebuie să anunţe ruterul asociat la producerea unei modificări în alcătuirea grupurilor, sau ruterul trebuie să interogheze periodic aceste calculatoare gazdă.
în ambele cazuri, ruterul determină care este apartenenţa la
grupuri a calculatoarelor gazdă. Ruterele îşi informează vecinii, astfel că informaţia se propagă prin subretea.
Pentru a realiza dirijarea multicast, fiecare ruter calculează
arborele de acoperire care acoperă toate celelalte rutere din subreţea. NIVELUL DE RETEA Controlul congestiei Congestia apare atunci când foarte multe pachete sunt prezente în reţea. Dacă prin controlul fluxului se urmăreşte traficul capăt la capăt între un expeditor şi un destinatar, prin controlul congestiei se urmăreşte să se asigure că subreţeaua este capabilă să transporte întreg traficul implicat. Congestia este o problemă globală implicând toate calculatoarele, toate ruterele din reţea. Abordarea tratării congestiei se poate face prin: metode în buclă deschisă - care rezolvă problema la proiectare, planificând când să distrugă pachete, unde se iau deciziile în reţea, când se acceptă trafic nou, etc. metode în buclă închisă - abordare care curpinde trei părţi 1. monitorizarea sistemului, pentru a detecta când şi unde se produce congestia; 2. trimiterea acestor informaţii către locurile unde se pot executa acţiuni. 3. ajustează funcţionarea sistemului pentru a corecta problema. NIVELUL DE RETEA Controlul congestiei Metricile folosite pentru monitorizare sunt: lungimea medie a cozilor de aşteptare, numărul de pachete care sunt retransmise pe motiv de time out, procentul din totalul pachetelor care au fost distruse (din cauza lipsei spaţiului temporar de memorare), întârzierea medie a unui pachet. Algoritmii în buclă deschisă pot acţiona: asupra sursei (fereastra glisantă, găleata găurită, găleata cu jeton) asupra destinaţiei (formarea traficului - negocierea parametrilor de transfer) Algoritmii în buclă închisă sunt: cu reacţie inversă implicită cu reacţie inversă explicită La cei cu reacţie inversă implicită sursa deduce existenţa congestiei din observaţii locale, cum ar fi timpul necesar pentru întoarcerea pachetelor de confirmare, iar la cei cu reacţie inversă explicită, pachetele sunt trimise înapoi de la locul congestiei către sursă pentru a o avertiza. NIVELUL DE RETEA Controlul congestiei În literatură (vezi A. Tanenbaum „Reţele de calculatoare”)cei mai cunoscuţi algoritmi pentru controlul congestiei sunt: • găleata găurită; • găleata găurită cu jeton; • controlul în subreţele bazate pe circuite virtuale: - controlul admisiei - stabilirea de noi circuite virtuale - negocierea traficului - volumul de date - calitatea serviciului • pachete de şoc • pachete şoc cu salt • cozi echitabile ponderate • împrăştierea încărcării • protocolul de rezervare a resurselor BIBLIOGRAFIE
Tanenbaum A. S., Reţele de calculatoare,
Editura Agora, Târgu Mureş, 1997
Tanenbaum A.S. (1992). Modern Operating
Systems. Englewood Cliffs NJ: Prentice-Hall. DACA EXISTA INTREBARI?