Documente Academic
Documente Profesional
Documente Cultură
Cauze
Copierea
Protecia, structura
Comutarea
contextului
Planificarea complex
Apelurile de sistem
Protecia, structura
Contoarele de timp
Demultiplexarea
Sumele de control/
CRC-uri
Codul protocolului
Exemple de soluii
Copierea mai multor blocuri
de date fr intervenia
sistemului de operare(ex.
RDMA)
Implemenetarea protocoalelor
la nivelul utilizatorului
Servere Web comandate de
evenimente
Canale directe de la aplicaii
spre drivere (ex. VIA)
Scalarea la numarul
contoarelor
Scalarea la numrul de
noduri terminale
Generalitatea
Scalarea la viteza legturilor
Generalitatea
Cauze
Exemple de soluii
Dispersarea paralel/hashing
Cutri de
prefix
Clasificarea
pachetelor
Algoritmi cu arbori de
decizie
Paralelism hardware
(CAM-uri)
Comutare
Comutator crossbar
Cozi de ieire virtuale
Diferenierea serviciilor
Scalarea la viteza legturii
Scalarea la dimensiunea memoriei
FQ ponderat
Servire carusel cu deficit
(Deficit round robin)
DiffServ,Nucleu fr stri
(Core Stateless)
Tratarea
corect a
cozilor
FQ (fair
queueing)
Limea de
band
intern
Msurarea
Securitatea
AIM://depire # * # ! * # ...... *
FIGURA 1.3 Gsirea unui pachet duntor, observand frecventa caracterelor nelistabile
Tabloul
Prag
Tabloul
Contor
2%
1%
Cod duntor
AIM://depire # * # ! * # ...... *
Incrementeaz
255
FIGURA 1.4 Soluia strawman pentru detectarea unui pachet duntor: se contorizeaz
fiecare caracter ntr-un tablou contor i apoi n pasul final se compar valorile cu cele din
tabloul de praguri
Tabloul
Prag
Tabloul
Contor
2%
1%
2) Citire
Cod duntor
AIM://depasire
# * # ! * # ...... *
1) Incrementeaz
3) Dac C[i]/T[i] > Max, Max = C[i]/T[i]
255
FIGURA 1.5 Evitarea buclei finale prin tabloul cu praguri, urmrind doar Max, cel mai
mare contor relativ la valoarea de prag, ntlnit pn acum.
2%
1%
Cod duntor
AIM://supraincarcare # * # ! * # ...... *
255
FIGURA 1.6 Folosirea unui cuvnt lung i un tablou compus pentru a combina 2 citiri
ntr-una
banal prin hardware, prin cablarea adecvat a firelor ntre registre, sau
prin folosirea multiplexoarelor.
1.2.5 tergerea
Dei bucla terminal a fost eliminat, nu a fost rezolvat problema
delicat a buclei de iniializare. Pentru a trata aceast problem, chip-ul are
la dispoziie un timp de iniializare, dupa analiza URL-lui pachetului
curent i nainte de tratarea URL-lui urmtorului pachet.
Din pcate, dimensiunea minim a pachetelor poate fi mic, de pn la
50 bytes, inclusiv antetul HTTP. Presupunnd c sunt 40 bytes non-URL
i 10 bytes URL, iniializarea unei zone de 256 de bytes nu poate fi
fcut fr un cost suplimentar de 256/40 =6 operaii per byte, necesare
prelucrrii unui URL. Ca i la bucla de procesare a URL-lui, fiecare
iniializare presupune o citire i o scriere a zonei comasate.
O metod este amnarea lucrului pn nu e absolut necesar, n sperana
c nu va mai fi necesar. De fapt, chip-ul nu trebuie s iniializeze C [i ]
pn cnd caracterul i e accesat prima dat n pachetul urmtor. Dar cum
poate s tie chip-ul c acceseaz caracterul i pentru prima dat? Pentru a
implementa evaluarea relaxat, fiecare cuvnt de memorie, reprezentnd o
intrare n zona comasat, trebuie extins pentru a include G [i ] , numrul
generaiei. Acest numr de generaie, pe 3 bii, poate fi vzut ca un contor,
care numar de cte ori e ntlnit pachetul, cu excepia faptului c e limitat
la trei bii. Astfel, chip-ul are un registru suplimentar g pentru fiecare i, pe
lng G [i ] , cu 3 bii; registrul g este incrementat modulo 8 la fiecare
pachet intlnit.
bytes non-URL pentru cele opt pachete, ceea ce este suficient pentru a
iniializa o zon de 256 de elemente, utiliznd o citire i o scriere per octet
indiferent de tipul de octet, URL sau non-URL. Se poate ctiga mai mult
ntrziere dac este nevoie, crescand numrul de bii ai numrului
generaiei, cu preul unei uoare creteri a necesarului de memorare a
zonei.
Fig 1.7 Soluia finala cu numere de generaie pentru rafinarea buclei de iniializare
Motiv
Subiecte simple
Inelegerea modelelor
Tehnologii de memorii :ntreesere,
simple de sisteme de
combinare SRAM/DRAM
operare,hardware,reele
Strategii
Inelegerea principiilor
Pasarea indicaiilor, evaluarea
sistemelor pentru evitarea
relaxat, suplimentarea strilor,
strangulrilor
exploatarea localizrii
Probleme
Practic aplicarea
Proiectarea unui motor de
principiilor la probleme
verificare(lookup) pentru monitorul
simple
reelei
Fig.1.8 Algoritmica de reea (cu modele, strategii i probleme simple).
Frecventa estimata [i ]
Chip-ul ar trebui s semnalizeze dac rezultatul final depete un
anumit prag (ca exemplu, o valoare de 14,2 semnific c sunt 1,4% anse
ca diferena s se datoreze unor variaii aleatoare). Gsii o cale de
implementare eficient a acestei metode, presupunnd c lungimea este
cunoscut doar la sfrit.
13
CAPITOLUL 2
MODELE DE IMPLEMENTARE A RETELELOR
Pentru a mbunti performanele nodurilor terminale i a
ruterelor, un implementator trebuie s cunoasc regulile jocului. O
dificultate central este aceea c algoritmii de reea cuprind patru domenii
diferite: protoacoale, arhitecturi hardware, siteme de operare i algoritmi.
Inovaiile n domeniul reelelor apar cnd experii din diferitele domenii
conlucreaz pentru a obine soluii sinergice. Poate oare un proiectant
hardware s neleag problemele legate de protocoale, iar un proiectant de
algoritmi s neleag problemele hardware, fr un studiu temeinic?
Se ncepe cu modele simple, capabile s explice i s anticipeze, fr
detalii inutile. Modelul ar trebui s ofere posibilitatea ca o persoan
creativ din afara unui domeniu s poat crea proiecte, ce pot fi verificate
de un expert din interiorul domeniului. De exemplu, un proiectant
hardware de chip-uri ar trebui s fie capabil s sugereze schimbri de
software n driver-ul chip-lui, iar un teoretician din domeniul
calculatoarelor ar trebui s fie n stare s viseze la algoritmi de asociere
pentru switch-uri.
2.1 Protocoale
Seciunea 2.1.1 descrie protocolul de transport TCP i protocolul de
rutare IP. Aceste dou exemple sunt utilizate pentru a asigura un model
abstract de protocol i funciile acestuia din &2.1.2. Seciunea 2.1.3 se
ncheie cu ipoteze asupra performanelor reelelor. Cititorii familiarizai cu
TCP/IP ar putea dori s sar peste &2.1.2.
2.1.1 Protocoale de transport i dirijare
Aplicaiile se bazeaz pe o transmitere fiabil, sarcin ce revine
protocolului de transport, aa cum este protocolul TCP (Transport Control
Protocol). Sarcina protocolului TCP este de a asigura transmiterea i
recepionarea aplicaiilor, ca i cum ar fi dou cozi de ateptare separate,
una n fiecare direcie, chiar dac emitorul i receptorul sunt separate de
o reea cu pierderi. Aadar, orice ar scrie aplicaia emitoare n coada sa
de ateptare local TCP, ar trebui s apar, n aceeai ordine, n coada de
ateptare local TCP a receptorului i viceversa. Protocolul TCP
implementeaz acest mecanism prin fragmentarea cozii de ateptare a
datelor aplicaiei n segmente i transmiterea fiecrui segment pn cnd sa recepionat confirmarea.
Dac aplicaia este, de exemplu, o videoconferin care nu necesit
neaprat o garanie a fiabilitii, se poate alege protocolul denumit UDP
(User Datagram Protocol) n locul TCP-lui. Spre deosebire de TCP, UDP
nu necesit ateptarea unor confirmri sau retransmisii deoarece nu
garanteaz transmisia fiabil.
Protocoalele de transport cum sunt TCP i UDP lucreaz prin
transmiterea unui segment de la un nod emitor la un nod receptor prin
intermediul internetului. Sarcina actual de transmitere a unui segment
revenind protocolului internet de rutare IP.
14
Figura 2.2 Funcii comune ale protocolului, folosind tabela de stri (negrit)
( )
care pare c iau O (1) timp. Chiar i acest nivel de proiectare este util dei
s-ar putea i mai bine.
19
Un alt model mai economic din punct de vedere al suprafeei este bazat
pe observaia c fiecare bit de ieire O ( j ) necesit poarta SI component
a primilor j 1 bii de intrare. In consecin definim rezultatele pariale
20
S0 i S1 , pornind de la trei
22
cantitate mai mic de memorie, accesat aleator. Astfel este bine s avem
modelele simple pentru memorii cu diferite tehnologii.
REGISTRE
Un bistabil (flip-flop) conecteaz dou sau mai multe tranzistoare ntr-o
bucl, astfel nct (n absena cderilor tensiunii) cifra binar s stea nedefinit
de mult timp pe ieire fr s se modifice valoarea tensiunii. Un registru este o
colecie ordonat de bistabile. Cele mai moderne procesoare au registre pe
chip de 32 sau 64 bii. Un registru pe 32 bii conine 32 de bistabile,
fiecare pentru a memora 1 bit. Accesul de la logic la un registru, pe
acelai chip, este extrem de rapid, n jur de 0.5-1 nsec.
SRAM
O memorie static cu acces aleator (SRAM) conine N registre adresate cu o
adres A, pe log N bii. SRAM este numit astfel deoarece remprosptarea
bistabilelor este de tipul static. n afar de bistabile, SRAM are nevoie i de un
decodor care decodeaz A, ntr-o valoare unar, folosit pentru accesarea
registrului potrivit. Accesarea unui SRAM pe-chip este doar puin mai lent dect
accesarea unui registru, din cauza ntrzierii introduse de decodare. n momentul
actual, este posibil s se obin SRAM pe chip cu timp de acces de 0.5 nsec. Timpi de
acces de 1-2 nsec pentru SRAM pe-chip i 5-10 nsec pentru SRAM care nu este pe chip,
se ntlnesc n mod uzual.
DRAM
O celul binar SRAM necesit cel puin cinci tranzistoare. Astfel
SRAM este ntotdeauna mai puin dens sau mai scump dect tehnologia
de memorie bazat
FIGURA 2.4: Proiectul Tiny Tera PPE folosete codor de prioritate 1, pentru a gsi
setul cel mai mare de bii, dac exist, a tuturor biilor mai mari dect P folosind o masc
de codare a lui P. Dac nu e gsit nici un bit, e validat ieirea codorului 2 de prioritate
(poarta SI de jos). Rezultatele celor dou codoare sunt apoi combinate cu o poart SAU
cu N intrri.
FIGURA 2.5: Memoriile mai mari sunt organizate pe dou dimensiuni n rnduri i
coloane. Selectarea unui cuvnt const n selectarea mai inti a rndului i apoi a coloanei
din acel rnd.
Figura 2.5 arat c cele mai multe memorii sunt organizate intern pe
dou dimensiuni, n rnduri i coloane. Cifrele binare de adres de sus sunt
decodificate pentru a selecta rndul, i dup aceea cifrele binare de adres
de jos sunt folosite pentru a decodifica coloana. Utilizatorul furnizeaz
mai nti biii de adres a rndului i activeaz un semnal numit RAS(Row
Address Strobe); apoi utilizatorul furnizeaz biii de adres ai coloanei i
activeaz un semnal numit CAS(Column Address Strobe). Dupa un timp
specificat, cuvntul dorit din memorie poate fi citit. Presupunnd rnduri i
coloane egale, se reduce complexitatea porii de decodare de la O ( N ) la
O ( ( N ) ) cu preul creterii ntrzierii cu timpul necesar pentru nc o
decodare. In afar de timpul de ntrziere necesar, dintre RAS i CAS, mai
este de asemenea necesar i o ntrziere de prencrcare ntre invocri
succesive ale lui RAS i CAS, timp ce permite ncrcarea
condensatoarelor.Cele mai rapide chip-uri DRAM au nevoie n jur de 40-60 nsec
(latena) pentru acces, cu timpi mai lungi ca de exemplu 100 nsec, ntre citiri
succesive (consum) din cauza restriciilor de prencrcare. Acesta laten include
timpul necesar pentru a adresa liniile externe de interfa la pinii memoriei DRAM;
inovaiile recente permit realizarea de DRAM pe chip, cu timpi de acces mai mici,
n jur de 30 nsec. DRAM va fi ntotdeauna mai dens dar mai lent dect SRAM..
Page-Mode DRAM
Unul din motivele nelegerii DRAM este nelegerea artificiului
utilizat pentru accelerarea timpului de acces, numit page mode/modul
pagin. Acest mod de acces este benefic pentru a accesa structuri de date
care au o localizare spaial, n care cuvintele de memorie adiacente sunt
24
accesate succesiv. Dar accesnd un rnd (fig. 2.5), se pot accesa cuvinte
din rnd, fr ntrzieri suplimentare de RAS i prencrcare. RAMurile
video exploateaz aceast structur avnd o citire de rnd ntr-un SRAM,
care poate fi citit serial, pentru a remprospta un ecran (display) la viteze
nalte. In afara de page mode i video RAM, mai sunt i alte idei care
exploateaz structura DRAM, care pot fi folositoare n reele.
Multe chip-uri de DRAM au avantajul c adresele de linii i coloane nu sunt cerute n
acelai timp astfel ca pot fi multiplezate pe aceeai pini, reducnd necesarul de pini per
chip.
FIGURA 2.6: Ideea RAMBUS, SDRAM, etc., este crearea unui singur chip cu
DRAM multiple paralele, ctignd astfel lime de band de memorie i folosind doar
un set de linii de adrese i de date.
25
26
FIGURA 2.7: Gsirea identitii fluxului, cu un chip de cutare pipeline, care lucreaz la gsirea a
pn la 16 ID-uri de fluxuri n acelai timp, fiecare din ele accesnd un banc DRAM independent. Chipul de cutare returneaz un index procesorului de reea care actualizeaz numrtorul ID a fluxului.
Dar, un arbore binar cu 16 nivele permite doar 216 = 64 K ID-uri de flux, prea
puin. Din fericire RAMBUS permite o variant de page mode, unde 8 cuvinte de
32 bii pot fi accesate aproape n acelai timp ca 1 cuvnt. Astfel putem gsi dou
chei de 96 bii i 3 pointeri de 20 bii ntr-un acces la memorie de 256 bii. Se
poate deci folosi un arbore cu branament de 3, care permite potenial 316 sau 43
milioane de ID-uri de fluxuri.
2.2.5 Tehnici de proiectare a subsistemelor de memorii
Problema gsirii ID-urilor fluxurilor de date ilustreaz 3 tehnici majore folosite
de obicei n proiectarea subsistemului memoriei pentru chip-urile de reea.
Intreeserea memoriilor i tehnica pipeline: Tehnici similare sunt folosite
n cutarea IP-urilor i algoritmilor de planificare care implementeaz QOS.
Bancurile multiple pot fi implementate folosind cteva memorii externe, o
singur memorie extern ca RAMBUS, sau un SRAM pe chip care contine i
logica de procesare.
Procesarea paralel a cuvintelor lungi: Multe modele de reea, ca schema
vectorilor binari de la Lucent, folosesc cuvinte de memorie lungi care pot fi procesate n
paralel. Aceasta poate fi implementat cu DRAM si folosind page-mode-ul, sau cu SRAM
i fcnd fiecare cuvnt de memorie mai mare.
Combinarea DRAM i SRAM: Tinnd cont de faptul c SRAM este scump i
rapid iar DRAM este ieftin i lent, este de aeptat o combinaie a acestora. Folosirea SRAM
ca i cache pentru bazele de date DRAM este clasic, dar sunt multe aplicaii creative a
memoriei ierarhizate. In exerciii e analizat efectul unui SRAM mic n proiectarea unui chip
cutator de ID. O aplicae mai neobinuit a acestei tehnici de implementare a unui numr
mare de numrtoare, este stocarea n SRAM a biilor de rang inferior.
E mai important ca tnarul proiectant s neleag aceste tehnici de proiectare (dect s
stie detalii de implementare a memoriilor) ca s produc implementri hardware creative a
funciilor de reea.
2.2.6 Proiectarea la nivel de componente
Metodele din ultimele dou seciuni pot fi folosite pentru a realiza o
main de stri/state machine care implementeaz o prelucrare oarecare.
O main cu stri are starea curent stocat n memorie; maina
proceseaz datele de intrare folosind logica combinaional, citete starea
curent i eventual memoreaz starea. Un exemplu de main complex cu
stri este procesorul Pentium, a crui stare curent este o combinaie de
27
28
29
Memorie
MMU, Cache
Magistral sistem
Adaptor magistral
Interfa reea
Magistral I/E
Figura 2.8: Arhitectura unei staii de lucru
Comutator programabil
paralel
Procesor
Memorie 1
Plac de reea
Memorie 2
Figura 2.9. Folosirea conexiunilor paralele ntr-un nod terminal pentru a permite
procesarea concurent i trafic de reea printr-un comutator paralel.
Ruter
B2
Legturi
de ieire
Comutare
B3
Legtura de
intrare i
Planificare
B1
Cutare adres
Figura 2.10 Model de ruter cu cele 3 congestii principale in calea de inaintare:
cutarea adresei (B1), comutarea (B2) i planificarea ieirii (B3).
32
33
34
Procesarea protocolului
Toate ruterele din ziua de azi trebuie s implementeze protocolul SNMP
(Simple Network Management Protocol) i s furnizeze un set de contoare
care s poat fi verificate de la distan. Pentru a permite comunicarea la
distan cu ruterele, majoritatea ruterelor implementeaz i protocoalele
TCP i UDP. Pe lng acestea ele mai trebuie s implementeze protocolul
ICMP (Internet Control Message Protocol) care este de fapt un protocol de
transmisie a mesajelor de eroare, precum depirea timpului de viata
TTL.
Fragmentarea, redirecionarile i ARP
Este clar c procesarea rutei i a protocolului este ndeplinit cel mai
bine de un procesor de rutare pe o aa numit cale nceat, dar sunt
cateva funcii mai ambigue ale ruterului. De exemplu dac un pachet de
4000 octei trebuie transmis pe o legtur cu o limit maxim a pachetelor
MTU (Maximum Transfer Unit) de 1500 octei, pachetul va trebui s fie
fragmentat in doua. Desi aceasta fragmentare este in general facuta de
sursa, multe rutere fac acest lucru in calea rapida. O alt funcie este cea de
trimiteri de Redirecionri. Dac un nod terminal trimite un mesaj spre un
ruter greit, atunci ruterul trebuie s trimit napoi o redirecionare
sprenodul terminal. O a treia funcie de acest fel este transmiterea cererilor
de identificare a adresei ARP (Adress Resolution Protocol). Ruterele din
ziua de azi mai au i alte funcii care trebuie rezolvate. Multe rutere din
ntreprinderi manevreaz pachetele pe baza coninutului, astfel c
procesarea de pachet se face n funcie de irurile de caractere din pachet.
De exemplu ruterele care primesc traficul Web pentru mai multe servere ar
putea sa doreasca sa transmita pachetele cu acelasi URL aceluiasi server
Web. In plus, mai exist i funciile de msurarea i contorizare a
traficului.
Exemplul 7: Procesoare de reea: sunt procesoare programabile de uz
general, optimizate pentru traficul de reea. Crearea lor a fost justificata de
caracterul impredictibil al naturii sarcinilor ruterelor (ca livrarea pe baza
continutului), ceea ce ar face riscanta crearea unor rutere implementate
exclusiv hardware. Procesorul de reea Intel IXP1200 conine ase
procesoare interne, fiecare rulnd cu 177MHz, i avnd un ciclu de tact de
5.6ns. Fiecare procesor recepioneaz pachete de la o coad de intrare
(pachetele sunt stocate ntr-o memorie DRAM mare). Dup ce procesorul
a identificat legtura de ieire, pachetul este pus n coada de ieire cu o
etichet ce specific legtura de ieire spre care trebuie dirijat.
Problema principal este c procesoarele sunt responsabile de transferul
pachetelor n/din memoria DRAM. La IPX1200 mutarea a 32 de octei din
coad spre DRAM necesit 45 tacte i 55 de tacte pentru mutarea din
DRAM n coad. Deoarece dimensiunea minim a unui pachet este de 40
octei sunt necesare 200 cicluri de tact = 1.12 s, ceea ce se traduce ntr-o
rat de rutare de numai 900K pachete/s. Acest neajuns se nltura folosind
6 astfel de procesoare paralele i o idee numit multithreading/fire de
35
36
37
Figura 2.12 Procesul de primire a pachetelor de pe internet este impartit intre adaptorul
de retea, nucleu si procesul destinatie
39
Figura 2.13 Programatorul are iluzia unei memorii virtuale continue; in realitate este
asociata din parti ale memoriei principale si pagini de pe discul de memorie, folosind
tabele de pagini
41
Figura 2.14 Programatorul vede dispozitivele, ca discul sau adaptorul de retea, ca piese
disparate ale memoriei, care pot fi citite/scrise utilizand apelul de sistem, dar de fapt
nucleul administreaza o gazda cu detalii specifice dispozitivului.
daca despre aceleasi concepte. Stabilirea unui limbaj comun dureaza luni
de zile o tehnica pentru a face oamenii sa-si depaseasca limitele
gandirii ar fi : se da o problema, de procesare a semnalelor lingvistilor, si
vice versa, fiind lasati sa aplice cunostintele cu care sunt familiarizati unei
probleme complet diferite. Abordarea rezultata este in majoritatea
cazurilor una complet noua, la care expertii in domeniul original nici nu sar fi gandit. Munca in echipa da creativitatii o noua dimensiune.
2.6. Exercitii
1. Protocoalele TCP si atacuri de tip refuz de serviciu DOS (DenialOf-Service Attacks ). De obicei, un hacker incearca sa atace un serviciu
cunoscut, precum Yahoo, printr-un atac de tip DOS. Un atac DOS simplu
este cel de tip TCP Syn-flooding, in care hacker-ul trimite cateva pachete
SYN catre destinatia aleasa D (ex. Yahoo), folosind adrese sursa alese la
intamplare. D trimite inapoi un SYN-ACK catre presupusa sursa S si
asteapta raspunsul de la S. Daca S nu este o adresa IP activa, atunci nu va
primi un raspuns de la S. Din pacate, starea lui S este mentinuta in coada
de asteptare a conexiunilor lui D, pana la expirarea sa. Trimitand periodic
incercari false de conectare, pretinzand ca sunt de la surse diferite,
atacatorul se poate asigura ca la D, coada de asteptare finita va fi
intodeauna plina. Prin urmare, o cerere legitima de conectare spre D va fi
refuzata.
Presupunand ca exista un monitor care supravegheaza tot traficul, ce
algoritm poate fi folosit pentru a detecta atacurile de tip DOS ?
Presupunem ca programul monitor realizeaza ca are loc un atac prin
inundare TCP. De ce e greu sa deosebseti traficul legitim de cel prin
inundare?
2. Proiectarea numerica: Multiplexoarele si Barrel Shifters (*) sunt
foarte folositoare in partea hardware a retelei, deci lucrul la aceasta
problema poate ajuta chiar si un softist sa construiasca un hardware in mod
intuitiv.
(*) Barrel shifter este un dispozitiv hardware care poate depasa sau roti un cuvant de
date cu oricate pozitii intr-o singura operatie. E implementat ca un multiplexor, fiecare
iesire iesire putand fi conectata cu fiecare intrare
Figura 2.15 Un exemplu de insiruire in cinci poze care se citesc de la stanga la dreapta
si apoi de sus in jos. In fiecare poza indexul reprezinta adancimea a subarborelui si
pozitia este numarul nodului asa ca valoarea este adaugata lui.
47
CAPITOLUL 3
PRINCIPII DE IMPLEMENTARE
I- Principiile sistemelor
II- Cresterea eficientei, cu mentinerea modularitatii
III-Accelerarea
3.1. Motivarea folosirii principiilor
Actualizarea memoriilor ternare cu continut adresabil
Numim un sir ternar daca contine oricare din caracterele: 0, 1 sau *,
unde * denota un wildcard care se potriveste si cu un 0 si cu un 1.
Exemple de siruri ternare de lungime 3 sunt: S1=01* si S2=*1*; de fapt,
sirul binar 011 se potriveste si cu S1 si cu S2, in timp ce 111 se potriveste
doar cu S2.
Numar
P1
P2
P2a
P2b
P2c
P3
P3a
P3b
P3c
P4
P4a
P4b
P4c
Principiu
Folosit in
Interfete Zero-copy
Canale cu aplicatie pe dispozitiv
Copiere pentru scriere
Procesarea integrata in niveluri
Compromis precizie/timp
Schimbarea calcului in spatiu
Egalizarea componentelor sistemului
Exploatarea localizarii
Compromis memorie - viteza
Exploatarea hardware-ului existent
Suplimentare hardware
Folosirea metodei de intretesere si
Citire IP pipelined
pipeline in memorie
Folosirea paralelismului extins
Comutare cu memorie
P5b
Combinarea eficace DRAM si
partajata
P5c
SRAM
Mentinerea contoarelor
Fig. 3.1 Sumarul principiilor 1-5 Gandirea/conceptia sistemului
P5
P5a
48
Numar
P6
P7
P8
P9
Principiu
Exemple de procese in retele
Creare de rutine speciale eficiente
Control UDP
Evitarea generalitatilor inutile
Fbufs
Fii flexibil in implementare
Upcalls
Paseaza indicatii interfetelor dintre
Filtre de pachet
niveluri
Paseaza indicatii antetelor protocolului
Comutarea etichetelor
P10
Fig. 3.2 Sumarul principiilor 6-10 Refacerea eficientei pastrand modularitatea
Numar
P11
P11a
P12
P12a
P13
P14
P15
Principiu
Exemple de procese in retele
Optimizarea cazului probabil
Predictia antetului
Folosirea memoriilor Cache
Buffere rapide Fbufs
Suplimentarea starilor pentru a creste
Lista de circuite virtualeVC active
viteza
Calcul incremental
Recalcularea CRC- urilor
Optimizarea gradelor libertatii
Tentativa de cautare IP
Folosirea sortarii bucket, a bitmapSincronizare
urilor
Crearea de structuri de date eficiente
Comutarea de nivel 4
Fig. 3.3 Sumarul principiilor 11-15 accelerarea rutinelor cheie
Prefix
Liber
010001*
110001*
110*
111*
Pasul
urmator
Liber
P5
P5
P3
P2
00*
01*
10*
0*
P1
P3
P4
P4
110001
P1
P2
P3
P4
P5
Ruter
Fig. 3.4. Exemplu utilizarii unei CAM ternare pentru cautari de prefixe
Spatiu liber
Y
Prefixe de lungime (i+1)
Crearea unui gol aici
prin mutarea lui X in
pozitia lui Y
X
Prefixe de lungime i
Fig. 3.5 Cautarea unui loc pentru noul prefix mutand X in pozitia lui Y , ne cere repetat
sa gasim un loc pentru a-l muta pe Y.
50
51
52
Pachetul P
soseste pe
fluxul F
Forward P
Test rapid
probabilistic
de suspiciune
Adauga
copia lui P in
antet
Tabel de
suspiciune
ir cu
ultimele
N
pachete
F
Raport catre
manager periodic
sau dupa detectia
unui flux suspect
Memoria
judiciara
Fig. 3.6 Pastrarea unui sir cu ultimele 100000 de pachete care contine informatii
judiciare despre fluxurile suspecte care fusesera trimise in trecut.
inlaturarea lui din sir. Dar acesti doi pasi pentru procesarea pachetului sunt
ceruti si in cazul abordarii didactice; pe de alta parte, schema eleganta cere
sa nu facem dispersarea si sa utilizam un minim de memorie(fara pointeri
intre 100000 pachete).
Test rapid probabilistic de suspiciune
Pachetul P
soseste pe
fluxul F
Forward P
Adauga o copie a lui
P in cap
Sirul
ultimelor N
pachete
Tabel de
suspiciune
Q
Raport catre
manager periodic
sau dupa detectia
unui flux suspect
Memoria
Judiciara
Daca pachetul Q
al fluxului F este declarat
suspect in Tabelul de
suspiciune, adauga Q
Fig. 3.6 Pastrarea unui sir cu ultimele 100000 de pachete care contine informatii
judiciare despre fluxurile suspecte care fusesera trimise in trecut.
(proprietate P)
(proprietate Q)
Subsistem 2
Subsistem 2
Specificaii S
Specificaii W
mai slabe
Subsistem 1
Subsistem 1
Fig. 3.7 Pastrarea unui sir cu ultimele 100000 de pachete care contine informatii
judiciare despre fluxurile suspecte care fusesera trimise in trecut.
59
60
P4c) unde se calculeaza incremental noua tabela de indecsi din cea veche,
si nu se folosesc inmultiri pentru calculul valorii absolute a indecsilor. In
retele, un exemplu de calcul incremental este calculul sumelor ciclice de
control IP, unde se modifica doar o mica parte din campurile pachetelor.
P13. Optimizarea gradelor de libertate
E utila la determinarea caror variabile se afla sub control si a celor care
le controleaza, precum si la determinarea criteriilor de obtinere a unei bune
performante. Apoi se trece la optimizarea acestor variabile pentru
maximizarea performantei. De exemplu clientii sunt inscrisi in tabele de
asteptare pe masura ce apar locuri libere, dar optimizarea asteptarii se
poate face prin asignarea la un set de tabele continue a fiecarui client in
asteptare.
Un alt exemplu, din compilatoare, este algoritmul coloring algorithm,
prin care se face asignarea registrelor in timp ce se minimizeaza depasirea
capacitatii registrelor. Un exemplu din retele este algoritmul de testare
multibit a tabelelor IP de cautare. In acesta un grad de libertate care poate
fi prezentat este ca numarul de biti care poate fi utilizat intr-un nod de test
poate fi variabil, si depinde de calea de test, si nu este fix la fiecare nivel.
Numarul de biti utilizati poate fi optimizat prin programare dinamica
pentru a cere cel mai mic volum de memorie la o viteza impusa.
P14: Folosirea unor tehnici specifice universurilor finite (cum sunt
numerele intregi)
Cand avem de-a face cu universuri mici, ca de exemplu intregii de
valori moderate, se folosesc tehnici specifice ca bucket sorting, array
lookup, bitmaps, care sunt mai eficiente decat algoritmii generali de
sortare si cautare.
Pentru a translata o adresa virtuala intr-p adresa fizica procesorul
incearca mai intai o memorie cache numita TLB. Daca nu reuseste,
procesorul trebuie sa caute in tabela de pagini.Se foloseste un prefix al
bitilor de adresa cu care tabela de pagini este indexata direct. Folosirea
cautarii in tabele evida folosirea tabelelor de dispersare (hash) sau cautarea
binara, dar duce la dimensiuni mari ale tabelelor de pagini. Un exemplu
din reteleal acestei tehnici sunt contoarele de timp,(vezi capitolul 7) unde
este construit un algoritm eficient pentru un ceas de timp cu domeniu
limitat, folosind zone circulare.
P15: Folosirea tehnicilor din teoria algoritmilor pentru crearea unor
structuri eficiente de date
Chiar in prezenta unor strangulari majore, ca translatarea adreselor
virtuale, proiectantii sistemelor resping algoritmii inteligenti cum sunt
transmiterea de indicatii, folosirea memoriilor cache sau a tabelelor de
cautare performante. Algoritmii eficienti pot imbunatati mult performanta
sistemelor. Primele 14 principii trebuie sa fie aplicate inainte ca oricare
dintre rezultatele teoriei algoritmilor sa duca la strangulari, cum se
intimpla in multe cazuri.
Abordarea algoritmica include folosirea structurilor standard de date la
fel ca si a tehnicilor algoritmice cele mai generale, ca de exemplu
aleatorizarea sau dezbina si cucereste. Pe de alta parte, proiectantul unui
algoritm trebuie sa fie pregatit sa faca fata si situatiei in care sa vada ca
algoritmul sau a devenit perimat, din cauza schimbarilor de tehnologie sau
de structura. Progresul real poate aparea mai degraba din aplicarea
62
63
CAPITOLUL 4
PRINCIPIILE IN ACTIUNE
n capitolul precedent s-au evideniat 15 principii pentru implementarea
eficient a protocoalelor de reea. Aici se dau exemple de aplicare a
principiilor.
4.1. Validarea buffer-elor pentru canalele dispozitivului aplicaie
ADC(Application Device Channel)
De obicei, programele aplicaiilor pot trimite date n reea numai prin
nucleul sistemului de operare, i doar nucleul are dreptul s comunice cu
adaptorul de reea. Aceast restricie previne ca diferite aplicaii
(rutcioase sau accidentale) s citeasc sau s scrie n datele celorlalte
aplicaii. De altfel, comunicarea prin intermediul kernel-ului aduce
suprancrcri, sub forma apelurilor de sistem. Ideea la ADC-uri
(Application Device Channels), s permit unei aplicaii s trimit date
ctre/dinspre retea prin scrierea direct n memoria adaptorului de reea.
Un mecanism de protecie, n locul medierii de ctre kernel, este ca
nucleul s seteze adaptorul cu un set de pagini valide de memorie pentru
fiecare aplicaie. Adaptorul de reea trebuie apoi s asigure c datele
aplicaiei pot fi trimise i recepionate doar prin memoria din setul valid.
Memorie
CPU
Recepionarea
urmtorului
pachet n A
Aplicatia P
Kernel/nucleu
Lista valida
pt P
X, Y, ..., L, A
Pagina X
...
Pagina A
ADAPTOR
RETEA
Figura 4.1. n APDs, adaptorul de reea primete un set de pagini valide (X, Y, L, A, etc.)
pentru o anumit aplicaie P. Cnd aplicaia P face o cerere de primire a datelor n pagina
A, adaptorul trebuie s verifice dac A este n lista paginilor valide, nainte de a permite
recepia lui.
65
Memorie
CPU
Aplicatie P
Page X
Recepionarea
urmtorului
pachet n A
...
Page A
Kernel
Lista valida
pt P
X, Y, ..., L, A
ADAPTOR
RETEA
Figura 4.1. n APDs, adaptorul de reea primete un set de pagini valide (X, Y, L, A,
etc.) pentru o anumit aplicaie P. Cnd aplicaia P face o cerere de primire a datelor n
pagina A, adaptorul trebuie s verifice dac A este n lista paginilor valide, nainte de a
permite recepia lui.
Figura 4.2: Evitarea necesitii actualizrii tabelei de dispersie, prin pasarea manevrei
prin interfaa aplicaie-adaptor
Exercitii
Este ghidajul/handle o indicaie/hint sau un tip ? s revenim la P1:
daca e un handle de ce s pasm numrul paginii (e.g.A) interfeei? De ce
s eliminm accelerarea uoar a vitezei task-ului de confirmare a
numrului paginii?
Pentru a gsi tabela corespunztoare aplicaiei P e necesar o cutare
n tabelele de dispersie, folosind P ca i cheie. Acest lucru atenueaz
argumentul de a scpa de cutarea n tabelele de dispersie ca s verificm
dac o pagin e valid sau nu, cu excepia rafinrii cutrii n tabelele de
dispersie. Cum poate fi fcut acest lucru ?
4.2. Planificator pentru controlul fluxului la ATM
In modul ATM ( Asynchronous Transfer Mode), adaptorul ATM poate
avea sute de circuite virtuale,VC(Virtual Circuit) care pot transmite
simultan date (numite celule). Deseori, se controleaz fluxul fiecrui VC,
ntr-o form sau alta, pentru a limita rata de transmisie a acestuia. De
exemplu, la controlul fluxului bazat pe rata de transmisie, un circuit virtual
VC poate primi credite, ca s transmit celulele la momente de timp fixe.
66
67
CurrentMin iniial pus pe 0 (ce corespunde costului lui S). De fiecare dat
cnd algoritmul dorete s gseasc nodul de cost minim care nu aparine
arborelui, CurrentMin este incrementat cu 1 pn este gsita o locaie de
tablou care conine o list nevid. Orice nod din aceast list poate fi
adugat la arbore. Costul algoritmului este O ( N + Diam MaxLinkCost )
deoarece aciunea care d n avans CurrentMin poate fi cel mult de
dimensiunea tabloului. Aceasta este mult mai bine dect N log N ,dac N
este mare i Diam i MaxLinkCost sunt mici.
Factorul crucial care permite folosirea eficient a cozii de ateptare cu
sortare prin gleat a prioritilor este faptul c costurile nodurilor sunt
ntodeauna naintea valorii lui CurrentMin. Aceasta este condiia de
monotonie. Dac nu ar fi aa algoritmul ar ncepe de la 1 la fiecare iteraie,
n loc sa nceap de la ultima valoare a lui CurrentMin, i s nu mai revin
niciodat. Aceast condiie de monotonie este evident pentru algoritmul
Dijkstra deoarece costul nodurilor care nu aparin arborelui trebuie s fie
mai mari dect costurile nodurilor din arbore.
Figura 4.6. arat starea cozii de ateptare cu sortarea prioritii cu gleat
dup ce A a fost adugat arborelui (cadrul din dreapta n fig.4.5). La acest
moment CurrentMin=2, care este egal cu costul lui A. La urmtorul pas,
CurrentMin va deveni 3, i D va fi adugat arborelui. Acest lucru duce la
reducerea costului lui C la 4. Astfel C va fi scos din lista din poziia 5 i
adugat n lista vid din poziia 4. CurrentMin devine 4 i abia atunci C
este adugat arborelui.
Exerciii:
Algoritmul cere ca un nod s fie extras dintr-o list i adugat altei
liste, precedent. Cum poate fi fcut acest lucru eficient ?
In fig.4.6 cum tie algoritmul c a terminat, dup adugarea nodului C
arborelui, i s nu mai parcurg tabloul pna la capt ?
In reelele unde apar defectri, conceptul de diametru este foarte
suspect, deoarece el se poate modifica mult n caz de defectare.
Considerm o topologie circular, unde toate cele N noduri au diametrul 2
prin nodul zis central; dac acesta se defecteaz, diametrul scade la N/2.
Deobicei, n practic, diametrul este mic. Acest lucru poate crea probleme
n dimensionarea tabloului ?
Putem evita complet problema diametrului nlocuind tabloul liniar din
fig.4.6 cu unul circular de dimensiune MaxLinkCost ? Explicai. Soluia
rezultat se numete algoritmul Dial.
4.4 Monitor Ethernet cu o punte hardware
Alice Hacker a lucrat la Acme Network cu o punte Ethernet a firmei
Acme. O punte este dispozitivul care face legtur ntre mai multe reele
Ethernet. Pentru a transmite pachete de la o reea Ethernet la alta, puntea
caut adresa destinaie pe 48 bii din pachetul Ethernet, la viteze mari.
A. Hacker a decis s transforme puntea ntr-un monitor de trafic
Ethernet, care s asculte pasiv reeaua, pentru a obine statistici asupra
structurii traficului Ethernet. Monitorizarea se face ntre perechi sursdestinaie arbitrare, astfel c pentru fiecare pereche activ surs-destinaie,
ca A i B, se rein n variabilele PA,B numrul de pachete trimise de la A
spre B, de la nceputul monitorizrii. Cnd un pachet este trimis de la A la
69
70
72
Soluie: Cum M<32, un bitmap de dimensiune 32 poate uor s ncap ntrun cuvnt. Astfel pointerii nuli sunt scoi dup ce se adaug un bitmap cu zero
bii indicnd pozitia original a pointerilor nuli. Acest lucru este artat n figura
4.11. Nodul arborelui cu prefix poate fi acum nlocuit cu un bitmap i un nod al
arborelui cu prefix comprimat. Un nod al arborelui cu prefix comprimat este un
tablou ce conine doar valorile nenule din nodul original. Astfel n figura 4.11
nodul rdcina al arborelui cu prefix original (de sus) a fost nlocuit cu nodul
arborelui cu prefix comprimat (de jos). Bitmapul contine un 1 n prima i a
aptea pozitie, unde nodul rdcin conine valori nenule. Tabloul necomprimat
conine acum doar 2 elemente, primul pointer i KEY 3.
Avnd n vedere c att nodurile comprimate ct i cele necomprimate
sunt tablouri i procesul de cutare ncepe cu un index I n nodul
necomprimat, procesul de cutare trebuie s consulte bitmapul pentru a
converti indexul necomprimat I ntr-un index comprimat C n nodul
comprimat. De exemplu, dac I este 1 n figura 4.11, C ar trebuie s fie 1;
daca I este 7, C ar trebui s fie 2. Dac I este oricare alt valoare, C ar
trebui s fie 0, indicnd c este un singur pointer nul.
Conversia din I la C poate fi realizat uor innd cont de urmtoarele.
Daca poziia I n bitmap conine un 0, atunci C=0. Altfel, C este un numr
de 1-uri n primii I bii ai bitmapului. Astfel dac I=7, atunci C=2,
deoarece sunt doi bii setai n primii apte bii ai bitmapului. Acest calcul
necesit cel mult dou referiri la memorie: una pentru a accesa bitmapul
(deoarece bitmapul e mic, P4a) i una pentru a accesa tabloul comprimat.
Calculul numarului de bii setai ntr-un bitmap poate fi fcut folosind
registre interne (n software) sau logica combinaional (n hardware).
Astfel ncetinirea efectiv este cu un factor ceva mai mare de 2 n software
i exact 2 n hardware.
Exerciii
Cum putei folosi cutarea tabelelor (P14, P2a) pentru accelerarea
contorizrii numrului de bii din set, n software? Ar fi necesar al treilea
apel la memorie ?
Presupunem c bitmap-ul e mare (sa zicem,M=64K). Ar prea c
contorizarea numrului de bii din set cu asemenea bitmap mare e
imposibil de lent, n software sau hardware. Putei gsi o cale de
accelerare a contorizrii biilor n bitmap-urile mari (P12 si P2a) ?
4.7 Filtrarea pachetelor in rutere
Exist protocoale care seteaz resursele la rutere pentru trafic care
necesit garantarea performanelor, cum e traficul video sau audio. Astfel
de protocoale folosesc concepte ca filtrarea pachetelor, numite i
clasificatoare. Astfel, n figura 4.12 fiecare receptor ataat unui ruter poate
specifica un filtru de pachete descriind pachetele pe care dorete s le
recepioneze. De exemplu, n fig.4.12 receptorul 1 poate fi interesat de
recepia NBC, care e specificat de filtrul 4. Fiecare filtru e conform unor
specificaii ale cmpurilor care descriu pachetele video trimise de NBC.
De exemplu, NBC poate fi specificat de pachetele care folosesc adresa
surs a transmitorului NBC din Germania i utilizeaz o anumit
destinaie TCP i numrul de port surs.
La fel, n fig.4.12 receptorul m poate fi interesat n recepionarea ABCSport i CNN, care sunt descrise de filtrul 1i 7. Pachetele sosesc la ruter
73
75
Un ruter poate avea putine rutere vecine, sau poate avea vecine multe
calculatoare gazda/host-uri (noduri terminale), conectate direct la ruter in
acelasi LAN. De exemplu, in fig.4.14, ruterul R1 are 500 de noduri
terminale vecine, E1...E500. Marile LAN-uri pot avea si mai multe noduri
terminale vecine, ceea ce conduce la problema urmatoare.
Problema:La cei 8 bytes alocati fiecarui nod terminal (6 bytes pentru
identificarea nodului in sine, iar 2 bytes reprezinta informatia de cost adica
LSP-uri), LSP-ul poate fi foarte mare (pentru 5000 de noduri terminale,
dimensiunea poate ajunge la 40,000 bytes). Aceasta valoare este mult prea
mare pentru ca LSP-ul sa incapa intr-un cadru chiar si de dimensiune
maxima din majoritatea legaturilor de date obisnuite. De exemplu,
protocolul Ethernet are dimensiune maxima a cadrelor de 1500 bytes, iar
protocolul FDDI, 4500 bytes. Acest lucru implica fragmentarea LSP-urilor
mari intr-un numar mare de cadre de nivel legatura de date, la fiecare nod,
si apoi reasamblarea lor de catre urmatorul nod, s.a.m.d. Pentru a
determina daca toate fragmentele de LSP au fost receptionate, este
necesar, din pacate, un proces de reasamblare costisitor in fiecare nod.
Figura 4.14 Pachetul de stare a legaturii a ruterului R1 (cu 500 de noduri vecine) poate
fi prea mare ca sa incapa intr-un cadru de nivel legatutra de date. Acest lucru implica
fragmentari si reasamblari ineficiente, la fiecare salt.
La fel ca in exemplele de reducere a severitatii conditiilor, aceasta
solutie poate genera conditii incorecte neasteptate (temporare deobicei si
fara sa fie foarte grave). Tinand cont de solutia gasita la exercitiul
precedent, descrieti un scenariu in care un anume ruter, de exemplu R2,
poate gasi (la un moment dat) eroarea in care, in baza sa de date pentru
LSP-uri, acelasi nod terminal (de ex E1) apartine la doua pseudorutere,
R1a si R1b. De ce nu este acest caz mai rau decat rutarea obisnuita a LSPurilor ?
4.9 Supravegherea structurii traficului
Anumite protocoale de retea pretind ca sursele sa nu transmita niciodata
datele mai rapid decat cu o rata impusa. In loc de a specifica rata medie pe
o perioada lunga de timp, protocolul poate deasemenea specifica volumul
maxim de trafic, B, in biti pe care sursa-i poate transmite in orice perioada
de T secunde. Acest lucru limiteaza sursa la rata medie de B / T biti pe
secunda. De altfel, acest lucru limiteaza si gradul de rafala a traficului
utilizatorului la maxim o rafala de dimensiune B la fiecare T unitati de
timp. Alegand, de exemplu, o valoare mica a parametrului T, se limiteaza
considerabil rafalele de trafic. Rafalele fac probleme retelei, deoarece
perioadele cu trafic mare si pierderi de pachete sunt urmate de perioade de
inactivitate.
Daca fiecare sursa isi indeplineste contractul (nu transmite peste volumul
de trafic specificat pe o perioada data), reteaua poate oferi garantii de
performanta si sa asigure ca nimic din trafic sa nu fie pierdut, precum si
livrarea la timp a traficului. De cele mai multe ori regulile sunt respectate,
fie pentru ca sunt considerate corecte de catre unii, fie de teama
penalizarilor, de catre altii. Dar acest lucru nu se intampla intotdeauna,
astfel ca urmarirea traficului e foarte importanta. Fara ea, unii utilizatori ar
putea profita, incorect, de banda retelelor.
Presupunem ca fluxurile de trafic sunt identificate prin adresa sursei si a
destinatiei, precum si prin tipul de trafic. Fiecare ruter trebuie sa sa se
asigure ca nici un flux sa nu transmita mai mult de B biti in nici o perioada
de T secunde.Pentru ruter, cea mai simpla solutie este sa foloseasca un
singur timer care ticaie la fiecare T secunde, si sa numere bitii trimisi in
fiecare perioada, folosind cate un contor per flux. Daca la sfarsitul fiecarei
perioade contorul depaseste B, ruterul detecteaza o violare de contract.
Dar folosind un singur timer pot fi supravegheate doar anumite perioade.
Presupunem de exemplu, fara a pierde din generalitate, ca timer-ul
porneste la momentul 0 de timp.Atunci singurele perioade verificate vor fi
[0, T ] , [T , 2T ] , [ 2T ,3T ] ,.... , ceea ce nu asigura ca fluxul sursei nu violeaza
Figura 4.16 Folosirea naiva a unuia sau a mai multor timer-e (pentru a verifica daca
sursa nu transmite un volum de trafic mai mare decat B biti la fiecare T secunde)
Aleator
Aleator
Figura 4.17 Daca se iau pauze aleatoare intre intervalele de supraveghere ruterele vor
detecta violarile de contract cu o probabilitate mare
putea fi un castig daca numarul rezultant de grupuri este mult mai mic
decat numarul initial de utilizatori; deci, gasirea celui mai mare grup va fi
mai rapida decat gasirea celui mai mare utilizator de resurse. Aceasta idee
este foarte asemanatoare cu cea de la asamblarea din rutarea ierarhica, in
care numarul destinatiilor sunt grupate sub un prefix comun; acest lucru
poate face ca procesul de rutare sa fie unul mai putin precis dar poate sa
reduca numarul intrarilor de rutat. Rezulta urmatoarea idee.
81
83
Solutie: O lista dublu inlantuita este utila doar pentru stergeri eficiente.
Cand o anumita conexiune este terminata, ar fi indicat ca rutina de stergere
sa gaseasca intrarea valida anterioara celei sterse, pentru a putea lega lista
precedenta de urmatoarea. Acest lucru ar necesita ca fiecare intrare din
tabela de dispersie sa memoreze un indicator catre intrarea valida
anterioara din lista.
In schimb, considerati principiul P3, relaxarea conditiilor impuse
sistemului. In mod normal, se presupune ca atunci cand o conexiune este
terminata, locul ei din memorie este recuperat imediat. Pentru a recupera
un loc de depozitare, intrarea din tabela de dispersie ar trebui pusa intr-o
lista goala, din care sa poata fi folosita de catre o alta conexiune. In orice
caz, daca tabela de dispersie este mai mare decat este strict necesar, nu
este esential ca locul de depozitare utilizat de conexiunea ce tocmai a fost
terminata sa fie reutilizat imediat.
Fiind date cerinte mai putin severe, implementarea poate sa stearga cu
incetineala starea conexiunii. Cand o conexiune este terminata, intrarea
respectiva trebuie marcata ca fiind libera. Acest lucru necesita un extrabit
de stare, la fel ca in P12, fiind ieftin. Stergerea intrarii nefolosite din tabela
de dispersie E, implica legatura dintre intrarea aflata inaintea lui E cu cea
aflata dupa E. de asemenea, necesita returnarea lui E unei liste goale.
Aceasta stergere poate fi facuta la urmatoarea trecere prin lista, atunci
cand este intalnita o intrare nefolosita.
Exercitii
Scrieti un pseudocod pentru adaugarea unei noi conexiuni, terminarea
unei conexiuni si terminarea sa (bazata pe timer).
Cum putem face sa avem liste cu legaturi simple pentru listele de
conexiuni in fiecare lista a tabelelor dispersie?
Cineva, interesat in trucuri inteligente si care nu gandeste niciodata
pana la capat o problema anume, sugereaza o cale pentru a evita folosirea
indicatorilor inapoi, in orice lista cu dubla legatura. Presupunem ca nodul
X trebuie sters. In mod normal, rutinei de stergere i se indica manevra de
regasire a lui X, deobicei un indicator spre X. In schimb, manevra ar
putea fi un indicator catre nodul respectiv inaintea lui X in lista inlantuita
(cu exceptia cazului cand X se afla in fruntea listei si manevra este un
pointer nul). Acest mod va permite implementarii sa localizeze eficient
atat nodul anterior lui X, cat si cel de dupa X, utilizand doar
indicatoriinspre inainte ? Prezentati un contra exemplu care invalideaza
acest mod de lucru.
4.12 Retinerea confirmarilor
Protocoalele de transport, ca TCP, asigura ca datele sa fie livrate la
destinatie cu confirmarea (ack) primirii fiecarui fragment de date
receptionat. Aceasta actiune este similara cu mailul de confirmare.
Pachetele si confirmarile sunt numerotate. Confirmarile sunt, de obicei
cumulative, un ack pentru pachetul N confirma implicit toate pachetele
primite anterior, numere mai mici sau egale cu N.
Confirmarile cumulative permit receptorului flexibilitatea de a nu
transmite un ack de fiecare data cand primeste un pachet. In schimb,
confirmarile pot fi comasate (P2c). In figura 4.22 programul de transmisie
84
85
Exercitii:
O tehnica de reducere a numarului de confirmari este returnarea
confirmarilor in pachetele de date dinspre receptor spre emitator. In acest
scop, majoritatea protocoalelor de transport, ca TCP, au campuri
suplimentare in pachetele de date pentru confirmarile in sens opus.
Returnarea confirmarilor in pachete de date e compromisul clasic
latenta/eficienta. Cat timp ar trebui sa astepte nivelul transport datele din
sens opus? Dar, exista aplicatii uzuale in care aplicatia de la emisie
cunoaste aceasta informatie. Cum poate fi extinsa solutia precedenta pentru
a permite si returnarea confirmarilor prin pachete de date, si comasarea lor?
Evaluarea imbunatatirilor pretinse se poate face cu intrebari de test. De
exemplu, schimbarea poate afecta restul sistemului ? De ce ar putea ca
86
3pm
6pm
Figura 4.24 Schimbari lente a bazei de date cu alimente la orele 2pm, 3pm, 6pm. Cel
care urmareste baza de date vrea sa vada doar schimbarile (aici, de la 2pm la 3pm s-a
schimbat pretul la bauturi nealcoolice, si de la 3pm la 6pm, la cereale)
Un cititor vrea la ora 18 sa vada doar diferenta fata de ora 14 : Coke fata
de Pepsi, Wheaties fata de Cheerios. Alt cititor vede pagina la ora 15:00 si
apoi la ora 18:00 vrea sa vada ce s-a schimbat la Wheaties fata de
Cheerios. Acest lucru genereaza urmatoarea problema.
Problema. Cum sa realizeze eficient baza de date asemenea interogari
incrementale (incremental queries) ? Ar fi dificil ca baza de date sa-si
aminteasca ce a citit fiecare utilizator ultima data, avand milioane de
utilizatori.
Indiciu: Daca baza de date nu memoreaza nici o informatie referitoare la
ultima citire a unui utilizator, solicitarea de citire a utilizatorului trebuie sa
contina ceva informatie (P10) despre ultima sa citire. Transmiterea
detaliilor despre ultima citire inseamna un efort urias si e total ineficienta.
Care ar fi partea de informatie care sa caracterizeze succint ultima cerere a
utilizatorului? Putem adauga o stare redundanta suplimentara (P12) la
baza de date ce permite usor indexarea, folosind informatia de la utilizator
pentru a facilita interogarea incrementala.
Solutie: Cererile de vizualizare ale utilizatorului trebuie sa contina o
anumita cantitate de informatie (P10) despre ultima solicitare de
vizualizare facuta de acesta. Cea mai succinta si relevanta informatie este
timpul la care a fost facuta ultima cerere. Daca cererea utilizatorului
contine timpul ultimei citiri, atunci baza de date trebuie organizata astfel
incat sa-si actualizeze eficient continutul la intervale date de timp.
Memorarea unor copii ale bazei de date din momentele anterioare este o
metoda
ineficienta, si poate fi evitata daca se memoreaza doar
modificarilor incrementale (P12a). Acest lucru duce la urmatorul algoritm.
Se poate adauga bazei de date o lista a actualizarilor, care are in capul
listei ultimele actualizari. Cererile de citire contin momentul T al ultimei
87
citiri, deci cererea poate fi procesata prin scanarea inceputului listei, pentru
a gasi toate actualizarile ulterioare lui T.
De exemplu, in figura 4.25 in capul listei de actualizari se afla ultimele
modificari (comparati cu figura 4.24) la ora 18:00 de la Wheaties la
Cherios, si modificarea precedenta, de la ora 15:00 de la Coke la Pepsi.
Consideram o cerere de citire efectuata la ora 17:00. Cand scanam lista din
varf, procesarea cererilor va gasi actualizarea de la ora 18:00 si se va opri
cand va ajunge la actualizarea de la ora 15:00, deoarece 15:00 < 17:00,
deci cererea va returna doar prima actualizare.
Ultima reactualizare
6 pm
Coke Pepsi
3 pm
Wheaties Cheerios
6 pm
Pepsi
Mere
Placinte
Cheerios
Actualizarea listei
Exercitii:
Daca o intrare se modifica de mai multe ori, atunci modificarea acelei
intrari poate fi memorata redundant in lista, dar cu costuri suplimentare de
timp si spatiu. Ce principiu poate fi folosit pentru a evita redundanta?
Presupunem c baza de date este doar o colecie de nregistrri i se dorete
ca fiecare nregistrare s apar cel mult o dat n aceast list incremental.
Dac numrul nregistrrilor este mare sau metoda de mai sus nu este
aplicat, atunci dimensiunea listei incrementale va crete foarte mult.
Sugerai o metoda de reducere periodic a dimensiunii listei incrementale.
Dac numrul nregistrrilor este mare sau metoda de mai sus nu este
aplicat, atunci dimensiunea listei incrementale va crete foarte mult.
Sugerai o metoda de reducere periodic a dimensiunii listei incrementale.
4.14 Cautarea binara a identificatorilor lungi
Generaia viitoare de Internet (IPv6) i propune s foloseasc adrese pe
128bii pentru a putea gzdui mai multe terminale. Dac se dorete
identificarea unei adrese pe 128 bii, i algoritmul ruleaz pe un procesor
cu 32 bii pe cuvant, atunci fiecare comparaie a dou adrese lungi va dura
128/32=4 operaii n cazul general presupunem c fiecare identificator este
compus din W cuvinte (n exemplu W=4), atunci cutarea binar naiva va
avea nevoie de W log N comparaii, ceea ce e scump. Dac toi
identificatorii au identice primele W 1 cuvinte, atunci sunt suficiente doar
log N comparaii. Problema e de modificare a algoritmului de cutare
binar a.. s se ajung la un numr de log N + W comparaii. Strategia este
de a lucra pe coloane, ncepnd cu cel mai semnificativ cuvnt i efectund
cutarea binar n acea coloan, pn cnd se gaseste o egalitate n acea
coloan. n acest punct, algoritmul trece la urmtorul cuvnt din dreapta i
continu cutarea binar de unde a rmas.
cuvinte de dimensiune
A
W
C
88
D
cuvinte de dimensiune
C
W
A
C
E
A
D
C
A
Testul 3
M
Testul 4
W
B
M
W
Testul 1
B
Testul 2
N
X
B
N
Y
B
N
Z
A
Testul 3
M
Testul 4
W
B
M
W
Testul 1
B
Testul 2
N
X
B
N
Y
B
N
Z
C
N
D
Figura 4.26 Cautarea binara a identificatorilor lungi poate duce la un factor de multiplicare
W (numarul de cuvinte din identificator). Metoda naiva, de reducere la un factor aditiv
prin mutare la dreapta in egalitate, esueaza.
89
Testul 1
A
A
A
*B
B
B
*B
C
W cuvinte
Tentativ 3
Testul 4
Testul 2
C
D
M
*M
N
N
N
N
Testul 5
E
C
W
W
X
Y
Z
D
Figura 4.27: Adugarea unui domeniu de gard fiecarui element din coloana, pentru
cutarea binar corecta la schimbarea coloanelor
Switch
ATM
N CV 1-la-mai muli
Interlocutorul
Interlocutorul anterior
Switch
ATM
2 CV muli-la- muli
Exerciii:
Scriei pseudocodul prii hardware a fiecrei staii care actualizeaz
conexiunile la C i L. Se presupune c detectorul de voce este o funcie.
Ce se ntmpl daca mai muli utilizatori vorbesc deodat? Ce
component hard se poate aduga staiei a.. aplicaia s afieze ceva
rezonabil? De exemplu, nu ar fi rezonabil ca imaginile celor doi
interlocutori s fie combinate?
92
CAPITOLUL5
COPIEREA DATELOR
Intr-un birou, fiecare scrisoare primit este mai nti trimis la transport
si recepie, unde scrisoarea este deschis i se decide crui departament i
este adresat i se face o fotocopie pentru ndosariere.Este apoi nmnat
departamentului de securitate care verific fiecare linie a scrisorii cutnd
semne de spionaj industrial. Departamentul de securitate face si el o
fotocopie a scrisorii, pentru o eventual utilizare ulterioar. Situaia pare
ridicol, dar majoritatea serverelor Web i calculatoarele n general, fac un
numr de copii suplimentare ale mesajelor recepionate i transmise.Spre
deosebire de fotocopii, care consum doar o mic cantitate de hrtie,
energie i timp, copierea suplimentar n calculator consum dou resurse
preioase: limea de band de memorie i memoria n sine. n cele din
urm, dac sunt k copii implicate n procesarea unui mesaj ntr-un server
Web, ieirea serverului Web poate fi de k ori mai nceat.
Deci se trateaza aici eliminarea pierderilor (P1) generate de copiile
inutile. O copie este inutil dac nu este impus de hardware. De exemplu,
hardware-ul cere copierea, biilor recepionai de un adaptor, n memoria
calculatorului. Totui, acesta nu este un motiv esenial (n afara de cele
impuse de structurarea sistemelor de operare convenionale) pentru
copierea ntre bufferul aplicaie i bufferul sistemului de operare.
Eliminarea copiilor redundante permite software-ului s se apropie de
capacitatea hardware-ului, unul din elurile algoritmilor de reea.
Sunt expuse pe scurt alte operaii (ca sumele de control i criptarea) ce se
refer la toate datele din pachet i alte tehnici pentru a unifica conditiile
impuse de software-ul protocolului si cele impuse de hardware, ca limea
de band a magistralelor i memoriei cache.Sunt revzute sistemele de
operare mai reprezentative i arhitecturile relevante, precum i tehnicile de
93
Principiul
Localizarea memoriei(in adaptor) ca grad de
libertate
Copiere nceat utiliznd copierea-la-scriere
Asocierea unei memorii cache virtuale per
cale
Uniformizarea pe procese a bufferelor rapide
fbuf
Utilizat n
Afterburner
P10
Sisteme
RDMA
P4
Flash
Sendfile()
ILP
P2b
P11a
P7
P11a
P6
P1
P13
P13
Mach
Solaris fbufs
Flash-lite
x-kernel
LDRP
Figura 5.1. Tehnici de evitare a copierii i eficiena cache discutate n acest capitol,
mpreun cu principiile corespunzatoare
94
Copia 3
Buffer-ul server-ului
Copia 2
Kernel
TCP/IP
Sist. de fisiere
Buffer-ul socket
Buffer-ul fis. cache
Magistrala
de memorie
Copia 1
Copia 4
Disc
Magistrala I/O
Adaptor de retea
Retea
Figura 5.2. Copii redundante implicate n manipularea unei cereri GET la un server
Detaliile reale sunt mai dificile. n primul rnd fiierul este citit ntr-o
regiune a memoriei kernelului numit file cache (copia 1). Ideea este bun
deoarece cererile succesive la un fiier des utilizat pot fi servite din
memoria principal fr operaiile lente de I/O la disc. Fiierul este apoi
copiat de serverul Web din file cache n buffer-ul aplicaiei (copia 2).
Deoarece bufferul aplicaiei i file cache sunt n zone diferite a memoriei
principale, copierea se poate face doar de CPU, care citete datele din
prima locaie de memorie i le scrie n cea de-a doua, prin magistrala de
memorie.
Serverul Web face apoi un apel write() la socketul corespunztor.
Deoarece aplicaia i poate reutiliza bufferul n orice moment (sau chiar
s-l dezaloce) dup apelul write(), subsistemul de reea din kernel nu poate
s retransmit pur i simplu din buffer-ul aplicaiei. Software-ul TCP
poate avea nevoie s retransmit unele pri din fiier dup un anumit timp,
timp n care aplicaia poate reutilizarea buffer-ul n alte scopuri.
Astfel, UNIX i multe alte sisteme de operare, ofer semantica copierii.
Buffer-ul aplicaiei specificat n apelul write() este copiat ntr-un buffer
socket (un alt buffer din kernel la o adres de memorie diferit att de file
95
96
97
Ideea, dei bun, are trei defecte. n primul rnd adaptorul de reea ar
trebui s aib mult memorie pentru a manevra mai multe conexiuni TCP,
iar suplimentarea memoriei pate crete preul adaptorului prea mult. n al
doilea rnd, n metoda Witless, unde CPU calculeaz suma, copierea
pachetului recepionat n buffer-ul aplicaiei n timpul calculrii sumei,
poate duce la scrierea unor date eronate n buffer-ul aplicaiei. Dei aceasta
poate fi descoperit la sfrit cnd suma de control nu corespunde, ea
cauzeaz dificulti n prevenirea citirii de date incorecte de ctre aplicaii.
A treia problem cu confirmrile ntrziate este studiat n execiii.
CPU
Memorie
Aplicatie
write()
Kernel
Buffer-ul server-ului
TCP/IP
Magistrala
de memorie
O singura copie
Magistrala I/O
Buffer socket
Adaptor de retea
Retea
Figura 5.3. Metoda Witless (afterburner) elimin nevoia copierii din kernel n adaptor
plasnd buffer-ele kernelului n adaptor
Memorie
CPU
Aplicatie
write()
Kernel
TCP/IP
Copiere la o
pagina libera
doar daca
aplicatia scrie
Magistrala de memorie
Buffer socket
Adaptor
de retea
Retea
Figura 5.4. Utilizarea copierii-la-scriere
100
Pachet
date
Procesul 1
Tabel pagini
VP 10
Scrie
Procesul 2
Tabel pagini
VP 8
(sau chiar adaptorul nsui) s fie capabil s realizeze rapid calea complet
pe care pachetul va fi mapat (demultiplexare anticipat). Intuitiv, (fig. 5.6)
aceasta este realizat examinnd toate antetele pachetelor pentru a
determina (pe moment) dac un pachet, cu un antet Ethernet, IP i HTTP
aparine cii 1.
Web
FTP
(Domeniu 2)
Calea 1
Calea 2
IP
OSI ?
(Domeniu 1)
(Domeniu 0)
Ethernet
Figura 5.6. Preasocierea paginilor buffer in tabele de pagini ale fiecarui domeniu
intr-o cale evita costul remaparii paginii in calea de timp real dupa setarea initiala
Scriitor
Proces 1
Tabel de pagini
VP 10
Proces 2
Tabel de pagini
Scris
odata
initial
VP 10
(prealocat)
Fbufs scriitoare
Fbufs libere
Structura agregata
105
107
108
Numele buffer-ului B
Pagina 11
B, 1
B, 2
B1
B2
Pagina 16
ADAPTORUL
DESTINATIE
109
110
111
112
CPU
Memorie
TCP/IP
Buffer server
Cached response
header
Buffer socket
read()
Cached checksum
Sistem fisiere
Buffer fisier
cache
Buffer IO-Lite
Bus memorie
Copia 1
Copia 2
Disc
Bus I/O
Adaptor de retea
Retea
Figura 5.10. IO-Lite elimin toate copiile redundante din figura 5.2. pasnd efectiv pointeri
(prin mapri VM) la un singur buffer IO-Lite. Presupunnd c fiierul, suma de control TCP i
rspunsul HTTP sunt toate memorate n cache, server-ul Web nu trebuie dect s transmit
aceste valori din cache ntr-o singur copie la interfaa de reea.
fiecrui buffer i este dat un numr unic (P12, adaug stri redundante) de
ctre IO-Lite, i modulul TCP ine un cache al sumelor de control indexate
cu numrul buffer-ului. Astfel, cnd un fiier este transmis de mai multe
ori, modulul TCP poate evita calcularea sumei de control, dup prima
transmisie. Aceste modificri elimin toat redundana din figura 5.2 care
mrete viteza de procesare a rspunsului.
IO-Lite poate fi utilizat i pentru implementarea unui program pipe
modificat, care elimin copierea. Cnd acest mecanism IPC este utilizat
ntre procesul CGI i procesul server, toate copiile sunt eliminate, fr a
compromite sigurana i izolarea defectelor, oferit de implementarea
celor dou programe ca procese separate. IO-Lite permite deasemenea
aplicaiilor s-i particularizeze strategia de memorare-cache a buffer-elor,
permind strategii de memorare-cache mai deosebite, pentru serverele
web bazate pe dimensiunea i frecvena accesului.
Este important de remarcat c IO-Lite realizeaz aceste performane fr
a elimina complet kernel-ul Unix i fr a lega strns aplicaia de kernel.
Serverul Web Cheetah, cu sistemul de operare Exokernel, e i mai radical,
permite fiecrei aplicaii (inclusiv serverului Web) s i individualizeze
complet reeaua i sistemul de fiiere. Mecanismele Exokernel permit
astfel de individualizari, pentru fiecare aplicaie, fr a compromite
sigurana. n virtutea acestor modificri, serverul Web Cheetah poate
elimina toate copiile din figura 5.2. i deasemenea poate elimina
calcularea sumei de control TCP utiliznd un cache.
n timp ce Cheetah permite cteva artificii suplimentare, enorma
provocare n ingineria software de proiectare i meninere de kernel-uri
individualizate pentru fiecare aplicaie, face mai atractive abordrile ca
IO-Lite. IO-Lite se apropie de performana kernel-urilor individualizate ca
Cheetah avand de rezolvat mult mai putine probleme de inginerie
software.
5.4.3. Evitarea copiilor sistemului de fiiere prin I/O Splicing
Server-ele Web sunt apreciate prin teste comerciale: SPECweb pentru
serverele Web i poligraf-Web pentru proxy-ul Web. n spaiul proxy,
exist un raport de recuren anual n care toate dispozitivele sunt
msurate mpreun pentru a calcula cea mai mare rat de gsire a fiierului
dorit n cache, normalizat la preul dispozitivului. Testerele SPECweb
utilizeaz un sistem diferit n care productorii i nregistreaz propriile
rezultate experimentale la sistemul de teste, chiar dac aceste rezultate
sunt verificate. n testele poligraf Web, la vremea scrierii, tehnologia unui
server Web bazat pe ideile IO-Lite era printre cele mai avansate.
De altfel, n testele SPECweb mai multe server-e Web prezint,
deasemenea, performane impresionante. Aceasta se datoreaz i unui
hardware mai rapid (i mai scump). Totui, exist dou idei simple care
pot evita nevoia de schimbri complete ale modelului ca n cazul IO-Lite.
Prima idee este de a plasa complet n kernel aplicaia serverului Web. n
acest fel n figura 5.2., toate copiile pot fi eliminate deoarece aplicaia i
kernelul sunt pri ale aceleai entiti. Problema major cu aceast
abordare este c astfel de servere, Web aflate n kernel, trebuie s se ocupe
de rezistena la schimbri de implementare a sistemelor de operare. De
exemplu, pentru un server popular de mare performan care ruleaza pe
114
Memorie
Magistrala de memorie
Copia 1
Copia 2
Disc
Magistrala I/O
Adaptor de retea
Retea
Figura 5.11. n I/O splicing, toate indirectrile cauzate de copierea n i din buffer-e din
spaiul utilizator sunt ndepartate printr-un singur apel de sistem care mbin fluxul I/O
de la disc cu fluxul I/O de la reea. Ca de obicei, copia 1 poate fi eliminat pentru fiierele
din cache.
CPU
Stocare M9, R0
(adaugare R0 la suma de
control)
Incarcare W10, R0
M9
W10
Memoria adaptorului
Figura 5.12. Integrarea sumei de control i a copierii
117
Codul
F1
Codul
F2
Dimensiunea
I-cache
Utilizarea frecventa a
codurilor F1 si F2
Utilizarea nefrecventa a
codurilor F1 si F2
Y
Re-localizare
Figura 5.13. n stnga este codul de reea dispus n memorie, cu intercalare arbitrar a codului
frecvent utilizat (alb) i rar utilizat (negru). Utilizarea unui cache direct mapat cu jumtate din
dimensiunea total a codului poate conduce la coliziunea a dou instruciuni frecvent utilizate,
cum ar fi X i Y. Aceast problem poate fi evitat reamplasnd tot codul utilizat frecvent,
astfel nct s fie continuu, (dreapta).
Timp
P1
sosire P2
Procesare
convenional
P1
P1
P1
P2
Legtura Reea Transport Legtura
de date
de date
P1
Legtura
de date
P2
P1
Legtura Reea
de date
P2
P2
Reea
P1
Reea Transport
P2
Transport
P2
Transport
Procesare
localizata
pe
niveluri.
Dac zona de lucru al stivei reelei poate ncpea ntr-un I-cache modern
(care este din ce n ce mai mare) e posibil ca protocoalele mai complicate
(ce ruleaz TCP/IP ) s nu ncap. Ideea procesrii pe nivele este utilizarea
efectiv a I-cache ct timp codul fiecrui nivel al stivei reelei ncape n
I-cache. Procesnd repetat codul aceluiai nivel pntru mai multe pachete,
costul ncrcrii I-cache-ului este mprit pe mai multe pachete(P2c). n
figura 5.14, la reprezentarea n timp a procesrii convenionale, toate
nivelurile reea ale pachetului P1 sunt procesate nainte celor ale
pachetului P2. Dac dou pachete P1 i P2 sosesc la un server, ntr-o
implementare convenional, se termin toat procesarea lui P1 ncepnd
cu nivelul legtur de date i terminnd cu nivelul transport, i doar apoi
se ncepe procesarea pachetului P2.
Ideea principal n procesarea localizat pe niveluri este de a exploata un
alt grad de libertate (P13) i de a procesa toate codurile unui nivel, pentru
ct mai multe pachete posibil, nainte de a trece la nivelul urmtor. Astfel,
120
dup ce codul de nivel legtur de date pentru P1 este terminat, CPU trece
la executarea codului de nivel legatur de date pentru P2 i nu la codul de
nivel reea pentru P1. Corectitudinea ar trebui s nu fie afectat, deoarece
codul unui nivel n-ar trebui s depind de starea nivelurilor
inferioare.Totui, procesarea integrat pe niveluri are cteva dependene
subtile i deci cazuri de eec.
Astfel, dac codul pentru fiecare nivel ncape n I-cache (de exemplu
codul nivelului legatura de date) dar nu ncape codul pentru toate
nivelurile, atunci aceast optimizare amortizeaz costul ncrcrii I-cache
pentru mai multe pachete. Se utilizeaz procesarea pe loturi (P2c): cu ct
lotul este mai mare, cu att I-cache este utilizat mai eficient.
Implementarea poate adapta dinamic dimensiunea lotului. Codul poate
procesa o serie de pn la k pachete, din coada de pachete sosite( k este un
parametru care limiteaz latena). Dac sistemul este slab ncrcat, atunci
un singur mesaj va fi procesat la un moment dat. Dac sistemul este
puternic ncrcat, se crete dimensiunea lotului, crescnd astfel cnd e
nevoie, eficiena utilizrii lrgimii de band a memoriei.
Consideraii de inginerie software
Optimizrile de gen restructurarea codului (figura 5.13.) i procesarea
localizat pe niveluri(figura 5.14.) trebuie evaluate i innd cont de
efectele lor asupra modularitii codului i mentenanei. S-ar putea rescrie
kernel-ul i toate aplicaiile, utiliznd un limbaj de asamblare pentru o
optimizare perfect a utilizrii lrgimii benzii memoriei. Dar ar fi greu de
a face codul s ruleze corect sau s fie uor de ntreinut.
Restructurarea de cod este cel mai bine realizat de un compilator. De
exemplu, codul ce manevreaz erorile, poate fi adnotat cu indicii care s
sugereze ramificaiile cele mai frecvente (evidente, n general, pentru un
programator) i cu un compilator completat special, care poate restructura
codul pentru localizarea I-cache.
Pe de alt parte, procesarea localizat pe nivele pstreaz modularitatea
n interiorul nivelurilor. Comunicarea ntre niveluri trebuie modificat
dup cum urmeaz. Dac fiecare cod de nivel paseaz un pachet ctre
codul unui nivel superior cu o procedur de apel, acest cod trebuie
modificat s adauge pachetele pentru nivelul superior ntr-o coad.
Similar, cnd un nivel este apelat, el scoate pachete din coada sa de citire
pn cnd aceasta este terminat; dup procesarea fiecrui pachet, l
plaseaz n coada pentru urmtorul nivel superior. Aceast strategie
funcioneaz corect cnd fiecare nivel poate reutiliza buffer-ele de la alte
niveluri, aa cum este cazul mbuf-urilor UNIX. n ansamblu, modificrile
codului ar putea s nu fie majore.
5.6.2. Accesul direct la memorie DMA versus I/O programate
Seciunile anterioare au afirmat c schema Witless utilizeaz I/O
programate, sau PIO (procesorul este implicat n transferul fiecrui cuvnt
ntre memorie i adaptor), n timp ce alte scheme, cum ar fi VAX Clusters
utilizeaz DMA (unde adaptorul copiaz datele direct n memorie). Poate
prea c DMA este ntotdeauna mai bun dect PIO. Totui, comparaiile
121
ntre DMA i PIO sunt complicate deoarece fiecare metod are implicaii
subtile pentru utilizarea per total a lrgimii de band de memorie.
De exemplu, PIO are avantajul c datele circul prin procesor i astfel
ajung n cache-ul procesorului, prevenind pierderile de lime de band a
memoriei la accesul secvenial. Deasemenea, cu PIO e mai uoar
integrarea altor funcii, cum ar fi verificarea sumei de control, fr s fie
necesar un adaptor hardware care s fac aceeai funcie.
Totui, unele studii au artat c dac datele sosite sunt utilizate mult mai
trziu de ctre aplicaie, atunci plasarea datelor n d-cache prea devreme
este o risip a d-cache i mai degrab scade dect crete rata de succes a
cache. Pe de alt parte DMA poate fura cicluri de la CPU i necesit
deasemenea o atent invalidare a cache-ului cnd datele sunt scrise ntr-o
locaie de memorie(care poate fi tot n cache). Alegerea se face de la caz la
caz, din considerente arhitecturale i de aplicaie
.
5.7. CONCLUZII
Pe msur ce reelele devin mai rapide legturile, cum ar fi Gigabit
Ethernet, sunt deseori mai rapide dect magistralele interne i memoriile
din calculatoare sau
servere. Astfel, lrgimile de band de
memorie/magistrale sunt resurse cruciale. Au fost descrise tehnici de
optimizare a utilizrii lrgimii de band de memorie/magistral pentru
procesare de pachete IP i Web, care reprezint traficul Internet dominant.
S-a artat cum s nlturm copiile redundante implicate n
procesarea unui pachet IP utiliznd memoria adaptorului sau remaparea
memorie virtuale. Apoi s-a artat cum s ndeprtm copiile redundante
implicate n procesarea cererilor Web la un server, prin generalizarea
remaprii memoriei virtuale, pentru a include sistemul de fiiere sau prin
combinarea sistemului de fiiere i reelei I/O ntr-un singur apel de
sistem. Apoi s-a artat cum s combinm diferite manipulri de date
simultan. Toate aceste tehnici necesit schimbri n aplicaie i kernel dar
schimbrile sunt destul de localizate i majoritatea pstreaz
modularitatea.
n final s-a artat c, dac nu se are grij, procesarea protocolului poate
face nesemnificativ suprasarcina datorat copierii i au fost descrise
tehnici de optimizare a cache-ului de instruciuni. Serverele Web moderne
pot fi deja optimizate pentru implementri zero-copii utiliznd apeluri de
sistem de tipul sendfile (). Totui, astfel de servere nc consum cicluri de
processor ateptnd memorie. Astfel, tehnici de mbuntire a eficienei Icache pot oferi urmtoarea etap de optimizri pentru serverele Web.
Figura 5.1. prezint un sumar al tehnicilor utilizate n acest capitol,
mpreun cu principiile majore implicate.
Dar nu au fost eliminate toate problemele de performan implicate n
construirea unui server Web modern. Site-uri Web complexe, cum ar fi
amazon.com utilizeaz adesea mai multe niveluri de procesare pentru a
rspunde cerinelor Web (un server aplicaie, un server Web i un server
baz de date). Serverele Web baz de date introduc noi constrngeri care
pot necesita noi tehnici n afar de cele descrise aici. Totui, principiile de
baz ar trebui s rmn aceleai.
Referitor la principii, capitolul se ocup cu utilizarea repetat a P1, de
evitare a pierderilor evidente, ca citiri i scrieri inutile consumatoare de
122
123
124
CAPITOLUL 6
CONTROLUL TRANSFERULUI
ntr-o companie plata unei facturi dureaz 6 luni. Factura ajunge prima
dat n pot, petrece ceva timp pe biroul secretarei, ajunge pe biroul celui
care ia principalele decizii i ajunge n sfrit la contabil. La procesarea
facturii, fluxul de control i urmeaz calea prin diferite straturi de
comand, fiecare adugnd un antet semnificativ. Un consultant de
management sugereaza scurtarea procesarii facturii elimininand straturile
intermediare cnd e posibil, i facand fiecare nivel ct se poate de selectiv.
Totui, fiecare nivel are cteva motive de a exista. Camera de pot mbin
serviciul de livrare a potei pentru toate departamentele companiei.
Secretara protejeaz eful de ntreruperi i elimin cererile nepotrivite.
eful trebuie eventual s decid dac factura merit pltit. Detaliile de
alocare a banilor sunt decise de contabil.
Un CPU modern, care proceseaz un mesaj de reea, trece prin nivele
similare de mediere. Dispozitivul (un adaptor Ethernet) ntrerupe CPU,
solicitand atenie. Controlul este pasat la kernel, care comaseaz
ntreruperile cand e posibil, face procesarea pachetului la nivelul reea i
planific s ruleze procesul aplicaie (un server Web). Recepia unui
singur pachet ofer o vedere limitat a contextului global de procesare. De
exemplu, un server Web va analiza cererea din pachetul de reea, va cuta
fiierul i va iniializa extragerea fiierului de pe disc. Cnd fiierul este
citit n memorie, este trimis napoi un rspuns coninnd fiierul cerut,
adugnd un antet HTTP.
A fost analizata reducerea supraincarcarii creata de operaiile cu date
(copiere, verificarea sumei de control). Va fi analizata reducerea
supraincarcarii creata de controlul implicat n procesarea unui pachet
(trimiterea/recepia unui pachet) si apoi la aplicatia de reea, serverul Web.
Numr
P8
Principiu
Utilizare
Trecerea dincolo de apelurile de sosire
Apel de plecare
utilizate n specificaii
Procesare pe mesaj, nu pe nivel
x-Kernel
P8
Protocol de legtur implementat cu cod
Potrivirea variantelor
P13
utilizator
Proces per acces la disc
Flash
P13
Modularizare pe sarcini, nu pe clieni
Server Web Haboob
P13
Mapri VM pentru evitarea copiilor
Flash
P4
n cache i aplicaie
Arbore bitmap
ufalloc() rapid
P15
Calculul incremental al vectorului de interes
select() rapid
P12a
Pasarea indiciilor de la protocol la select()
P9
Reinerea intereselor de-a lungul apelurilor
P12
Mutarea proteciei din kernel n adaptor
ADC-uri
P3c
Autorizarea adaptorului de ctre Kernel la
P2
iniializare
Intreruperi comasate de procese
Majoritatea OS
P13
Executarea protocolului n contextul
LRP
P2b
procesului de recepie
Figura 6.1. Tehnici de reducere a antetelor de control si principiile corespondente
125
Client 1...Client 50
write()
read()
TCP/IP
Sistem fisiere
Bus
Pachet
receptionat
Client 51...Client 74
Client 75
Aplicatia
serverului
Web
FindActive()
Kernel
CPU
Memorie
Disc
Adaptor de retea
Retea
Figura 6.2. Antetul de control implicat in manipularea unei cereri GET la un server
128
Manipulator
de receptie
intreruperi
afisare-date
primite
transport-date
primite
reteareceptie
Proces
transmitator
afisare-date
transportalocare port
reteaexpediere
transporttransmisie
Manipulator
tastatura
manipulator
tastatura
transportpregatit de
transmisie
reteatransmisie
Intrerupere
Figura 6.3. Implementarea unui protocol utilizand apeluri de transmisie
129
131
132
133
Fig 6.6 Dou alternative simple pentru structurarea unui server Web:(1) folosirea unui
singur proces (sau fir) per client; (2) implementarea unui proces unic care folosete un
manager de evenimente pentru a raporta procesului starea I/O a fiecrui client.
135
136
Fig. 6.7 Dou propuneri de arhitecturi Web ( diferite de cele din fig. 6.6) : (3) procese
lansate de evenimene (event-driven) si procese ajutatoare; (4) arhitectura pe niveluri a
proceselor lansate de evenimente
137
138
Apel:
verific dac descriptorul este pregtit; dac nu, ncarc ID-ul firului
aplicaiei n coada de ateptare selectat a descriptorului. Kernel-ul pune
n adormire firul aplicaiei apelante, dac nu exist descriptori pregtii.
Acest lucru necesit investigarea tuturor descriptorilor selectai, indiferent de ci sunt
pregtii de fapt. Acest pas este mai costisitor dect simpla scanare a bitmap-ului.
Redescoperire:
139
140
141
142
143
146
147
148
149
greu se poate face ceva ieit din comun, ca structurarea fiecrui nivel ca un
proces separat, fr apeluri la nivelurile superioare. Din fig.6.3 trebuie
desprins ideea profund a procesarii la nivelul utilizatorului. Proiectarea
de reele la nivel de utilizator, mpreun cu canalele dispozitivelor de
aplicaie fac posibil existena unor tehnologii precum VIA, care vor face
parte n curnd din sisteme reale, pentru a evita apeluri de sistem la
trimiterea/recepionarea pachetelor.
Pe de alt parte, arta procesrii structurate n contextul aplicaiei, de
exemplu un server Web, s-a bucurat de tot mai mult atenie n ultimul
timp. In timp ce serverele conduse de evenimente (mpreun cu processele
ajuttoare) echilibreaz maximizarea concurenei i minimizarea ncrcrii
datorat comutrii de context, aspectele legate de ingineria software las
nc multe ntrebri fr rspuns. Va fi suficient abordarea lansat-de evenimente n mediul de producie, cu modificri i depanri frecvente?
Un pas inainte l reprezint abordarea condus de evenimente, pe nivele,
ns ingineria serverelor Web mari va necesita cu siguran mai mult efort.
Abordarea condus de evenimente se bazeaz pe implementarea rapid a
apelului select() sau a funciilor echivalente cu acesta. Abordrile Unix au
probleme fundamentale de scalabilitate ; sistemele de operare mai
populare, precum Windows, au API-uri mult mai eficiente
Ideea foarte important privind standardul VIA o reprezint faptul c se
permite aplicaiilor s comunice direct cu dispozitivele de reea, folosind o
interfa virtual protejat. Ideal, adaptorii sunt astfel proiectai nct s
permit funcionarea mecanismelor de tip VIA sau similare. Intreruperile
sunt evident de neevitat, aceast problem poate fi ns ameliorat
folosind amestecul i polling-ul n medii potrivite.Figura 6.1 listeaz
tehnicile discutate n acest capitol i principiile corespunztoare.
6.8. Exercitii
1. Filtre de pachete i apeluri : La descrierea apelurilor (fig.6.3)
sistemul i-a dat seama pentru care aplicatie era destinat un anumit
pachet, prin faptul c apela o rutin de transport. De ce mai e necesar
filtrarea pachetelor? Ce presupuneri implicite au fost fcute aici?
2. Compararea modelelor de structurare a serverelor Web : au
fost comparate diferite mecanisme de structurare a serverelor prin
intermediul unor metrici simple ca eficiena planificrii i concurena
CPU. Considerati i celelalte dou metrici n procesul de comparare.
Concurena la disc : Unele sisteme au discuri multiple i exist o
planificare a discurilor. Intr-un asemenea mediu se pune ntrebarea dac
la o abordare condus de evenimente ar putea apare probleme, n
comparaie cu abordarea multiproces. Vor apare probleme i la
abordarea condus de evenimente care dispune i de procese helper?
Acumularea statisticilor: Serverele Web trebuie s dein informaii
statistice referitoare la structurile de utilizare pentru a ine evidena. Vor
fi aceste statistici mai complexe la arhitecturile proces-per-client i fir de
execuie-per-client? De ce este mai simplu ntr-o arhitectur condus de
evenimente?
3. Algoritmi versus algoritmic n reimplementarea ufalloc():
Se determina modul cel mai eficient de reimplementare a funciei
ufalloc(), pentru a gsi cel mai mic descriptor nealocat.
150
151
CAPITOLUL 11
CAUTAREA PENTRU ASOCIEREA PREFIXELOR
Considerm o baz de date cu avioanele ce vin/pleac dinspre/spre
Londra ctre sute de orae americane. O soluie ar fi precizarea cilor ctre
fiecare destinaie. Dac majoritatea zborurilor ctre America trec prin
Boston, exceptnd zborurile spre California, care trec prin Los Angeles,
putem reduce baza de date de la sute de locaii, la dou locaii tip prefix:
(USA* Boston; USA.CA.* LA). Problema ce apare folosind aceast
reducere este: oraul destinaie USA.CA.Fresno se va potrivi cu ambele
prefixe: USA* i USA.CA.*; baza de date trebuie s returneze cea mai lung
potrivire (USA.CA.*)/the longest-prefix-match. Astfel, prefixele se folosesc
pentru comprimarea bazelor mari de date, cu costul unei cutri mai
complexe pentru cea mai lung potrivire .
Internet-ul utilizeaz acelai principiu. n anul 2004 ruterele de tip core
memorau 150.000 prefixe, n loc de un miliard de intrri pentru fiecare
adres de internet posibil. Pentru un ruter de tip core, toate calculatoarele
din cadrul unei universiti (ca UCSD) vor fi probabil gsite cu aceeai
adres salt/hop (adresa ruterului de intrare/ieire n/din subreteaua de
comunicaii). Dac tuturor calculatoarele din cadrul UCDS le vor fi date
aceleai seturi iniiale de bii (numrul reelei sau prefixul), atunci ruterul va
putea memora o intrare n loc de sute de intrri pentru fiecare calculator din
UCDS. Tehnicile i principiile corespunztoare sunt prezentate n fig.11.1.
Numr
P2a, P10
P2a, P10,
P4a
P11
Principiul
Precalculul indicilor
Indicii calculai se transmit la momentul
rulrii.
Exploatarea hardware-ului comutatorului
ATM
Memorarea ntregii adrese IP n cache
Cutare n cache-uri
P5
CAM-uri
P4b
Expansiune controlat
P13
Cutare eficient
Adaug stri marker
Precalcularea evoluiei
marker-ilor
Precalculeaz domeniul pentru potrivirea
prefixelor
Tehnica de c utare
Comutare de etichet
Comutare IP.
Cutare
prefixelor
binar
152
Notaia cu masc este de fapt mai general din cauz c se pot folosi mti nenvecinate,
la care 1-urile nu sunt neaprat consecutive pornind de la srtnga. Astfel de definiii ale
reelelor sunt din ce n ce mai puin folosite i nu exist n tabelele de prefixe ale ruterelor
core.
153
154
155
Observaii
1)250000 de fluxuri concurente n backbone
2)50% sunt confirmri TCP
3)Cutare dominat de accesrile memoriei
4)Lungimea prefixelor 8 - 32
5)150.000 prefixe actuale i rute multicast i
gazd
6)BGP instabil, multicast
7)Vitezele mari necesit SRAM
8)Ipv6, ntrzieri multicast
Inferente
Memorarea cache lucreaz slab n ruterele
backbone
Pentru pachetele de 40 bii e necesar
cutarea cu viteza liniei
Viteza cutrii msurat de numrul de
accesri ale memoriei
Schemele naive cer 24 de accesri ale
memoriei
n urma creterii
500.000 -1.000.000 prefixe
Actualizare n timp de
milisecunde-secunde
Duce la minimizarea memoriei
Decisiv e lookup pe 32bii
156
157
D i
D j
D -
B,j
B, -
A, i
Nod A
Tabel rutare
S
Tabel rutare
Fig. 11.3 Cutarea destinaiei prin utilizarea de ctre fiecare ruter a unui index de trecere
n tabelul de transmisie a urmtorului ruter
Cost 5
Cost 6
Nod D
D, 5
D, 6
Cost 3
Cost 1
Nod A
Nod B
D, 5, i
D, 5, j
Tabel
trimis de A
D, 5, j
Tabel
trimis de B
Nod R
Fig 11.4 Setarea indicelor niruirii, sau modificarea niruirii prin
rutarea Bellman Ford
158
R1
I,L
L
M
D
Procesor
Slow path
Fast path
160
161
Termenul trie deriva din retrieval. Din cauza etimologiei sale unii sustin ca ar trebui
pronuntat ca si tree, dar altii sustin varianta try, pentru a face distinctia fata de
termenul mai general tree.
In fig.11.7 acest lucru e facut folosind un sir text (de ex.01) pentru a
reprezenta pointerii care ar urma in ramura unicale. Astfel, in fig.11.7, doua
noduri ale arborelui ordonat (continand fiecare doi pointeri) din calea spre
P3, au fost inlocuiti de un singur sir text, de 2 biti. Dar nu s-a pierdut
informatie prin aceasta transformare (ca exercitiu, determinati daca mai e
vreo cale prin arbore care poate fi comprimata asemanator).
Pentru cautarea celei mai lungi potriviri a prefixului addresei destinatie D,
se folosesc bitii lui D pentru a trasa calea prin arbore. Calea incepe cu
radacina si continua pina ce cautarea esueaza prin terminare la un pointer vid
ori la un sir text care nu se potriveste complet.In timp ce urmareste calea,
algoritmul tine evidenta ultimului prefix numarat la un nod de pe cale. Cand
cautarea esueaza, acesta este cea mai lunga potrivire a prefixului si e
162
mentionat este faptul ca prin expandarea lui P6= 1000 de la patru biti la
sase biti, se intra in coliziune cu P7= 100000 si astfel se renunta la P6.
11.5.1 Arbori ordonati cu pas fix
In fig.11.9 e prezentat un arbore ordonat pentru aceeasi baza de date ca cea
din fig.11.8, folosind un arbore expandat cu pas fix, de lungime 3. Astfel
fiecare nod al arborelui foloseste 3 biti. Intrarile replicate in nodurile
arborelui din fig.11.9 corespund exact prefixelor expandate din dreapta
figurii 11.8. De exemplu, P6 din fig.11.8 are trei expandari
(100001,100010,100011) .
Aceste trei prefixe expandate indica spre pointerul 100 a nodului radacina
din fig.11.9 (deoarece toate cele trei prefixe expandate incep cu 100 ) si sunt
memorate in intrarile 001, 010, 011 ale copilului din dreapta nodului
radacina. De mentionat este ca intrarea 100 in nodul radacina are prefixul
memorat P8 (pe langa faptul ca pointerul indica spre expansiunea lui P6),
deoarece P8= 100 este el insusi un prefix expandat.
Figura 11.9 Arbore ordonat expandat (care are doi pasi de cate 3 biti) corespunzator bazei
de date de prefixe din fig.11.8.
165
patru elemente si codand lungimea 2 cu pointerul spre nodul cel mai din
stanga. Codarea pasului necesita 5 biti. Dar, arborele ordonat cu pas variabil
din fig.11.10 are cu patru intrari in tabela mai putine decat arborele din
fig.11.9.
Exemplul motiveaza alegerea pasilor pentru minimizarea volumul de
memorie al arborelui. Deoarece expandarea face un compromis memorietimp, de ce sa nu minimizamnecesarul de memorie prin optimizarea gradului
de libertate (P13), pasii folositi in fiecare nod ? Pentru alegerea pasilor
variabili, proiectantul trebuie sa specifice mai intai numarul de accesari ale
memoriei in cazul cel mai defavorabil.De exemplu, cu un pachet de 40 de
octeti la 1 Gbps si un DRAM de 80 nsec, avand bugetul de timp de 320
nsec, sunt permise doar patru accesari ale memoriei. Acest lucru
conditioneaza numarul maxim de noduri in orice cale de cautare (patru
pentru exemplul considerat).
Daca inaltimea arborelui este data, pasul poate fi ales pentru a minimiza
memoria. Acest lucru poate fi facut in cateva secunde folosind programarea
dinamica, chiar si pentru baze mari de date de 150.000 de prefixe. Un grad
de libertate(pasii), e optimizat pentru minimizarea memoriei folosita pentru o
inaltime data cea mai defavorabila.
Un arbore ordonat se spune ca e optimal pentru o inaltime h si o baza de
date D, daca arborele are cel mai mic spatiu de memorare dintre toti arborii
ordonati cu pas variabil pentru baza de date D, si inaltimea nu mai mare
decat h. Se arata usor ca arborele din fig.11.10 e optimal pentru baza de date
din stanga figurii 11.8 si inaltimea 2.
Problema generala a alegerii pasul optim poate fi rezolvata recursiv (fig
11.11). presupunem ca inaltimea arborelui trebuie sa fie 3. Algoritmul alege
mai intai o radacina cu pasul s. Cei y = 2s pointeri posibili din radacina pot
conduce spre y subarbori nevizi T1 ,..., Ty . Daca multimea de s pointeri indica
spre subarborele Ti , atunci toate prefixele din baza de date originala D care
incep cu pi trebuie memorate in Ti . Numim setul de prefixe Di .
Presupunem ca putem gasi recursiv Ti optimal pentru inaltimea h 1 si
baza de date Di . Avand un acces la memorie folosit la nodul radacina, au
ramas doar h 1 accese la memorie pentru a parcurge fiecare subarbore Ti .
Notam cu Ci necesarul de spatiu de memorare, numarat in locatii de tabele,
pentru Ti optimal. Atunci, pentru un pas s al radacinii fixat, costul arborelui
optimal rezultat C ( s ) este 2 s (costul nodului radacina in locatii de tabel)plus
y
1 s 32 , care minimizeaza s.
O folosire naiva a recursivitatii duce la subprobleme repetate. Pentru a
evita subproblemele repetate. Algoritmul construieste mai intai un arbore
ordonat 1-bit.De mentionat este ca oricare subarbore ordonat Ti (fig.11.11)
trebuie sa fie un subarbore N al arborelui 1-bit. Apoi, algoritmul foloseste
programarea dinamica pentru construirea costului optim si pasii arborelui
pentru fiecare subarbore N din arborele original 1-bit, pentru toate valorile
1-h ale inaltimii, construind de jos in sus, de la subarborele de cea mai mica
166
inaltime spre subarborele de cea mai mare inaltime. Rezultatul final sunt
pasii optimi pentru radacina (subarborelui 1-bit) cu inaltimea h.
Complexitatea finala a algoritmului este O N W 2 h , unde N este
167
169
170
final este c doar 1/Max din memorie este utilizat sigur, deoarece toate
cererile de alocare viitoare pot fi de dimensiune Max.
Utilizarea locatorului de memorie o translateaz direct n numrul
maxim de prefixe pe care un chip de cutare o poate suporta.
Presupunem c, ignornd locatorii, 20MB de memorie on-chip poate
suporta 640.000 de prefixe n cel mai defavorabil caz. Dac inem
seama de locator, i Max = 32, chip-ul poate garanta suportarea a doar
20.000 de prefixe.
Nu ajut la nimic c vnztorii avertizau asupra celui mai defavorabil
caz de 100.000 de prefixe cu un timp de cutare de 10 nsec i un timp
de actualizare de o microsecund. Aadar, avnd n vedere c algoritmii
de cutare a prefixelor comprim frecvent structurile de date pentru a
ncpea ntr-o memorie SRAM, aceti algoritmi trebuie i s proiecteze
o alocare rapid a memoriei i cu o fragmentarea minim.
Exista o limit care spune c: locatorii care nu compacteaz memoria
1
nu pot avea un raport al utilizrii mai bun dect
. De exemplu,
log 2 Max
acesta este 20 % pentru Max = 32. Deoarece aceast valoare este
inadmisibil, souliile algoritmice ce implic structuri comprimate de
date trebuie s utilizeze compactarea memoriei. Compactarea memoriei
const n mutarea blocurilor de memorie alocate, astfel nct s se
mreasc dimensiunea spaiilor libere din memorie.
Compactarea este puin folosit n sistemele de operare din motivul
urmtor. Dac o poriune de memorie M este mutat, atunci trebuie
corectai toi indicatorii care indic spre M. Din fericire, majoritatea
structurilor de cutare sunt structuri de tip arbore, n care oricare nod
este indicat ca vecin a cel mult unui nod. Meninnd un nod printe
pentru fiecare nod al arborelui, nodurile care indic spre un nod M al
arborelui pot fi modificate corespunztor cnd M este realocat. Din
fericire, indicatorul printe este necesar doar pentru actualizare si nu
pentru cutare. Deci, indicatorul printe poate fi memorat ntr-o copie
externa chip-lui, a bazei de date utilizat pentru actualizri n procesorul
de dirijare, fr a ocupa memoria SRAM intern chip-lui.
Chiar dup rezolvarea aceastei probleme, este necesar existena unui
algoritm simplu, care s decid cnd s se compacteze o anumit
poriune a memoriei. In literatura de specialitate exist tendina de a
utiliza compactori globali, care pot scana toat memoria ntr-un singur
ciclu de compactare. Pentru a limita timpii de intercalare trebuie s
existe o form de compactare local, care compacteaz doar o mic
poriune de memorie, din jurul regiunii afectate de actualizare.
11.11.1 Compactarea pe cadre
Pentru a arta ct de simple pot fi schemele de compactare locale, e
descris mai nti o schem foarte simpl care, dei face o compactare
minim, acoper totui 50% din cele mai defavorabile cazuri de utilizare
a memoriei. Apoi se va urmri mbuntirea utilizrii memoriei pn la
o valoare ct mai apropiat de 100%.
173
176
178
COMUTAIA
B3
Linie ieire
Planificare
B1
Cutare adrese
FIGURA 13.1. Modelul ruterului
Principiu
Acces extins la memorii
pentru vitez de lucru
179
Comutator
Datapath
P13
P5a
P11
P15
P3
P13
P14
P15
P14
P3
P15
P3b
P15
P3a
P15
P13
Gigaswitch
Knockout
AN-2
iSLIP
Juniper
T 640
Structura
Growth
Avici TSR
180
181
avea cel mult dimensiunea unei celule. Un comutator care trimite mai
multe pachete de dimensiune minim nspre diferite destinaii poate
mpacheta mai multe asemenea pachete ntr-un singur cuvnt, dar nu e
sigur c le poate extrage n acelai timp.
In ciuda acestui fapt, comutatoarele cu memorie partajat pot fi relativ
simple pentru un numr mic de porturi. Marele lor avantaj este c pot fi
optimale ca memorie i putere, deoarece datele sunt stocate/extrase in/din
memorie o singur dat. Comutatoarele hard sau crossbar, aproape
ntotdeauna necesit memorarea pachetelor de dou ori dublnd potenial
costurile de memorie i de putere. Este posibil extinderea ideii de
memorie partajat la comutatoarele de dimensiuni mai mari, folosind
ntreeserea aleatoare DRAM.
13.3 RUTERELE: DE LA MAGISTRALE LA CROSSBAR
Comutatoarele pentru rutere au evoluat de la cele mai simple
comutatoare cu mediu partajat (magistrale sau memorii), (fig.13.3a) la
comutatoarele crossbar mai moderne (fig.13.3 d). Un card de linie ntr-un
ruter sau comutator conine logica interfeei pentru o legtur de date
(linie pe fibr optic sau un Ethernet). Primele comutatoare au conectat
intern toate cardurile de linie, printr-o magistral de vitez mare
(asemanator cu o reeea locala LAN interna) pe care numai o pereche de
carduri de linie pot comunica simultan. Astfel dac cardul de linie 1 a
transmis un pachet nspre cardul de linie 2, nici o alt pereche de carduri
de linie nu mai poate comunica.
Pachet
MAGISTRAL
Card de linie 1
Card de linie 2
CPU
Card de linie 1
Card de linie 2
CPU M
MAGISTRAL
CPU (uri)
de rutare
CPU N
Card de linie 2
CPU 1
Card de linie N
Card de linie N
Pachet
CPU 1
Card de linie 1
CPU 2
Card de linie 2
MAGISTRAL
Pachet
CPU (uri)
de rutare
Pachet
FE 1
Card de linie 1
FE 2
Card de linie 2
FE N
Card de linie 2
182
183
Intrare 1
Intrare 2
Intrare 3
Ieire 1 Ieire 2
Ieire 3
FIGURA 13.5. Conecteaz intrarea de pe cardul de linie R la cardul de linie S, prin aducerea
tranzistorului n stare de conducie. La modelele moderne de crossbar aceast variant simpl
este nlocuit cu arbori de multiplexoare pentru a reduce capacitatea.
Al doilea rnd din figura 13.6 ncepe cu transmisia unei cereri de ctre
A pentru pachetul care este acum n fruntea cozii sale nspre portul de
ieire 2. Lui A i se returneaz un numr de bilet, T1, pentru portul 2. n
imaginea din mijlocul rndului 2, portul 1 anun c este pregtit pentru
T2, i portul 2 anun c este pregtit pentru biletul T1. Aceasta rezult din
figura din partea dreapt a celui de-al doilea rnd, unde A este conectat la
portul 2 i B este conectat la portul 1 i pachetele corespunztoare sunt
transferate.
Etapa 1
3 2 1 A
B
3 2 1
4 3 1 C
1
2
3
4
3 2 1 A
3 2 1 B
4 3 1 C
Cerere
1
2
3
4
Acordare bilet
3 2 1 A
3 2 1 B
4 3 1 C
T2 1
2
T1 3
A
3 2
3 2 1 B
4 3 1 C
T1
T2
T3
Etapa 2
A
3 2
3 2 1 B
4 3 1 C
1
2
3
4
A
3 2
3 2 1 B
4 3 1 C
Cerere
T1
4
Acordare bilet
1
2
3
4
Conectare
1
2
3
4
Conectare
Etapa 3
A
3
B
3 2
4 3 1 C
1
2
3
4
Cerere
A
3
B
3 2
C
4 3 1
1
2
3
T2
4
Acordare bilet
T1
T3
T2
T1
A
3
B
3 2
4 3 1 C
1
2
3
4
Conectare
FIGURA 13.6. n mecanismul de planificare ia-i un bilet, toate porturile de intrare au o singur
coad de intrare care este etichetat cu numrul portului de ieire cruia fiecare pachet i este destinat.
Astfel n primul cadru, intrrile A, B i C trimit cereri nspre portul de ieire 1. Portul de ieire 1 (sus,
mijloc) i acord primul numr lui A, cel de-al doilea lui B, etc., i aceste numere sunt utilizate pentru
a stabili o ordine serial pentru accesul la porturile de ieire.
3 2 1
3 2 1
4 3 1
Timp (conform cu
durata pachetelor)
A
B
C
A B C
A B
3
4
A B C
C
FIGURA 13.7 Blocare n fruntea liniei cauzat de variante de algoritmi ia-i un bilet.
Pentru fiecare port de ieire, o scar de timp orizontal este etichetat cu portul de intrare
care trimite un pachet ctre acel port de ieire n perioda de timp corespunztoare sau cu un
ptrat gol dac nu se transmit pachete. Se observ numrul mare de ptrate goale, ceea ce
denot o risip de oportuniti, ceea ce limiteaza paralelismul .
189
191
3
4
C
Cerere
1
2
3
1
2
3
1
3
4
1
3
2
3
1
3
-
1
3
3
-
1
2
3
4
C
Acord
1
2
3
1
2
3
1
3
4
B
C
a=1
3
4
Acceptare
Etapa 2
1
3
2
3
1
3
-
3
4
C
a=1
Cerere
1
2
3
4
C
Acord
1
3
2
3
1
3
-
1
3
3
-
1
2
3
4
C
Acceptare
Etapa 3
1
3
3
4
C
a=1
Cerere
1
2
3
4
C
Acord
1
2
3
4
C
Acceptare
FIGURA 13.8 Varianta iterativ paralel de asociere (PIM ), presupune ca toate intrrile s trimit n
paralel cereri ctre toate ieirile la care doresc s se conecteze. PIM utilizeaz aleatorizarea pentru a
face asocierea, astfel c ieirile care primesc cereri multiple aleg aleatoriu o anumit intrare, iar
intrrile care obin acorduri multiple aleg aleatoriu ieirea nspre care s transmit. Acest proces n trei
etape poate fi repetat pentru a mbunti dimensiunea asocierii.
193
1 g=A
A
a=1
2 g=A
B
a=1
C
a=1
3 g=A
4 g=A
Cerere
1
2
3
1
2
3
1
3
4
1
2
3
1
2
3
1
3
4
2
3
1
3
1
1
2
3
4
C
Alocare
1
2
3
1
2
3
1
3
4
A
a=2
1
2
3
1
2
3
1
3
4
1 g=B
2 g=A
B
a=1
C
a=1
3 g=A
4 g=A
Acceptare
Etapa 1, iteratia 2
1
2
3
1
2
3
1
3
4
1 g=B
A
a=2
2 g=A
B
a=1
C
a=1
3 g=A
4 g=A
Cerere
1
2
3
4
C
Alocare
1
2
3
4
C
a=1
Acceptare
Etapa 2, iteratia 1
2
3
1
3
1
-
A
a=2
B
a=1
1 g=B
C
a=1
4 g=A
2 g=A
3 g=A
Cerere
1
2
3
4
C
Alocare
2
3
1
3
1
-
2 g=B
B
a=2
C
a=1
194
1 g=C
A
a=3
3 g=A
4 g=A
Acceptare
1 g=C
A
a=3
2 g=B
B
a=2
C
a=1
3 g=A
4 g=A
Cerere
2
3
1
3
1
3
-
3
3
1
-
3
3
1
-
1
2
3
4
C
Alocare
2
3
1
3
1
3
-
A
a=3
3
3
1
-
A
a=4
3
3
1
-
A
a=4
1 g=C
2 g=B
B
a=2
C
a=1
3 g=A
4 g=A
Acceptare
Etapa 3, iteratia 1
3
3
1
-
1 g=C
A
a=3
2 g=B
B
a=2
C
a=1
3 g=A
4 g=A
Cerere
1
2
3
4
C
Alocare
1 g=A
2 g=B
B
a=2
C
a=2
3 g=B
4 g=A
Acceptare
Etapa 3, iteratia 2
3
3
1
-
1 g=A
A
a=4
2 g=B
B
a=2
C
a=2
3 g=B
4 g=A
Cerere
1
2
3
4
C
Alocare
1 g=A
2 g=B
B
a=2
C
a=2
3 g=B
4 g=A
Acceptare
A
B
C
1
2
A B C
B A
C A B
3
4
FIGURA 13.11 Evitarea blocrii HOL de ctre iSLIP crete debitul util din scenariul din figura 13.7
197
198
199
200
201
202
203
Dac ieirea este n jumtatea superioar (MSB al ieirii este 0), atunci
intrarea este direcionat ctre reeaua Delta N/2 superioar, dac ns
ieirea este n jumtatea inferioar (MSB=1) atunci intrarea este
direcionat ctre reeaua Delta N/2 inferioar.
Pentru a economisi la primul nivel 2 comutatoare de intrare, trebuie
grupate intrrile n perechi consecutive, fiecare pereche fcnd uz de
acelai comutator cu 2 intrri, cum se vede n fig.13.14. n acest fel, dac
cele 2 celule de intrare dintr-o pereche merg ctre 2 jumti de ieire
diferite, atunci ele pot fi comutate n paralel, altfel una va fi comutat iar
cealalt va fi abandonat sau stocat ntr-un buffer. Bineneles, acelai
proces poate fi repetat n mod recursiv pentru fiecare dintre reelele Delta
de dimensiune N/2, unde din nou exist un nivel de 2 x 2 comutatoare,
apoi 4 N/4 comutatoare e.t.c. Extinderea complet a unei reele Delta este
vizibil n prima jumtate a figurii 13.15. Se poate observa cum
construcia recursiv din fig.13.14 se regsete n conexiunea dintre
primul nivel i cel de-al doilea nivel din fig.13.15.
204
Figura 13.15: Efectuarea rutrii multicast copiaz de dou ori folosind o reea Benes.
Prima jumtate este o reea Delta i a doua jumtate este o reea Delta oglindit.
208