mihaispr
Administrator
Inregistrat: acum 17 ani
Postari: 2142
|
|
În general dispozitivele de retea (rutere, switch-uri, bridge-uri) au o arhitectura mai deosebita fata de calculatoarele personale sau de micro-calculatoare, chiar daca la baza contin aceleasi elemente. Acest lucru este normal, întrucât dispozitivele de retea pot fi considerate ca facând parte din clasa sistemelor embedded systems, echipamente specializate si nu de uz general, care se preteaza la o implementare hardware mult mai specifica, dar în acelasi timp si mai eficienta.
bridge-urile si cele mai multe rutere folosesc comutare de pachete software switch-urile folosesc comutare de pachete hardware filtrarea de pachete este mai performanta cu câteva ordine de marime pe un dispozitiv de securitate (firewall) dedicat fata de un server (calculator de uz general) ce functioneaza ca firewall
Elemente discrete ale dispozitivelor de retea
La fel ca un calculator personal, arhitectura unui dispozitiv de retea contine elemente discrete: procesoare de uz general sau embedded, memorie (RAM, ROM, FLASH, NVRAM), magistrale, switch fabrics, procesoare de retea (procesoare specializate pe operatiile de cautare/înlocuire sau inspectie a pachetelor sau cadrelor), controlere pentru diversele medii de comunicatie (Ethernet, wireless, serial, etc.). Aceasta sectiune va face o descriere sumara a acestor elemente discrete întâlnite în dispozitivele de retea.
Circuite integrate Proiectarea circuitelor integrate a evoluat fata de timpul în care aceasta se facea pe hârtie, se verifica apoi pe un Printed Circuit Board (PCB) si se stabilea manual pozitia tranzistorilor si a cailor de interconectare pe pastila de siliciu. Astazi exista pachete software grupate sub denumirea generica de Computer Aided Engineering (CAE) care dau posibilitatea proiectantului sa se concentreze asupra partii de proiectare logica, în timp ce programele garanteaza proiectantului ca circuitul integrat generat îndeplineste conditiile necesare procesului tehnologic de fabricatie.
Proiectarea unui circuit integrat include mai multe etape pe care le vom descrie în continuare pe scurt:
proiectarea logica - proiectantul descrie circuitul integrat folosind un limbaj de programare hardware (Verilog sau VHDL) sinteza logica - folosind un utilitar de sinteza se genereaza un netlist - o descriere a elementelor folosite împreuna cu modul de interconectare al acestora partitionarea - daca este cazul se împarte logica rezultata în mai multe circuite integrate simulare (prelayout simulation) - se verifica corectitudinea proiectarii prin simularea circuitelor în software plasamentul - se aranjeaza componentele pe suprafata chipului rutarea - se interconecteaza elementele extragerea - se determina rezistenta capacitatea legaturilor dintre elemente simulare (postlayout simulation) - se verifica înca o data corectitudinea simularii luând în calcul informatiile determinate la pasul anterior Primele patru etape se încadreaza în partea de proiectare logica în tinp ce ultimele patru sunt considerate ca facând parte din partea de proiectare fizica. Este important de mentionat ca exista programe care automatizeaza partial sau total toate etapele descrise în afara de proiectarea logica. Circuitele integrate sunt fabricate pe suprafete circulare denumite wafers ce contin câteva zeci de pastile de siliciu. Pastilele de siliciu vor fi mai apoi plasate în pachete (packages) de ceramica sau plastic la un loc cu pinii aferenti. Procesul tehnologic construieste circuitele integrate din mai multe straturi (în momentul actual 10-15 straturi), primele straturi definind tranzistorii iar ultimele straturi realizând interconectarea între acestia. Fiecare strat se construieste pe baza unei masti care defineste daca avem sau nu siliciu/metal pe portiunea descrisa de masca.
Procesul tehnologic de realizare a circuitelor integrate nu este lipsit de erori. Erorile de fabricatie pot fi de doua feluri: globale si locale. Cele globale afecteaza toata suprafata de productie si pot fi detectate usor masurând parametri precum intensitatea curentului si viteza de comutare a tranzistorilor, atât pe circuitele integrate produse cât si pe dispozitive de test încorporate în suprafata de productie.
Cele locale sunt cauzate de impuritati sau de dislocarea cauzata de socuri mecanice a cristalelor de silicon ce alcatuiesc wafer-ul. Din aceasta cauza este afectata o suprafata extrem de redusa, greu de detectat. Detectia unor astfel de erori este îngreunata si de faptul ca la testare nu sunt disponibili decât pinii de iesire ai circuitului integrat. Pentru detectia unor astfel de erori, odata cu proiectarea unui circuit integrat trebuie realizata si strategia de testare a acestuia. Generarea unei strategii de testare necesita un efort considerabil si implica cunostinte din domeniul teoriei sistemelor ca testabilitatea, observabilitatea, controlabilitatea.
ASIC-uri
Toate elementele discrete din care sunt construite dispozitivele de retea sunt în cele din urma circuite integrate, însa datorita faptului ca ele au functii precise ele sunt clasificate în procesoare, controlere, switch fabrics, memorii, etc. Exista însa o clasa aparte de circuite integrate care nu poate fi plasata în nici una din aceste categorii, pentru ca de cele mai multe ori ele contin parti din fiecare dintre categoriile enumerate mai devreme, sau pentru ca sunt atât de specifice încât nu se încadreaza în nici una din categorii.
Aceste circuite integrate sunt denumite Application Specific Integrated Circuits, sau ASICs. Dupa cum se observa si din numele acestora, ASIC-urile sunt circuite integrate dezvoltate pentru o functie specifica ce nu poate fi efectuata cu performante similare de catre circuite integrate standard. Din punct de vedere strict tehnologic ASIC-urile sunt circuite integrate, însa pentru ca sunt proiectate si fabricate într-un timp relativ scurt, metodologia de proiectare si dezvoltare a ASIC-urilor difera fata de cea a circuitelor integrate standard. Putem considera ca odata cu aparitia ASIC-urilor, circuitele integrate au intrat într-o noua faza, care le face mai ieftine si mai accesibile pentru o categorie mai vasta de probleme. Pentru a întelege de ce, este necesar sa studiem sumar tipurile de ASIC-uri care exista la ora actuala.
ASIC-uri complet customizate
Aceste tipuri de ASIC-uri (full-custom ASICs) sunt similare cu circuitele integrate clasice. Cel care proiecteaza astfel de ASIC-uri proiecteaza practic de la zero un nou circuit integrat. Costul de proiectare pentru acest tip de ASIC este mare, astfel încât numai companiile mari folosesc aceasta alternativa. De asemenea, costurile de productie pentru astfel de ASIC-uri sunt cele mai mari pentru ca nici o parte a acestuia nu este fixa, astfel încât trebuie generate masti pentru toate straturile. Timpul de productie este proportional cu numarul de straturi al circuitului integrat ce trebuie generate, si din acest motiv, pentru un ASIC complet customizat, timpul actual de productie este de aproximativ 8 saptamâni.
Chiar daca costurile de proiectare si productie sunt mari, avantajele pentru astfel de circuite integrate constau în faptul ca acestea au cea mai mare densitate de porti pe chip, ceea ce înseamna ca pot fi fabricate mai multe ASIC-uri într-un lot de productie, ceea ce duce la diminuarea costului pe ASIC, daca numarul de ASIC-uri produse este mare.
Pentru majoritatea pietii de ASIC-uri însa, aceasta abordare este mult prea scumpa, astfel încât producatorii de ASIC-uri au cautat metode mai ieftine de fabricare a ASIC-urilor. Aceste tehnologii poarte denumirea de ASIC-uri partial customizabile, pentru ca anumite parti/straturi ale ASIC-urilor sunt deja proiectate/fabricate. ASIC-uri bazate pe celule standard
Aceasta tehnologie foloseste elemente electronice de baza grupate predefinit în celule standard, de unde si denumirea acestor tipuri de ASIC-uri, care uneori mai sunt denumite si CBIC-uri (Cell Based Integrated Circuit). În functie de tipul ei, o celula poate cuprinde porti logice SI, porti logice SAU, multiplexoare, flip-flopuri, etc. Astfel, pentru acest tip de ASIC, tipul, plasamentul si interconectarea celulelor sunt stabilite de cel care proiecteaza ASIC-ul. Mai multe celule pot fi legate între ele formând un bloc flexibil.
În plus, aceste ASIC-uri pot include arii de celule predefinite (microcontrolere, microprocesoare, controlere Ethernet, etc.) denumite megacelule, megafunctii, blocuri complet customizate (full-custom blocks), system-level macros (SLM), blocuri fixe, cores sau blocuri standard functionale (FSB - Functional Standard Blocks).
Avantajele folosirii celulelor standard fata de proiectarea completa a unui ASIC constau în faptul ca celulele standard si megacelulele sunt deja proiectate, testate si au construit un model pentru simulari de catre producator. Proiectarea unui CBIC seamana cu proiectarea clasica, în care se plaseaza si interconecteaza circuite integrate pe un PCB (Printed Circuit Board).
Datorita faptului ca blocurile fixe si blocurile flexibile pot fi plasate oriunde pe suprafata ASIC-ului, productia unui astfel de ASIC necesita ca pentru toate straturile circuitului integrat sa fie generate masti. Din aceasta cauza timpul de productie a CBIC-urilor este de aproximativ 8 saptamâni, acelasi ca si pentru ASIC-urile complet customizate. De asemenea, costurile de productie sunt similare (pentru ca trebuie generate toate mastile).
Avantajul CBIC-urilor este acela ca costurile de proiectare sunt reduse. Producatorul de ASIC-uri pune la dispozitia proiectantului librarii în limbaje de programare hardware atât cu celulele standard cât si cu megacelule. Librariile contin modele de simulare, astfel încât, dupa proiectarea ASIC-ului, acesta poate fi verificat prin simulari, înainte de începerea productiei. Megacelulele cât si celulele standard pot fi definite de variabile care sa specifice diverse caracteristici precum optimizare a tranzistorilor generati pentru viteza sau spatiu.
Pentru ca sarcina proiectantului sa fie si mai usoara, producatorii de ASIC-uri pun la dispozitia clientilor si compilatoare care pot genera blocuri flexibile de DRAM, SRAM, ROM. Exista si compilatoare de cai de date (datapath compilers) care genereaza celule ce lucreaza cu mai multe semnale ale unei magistrale de date: sumatoare, scazatoare, chiar si unitati aritmetico-logice simple. Numarul de biti al caii de date poate fi specificat de proiectant. Celulele rezultate pot fi usor interconectate astfel încât sa formeze cai de date cu performante mai bune, ca viteza si spatiu ocupat, decât daca s-ar fi folosit celule standard (aceste tipuri de celule sunt grupate în datapath libraries).
ASIC-uri bazate pe vectori de porti(Gate Arrays ASICs)
Aceste tipuri de ASIC-uri folosesc celule de baza care sunt mai apoi replicate în vectori de baza. La rândul lor, acestia sunt replicati pe toata suprafata waferului sub forma unei matrice. Primele versiuni (Channeled Gate Arrays) asezau vectorii de baza cu spatii între ei, pentru a-i putea interconecta. Versiunile mai noi (Channelless Gate Arrays, Channel Free Gate Arrays, Sea of Gate Arrays) nu mai necesita spatii între vectorii de baza, datorita faptului ca s-a introdus un strat izolator între ultimul strat ce defineste tranzistorii si primul strat de interconectare.
Celulele de baza contin tranzistori deja formati, astfel încât primele straturi ale waferului sunt deja fabricate. Proiectantul va alege tipul celulei de baza si dimensiunea ASIC-ului dintr-un set pus la dispozitie de producator. Din acesta cauza timpul de productie pentru astfel de ASIC-uri este extrem de redus, de la doua saptamâni pâna la chiar câteva zile. De asemenea, costul de productie este extrem de mic. Dezavantajele folosirii unui astfel de ASIC sunt date de densitatea mai mica de porti logice pe ASIC si posibilitatea ca unii tranzistori sa nu fie folositi deloc. De asemenea, pentru ca structura este fixa, nu exista posibilitatea integrarii de megacelule.
ASIC-uri bazate pe vectori de porti structurate
Aceste ASIC-uri încearca sa combine tehnologiile prezentate mai sus, pentru a obtine un ASIC ieftin si flexibil. O parte din suprafata ASIC-ului este rezervata (embedded area) si contine memorie, controlere sau chiar nuclee de microprocesoare, restul suprafetei fiind ocupate de celule de baza. Timpul si costurile de productie sunt asemanatoare cu cele pentru ASIC-uri bazate pe vectori de porti, însa, în anumite cazuri, aceste ASIC-uri sunt mai usor de proiectat (pot încorpora logica deja existenta) si sunt mai flexibile (proiectantul poate alege dintr-un set de tipuri de ASIC-uri în care dimensiunea acestuia, dimensiunea zonei embedded, tipul zonei embedded si a tipul celulei de baza variaza).
PLD-uri si FPGA-uri
Dispozitivele logice programabile (PLD - Programmable Logic Devices) sunt circuite integrate ce sunt disponibile în configuratii standard ce pot fi programate sau configurate. Cea mai simpla forma de circuit integrat programabil este ROM-ul. Exista mai multe tipuri de ROM-uri programabile: PROM-urile sunt programate permanent, EPROM-urile pot fi programate, iar apoi pentru o noua programare este nevoie de stergerea lor prin aplicarea unei tensiuni (EEPROM) sau prin expunerea la raze ultraviolete (UV-EPROM). Exista si ROM-uri special folosite în ASIC-uri (ca megacelule, sau incluse în ariile rezervate ale ASIC-urilor bazate pe vectori de porti structurate): ROM-uri programabile prin masti (mask-programable ROMs). Un astfel de ROM este creat prin programarea permanenta a tranzistorilor.
O categorie mai flexibila de PLD-uri sunt PLA-urile (Programable Logic Arrays) si PAL-urile (Programmable Array Logic). Ele sunt formate din porti logice SI sau SAU fixe care pot fi interconectate arbitrar la programare. În functie de cum sunt programate, PLD-urile sunt grupate în erasable PLD (EPLD) sau mask-programmed PLD. EPLD-urile folosesc tranzistori care pot fi programati de mai multe ori pentru a crea legaturile între porti. MPLD-urile folosesc sigurante care pot fi arse definitiv prin aplicarea unei supratensiuni. Din cauza structurii lor, aceste PLD-uri pot fi folosite doar pentru o clasa mica de probleme cum ar fi decodificatoarele de tranzitii pentru automate finite.
O alta clasa de dispozitive logice programabile sunt Field Programmable Gate Arrays (FPGA). Aceste circuite integrate reprezinta urmatorul pas în evolutia PLD-urilor si cu ajutorul lor se pot rezolva o gama mult mai larga de probleme. Intern, FPGA-urile sunt formate din celule logice reprogramabile si logica ce poate fi programata pentru a interconecta celulele. Datorita acestei structuri, spre deosebire de celelalte tipuri de ASIC-uri, FPGA-urile pot fi programate de mai multe ori si au un grad de complexitate asemanator cu ASIC-urile neprogramabile daca le comparam cu PLD-urile clasice.
Memorii
Dispozitivele de retea folosesc un numar relativ mare de tipuri de memorii în diverse scopuri. Astfel , este comun ca un ruter sau switch sa încorporeze memorie RAM, ROM, FLASH si NVRAM.
De cele mai multe ori, memoria RAM este folosita în doua scopuri: pentru rularea sistemului de operare si pentru a retine pachetele (packet buffers) ce traverseaza dispozitivul. Chiar daca memoria folosita pentru cele doua scopuri poate fi aceeasi, în general se foloseste o memorie mai rapida (SRAM) pentru pachete. Mai poate exista însa si o alta diferenta. Pentru ca dispozitivele interconectare sa fie performante, transferul pachetelor între interfete si memorie (vezi sectiunile 8.2 si 8.3.1) trebuie facut de catre interfete. Asta înseamna ca memoria folosita pentru retinerea pachetelor trebuie sa fie mapata astfel încât interfetele sa o poata accesa singure, fara a face apel la procesor. Procesorul va programa interfata prin asa numitele inele de transfer (TX/RX rings) care nu sunt decât niste tabele cu pointeri catre zone de memorie alocate de catre sistemul de operare pentru interfata.
Memoriile de tip flash sunt folosite pentru a pastra imaginea sistemului de operare si alte fisiere importante folosite de aceasta. Avantajul folosirii de memoriile flash în locul hard discurilor este nu atât costul mai redus al memoriilor flash, cât fiabilitatea extrem de buna a acestora în comparatie cu hard discurile.
Memoria NVRAM (Non Volatile RAM) este folosita în cadrul dispozitivelor de interconectare pentru a pastra configuratia sistemului. Memoriile NVRAM sunt memorii normale (RAM) alimentate permanent de un acumulator. În unele dispozitive de interconectare acest tip de memorie nu este folosit, configuratia salvându-se tot în flash. Datorita particularitatii memoriilor flash, aceasta abordare necesita însa implementarea a unui sistem de fisiere special conceput pentru ele.
Controlere UART
Pentru ca, în afara de perioada de configurare initiala, un dispozitiv de interconectare nu are nevoie sa fie accesat direct (configurari in-band ulterioare se pot face accesând ruterul cu telnet, ssh sau cu un browser) interfata cu utilizatorul este minimala. În general se foloseste un port serial RS232 (portul de consola) pe care utilizatorul se poate conecta folosind un terminal sau un calculator si un emulator de terminal. Acest lucru restrictioneaza mobilitatea utilizatorului la câtiva metri de dispozitivul de interconectare. Din acest motiv unele dispozitive folosesc un port auxiliar care se poate conecta la un modem. Acesta este cauza pentru care practic fiecare dispozitiv de interconectare contine un controler compatibil UART, daca nu ca dispozitiv discret atunci integrat în procesorul embedded.
Magistrale
Multibus este un tip de magistrala dezvoltat de Intel în anii '70 si apoi adoptat ca standard în IEEE 796 si IEEE P959. Chiar daca are o vechime considerabila, el mai este înca folosit astazi mai ales în aplicatii industriale si embedded. Primele generatii de rutere si switch-uri au folosit aceasta magistrala datorita faptului ca era simpla si bine înteleasa. În anii '80 Intel a îmbunatatit standardul, creând Multibus II. Aceasta magistrala a fost si ea standardizata în IEEE-STD 1296. Având 16 linii de date si o frecventa de maxim 10MHz, cu latentele introduse de protocol, Multibus are o largime de banda de 155Mbps, mai mult decât suficient pentru perioada în care a fost conceput. Un aspect important al acestei magistrale este faptul ca suporta facilitati avansate în protocol, cum ar fi blocarea magistralei pentru executie de operatii atomice read-modify-write pe platforme multiprocesor. Ca un punct negativ, Multibus supoarta doar 24 de linii de adresa, ceea ce înseamna ca are un spatiu de adresa de doar 8Mb.
Cbus este o magistrala proprietara Cisco dezvoltata pentru a elimina problemele magistralei Multibus, folosita la început de produsele CISCO. Este o magistrala moderna chiar si la standardele de astazi, comparabila cu PCI. Având 32 de linii de date si adresa si o frecventa de maxim 16.67MHz are o largime de banda de 533Mbps si un spatiu de adresa de 4Gb. Ulterior Cisco a dezvoltat a îmbunatatit magistrala creând CyBus-ul dar încercând sa pastreze compatibilitatea cu CxBus-ul (CBus-ul mai este întâlnit si sub denumirea de CxBus). Astfel, CyBus are aceleasi specificatii, dar poate transfera doua cuvinte în acelasi ciclu de ceas. Aceasta abordare permite coexistenta ambelor tipuri de interfete (CxBus si CyBus) pe aceeasi magistrala (CyBus bineînteles) si creste largimea de banda pâna la 1066Mbps.
Comutarea pachetelor Procesul de comutare a pachetelor este operatia de baza a dispozitivelor de interconectare ce lucreaza la nivelele OSI 2 si 3 si devine o operatie necesara atunci când dispozitivul lucreaza cu pachete si cu mai multe porturi sau interfete pe unde poate receptiona sau transmite un pachet. Operatiile de baza efectuate pentru orice dispozitiv de interconectare sunt:
- receptionarea pachetului la una din intrari - examinarea adresei destinatie a pachetului si compararea acestei adrese cu intrari dintr-o tabela - trimiterea pachetului pe una din iesiri în functie de rezultatul cautarii în tabela
Arhitecturile acestor dispozitive sunt realizate astfel încât operatiile descrise sa se realizeze cât mai eficient, atât din punctul de vedere al vitezei de transmisie (care trebuie sa fie cât mai mare) cât si a latentei introduse (care trebuie sa fie cât mai mica). Fiecare tip de dispozitiv de interconectare ce foloseste comutarea de pachete (rutere, switch-uri Ethernet, switch-uri ATM, switch-uri frame-relay) implementeaza si alte operatii, dar cele mentionate sunt prezente întotdeauna. Examinarea adresei destinatie a pachetului precum si comparare acesteia cu intrari din diverse tabele sunt operatii ce sunt implementate diferit de fiecare tip de desipozitiv de interconectarea si va fi discutat în sectiunile ce urmeaza.
Pentru a prezenta probleme teoretice ce apar în cadrul implementarii comutarii de pachete, în cele ce urmeaza vom considera ca lucram cu un dispozitiv cu NxN porturi (cu N porturi de intrare si N porturi de iesire).
Principala problema care apare în cadrul procesului de comutare de pachete este datorat faptului ca exista posibilitatea ca în acelasi timp dispozitivul sa fie nevoit sa trimita doua pachete pe aceeasi interfata. Bineînteles ca acest lucru nu se poate, si din acest motiv se folosesc comutare de pachete în care se memoreaza pachete pâna când ele pot fi transmise. Se poate demonstra ca daca nu se folosesc comutare de pachete, pentru un dispozitiv cu un numar mare de porturi si cu un trafic aleator, se pierd 37% din pachete. De asemenea, daca dorim pentru acelasi tip de dispozitiv sa mentinem procentul de pachete pierdute sub 1%, încarcarea acestuia trebuie sa fie sub 2% .
În functie de modalitatea în care se utilizeaza comutare de pachetele în dispozitiv avem doua categorii de comutare de pachete: comutare de pachete cu bufere pe intrari (input queuing) si comutare de pachete cu bufere pe iesiri (output queuing).`
La abordarea cu bufere pe intrari se folosesc N comutare de pachete în care sunt retinute pachetele ce intra în dispozitiv. Daca la un moment dat trebuie ca mai multe pachete sa iasa pe aceeasi iesire, se alege unul dupa o anumita politica dintr-unul din bufere. Problema cu acesta abordare este fenomenul head of queue blocking: daca un pachet dintr-o coada asteapta sa fie trimis la o iesire pe care trebuie sa iasa mai multe pachete, celelalte pachete din comutare de pachete sunt blocate, chiar daca ar putea fi trimise. Se poate demonstra ca încarcarea maxima pe care switch-ul o suporta fara pierderi de pachete este de 68% .
Problema head of queue blocking se poate rezolva daca se foloseste un dispozitiv cu bufere pe iesire. În acest caz dispozitivul poate functiona cu o încarcare de 100% fara a pierde pachete. De asemenea, implementarea broadcast si multicast nu duce la pierderi de pachete sau fenomene head of queue blocking asa cum se întâmpla în cazul precedent. Pretul platit: se folosesc N bufere.
Pentru ca folosirea bufere pe iesire este costisitoare, dar si tehnologic greu de integrat, s-a încercat sa se gaseasca o arhitectura care sa combine cele doua tipuri de arhitecturi prezentate astfel încât sa se obtina un dispozitiv performant si ieftin.
O astfel de arhitectura des întâlnita foloseste o zona de memorie partajata accesibila tuturor porturilor, în care sunt pastrate pachetele pe perioada tranzitarii acestora prin dispozitiv. Pachetele se copiaza între porturi si memoria comuna prin intermediul unei magistrale. Avantajul acestei arhitecturi este acela ca este usor de implementat si are performante foarte bune pentru switch-uri mici (12 porturi de 10Mbps Ethernet). Totusi pentru switch-uri medii aceasta arhitectura ajunge foarte repede la limite impuse de tehnologia actuala (pentru un switch ATM 155Mbps cu 32 de porturi si o magistrala pe 16 biti ar trebui sa avem un clock pe magistrala de 310MHz).
Rutere
Rolul unui ruter este de a directiona pachetele între diversele retele pe care le interconecteaza. Principalele actiuni pe care le realizeaza ruterul în procesul de comutare a pachetelor sunt:
- examinarea pachetului si determinarea tipului acestuia precum si a adresei destinatie - determinarea adresei urmatorului ruter (sau host) catre care trebuie trimis pachetul prin examinarea tabelei de rutare - determinarea interfetei pe care urmeaza sa fie transmis pachetul - determinarea adresei de nivel doi a urmatorului ruter (sau host) - reîncapsularea pachetului cu informatiile de nivel doi necesare si transmiterea sa pe interfata determinata anterior
În afara de aceste operatii de baza, ruterul mai poate efectua si operatii de filtrare de pachete, translatare de adrese, implementarea de politici QoS, precum si operatii dependente de protocolul de nivel trei (pentru IP decrementarea TTL, fragmentarea pachetului daca este necesar). Vom prezenta în continuare o clasificare a ruterelor Cisco în functie de elementele principale ce definesc arhitecturile lor, precum si dupa scalabilitatea ce o ofera aceste arhitecturi. Diferentele între primul ruter Cisco, care era o simpla placa ce se insera într-o masina Sun, si ruterele bazate pe un procesor de uz general nu sunt semnificative, în vreme ce aparitia AGS+ marcheaza o schimbare importanta în modul de gândire a ruterelor, atât prin componentele incluse (ASIC-uri specializate pe switching) cât si prin modul lor de interconectare (magistrala, fabric switch-uri). Unele din conceptele acoperite de prezentarile de mai jos se regasesc acum si în solutiile oferite de alti producatori, dar urmatoarele sectiuni urmaresc evolutia arhitecturilor propuse de Cisco, mai ales datorita faptului ca o buna perioada de timp nu au existat alternative comparabile ca performanta pentru acestea.
Rutere cu memorie partajata
Primele generatii de rutere au avut la baza arhitectura unui calculator de uz general si foloseau pentru comutare de pachete arhitectura cu memorie partajata. Din aceasta cauza aceste tipuri de rutere au fost denumite rutere cu memorie partajata (shared memory routers) . Componentele principale ale unui ruter din prima generatie nu sunt spectaculoase: procesorul (în general un procesor embedded), memorie si interfete pentru diversele medii de transmisie suportate de ruter.
Rolul principal al procesorului este de a comuta pachetele. Tot procesorul are rolul de a construi tabelele de rutare si de a le mentine consistente atunci când se folosesc protocoale de rutare. De asemenea, procesorul asigura interfata cu utilizatorul pentru configurarea si examinarea comportarii ruterului. Sistemul de operare al ruterului realizeaza toate aceste operatii doar cu procesorul, inclusiv comutarea pachetelor, fara a utiliza ASIC-uri sau alt tip de hardware specializat. Din acest motiv se spune ca comutarea pachetelor se face prin software. Interfetele ruterului sunt elementele discrete ce asigura receptionarea si transmiterea pachetelor. Interfetele sunt de obicei controlere Ethernet, seriale, ATM, etc. integrate în arhitectura ruterului astfel încât sa receptioneze pachetele din mediu si sa le transfere în memorie, sau invers, sa transfere pachetele din memorie catre mediu. Interfetele pot comunica direct cu memoria prin intermediul magistralei astfel încât procesorul nu trebuie sa intervina în procesul de copiere a datelor între memorie si interfete. Memoria folosita de interfete este gestionata de catre sistemul de operare.
Exemple clasice de rutere din prima generatie sunt ruterele Cisco 1600 si 2500.
Rutere cu procesoare de comutare
Ruterele de tip shared memory au o serie de dezavantaje datorita faptului ca exista o singura unitate de prelucrare care realizeaza mai multe operatii în acelasi timp. Totodata raportul pret / performanta adica pret procesor/viteza de switching este destul de mare, si datorita faptului ca procesoarele folosite sunt procesoare de uz general - asta pentru ca ele nu trebuie sa faca numai switching de pachete, ci si alte operatii, dupa cum am vazut.
Pentru cresterea performantelor s-a încercat dezvoltarea unor altfel de arhitecturi în care procesul de switching sa se faca în hardware, si nu software. În aceste tipuri de arhitecturi exista doua tipuri de procesoare: un procesor de rutare (route processor) si un procesor de comutare (switch processor). Procesorul de comutare este un procesor specializat pe comutarea de pachete, astfel încât el va prelua aceasta sarcina, procesorul de rutare urmând sa ajute procesorul de comutare prin construirea unei tabele (cache de rute) usor de inspectat de procesorul de comutare. De fapt, procesorul de rutare este un procesor de uz general care, în afara de mentinerea cache-lui de rute, ruleaza procesele ce asigura interfata cu utilizatorul, procesele de mentinere a tabelei de rutare (protocoale de rutare) si celelalte operatii pe care ruterul este capabil sa le faca (filtrare de pachete, translatare de adresa, QoS, etc.).
Procesorul de comutare are asociata o memorie, pe care o vom denumi memorie locala. Cele doua procesoare pot accesa oricare dintre cele doua memorii, dar accesul de la procesorul de rutare la memoria locala cât si de la procesorul de comutare la memoria principala se face prin intermediul unei magistrale mai lente. Din acest motiv este de dorit ca procesorul de rutare sa acceseze în mod normal memoria principala iar procesorul de comutare memoria locala. La rândul lui, procesorul de comutare este conectat cu mai multe interfete prin intermediul unei magistrale rapide. Actiunile pe care le efectueaza procesorul de comutare sunt:
- alocare de bufere pentru pachete; în general schema de alocare este simpla pentru ca dimensiunea memoriei este fixa (neupgradabila) si cunoscuta la momentul înscrierii micro codului; - mentinerea cozilor de receptionare si transmitere a pachetului; - copierea pachetelor de pe magistrala rapida în memoria locala si invers; - examinarea cache-ului de rutare si plasarea pachetului în coada interfetei;
Daca pachetul este un pachet ce contine informatii de rutare (un pachet al unui protocol de rutare) sau este destinat ruterului acesta este trimis spre procesare procesorului de rutare prin intermediul magistralei mai lente.
Rutere cu procesoare multiple
Desi ruterele cu procesoare de comutare au ridicat performantele ruterelor destul de mult, pentru un ruter cu multe interfete ce suporta medii cu largimi de banda de ordinul sutelor de Mbps, un sigur procesor de comutare nu mai face fata. În plus, pentru ca procesorul de comutare sa tina pasul cu viteza interfetelor, el trebuia sa contina un numar mic de porti logice, datorita tehnologiei din perioada respectiva. De aici restrictii fata de flexibilitatea acestuia: nu poate sa comute pachete decât pentru un numar mic de protocoale (IP, IPX), filtrarea si translatarea de adrese era imposibil de facut direct de catre procesoarele de comutare, capacitatile de a manipula trafic QoS erau practic inexistente. Astfel încât, toate aceste operatii trebuia efectuate de procesorul de rutare. Odata cu cresterea de cerinte pentru QoS, filtrare si translatare de adrese, a fost evident ca arhitectura nu mai facea fata; chiar daca procesoarele de uz general au crescut în puterea de procesare, un singur procesor nu putea face fata. Proiectarea unor procesoare de comutare mai performante era o optiune, pentru ca tehnologia evoluase. Dar costurile erau prea mari, astfel încât solutia a fost folosirea unor sisteme cu mai multe procesoare de uz general deja proiectate, chiar daca performantele acestora putea fi surclasate de procesoare de comutare speciale.
Arhitectura ruterelor cu procesoare multiple a fost directionata catre o arhitectura paralela pentru a crea rutere scalabile. A fost introdus conceptul de distribuire a prelucrarii si în comutarea de pachete, conceptul de distributed switching luând locul procesorului de comutare. Arhitectura acestor rutere seamana foarte mult cu arhitectura calculatoarelor de uz general de tip multiprocesor. Pentru ca partea software nu este destul de matura, ruterele folosesc o abordare ASMP (ASymmetric Multi-Processing), în care exista un procesor principal care coordoneaza unul sau mai multe procesoare secundare. În implementarile initiale procesoarele (fie principale, fie secundare) realizau comutarea de pachete, fara ajutorul unui procesor de comutare. Motivul eliminarii procesorului de comutare a fost faptul ca procesoarele folosite erau destul de puternice pentru a face ca magistrala existenta (lenta) dintre un procesor de rutare si unul de comutare sa fie mult prea aglomerata. Aceasta arhitectura necesita construirea unui cache de rute special, care este mentinut de catre procesorul central atât în memoria asociata lui cât si în memoriile asociate procesoarelor secundare. Procesoarele secundare ruleaza o versiune speciala a sistemului de operare si executa urmatoarele operatii:
- alocarea de buffere pentru pachete; mecanismul de alocare este mai complicat decât în cazul procesoarele de comutare dar mult mai performant - mentinerea cozilor de transmisie si de receptie - copierea, daca este cazul, a pachetelor din memoria locala într-o memorie asociata altui procesor secundar prin intermediul magistralei - copierea, daca este cazul, a pachetelor din memoria locala în memoria asociata procesorului central prin intermediul magistralei - examinarea cache-ului de rute local si luarea deciziei: pachetul trebuie trimis printr-o interfata locala, printr-o interfata ce apartine de alt procesor secundar sau trebuie trimis procesorului central
Procesorul central are urmatoarele functii:
- mentine cache-ul de rute atât pentru el cât si pentru procesoarele secundare - prelucreaza pachetele din update-urile protocoalele de rutare - prelucreaza pachetele destinate ruterului
Datorita faptului ca procesoarele secundare sunt procesoare puternice facilitati de filtrare si QoS pot fi implementate distribuit.
Switch-uri
Componentele de baza ale unui switch nu sunt cu mult diferite fata de cele întâlnite într-un ruter: un procesor de uz general, memorie pentru cadre si o magistrala sau switch fabric prin care circula cadrele în procesul de comutare, strâns cuplata cu unul sau mai multe procesoare specializate care realizeaza comutarea pachetelor. Performanta switch-ului este data de largimea de banda a backplane-ului (fie el switch sau magistrala), memoria folosita pentru bufere, dar si arhitectura folosita.
În general switch-urile folosesc o arhitectura cu memorie partajata. Procesul de frame forwarding si address learning se realizeaza de catre ASIC-uri iar partea mai complexa - servicii SNMP, RMON, interfata cu utilizatorul - este realizata de catre un procesor de uz general. Backplane-ul are capacitati de ordinul Gbps sau chiar a zecilor de Gbps. În conditii normale (hardware-ul functioneaza corect, iar switch-ul este configurat bine) un switch modern nu pierde pachete decât eventual din cauza unor gâtuiri determinate de mediul de transmisie.
Pentru comutarea cadrelor switch-ul analizeaza cadrele primite si decide daca ele trebuie trimise, si daca da, pe ce port. Acest proces, desi aparent simplu, datorita unor facilitati pe care un switch modern trebuie sa le posede (VLAN-uri, mirroring, monitorizare), este destul de complex si nu poate fi realizat eficient decât cu procesoare specializate).
Informatiile folosite pentru comutarea pachetelor sunt tinute într-o tabela denumita Content Adressable Memory (CAM) care trebuie construita automat de catre switch în cadrul procesului de învatare a adreselor. Procesul este relativ simplu: dupa ce switch-ul efectueaza niste verificari de baza despre integritatea cadrului, se trece la cautarea în CAM a adresei, apoi daca cadrul trece de anumite verificari impuse de utilizator se scrie în tabela o noua intrare, se modifica una deja existenta sau nu se executa nici o actiune.
Cisco Catalyst 1900
Catalyst 1900 sunt switch-uri ce folosesc arhitectura ClearChannel, o arhitectura cu memorie partajata ce foloseste ca backplane o magistrala. Sunt suportate servicii ca SNMP, RMON, VLAN-uri si diverse moduri de frame switching: store&forward, cut-through (fast forward si fragment free).
Este folosita o magistrala pe 53 de biti la 20MHz (XBus), arbitrata de un scheduler bazat pe prioritati si timpul de sosire al cererii. Capacitatea backplane-ului este deci de 1Gpbs.
Forward engine-ul este implementat într-un ASIC si se ocupa de:
- examinarea cadrelor - cautarea adreselor destinatie în CAM - procesarea tag-urilor de VLAN - colectarea de informatii pentru statistica - mentinerea CAM
Pachetele receptionate de catre switch sunt tinute în buffere alocate din memoria comuna (3 MB DRAM). Fiecare port are asociate cozi logice de intrare si iesire, în care se tin pointeri la buffere. Un cadru odata copiat (de la controlerul Ethernet de pe un port) în memorie nu mai este mutat în memorie. Memoria se elibereaza atunci când cadrul este transmis. Pentru broadcast sau multicast pachetul nu este duplicat în memorie ci se leaga buferul pachetului la mai multe cozi de iesire a interfetelor. Embedded Control Unit-ul (ECU) este format dintr-un procesor 486DX, 512KB DRAM folositi de procesor si 1 MB flash pentru firmware si configuratie. La ECU ajung pachetele de broadcast, cele destinate switch-ului si alte pachete ale protocoalelor folosite de swich-uri (CDP2, STP3) si sunt procesate de catre acesta. ECU ruleaza serverul de SNMP, RMON, telnet pentru configurare si management in-band. De asemenea gestioneaza traficul out-band - configurarea switch-ului pe portul de consola. Tot ECU controleaza led-urile si butoanele de pe panoul switch-ului si testeaza switch-ul la bootare.
Cisco Catalyst 2900XL
Switch-urile Catalyst 2900 sunt switch-uri ce folosesc o arhitectura cu memorie partajata, dar spre deosebire de Catalyst 1900, accesul între memoria partajata si interfete se face cu un switch fabric. În plus, comutarea pachetelor se face distribuit. Arhitectura este formata dintr-un switch fabric cu o largime de banda de 3.2Gbps si un ansamblu de ASIC-uri care controleaza transferul între switch fabric si sateliti si asigura alocarea de bufere pentru frame-uri în memoria partajata. Canalul de transmisie între switch fabric si sateliti este bidirectional, cu o capacitate de 200 Mbps în fiecare sens - comunicatie cu 2 canale înspre switch fabric si 2 canale dinspre switch fabric. Atunci când un cadru ajunge într-unul din sateliti acesta îl trimite prin switch fabric în memoria partajata. La fel, când un frame trebuie transmis de catre un satelit acesta îl ia din memoria partajata prin switch fabric. Prin switch fabric nu circula cadre, ci celule de dimensiune fixa. Satelitii sunt responsabili de fragmentarea cadrelor în celule la trimitere si asamblarea celulelor în cadre la primire.
Comutarea cadrelor se realizeaza de catre sateliti, care pentru acest scop tin copii ale CAM într-o tabela locala. Tot satelitii fac si învatare de adrese. Daca tabela de adrese este modificata în urma receptionarii unui cadru de catre unul din sateliti, acesta foloseste inelul de notificare pentru a anunta toti ceilalti sateliti. Satelitii pot fi de trei tipuri: supervizor, retea si special.
Satelitii de retea pot fi direct conectati pe placa de baza sau pot fi prezenti într-un modul optional. Fiecare suporta pâna la 8 porturi 10/100 Mbps, fiecare port având câte un canal de comunicatie cu switch fabric-ul.
Satelitii speciali sunt folositi pentru VLAN tagging, criptarea frame-urilor si alte servicii speciale. Acesti sateliti pot fi conectati pe placa de baza sau într-un modul optional.
Satelitul supervizor este format dintr-un procesor, o memorie flash, o interfata de satelit si o interfata de sistem. Procesorul (PowerPC) se ocupa de partea de network management (SNMP, RMON), interfata cu utilizatorul out-band (prin portul de consola) si in-band (server de telnet si/sau web), testarea si initializarea componentelor switch-ului. În memoria flash se tin sistemul de operare si informatii despre configuratia switch-ului. Interfata de satelit asigura conectivitatea cu switch fabric-ul si satelitii adiacenti. Prin interfata sistem sunt controlate ledurile, sursa de alimentare si portul de consola.
Inelul de notificare interconecteaza toti satelitii printr-un inel unidirectional de 8 biti cu o largime de banda de 800 Mbps. Canalele radiante sunt folosite numai pentru transfer de frame-uri între sateliti si memoria partajata. Pe acest inel circula frame-uri de notificare: update în tabela de adrese, notificare catre un satelit ca un frame din memoria partajata trebuie transmis de catre acesta, etc. Protocolul folosit în acest inel este de tip Token Ring.
Memoria partajata (4MB DRAM în configuratia standard) este folosita pentru a tine frame-urile primite de la sateliti. Gestiunea memoriei partajate este facuta de catre ASIC-uri ce mentin cozi (logice) de output pe fiecare port. Cadrele de broadcast si multicast nu sunt copiate în memorie, ci exista mai multe referinte la acelasi bufer din mai multe cozi.
|
|