Mihai Sprinceana
Un forum de programare cu de toate. Va astept sa va inscrieti si sa deveniti moderatori. Oricine este binevenit aici sa se inscrie si sa aiba acces la informatie free! Fiecare este liber sa adauge proiecte programe free etc. Ajutati acest forum sa devina o comunitate puternica unde fiecare invata de la fiecare! Tot ce trebuie sa faceti este sa va inregistrati si fiecare contributie se poate dovedi utila in timp! Forumul este free informatia free dk aveti timp liber ajutati si pe ceilalti si invatati si voi in acelasi timp! Haideti sa facem ceva pt.a ne ajuta intre noi! Cititi regulament postare forum inainte de a posta!
Lista Forumurilor Pe Tematici
Mihai Sprinceana | Inregistrare | Login

POZE MIHAI SPRINCEANA

Nu sunteti logat.
Nou pe simpatie:
Manuela25
Femeie
25 ani
Bucuresti
cauta Barbat
25 - 62 ani
Mihai Sprinceana / Retele / Arhitectura dispozitivelor de retea Moderat de Houssey, andreeamp, costin1920, fireratbat, ozzywz4rd, profu.info, sade5000
Autor
Mesaj Pagini: 1
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.


pus acum 17 ani
   
Pagini: 1  

Mergi la