Conan
Moderator
Inregistrat: acum 17 ani
Postari: 198
|
|
Comutarea pachetelor în reţelele de calculatoare
Switching-ul (comutarea pachetelor) reprezintă o tehnologie ce contribuie la diminuarea congestiei în reţelele Ethernet, Token Ring şi FDDI prin reducerea traficului şi creşterea disponibilităţii lăţimii de bandă. Astăzi, switch-urile au ajuns să înlocuiască tot mai mult hub-urile, deoarece sînt proiectate să funcţioneze în infrastructura existentă deja în reţea, fără a perturba traficul acesteia. 9.1. Funcţiile unui switch Switch-urile au ajuns astăzi să fie considerate componenta fundamentală prin care se realizează segmentarea celor mai multe reţele. Ele permit utilizatorilor dintr-o reţea să transmită informaţii, prin acelaşi mediu, în acelaşi timp, fără a încetini traficul. Aşa cum routerele permit diferitelor reţele să comunice unele cu altele, switch-urile permit diferitelor noduri (nod = un punct de conexiune dintr-o reţea, de obicei un calculator) din reţea să comunice direct unele cu altele, într-o manieră eficientă. Prin porturile sale, un switch împarte reţeaua în mai multe canale de comunicaţie. Aceste canale independente cresc randamentul switch-ului în ceea ce priveşte lăţimea de bandă folosită. Switch-urile mai simple sunt autoconfigurabile, prin urmare, nu este nevoie de personal specializat pentru punerea lor în funcţiune. În cuvinte simple, modul de funcţionare al unui switch este următorul: pentru un segment de reţea ataşat la un port al switch-ului, CSMA/CD va controla accesul la mediul de transmisie pentru respectivul segment. Dacă la respectivul port este ataşată o singură staţie de lucru, nu este nevoie de nici un mecanism prin care să se controleze accesul la mediu. Switch-ul verifică adresele MAC sursă şi destinaţie ale cadrelor pe care le recepţionează şi transmite respectivele cadre către porturile corespunzătoare. Prin urmare, comutarea pachetelor la nivelul 2 OSI se bazează pe hardware sau, altfel spus, foloseşte adrese fizice (MAC). Un switch îndeplineşte două funcţii principale: • Comutarea cadrelor. Această funcţie are loc atunci cînd un cadru ajunge la switch dintr-un anumit mediu sau de pe un anumit port şi este transferat către un alt mediu/port. • Gestionarea operaţiilor de comutare. Switch-ul creează şi întreţine tabele de comutare sau de filtrare folosind ASIC - Application Specific integrated Circuits. Fiecare switch folosit într-o reţea Ethernet induce latenţă. Un switch interpus între un server şi o staţie de lucru creşte timpul de transmisie cu 21 microsecunde. Un pachet de 1000 bytes are un timp de transmisie de 800 microsecunde. Dacă comutarea realizată de switch este de tip store-and-forward, latenţa indusă creşte. Tot la capitolul generalităţi menţionăm cele două tipuri de switching : de nivel 2 sau de nivel 3. Diferenţa între aceste două tipuri de comutări constă în tipul informaţiilor conţinute în cadru: la nivel 2 se foloseşte adresa MAC, iar la nivel 3 informaţiile nivelului 3. Switch-ul nu analizează informaţiile de nivel 3 conţinute de un cadru, ci doar adresa MAC a destinatarului. Dacă adresa este cunoscută, cadrul este transmis către interfaţa/ portul corespunzătoare. Switch-ul construieşte tabele cu adresele MAC corespunzătoare fiecărui port în parte. Dacă nu se cunoaşte adresa destinatarului, cadrul este transmis către toate porturile (broadcast) pentru ca switch-ul să-i poată „învăţa" destinaţia corectă. Când este reprimit cadrul, switch-ul adaugă adresa în tabela cu adrese MAC a portului respectiv. Cu excepţia SNA (Systems Network Architecture), utilizatorii nu au control asupra adreselor de nivel 2. în majoritatea reţelelor, administratorilor le revine sarcina de a atribui doar adrese de nivel 3. în acest caz, putem spune că administratorii creează reţele locale ce se comportă ca un singur spaţiu de adresare (blocul-strada-oraşul-ţara) . Un switch Ethernet poate „învăţa" adresa oricărui dispozitiv din reţea prin citirea adresei sursă conţinută în fiecare pachet şi notarea portului prin care cadrul a „intrat" în switch. Aceste adrese sunt memorate într-o bază de date. Adresele echipamentelor din reţea sunt memorate în mod dinamic, altfel spus, pe măsură ce apare un dispozitiv nou, adresa sa este citită, învăţată şi memorată într-o zonă de memorie (CAM - content addressable memory). Când switch-ul identifică o adresă pe care nu o regăseşte în CAM, o memorează pentru o utilizare viitoare. în momentul memorării, adresa este „ştampilată" şi cu data când a fost adăugată în CAM. Ori de câte ori o adresă este referită sau adăugată în CAM, i se înregistrează şi noua dată (inclusiv ora) la care a avut loc operaţiunea. Adresele la care nu se face referire o anumită perioadă de timp sunt şterse din CAM. Prin acest mecanism, baza de date cu adresele MAC ale dispozitivelor din reţea este actualizată în mod constant. 9.2. Funcţionarea switch-ului Vom încerca să vedem mai în detaliu cum funcţionează un switch. La pornire, tabela cu adrese MAC nu conţine nici o înregistrare. Când un calculator (1) transmite şi un port recepţionează un cadru, switch-ul preia adresa MAC a calculatorului sursă şi o plasează în tabela de filtrare împreună cu portul de unde a fost preluat. Având în vedere că destinatarul nu este cunoscut, switch-ul nu va avea de ales şi va trebui să „inunde" reţeaua cu acest cadru. Dacă un calculator din reţea (3) răspunde şi trimite înapoi un cadru, switch-ul va prelua adresa sursă din acest cadru şi o va înregistra în baza de date cu adrese MAC în asociere cu portul de pe care a fost primit. Din acest moment, switch-ul va putea realiza o conexiune punct-la-punct, cadrele fiind transmise doar între cele două calculatoare. De fiecare dată când un cadru este recepţionat pe un anumit port, adresa MAC destinaţie va fi comparată cu înregistrările din baza de date a switch-ului. Dacă această adresă este cunoscută şi apare în baza de date, cadrul va fi transmis către portul corespunzător. în caz contrar, cadrul este transmis broadcast (mai puţin portul pe care a fost recepţionat), adresa calculatorului care răspunde la broadcast urmând a fi înregistrată în baza de date cu adrese MAC. Dacă tot am pomenit de broadcast, trebuie făcută o precizare: cadrele broadcast şi multicast nu specifică adrese MAC destinatare. Adresa sursă va fi întotdeauna adresa MAC a dispozitivului care transmite cadrul, în timp ce adresa destinaţie poate fi o adresă broadcast (toţi biţii 1) sau una multicast (biţii din porţiunea host au valoarea 1). Broadcast-ul va fi transmis către toate reţelele şi host-urile acestora, în timp ce multicastul va fi transmis tuturor host-urilor unei anumite reţele. Ce se întâmplă însă atunci când o legătură se întrerupe ? Am putea spune că într-o reţea ar fi bine să existe legături redundante. Corect. Această rezolvare însă, mai mult încurcă decât ajută. Atât timp cât broadcast-ul este transmis tuturor reţelelor, furtuna broadcast sau, altfel spus, circulaţia mesajelor în buclă nu poate fi evitată. Ce se întâmplă în astfel de situaţii? Un calculator va primi copii ale aceluiaşi cadru, dar de la surse diferite, de pe segmente de reţea diferite. Tabela cu adrese MAC de pe switch nu mai ştie ce să înregistreze. Switch-ul nu ştie care cadru trebuie transmis în reţea, deoarece tabela MAC este actualizată continuu. Această situaţie are o rezolvare şi se numeşte Spanning Tree Protocol. Comutarea simetrică a pachetelor caracterizează o reţea în care switch-ul alocă lăţimea de bandă în mod egal fiecărui port. Un switch simetric oferă deci conexiuni între porturi cu aceeaşi lăţime de bandă: l0Mbps sau l00Mbps. Spre deosebire de acesta, un; switch asimetric oferă conexiuni între porturi cu lăţimi de bandă diferite, cum ar fi o combinaţie 10-100Mbps. Switch-urile asimetrice sunt folosite mai ales în cazul traficului generat de aplicaţii client-server. într-un astfel de switch, bufferingul memoriei trebuie să permită traficului de pe portul pe 100Mbps să fie transmis către portul pe 10Mbps, fără să conducă la blocarea acestuia din urmă. Un switch Ethernet foloseşte o tehnică buffering prin care memorează şi transmite pachetele către porturile corecte. Zona de memorie în care se păstrează datele ce trebuie transmise se numeşte buffer. Această zonă de memorie poate folosi două metode de transmisie a pachetelor : port-based memory buffering sau shared memory buffering. În bufferingul de tip port-based, pachetele sunt memorate într-o coadă de aşteptare, în funcţie de portul pe care au „intrat". Un pachet este transmis către destinaţie abia când; toate pachetele dinaintea sa au fost transmise. Acest lucru face posibil ca un singuri pachet să întârzie întreaga transmisie a pachetelor din memorie, ca urmare a ocupării portului destinaţie (de exemplu.). Această întârziere apare chiar dacă alte pachete pot fi; transmise către porturi care sunt libere. În bufferingul de tip shared memory, switch-ul depozitează pachetele într-o zonă de memorie care este partajată între toate porturile. Memoria alocată unui port depinde de cât „cere" fiecare port la un moment dat, altfel spus, este alocată în mod dinamici Pachetele din buffer sunt asociate dinamic portului care transmite. Aceasta oferă posibilitatea ca un pachet să fie recepţionat pe un port şi transmis pe un altul, fără ca datele să mai „stea la coadă". Switch-ul întreţine o hartă a tuturor porturilor către care trebuie transmis un pachet.) După ce transmisia pachetului s-a făcut cu succes, această hartă este ştearsă. Ca efect al memoriei partajate, dimensiunea unui pachet este limitată la dimensiunea bufferului şi nu doar la cea alocată unui anumit port. Ce înseamnă aceasta? Se pot transmite pachete mai mari dacă se distrug câteva pachete de dimensiuni reduse. Este o facilitate foarte importantă în cazul switch-urilor 10/100Mbps, în care un port pe 100 poate să transmită un pachet către un port pe 10 Mbps. 9.3. Metode de comutare a pachetelor Latenţa pachetelor într-un switch depinde, în primul rând, de modul în care se realizează comutarea acestora. Există trei astfel de metode. Store-and-forward reprezintă cea mai cunoscută metodă de switching într-o reţea, înainte de a fi transmis, cadrul este recepţionat în totalitate : se citeşte adresa sursă şi/sau destinaţie şi se aplică anumite filtre, se calculează o cifră de verificare a redundanţei, în timpul recepţionării cadrului apare şi latenţa. Cu cât cadrul este mai mare, cu atât este mai mare şi latenţa indusă ca urmare a timpului necesar citirii sale. Detectarea erorilor mai consumă şi ea ceva timp, deoarece switch-ul trebuie să aştepte recepţionarea întregului cadru. Dacă există erori, cadrul este distrus. Dacă este prea mic (mai puţin de 64 bytes) sau prea mare (mai mult de 1518 bytes), este de asemenea distrus. Dacă totul este bine, switch-ul caută adresa MAC destinaţie şi determină portul de ieşire. Cut-through (în timp real) este cea de-a doua metodă de comutare. înainte de a aştepta recepţionarea întregului cadru, switch-ul citeşte adresa destinaţie şi lansează transmiterea sa. De fapt, switch-ul copie doar adresa destinaţie (primii 6 bytes de după preambul) în memorie şi caută această adresă în tabela sa pentru a determina care este portul de ieşire. Această tehnică reduce latenţa şi, în plus, nici nu detectează erorile aşa cum se întâmplă în store-and-forward. Cut-through are două variante : • Fast-forward switching. Această variantă induce cea mai mică latenţă, deoarece un pachet este transmis imediat ce a fost identificată adresa destinaţie. Dezavantajul constă în faptul că sunt transmise mai departe şi pachetele ce conţin erori. Chiar dacă aceste situaţii nu apar în mod constant şi NIC-urile renunţă la cadrele ce conţin erori, apariţia unui trafic inutil în reţea nu este digerată de nici un administrator sârguincios. Switch-ul măsoară latenţa pornind de la primul bit recepţionat şi terminând cu primul transmis (FIFO). • Fragment-free switching. Această variantă presupune filtrarea şi transmiterea numai a fragmentelor de pachete ce nu conţin erori. In mod obişnuit, un fragment ce ia naştere în urma unei coliziuni trebuie să fie mai mic de 64 bytes. Orice pachet mai mare decât această valoare este considerat valid şi, prin urmare, este recepţionat fără erori. în această situaţie, switch-ul aşteaptă până când un pachet recepţionat este validat şi apoi îl transmite către portul destinaţie. Latenţa fiecăruia dintre modurile prezentate depinde de cum se realizează transmisia pachetelor. Cu cât este mai rapid modul de transmitere, cu atât este mai redusă latenţa. Dar, pentru a se ajunge în această situaţie, înseamnă că switch-ul alocă mai puţin timp pentru verificarea erorilor. Şi, cu cât verificarea erorilor este mai redusă, cu atât mai mult creşte numărul retransmisiilor. 9.4. Spanning Tree Protocol (STP) Principala menire a acestui protocol este de a împiedica apariţia aşa-ziselor circuite în buclă. STP monitorizează în mod constant reţeaua, izolînd buclele şi trecînd anumite conexiuni în stand-by. Figura 9.2. Comutarea pachetelor fără STP Figura de mai sus vrea să arate cum circulă un singur cadru trimis de calculatorul lui Florin, dacă STP-ul nu ar fi activat. Florin trimite un singur cadru unicast către adresa MAC a lui Marius. Calculatorul lui Marius nu este pornit şi, prin urmare, switch-ul nu are de unde să îi ştie adresa MAC. Acest cadru va circula în reţea la infinit (sau până la expirarea timpului de viaţă şi va fi transmis de către switch către toate porturile active pînă în momentul în care una din legături pică. în lipsa unui astfel de protocol, o reţea devine inutilizabilă. Algoritmul spanning tree atribuie fiecărui port de pe switch mai multe stări: • Blocking - nu se transmite nici un cadru. • Listening - nu se transmite nici un cadru, se „ascultă". • Learning - nu se transmite nici un cadru, se învaţă adrese. • Forwarding - se transmit cadre, se învaţă adrese. • Disabled - inactiv. Revenind la exemplul anterior, când Fiorin va transmite cadre către calculatorul lui Marius, acestea nu vor mai circula în buclă. SW1 va trimite o copie a cadrului transmis de Florin către SW2, dar SW3 nu va putea să transmită această copie către portul 0/27, deoarece acesta este blocat. Pe de altă parte, dacă Vali doreşte să transmită un cadru către Marius, va trebuie să o facă prin intermediul SW1, şi nu direct. Dacă legătura dintre SW1 şi SW3 cade, atunci SW va schimba starea portului 0/27 în forwarding.
|
|