Sunteți pe pagina 1din 3

LUCRAREA 3

Comunicarea in cadrul sistemelor distribuite (II)

Consideraţii teoretice

1. Considerente de proiectare a protocoalelor în cadrul sistemelor distribuite

Sistemele rulează pe tetele locale (LAN). O mare parte a comunicaţiei este datorată
cererilor de execuţie a operaţiilor la distanţă. Al treilea considerent se referă la erori (errors) şi
la disfuncţionalităţi (faults). Erorile se refera la alterarea conţinutului mesajelor în timpul
transmisiei sau la pierderea de pachete. Disfuncţionalităţile se referă la 'căderi' ale unor maşini
din reţea neputând fi recuperate doar prin intermediul protocolului.

2. Considerente legate de protocoalele de comunicaţie de înaltă performanţă

2.1. Rate Control


Mecanismul care permite prevenirea inundării cu cereri a unui server de către un client
se numeşte rate control.
The Versatile Message Transport Protocol (VMTP) propune un mecanism pentru rate
control bazat pe rafale de pachete (Packet blasts). O datagaramă mai mare este împărţită în 32
de pachete. Fiecare pachet din grup este etichetat cu o secvenţă de 32 biţi în care doar unul
dintre ei este setat pe 1. La capătul la care se face recepţia se face un OR între secvenţele
conţinute în pachetele recepţionate. A fost introdusa noţiunea de interpacket gap, ce
semnifică o mică întârziere între pachete.
Amoeba foloseşte un mecanism pentru rate control bazat pe stop-and-wait care
acţionează la nivelul unui pachet individualizat. Fiecare pachet este confirmat separat şi
următorul pachet este transmis doar după ce precedentul a fost recepţionat.

2.2 Folosirea datagramelor mari


Cele mai multe dintre interfeţele de reţea posedă un mecanism prin care un pachet
poate fi transmis ca şi conţinând un header şi un corp care pot să se afle în locuri diferite în
memorie şi deci nu neapărat într-o zona continuă aşa cum apare de fapt mesajul în timpul
transmisiei sale. Această capacitate se numeşte scatter-gather şi este extrem de folositoare
atunci când se folosesc datagrame mari. Mecanismul scatter-gather este folositor de
asemenea pentru a accelera operaţiile la distanţă pentru fişierele de I/E.

2.3. Sweep timers


Protocoalele de comunicaţie au nevoie de timer-e în vederea corectării anumitor erori.
Pornirea şi oprirea timer-elor costă timp. Este puţin probabil ca timer-ele să ajungă la zero,
valorile lor fiind folosite doar pentru corectarea erorilor şi de aceea nu necesită o mare
acurateţe. Se poate emite codul de setare şi resetare a timer-ului şi se poate înlocui cu un
thread al kernel-ului care se trezeşte periodic şi face o trecere în revistă a tuturor structurilor
de date a tuturor protocoalelor.
Acest thread pentru timer-ul de trecere în revistă (sweep timer thread) va rula cu
prioritatea cea mai scăzută, adică efectiv în background.

3. Exemplu detaliat: protocoalele Amoeba


Amoeba în mod tipic are 5 componente:
1. Workstations care se folosesc pentru a furniza o interfaţă de nivel înalt utilizatorului.
2. Un 'processor pool' constând dintr-un număr de procesoare puternice şi din multi-
procesoare fiecare cu mai mulţi Mb de memorie folosite pentru a executa cele mai multe
dintre aplicaţii.
3. Maşini server, inclusiv file server-e, directory server-e, authentification server-e şi
accounting server-e.
4. Gateways pentru comunicaţia cu reţelele WAN ce au ca sistem de operare Amoeba.
5. O LAN rapida ce leagă între ele toate aceste componente.
Toata comunicaţia are loc între procese (threads) unul dintre ele având rol de client, iar
celalalt de server. Actul de a transmite o cerere către server şi de a aştepta răspunsul se
numeşte message transaction.
Un client realizează acest lucru printr-un apel de genul:
trans(reqhdr, reqbuf, reqlen, rephdr, repbuf, replen);
La nivelul server-ului, apelul de recepţie este:
getrequest(server, reqhdr, reqbuf, reqcnt);
După ce cererea a fost rezolvată răspunsul este returnat prin intermediu unui apel:
putreply(rephdr, repbuf, repcnt);

3.1. Naming
Procesele nu pot sa comunice în lipsa unui mecanism de naming (denumire) care să
permită specificarea numelui celui cu care se doreşte comunicarea. În Amoeba numele se
referă la servicii. Obiectele din Amoeba sunt denumite folosind capabilităţile (capabilities).
Capabilităţile în cadrul Amoeba se împart în două părţi. Prima specifica serviciul care
gestionează obiectul la care se referă capabilitatea, iar a doua parte specifică obiectul propriu-
zis împreună cu operaţiile pe care capabilitatea le permite proprietarului să le invoce (Fig.1).

Fig. 1. Capabilităţi Amoeba

Amoeba furnizează un serviciu care mapează denumiri de genul celor din Unix pe
capabilităţi (şi astfel şi pe porturi). Acest serviciu este denumit Directory Service. Numărul
de port trebuie mapat pe spaţiul de adrese de reţea pentru a desemna unul dintre procesele
server ce aparţin serviciului. Acest lucru se numeşte localizarea unui proces server.
Procesele client sau server au de asemenea un port adiţional unic (FLIP port) care
poate fi folosit pentru a localiza un proces client sau server. Există două tipuri de operaţii de
localizare: prima care mapează un port de serviciu pe un port FLIP şi o adresă de reţea, şi o a
doua care mapează un port FLIP pe o adresă de reţea. Primul tip este permis a se executa doar
la iniţierea unui nou message transaction.

3.2. Protocoale
Amoeba furnizează două niveluri de protocoale. Cel mai de jos furnizează servicii de
rate control, securitate pentru datagrame, dar ele nu sunt total sigure (Fast Local Internet
Protocol sau FLIP). Nivelul superior, numit transaction level, furnizează un serviciu de
operaţii la distanţă care este sigur. Interfaţa de deasupra acestui nivel constă în apelurile trans,
getrequest şi putreply.
3.3. Implementarea FLIP-ului
Amoeba foloseşte packet-switching-ul.
FLIP foloseşte mecanismul stop-and-wait la nivelul pachetelor: o datagramă mare este
fragmentată în pachete şi un fragment este transmis doar după ce a sosit confirmarea de
primire a pachetului precedent.

3.4. Implementarea nivelului transaction


Pentru a furniza tranzacţii sigure, nivelul transaction foloseşte întârzieri şi retransmisii.
Fiecare mesaj ce semnifică o tranzacţie primeşte un număr de secvenţă de tranzacţie
(transaction sequence number) care este incrementat în cadrul tranzacţiei relative la fiecare
FLIP port.
4. Exemplu: VMTP

The Versatile Transaction Protocol este un protocol proiectat pentru V system.


VMTP este un protocol de transport special proiectat să suporte modelul de comunicaţie prin
tranzacţii.
Cel mai simplu protocol VMTP este protocolul cerere / răspuns. Un mesaj (cerere sau
răspuns) este transmis in unul sau mai multe grupuri de pachete. Un pachet de reţea poate
conţine unul sau mai multe segmente de bloc. Un şir de 32 biţi, denumit delivery mask,
indică spre segmentele de bloc ale unui grup de pachete care se afla într-un pachet de reţea.
Noţiunea de interpacket gap asigură suficient timp între pachete astfel încât o maşina
mai lentă decât maşina care trimite pachete să le poată prelua.
Un server poate eticheta un răspuns pentru a indica dacă o tranzacţie a fost încheiată.
Un identificator de server poate sa reprezinte un proces server individual sau un grup de
procese server. Pentru comunicaţia in timp real, VMTP furnizează datagrame (mesaje care nu
necesită un răspuns şi deci care nu blochează sender-ul) şi patru nivele de prioritate pentru
mesaje. Fiecare tranzacţie poate fi securizată separat.

5. Exemplu: Mercury

Proiectul Mercury studiază problema comunicării eterogene.


RPC are dezavantajul că apelantul este blocat în timp ce cererea începe să fie
transmisă, în timp ce apelul se execută şi în timp ce răspunsul este returnat.
Sistemul de comunicaţie din Mercury încearcă să producă o asemenea dirijare a
apelurilor astfel încât în absenţa erorilor, programatorului să i se pară ca toate apelurile RPC
au fost făcute consecutiv.

3. Mersul lucrării

Se vor prezenta aspectele teoretice descrise în lucrare.


Se va răspunde la întrebări:
- Care sunt diferenţele dintre disfunctionalităţi şi erori ?
- Care sunt diferenţele dintre disfunctionalităţi şi erori ?
- Ce înţelegeţi prin noţiunile de 'rate control', 'interpacket gap', 'scatter-gather',
'sweep timer' ?

S-ar putea să vă placă și