Sunteți pe pagina 1din 43

Arhitecturi si modele ale SD

Capitolul 2

2013

Tipuri de modele
• Modele fizice
– Descriu componentele hardware ale unui SD in termenii dispozitivelor
de calcul (calculatoare, telefoane mobile, etc.) si retelelor de
interconectare.
• Modele arhitecturale
– Simplifica si abstractizeaza tipurile componentelor si a functiilor lor.
– Defineste componentele SD, modul in care ele interactioneaza (roluri
functionale si sabloane de comunicare / interactiune) si modul lor de
mapare pe reteaua de comunicatie a unui SD
• Modele fundamentale
– Modele de interactiune
– Modele ale erorilor
– Modele de securitate

2013
Generatii de SD I

• Model fizic de baza:


– Infrastructura de retea
– Comunicare prin mesaje

• SD timpurii:
– Aparute ca raspuns la dezvoltarea tehnologiei LAN
– Gama redusa de servicii: partajare imprimanta, fisiere;
email; transfer de fisiere
– Opereaza la nivel intra-organizational
– Calitatea serviciului in stadiu embrionar
2013

SD in Internet
• Aparute la inceputul anilor ’90 prin raspandirea Internet-ului ca retea de
retele.
• Ofera servicii la nivel global, inter-organizational
• Eterogenitatea este mare => s-au dezvoltat standardele (ex. Servicii Web)
• S-a urmarit asigurarea calitatii serviciilor
• Internet-ul este o multime de retele
(sisteme) autonome interconectate printr-
o retea de baza – core network sau
backbone.
• In telecomunicatii retelele autonome se
mai numesc retele de acces – access
networks.
• Retelele autonome se conecteaza la
reteaua de baza prin porti externe –
exterior gateway.
• Retelele aotonome se interconecteaz
aintre ele prin porti interne – interior
gateways.
2013
SD contemporane
• Noi tendinte datorate raspandirii calcului mobil (dispozitive portabile),
calculului ubicuu (raspandirea resurselor de calcul cu costuri din ce in ce
mai scazute), calculului in cloud (utility computing si virtualizare) si a
arhitecturilor cluster.
• Ex. Internet of Things: obiecte identificabile si reprezentarile lor virtuale.

2013

Sumar al generatiilor de SD

2013
Sisteme de SD
• In 2006 Linda Northrop a propus intr-un raport al SEI – Software
Engineering Institute termenul de ULSS – Ultra-Large-Scale System.
• ULSS au urmatoarele caracteristici:
– Compuse din sisteme independente dpdv operational si
– administrativ
– Dezvoltate printr-un proces evolutiv
– Au comportament emergent (de exemplu facilitati de
autonomie, autoconfigurare si autoorganizare – proprietati self-*)
– Distinctia intre utilizatorii si sistem este estompata, oamenii devenind componente de
sistem si furnizori de servicii, putand influenta comportamentul emergent al
sistemului (ex. – actor-agent systems, human-based computation, crowdsourcing).
• Exemplu: sistem de management al mediului si predictie a dezastrelor
naturale (ex. inundatii). Integreaza:
– Sisteme de senzori pentru monitorizarea diversilor parametrii ai mediului (de
exemplu debitul raurilor, cantitatea de precipitatii, etc.)
– Sisteme de simulare pentru predictia unor evenimente neasteptate (cantitati mari de
precipitatii, topirea masiva a zapezii, etc.)
– Sisteme de avertizare timpurie a populatiei 2013

Modele arhitecturale
• Cele trei fatete ale unui model arhitectural:
– Elementele arhitecturale de baza ale unui SD
– Sabloane arhitecturale (engl. architectural patterns)
utilizate separat sau in combinatie pentru dezvoltarea SD
– Platforme middleware disponibile pentru diverse stiluri de
programare a SD

2013
Elemente arhitecturale

• Elementele arhitecturale:
– Entitatile comunicante din
care este compus un SD.
– Paradigmele de comunicare
ale entitatilor unui SD.
– Rolurile si responsibilitatile
(statice sau dinamice)
entitatilor unui SD.
– Maparea entitatilor pe
infrastructura fizica
distribuita a SD
(plasamentul lor).

2013

Entitati comunicante
• Din perspectiva sistemica, entitatile comunicante intr-un SD
sunt procese.
• Exista doua exceptii de la aceasta regula:
– In medii cu capabilitati de calcul restranse, cum sunt retelele de
senzori, SO si / sau software-ul de baza nu suporta conceptul de
proces, caz in care entitatile comunicante sunt noduri.
– In majoritatea SD moderne, conceptul de proces este suplimentat cu
conceptul de fir (engl. thread), acesta reprezentand de fapt un punct
final al unei interactiuni.
• Din perspectiva programatica, entitatile comunicante ale unui
SD pot fi:
– Obiecte
– Componente
– Servicii
2013
Obiecte
• Obiecte:
– Un SD este format dintr-o multime de obiecte distribuite interactive.
– Ele sunt accesate prin intermediul unor interfete definite printr-un
IDL – Interface Definition Language.
• Exemplu: interfata Remote din Java RMI.

• Codul obiectelor se distribuie prin intermediul claselor.


• Crearea unui obiect prin refolosirea unei biblioteci de clase
presupune:
– programare (coding)
– compilare

2013

Componente
• Componente:
– O componenta specifica (in plus fata de interfete)
dependentele fata de componentele si interfetele ce
trebuie sa fie prezente pentru ca ea sa-si poata realiza
functia.
– Au un grad mai mare de reutilizabilitate decat obiectele.
Este posibila construirea unei aplicatii din componente
existente (prefabricate), similar cu modul in care un
inginer construieste un ansamblu folosind module
prefabricate.
– Sunt conforme unui model de componenta ce defineste
modul lor de interactiune, compunere, configurare,
implementare, documentare si instalare (engl.
deployment).
– Ex: EJB – Enterprise Java Beans, COM+ (.NET),
CORBA, FIPA si JADE (agenti software), Open Services
Gateway initiative (OSGi, Equinox Eclipse project).
2013
Servicii
• Servicii:
– Se bazeaza pe i) abstractizarea comportamentului si ii)
accesul printr-o interfata.
– Serviciile se bazeaza pe protocoale standard de interactiune
si de descoperire.
– Incurajeaza dezvoltarea aplicatiilor prin cuplaj slab ce pot
depasi granitele unei singure organizatii. Obiectele si
componentele se folosesc pentru dezvoltarea de aplicatii cu
cuplaj strans, uzual in cadrul aceleiasi organizatii.
• Exemple:
– Serviciile Web, bazate pe standardele Web: HTTP si XML.
– Arhitectura orientata pe servicii – service oriented
architecture, SOA.
2013

Paradigme de comunicare

• Trei paradigme:
– comunicare intre procese,
– invocare la distanta,
Entitate A ? Entitate B

– comunicare indirecta.

• Comunicare intre procese:


– Suport pentru comunicare intre procese intr-un SD.
– Primitive pentru transfer de mesaje
– API pentru acces la primitivele de comunicare intre procese
(ex. comunicare prin socluri)

2013
Invocare la distanta

• Invocare la distanta:
– Protocoale cerere – raspuns (engl. Request-Reply).
Reprezinta o tehnica de comunicare prin schimb de mesaje
in arhitecturile client – server. Un exemplu este protocolul
HTTP pentru aplicatiile Web.
– Apel de proceduri la distanta (engl. Remote Procedure Call
– RPC). Presupune apelul de proceduri aflate in alt spatiu de
adrese decat apelantul (in alt proces) similar cu apeluri
locale.
– Invocare de metode la distanta (engl. Remote Method
Invocation – RMI). Este extensia RPC pentru programarea
orientata pe obiect.
2013

Comunicare indirecta I
• Comunicarea indirecta decupleaza expeditorul de receptor:
– Decuplare spatiala
– Decuplare temporala
• Exista o multime de paradigme pt comunicare indirecta.
• Comunicatie de grup
– Permite livrarea unui mesaj de la un expeditor la o multime de expeditori, adica
avem un sablon de comunicare unu-multi.
– Se bazeaza pe existenta abstractiei de grup. Un grup este reprezentat printr-un
identificator de grup.
– Receptorii se pot inscrie sau pot parasi dinamic un grup.
– Grupul este responsabil cu gestiunea membrilor sai.
• Publicare-inscriere (engl. Publish-subscribe)
– Numeroase sisteme (cel din domeniul financiar) disemineaza informatie.
– Intr-un astfel de sistem, un numar mare de producatori (engl. publishers) ce
distribuie elemente informationale, numite si evenimente catre un numar mare de
consumatori (engl. subscriber).
– Acest mod de comunicare permite livrarea efeicienta a informatiei de la producatori
catre consumatorii interesati.
2013
Comunicare indirecta II
• Cozi de mesaje
– Ofera un serviciu punct-la-punct (engl. point-to-point).
– Expeditorii trimit mesaje catre o coada de mesaje, in timp ce receptorii sunt
instiintati ori de cate ori un mesaj este depus in coada respectiva.
– Receptorii au facilitatea de filtrare explicita a mesajelor de interes din coada folosind
sabloane (engl. patterns). Se poate filtra atat dupa continut, cat si dupa expeditor.
• Spatii de tuple
– Mesajele sunt reprezentate prin date structurate numite tuple.
– Comunicarea intre procese se realizeaza indirect prin spatii persistente de tuple.
– Procesele pot depune tuple in spatiul de tuple, iar alte procese le pot citi sau elimina
folosind filtre sau sabloane.
– In inteligenta artificiala se cunoaste modelul blackboard, ce reprezinta o baza de
cunostinte partajata folosita pentru rezolvarea colaborativa de probleme, similar unui
proces de brainstroming.
• Memorie partajata distribuita
– Se bazeaza pe furnizarea unei abstractii a conceptului de memorie partajata (sau
comuna, engl. shared).
– Procesele pot scrie respectiv citi din memoria partajata ca si cum aceasta ar fi parte a
spatiului lor de adrese.
2013

Roluri si responsabilitati
• Procesele unui SD interactioneaza si se coordoneaza pentru
realizarea unor activitati complexe.

• Adoptand o metafora organizationala, procesele unui SD


indeplinesc diverse roluri si responsabilitati predefinite, ce
impreuna definesc stilul arhitectural al SD.

• In functie de rolurile proceselor componente, deosebim doua


mari stiluri arhitecturale ale SD:
– Modelul client-server
– Modelul proceselor de acelasi rang (engl. peer-to-peer – P2P).

2013
Modelul client/server
Client invocation invocation Server

result result
Server

Client Key:
Process: Computer:

• Cel mai citat in literatura SD, cel mai important dpdv istoric si cel mai folosit.
• Exemple:
– Un server Web poate fi client al unui server local de fisiere
– Serverele Web si alte servicii Internet sunt clienti pentru un serviciu de DNS care traduce
numele de domenii Internet in adrese de IP
– Un motor de cautare (engl.search engine) permite utilizatorilor sa caute informatii despre
paginile Web intr-un index local, construit cu ajutorul unui program robot numit Web crawler.
Astfel motorul este in acelasi timp server pentru utilizatorii care-l consulta si client ce
foloseste HTTP sa-si construiasca indexul prin intermediul Web crwaler-ului.
• Critica a modelului client/server:
– Distinctia server ≠ client da un grad de centralizare. Server-ul este punct de strangulare in SD.
2013

Procese de acelasi rang (pereche, engl.peer)


• O aplicatie P2P este compusa dintr-un
numar mare de procese peer ce comunica
conform cerintelor aplicatiei.
• Procesele au roluri identice (nu exista
distinctia client ≠ server) si coopereaza pt a
realiza distribuit o sarcina. Fiecare proces
este responsabil cu mentinerea consistentei
resurselor aplicatiei si cu sincronizarea.
• O aplicatie P2P contine obiecte partajate si
replicate astfel incat sa se eficientizeze
procesarea si comunicarea.
• Modelul P2P foloseste o retea la nivel de
aplicatie (engl. overlay network) construita
peste o retea de calculatoare existenta.
• Se foloseste in contextul globalizarii
economice, oferind companiilor metode noi
de a-si imbunatati puterea de calcul cu
investitii minime in resurse hard si soft.
• Exemplu: Sistemul BitTorrent pentru
partajarea distribuita a fisierelor.
2013
Plasament
• Defineste plasamentul entitatilor (procese, obiecte, servicii) in
cadrul infrastructurii fizice a unui SD.
• Plasamentul este o problema de proiectare si va lua in calcul:
– Sabloanele de interactiune ale entitatilor SD
– Fiabilitatea masinilor si nivelul lor de incarcare
– Calitatea liniilor de comunicatie
• Plasamentul depinde si de aplicatie. Exista cateva reguli
generale care pot conduce la solutii bune.
– Maparea serviciilor pe servere multiple
– Caching
– Mobilitate (cod mobil si agenti mobili)

2013

Servicii furnizate de servere multiple


Service
• Serviciile pot fi implementate sub
forma unei multimi de procese
server ce ruleaza pe diverse Server
calculatoare gazda si Client
interactioneaza corespunzator
• Procesele server pot sa: Server

– partitioneze multimea obiectelor pe


care se bazeaza serviciul si sa le Client
distribuie intre ele sau Server
– sa mentina copii replicate ale acestora
pe mai multe calculatoare gazda.
• Web-ul este un exemplu de partitionare a datelor a.i. fiecare server de
Web isi gestioneaza o multime proprie de pagini Web.
• Un serviciu distribuit de directoare permite cautarea unor entitati dupa
nume intr-o retea. Exemple: DNS, LDAP, etc. Un astfel de serviciu
consta dintr-o multime de servere interconectate si un protocol de
comunicare al clientilor cu serverele.
2013
Servere proxy si memorii cache
Client Web
server
Proxy
server

Client Web
server

• O memorie cache stocheaza datele recent folosite, mai aproape (spatial sau temporal) de
procesul client care le-a folosit decat locul unde sunt ele stocate in mod normal. Cand un
nou obiect este receptionat el va fi stocat in cache, posibil inlocuind alte obiecte
existente. Cand un obiect este cerut de un client el va fi intai cautat in cache de serviciul
de cache si furnizat de acolo in cazul existentei unei copii actualizate. Altfel se va
extrage o copie actualizata de la sursa normala. Memoriile cache pot fi alocate fiecarui
client in parte sau pot fi alocate in servere proxy partajate de mai multi clienti.
• Exemple:
– Navigatoarele Web mentin o memorie cache a paginilor recent vizitate si a altor resurse Web,
in sistemul de fisiere al clientului. Se foloseste o cerere speciala HTTP pentru a cauta o pagina
in cache inainte de a o aduce de pe Web. Un server Web proxy furnizeaza o memorie cache
pentru clientii dintr-un site sau mai multe site-uri.
– Un server proxy poate avea si alte roluri, de exemplu accesul la Web print-un firewall. 2013

Cod mobil - 1
• Conceptele de baza privind codul mobil sunt discutat foarte clar in
lucrarea: Alfonso Fuggeta, Gian Pietro Picco, Understanding Code
Mobility, IEEE Transaction on Software Engineering, vol.24, no.5,
pp.342-361, 1998.
• Autorii au identificat 4 paradigme de baza pentru codul mobil:
– i) client/server,
– ii) evaluare la distanta (engl. Remote Evaluation)
– iii) cod la cerere (engl. Code on Demand)
– iv) agent mobil (engl. Mobile Agent)
• Exemplu: Luiza si Cristina prepara o prajitura.
• Client/server: Luiza doreste prajitura dar nu stie sa o prepare, nu are
ingrediente si nici cuptor unde sa o coaca. Din fericire ea stie ca prietena
sa Cristina stie reteta prajiturii si are o bucatarie corespunzatoare (cuptor
si ingrediente). Luiza ii cere Cristinei sa-i faca prajitura. Aceasta o prepara
si o livreaza Luizei.

2013
Cod mobil - 2
• Evaluare la distanta: Luiza doreste prajitura, stie reteta, dar nu are nici
cuptor, nici ingrediente. Cristina are la ea acasa atat cuptor cat si
ingrediente, dar nu cunoaste reteta. Din fericire Luiza stie ca prietena sa
Cristina este bucuroasa sa incerce noi retete. Astfel ii da telefon Cristinei si
ii spune reteta. Cristina foloseste reteta sa prepare prajitura si apoi o
livreaza Luizei.
• Cod la cerere: Luiza doreste sa prepare prajitura, are la ea acasa atat
ingrediente cat si cuptor, dar nu stie reteta. Din fericire Luiza stie ca
prietena sa Cristina stie reteta prajiturii pe care a imprumutat-o deja la
numerosi prieteni. Luiza ii telefoneaza Cristinei pentru a-i imprumuta
reteta. Cristina ii spune reteta Luizei, iar Luiza prepara prajitura la ea acasa.
• Agent mobil: Luiza doreste sa prepare prajitura, stie reteta, are
ingredientele, dar nu are cuptor. Din fericire Luiza stie ca prietena sa
Cristina are la ea acasa un cuptor pe care este bucuroasa sa-l imprumute.
Astfel Luiza prepara coca prajiturii si apoi merge la Cristina acasa pentru a
coace prajitura.
2013

Cod la cerere - exemplu

2013
Variatii ale modelului client/server
• Miniaplicatiile (engl.applet) sunt exemple de cod mobil. Ele sunt
descarcate de pe un server Web si rulate in programul navigator. Sunt
utille atunci cand interactiunea client-server trebuie initiata de server
(engl.push model), cum este cazul informarii automate a clientilor despre
schimbarile din sursele de informatie de pe server.
• Exemplu: un agent de bursa poate furniza un serviciu de informare a
clientilor sai despre modificarile preturilor.
a) client request results in the downloading of applet code

Client Web
server
Applet code

b) client interacts with the applet

Web
Client Applet server

2013

Sabloane arhitecturale
• Reprezinta schema unei structuri compusa din elemente
arhitecturale care este utila in proiectare in diverse situatii.
• Stratificare (engl. layering)
• Multi-nivel (engl. multi-tier sau tiered)
• Clienti “subtiri” (engl. thin clients)
• Alte sabloane arhitecturale:
– Delegat (engl. proxy)
• Se foloseste pentru a realiza transparenta locatiei in apelurile la distanta. In acest
caz pentru un obiect la distanta se creaza un obiect proxy cu o interfata similara
cu cea a obiectului la distanta in spatiul local de adrese al apelantului.
– Intermediar (engl. broker)
– Reflexie (engl. reflection)
• Permite descoperirea si configurarea dinamica a proprietatilor, structurii si
comportamentului unui sistem, la nivelul interfetelor si componentelor sale. Este
un sablon util pentru configurarea dinamica a unei arhitecturi middleware.
2013
Stratificare
• Un sistem complex este partitionat sub forma unui numar de straturi
(engl. layer). Fiecare strat realizeaza un anumit nivel de abstractizare.
• Fiecare strat foloseste serviciile oferite de stratul inferior. Astfel ca un
strat ofera o abstractizare software, ascuzand detaliile de implementare
straturilor superioare.

Applications, services

Middleware

Operating system

Platform

Computer and network hardware


2013

Multi-nivel
• Spre deosebire de stratificare, ce
presupune organizarea pe verticala a client
unui SD sub forma unei multimi de
straturi, o arhitectura multi-nivel este
o modalitate complementara de logica prezentarii
organizare functionala a unui strat.
sistem distribiut

Functionalitatile sunt asignate unor


servere si eventual unor noduri
logica aplicatiei
fizice.
• La nivel conceptual o aplicatie se
poate descompune functional din trei
logica datelor
nivele logice:
– Logica prezentarii
– Logica aplicatiei
– Logica datelor 2013
SD multi-nivel

Logica prezentarii
Suport pentru clienti multipli Distribuirea si replicarea datelor

Logica aplicatiei
Separarea logicii aplicatiei Combinatie arbitrara
Logica datelor

2013

SD cu doua nivele

2013
SD cu trei nivele

2013

Clienti “subtiri”
• Tendinta in SD este de mutare a complexitatii de la dispozitivul utilizatorului catre
servicii din Internet – vezi cloud computing.
• Conceptul de thin client se refera la un nivel software de implementare a unei interfete
utilizator bazata pe ferestre pe un calculator local, in timp ce partea mai consistenta a
aplicatiei se executa pe un calculator la distanta. Aplicatia nu se descarca local, ci se
ruleaza pe server. Avantajul este ca dispozitive cu capabilitati restranse pot fi
imbunatatite cu servicii de retea. Dezavantajul este ca in aplicatiile puternic interactive
timpul de raspuns va creste datorita volumului mare de informatii transmise intre client si
server. Este important nivelul de separare intre client si server.
• Acest concept a condus la aparitia virtual network computing – VNC. Un client VNC
interactioneaza cu un server VNC prin intermediul protocolului VNC ce opereaza la nivel
de primitive grafice. Abordarea garanteaza independednta fata de sistemul de operare.

2013
Alte sabloane - broker

• Suporta interoperabilitatea in SD complexe prin identificarea


dinamica a unui serviciu solicitant (engl. service requester) cu
un serviciu furnizat (engl. service provider) cu ajutorul unui
servicu de intermediere (engl. service broker).
• Se foloseste in serviciile Web, RMI, CORBA, FIPA, etc.
2013

Platforme middleware
Obiecte distribuite Standard ISO Reference Model of Open Distributed Processing, RM-ODP
standard OMG si platforma Common Object Request Broker Architecture, CORBA
Platforma Java RMI
Componente Model de componente Fractal, http://fractal.ow2.org/
distribuite
Componente pentru server Enterprise JavaBeans, EJB
(engl. server-side)
Componente pentru server CORBA Component Model, CCM
Publicare- - Java Message Service, JMS
inscriere
- CORBA Event Service
Cozi de mesaje - Java Message Service, JMS
Servicii Servicii Web Apache Axis
Servicii Grid Globus Toolkit
P2P Routing overlay Pastry, http://www.freepastry.org/
Routing overlay Chimera, http://current.cs.ucsb.edu/projects/chimera/
Aplicatie pentru partajare BitTorrent, http://www.bittorrent.com/
de fisiere
Multi-Agent Standard IEEE FIPA, http://www.fipa.org/
Platforma Multi-Agent JADE, http://jade.tilab.com/
2013
Modele fundamentale ale SD I
• Modelele fundamentale ale SD se ocupa cu descrierea
formala a proprietatilor comune tuturor modelelor
arhitecturale, oferind o viziune abstracta asupra acelor
caracteristici ale SD care afecteaza:
– Corectitudinea
– Fiabilitatea
– Securitatea
sistemelor distribuite.
• Modelul de interactiune
• Modelul defectelor
• Modelul de securitate
2013

Modele fundamentale ale SD II


• Modelul de interactiune
• Procesele unui SD interactioneaza prin mesaje in scopul realizarii
comunicarii si coordonarii. Livrarile mesajelor si pasii de calcul pot fi
afectate de intarzieri considerabile. Aceste intarzieri conduc la
dificultatea mentinerii unui timp global si limiteaza acuratetea cu care
procesele pot fi coordonate. Se bazeaza pe algoritmi distribuiti.
• Modelul defectelor
• Este o descriere a defectelor ce pot aparea in cadrul proceselor si
canalelor de comunicatie ale unui SD. Acest model ofera o baza pentru
analiza efectelor potentiale ale acestor defecte si pentru proiectarea unor
SD capabile sa tolereze aceste defecte, astfel incat sa isi poata continua
functionarea corecta.
• Modelul de securitate
• Prezinta amenintarile posibile asupra proceselor si canalelor de
comunicatie. El ofera o baza pentru analiza acestor amenintari si pentru
proiectarea SD capabile sa reziste la ele.
2013
Modelul de interactiune
• Un SD se compune dintr-o multime de procese ce ruleaza independent,
posibil pe calculatoare diferite si interactioneaza in maniera complexa.
• Comportamentul unui SD se descrie printr-un algoritm distribuit. El
defineste multimea pasilor care se executa de fiecare proces al SD in
parte, incluzand si schimburile de mesaje dintre acestea.

• Caracteristic unui SD sunt:


– i) ratele de executie ale fiecarui proces in parte si timpii necesari transmisiei de
mesaje nu sunt in general predictibili fiind afectati de incertitudini;
– ii) descrierea tututuror starilor posibile este dificila deoarece ar trebui luate in
considerare toate erorile din cadrul proceselor de calcul si a canalelor de
comunicatie.

• Factori de incertitudine ce influenteaza interactiunea proceselor unui SD:


– i) performanta limitata a comunicatiei;
– ii) imposibilitatea mentinerii unui ceas global unic.
2013

Performanta canalelor de comunicatie


• Comunicatia in reteaua de calculatoare a unui SD se
caracterizeaza prin:

– latenta (engl.latency)

– largime de banda sau capacitate (engl.bandwidth sau


throughput) si

– variatie temporala (engl.jitter).

2013
Latenta
• Latenta = intarzierera dintre trimiterea unui mesaj de
catre un proces expeditor si receptionarea sa de catre
procesul receptor. Latenta include:

– Intarzierea intrinseca a canalului de comunicatie, datorata


limitarilor sale fizice.

– Intarziererea cauzata de accesul la retea; creste cu cat


reteaua este mai incarcata.

– Timpul de acces la serviciile de comunicatie ale sistemelor


de operare expeditor si receptor; creste cu cat sistemele sunt
mai incarcate.
2013

Largimea de banda

• Largimea de banda = cantitatea totala de informatie


utila ce poate fi transmisa in unitatea de timp.

• Daca mai multe canale de comunicatie partajeaza o


aceeasi legatura de comunicatie, ele vor partaja de
asemenea si largimea de banda a canalului respectiv

2013
Variatia temporala

• Variatia temporala = variatia in timpul necesar


transmiterii unei secvente de mesaje.

• Aceasta variatie este relevanta pentru transmisia


datelor multimedia.

• De exemplu, daca o secventa de esantioane de date


audio sunt redate cu cuante de timp diferite atunci
sunetul rezultat va fi puternic distorsionat.

2013

Ceasuri
• Fiecare calculator al unui SD are un ceas local. Procesele ce
ruleaza pe calculatoare diferite vor asocia marcaje de timp
evenimentelor pe baza ceasurilor locale. Chiar daca citirea
ceasurilor locale s-ar face in acelasi moment de timp, se vor
obtine valori diferite, deoarece:
– Fiecare ceas are un decalaj (engl.drift) fata de ceasul real
– Decalajele ceasurilor sunt diferite

• Rata de deplasare a unui ceas (engl.clock drift rate) reprezinta


deplasamentul relativ al ceasului fata de un ceas de referinta
perfect. Chiar daca toate ceasurile unui SD ar fi setate la
aceleasi valori initiale, ele pot varia in timp, fiind necesare
corectii regulate.

2013
Corectia ceasurilor
• Corectia ceasurilor se poate realiza prin citirea periodica a
timpului curent prin radio sau de la un sistem global de
pozitionare (engl.Global Positioning System – GPS) cu o
acuratete de aproximativ 1 µs. Dar GPS-urile nu pot functiona
in cladiri si sunt costisitoare.

• Alternativa este ca un calculator cu acces la un GPS sa trimita


regulat mesaje de timp celorlalte calculatoare din retea. Insa
aceste valori vor fi desigur afectate de intarzierile de livrare a
mesajelor in retea.

• SD furnizeaza servicii de timp necesare pentru sincronizare in


timp, in anumite limite de acuratete. Un exemplu este NTP –
Network Time Protocol.
2013

Variante ale modelului de interactiune

• Exista doua variante:


– SD sincrone
– SD asincrone

• Distinctia intre sincron si asincron se face dupa doua


coordonate:
– Existenta / inexistenta ceasului global
– Predictibilitatea / nepredictibilitatea intarzierilor de
comunicatie.

2013
SD sincrone
• SD sincrone se caracterizeaza prin:
– Timpul necesar executiei unui pas de calcul in cadrul fiecarui proces
are limite inferioara si superioara cunoscute.
– Intarzierile de transmitere a mesajelor sunt marginite si limita lor
superiara este cunoscuta.
– Fiecare proces are un ceas local a carei rata de deplasare fata de o
referinta standard este cunoscuta.
• Este dificil sa se obtina valori precise ale limitelor de timp
dintr-un sistem sincron, desi acestea exista in SD reale.
• Se poate face o modelare a unui algoritm ca un sistem sincron
pentru a-i studia comportamentul cat mai aproape de realitate.
• In practica necunoasterea limitelor se poate rezolva folosind
tehnica limitarii timpului (engl.timeout).

2013

SD asincrone
• SD asincrone se caracterizeaza prin:
– Timpul necesar executiei unui pas de calcul in fiecare
proces are o valoare finita arbitrara.
– Intarzierile de transmitere a mesajelor sunt finite si
arbitrare.
– Deplasamentele ceasurilor locale fata de o referinta
standard sunt finite si arbitrare.
• Orice sistem sincron este in acelasi timp si asincron.
Astfel ca rezolvand o problema pe cazul asincron se
asigura universalitatea solutiei. Din pacate insa nu
orice problema se poate rezolva in ipoteza asincrona.

2013
Acord in SD I
• Doua divizii ale armatei Pepperland: D si R sunt asezate pe
varfurile a doua dealuri invecinate.
• De-alungul vaii care separa dealurile se gasesc invadatorii H.
• D si R sunt in siguranta daca raman in taberele lor.
• D si R pot comunica fiabil trimitand mesageri care sa se
strecoare prin vale.
• D si R trebuie sa ajunga la un acord (consens) privind un atac
asupra invadatorilor H: (i) cine sa conduca atacul? si (ii) cand
sa fie pornit atacul?
• Pentru a decide cine va conduce atacul, D si R schimba mesaje
privind forta fiecarei divizii. Cea mai puternica divizie va
conduce atacul, iar in caz de egalitate va conduce divizia D.
Decizia se poate lua si intr-un scenariu asincron
2013

Acord in SD II
• Intr-un SD asincron, S si D nu vor putea decide cand sa atace
deoarece interschimbul de mesaje poate dura nelimitat.
• Sa presupunem un SD sincron in care un schimb de mesaje
dureaza intre min si max unitati de timp.
• Divizia cea mai puternica va trimite un mesaj ‘Atacam’ catre
cealalta divizie, asteapta min unitati de timp si ataca.
• Divizia cea mai putin puternica primeste mesajul de atac,
asteapta o unitate de timp si ataca.
• Acest algoritm garantreaza ca divizia cea mai puternica va
ataca sigur prima, iar divizia cea mai puternica va ataca la cel
putin max-min+1 unitati de timp dupa ea.
• Problema se complica in prezenta erorilor: ce se intampla daca
mesagerii sunt interceptati de invadatori?
2013
Entitati intr-un SD
• Un SD este compus dintr-o multime finita de entitati de calcul E.
• Orice entitate x ∈ E este inzestrata cu o memorie locala nepartajata Mx.
• Memoria locala este compusa dintr-o multime finita de registre pentru
fiecare entitate (cu valori initiale precizate) incluzand:
– Un registru de stare status(x) cu valori intr-o multime finita de stari S cum ar fi
spre exemplu: processing, idle, waiting, etc.
– Un registru de intrare value(x)
• Fiecare entitate contine un ceas local (temporizator, alarm clock) care
poate fi setat sau resetat.
• Capabilitatile entitatii x includ patru tipuri de operatii:
– Stocare si procesare locala
– Interactiunea cu alte entitati: pregatirea, transmiterea si receptionarea mesajelor
– (Re)setarea temporizatorului (un tip “special” de procesare locala)
– Schimbarea valorii registrului de stare (un tip “special” de procesare locala)

2013

Evenimente
• Comportamentul unei entitati x ∈ E este reactiv: x raspunde la stimuli
externi, numiti evenimente. In absenta evenimentelor. entitatea x este
inerta, nu realizeaza nici o activitate.
• Exista trei tipuri de evenimente:
– Primirea unui mesaj (trimis de o alta entitate)
– Declansarea temporizatorului
– Impuls spontan
• Primirea unui mesaj si respectiv declansarea temporizatorului sunt
evenimente provenite din exteriorul entitatii, dar din cadrul SD.
• Un impuls spontan este declansat de forte externe SD. Exemple:
– intr-un sistem bancar entitatile sunt serverele de baze de date si automatele bancare.
Un eveniment de extragere de numerar de catre un client al bancii reprezinta un
impuls spontan.
• Evenimentele corespunzatoare impulsurilor spontane apar pentru sistem
ca “acte externe” ce declanseaza calculul si comunicatia dintr-un SD.

2013
Actiuni

• Actiune: o secventa finita, indivizibila si terminabila de


operatii pe care o entitate x ∈ E le executa ca reactie la un
eveniment e. O actiune este:
– Indivizibila (atomica): nu poate fi intrerupta, odata inceputa trebuie
terminata
– Terminabila: executia sa dureaza un timp finit.

• Actiunea nula nil desemneaza lipsa de reactie la un eveniment.

2013

Comportamentul unei entitati


• Actiunea realizata de o entitate depinde de evenimentul e si de
starea s = status(x) a entitatii x. Schema unei actiuni este:
S × EV → A si se numeste regula, metoda sau productie.

• O regula s × e → a se numeste activata de (s,e).

• Comportamentul entitatii x consta din multimea B(x) a


regulilor sale. Aceasta multime trebuie sa fie completa si
neambigua (precisa), adica pentru orice pereche (s,e) sa existe
o singura regula activata de (s,e).

• Multimea B(x) se mai numeste protocolul sau algoritmul


entitatii x.
2013
Comportamentul unui SD
• Comportamentul colectiv B(E) al unui SD compus dintr-o
multime de entitati E este B(E) = {B(x): x ∈ E}.

• Un comportament colectiv se numeste omogen daca toate


entitatile au acelasi comportament, adica pentru orice x,y ∈ E
avem B(x) = B(y).

• Propozitie: Orice comportament colectiv se poate transforma


intr-un comportament colectiv omogen.
• Justificare: Fiecarei entitati i se asociaza un registru role
initializat cu rolul entitatii respective in SD. Se construieste o
regula unica care selecteaza actiunea corecta in functie de
valoarea registrului role.
2013

Comunicare in SD
• Entitatile unui SD comunica prin mesaje.
• Se noteaza cu Nout(x) ⊆ E multimea entitatilor catre care
entitatea x poate transmite mesaje si Nin(x) ⊆ E multimea
entitatilor de la care entitatea x poate primi mesaje. Obs: y ∈
Nout(x) dnd x ∈ Nin(y).
• Multimile Nout(x) si Nin(x) definesc un graf orientat G = 〈V,E〉
a.i. V = E si (x,y) ∈ E dnd y ∈ Nout(x) sau echivalent x ∈ Nin(y).
• Graful G defineste topologia de comunicare in SD. Se noteaza
cu n(G), m(G) si d(G) numarul de varfuri, arce respectiv
diametrul lui G (lungimea maxima a celei mai scurte cai intre
oricare doua varfuri ale grafului).
• Nodurile lui G se numesc: noduri, varfuri, entitati sau site-uri.
Arcele lui G se mai numesc legaturi.
2013
Presupuneri in SD
• Definitia SD include doua presupuneri de baza numite
axiome. Ele se refera la: i) intarzierile de comunicatie
si ii) orientarea locala a entitatilor.
• Orice presupunere suplimentara se numeste restrictie.
• Axiomele se refera la:
– Intarzierile de comunicatie
– Orientarea legaturilor
• Restrictiile se pot referi la:
– Comunicare
– Fiabilitate
– Topologie
– Timp
2013

Axiome - intarzieri
• Intarzierile de comunicatie: transmiterea unui mesaj implica
o serie de activitati:
– pregatire,
– transmisie,
– receptie,
– …
• Totalitatea intarzierilor cauzate de aceste activitati se
numeste intarzierea de comunicatie a mesajului. Aceasta
intarziere este inpredictibila.

• Axioma (intarziere finita): In absenta erorilor, intarzierea de


comunicatie este finita.

2013
Axiome - orientare
• Orientarea locala: O entitate poate comunica direct cu o submultime a
entitatilor sistemului, numite vecinii entitatii respective.

• Axioma (orientare locala): Orice entitate poate distinge intre vecinii sai
de intrare si respectiv intre vecinii sai de iesire. Astfel:
– o entitate poate transmite un mesaj doar catre unul din vecinii sai de iesire (fara a
transmite mesajul si celorlalti vecini de iesire) si
– o entitate poate distinge vecinul de intrare de la care a primit un mesaj.

• Orice entitate x dispune de o functie locala de etichetare λx care asociaza


etichete numite numere de porturi legaturilor incidente (numite si
porturi). Functia λx este injectiva. Pentru orice legatura (x,y) ∈ E avem
doua etichete: λx(x,y) locala lui x si λy(x,y) locala lui y.

2013

Restrictii de comunicare

• Aceste restrictii se refera la legaturile de comunicatie


si includ:

– Disciplina de servire

– Proprietatile legaturilor de comunicatie

2013
Disciplina de servire
• Disciplina de servire: o legatura (x,y) reprezinta un
canal de comunicare sau coada. Expedierea unui mesaj
de catre x lui y reprezinta adaugarea sa in coada, iar
receptia unui mesaj de catre y de la x reprezinta
extragerea sa din coada. Se pot impune diverse
discipline de acces la coada.

• Ordonarea: in absenta erorilor, o politica FIFO de


adaugare / extragere a mesajelor din coada inseamna
ca mesajele expediate de o aceeasi entitate la un vecin
de iesire vor fi receptionate in ordinea expedierii lor.

2013

Proprietatile legaturilor de comunicatie


• Proprietatile legaturilor de comunicatie depind de capabilitatile
legaturilor fizice corespunzatoare:
– Simplex: cf. modelului general in care legaturile sunt orientate, adica
daca x poate transmite lui y (y ∈ Nout(x)) nu inseamna ca si y poate
transmite lui x (x ∈ Nout(y))
– Duplex: presupune doua legaturi simplex, cate una pe fiecare directie
– Full-duplex: o legatura pe care se poate transmite simultan in ambele
directii (spre deosebire de half-duplex)
• Comunicare reciproca ∀x∈V , Nin(x) = Nout(x) ceea ce
inseamna ca daca (x,y) ∈ E atunci si (y,x) ∈ E. Dar porturile pe
care x trimite lui y (λx(x,y)) si x primeste de la y (λx(y,x)) nu
sunt neaparat identice (duplex)
• Cazul bidirectional ∀x∈V Nin(x) = Nout(x) si λx(x,y) = λx(y,x)
(full-duplex)
2013
Legaturi bidirectionale
• In cazul bidirectional graful SD este neorientat, adica
G = (V,E) si ∀(x,y) ∈ E avem (x,y) = (y,x).
• ∀x∈V multimea N(x) = Nin(x) = Nout(x) se numeste
multimea vecinilor entitatii x.
• In plus m(G) = |E| = 2|E|

2013

Restrictii de fiabilitate
• Arata cum aspecte ale modelului defectelor se pot include in
modelul de interactiune.
• Detectia caderilor componentelor:
– Detectarea caderilor legaturilor: ∀ (x,y) ∈ E, atat x cat si y pot
detecta daca legatura (x,y) este defecta si daca a fost reactivata.
– Detectarea caderilor entitatilor: ∀x ∈ V , toti vecinii de intrare si de
iesire ai lui x pot detecta daca x este defecta si daca a fost reactivata.
• Tipuri restrictive de defecte:
– Garantarea livrarii: orice mesaj transmis va fi receptionat fara
coruperea continutului. Cu o astfel de restrictie, protocoalele nu vor
trebui sa ia in considerare omisiunea si coruperea mesajelor.
– Fiabilitate partiala: Nu vor aparea erori. Cu o astfel de restrictie,
protocoalele nu vor trebui sa ia in considerare posibilele erori.
Aceasta ipoteza nu exclude insa situatia in care erori ar fi putut apare
inaintea executiei protocolului.
– Fiabilitate totala: Nu au aparut si nu vor aparea erori.
2013
Restrictii de topologie si timp
• Restrictii de topologie:
– Conectivitate: Graful de comunicatie G este tare conex. Acest lucru
inseamna ca orice entitate poate transmite direct sau indirect catre
orice alta entitate din sistem. Restrictia de conectivitate impreuna cu
restrictia legaturilor bidirectionale inseamna ca graful G este
neorientat si conex.
• Restrictii de timp:
– Intarzieri marginite de comunicatie: exista o constanta de timp ∆
astfel incat, in absenta erorilor, intarzierea de comunicatie a oricarui
mesaj transmis pe orice legatura este cel mult ∆.
– Intarzieri de comunicatie unitare: In absenta erorilor, orice mesaj este
transmis intr-o unitate de timp.
– Ceasuri sincronizate: toate ceasurile de timp locale sunt incrementate
simultan cu o unitate de timp si intervalul de timp dintre doua
incrementari succesive este constant.
2013

Costul de comunicare
• Eficienta unui protocol descris prin modelul abstract introdus se va face
folosind doua masuri: i) volumul de activitati de comunicare (cat de mult
trafic va genera protocolul?); ii) timpul de calcul (cat de ocupat va fi
sistemul?).
• Activitatea de comunicare de baza este expedierea unui mesaj printr-un
port de iesire catre un vecin; se va lua in calcul si cazul in care un mesaj
expediat nu a fost receptionat.
• Volumul de activitati de comunicare se va estima prin numarul de mesaje
expediate M = costul mesajelor.
• Incarcarea unei entitati (engl.entity workload) Lnode = M/|V| reprezinta
numarul mediu de mesaje expediate pe entitate.
• Incarcarea transmisiei (engl.transmission load) Llink = M/|E| reprezinta
numarul mediu de mesaje expediate pe legatura.
• Daca se considera costul mesajelor estimat prin numarul de biti transmisi
B rezulta incarcarile la nivel de bit pe entitate si pe legatura: Lbnode =
B/|V| si Lblink = B/|E|.
2013
Costul de calcul
• O masura a eficientei si complexitatii o reprezinta timpul total
de executie scurs din momentul in care prima entitate incepe
executia pana cand ultima entitate termina executia.
• Deoarece in modelul general nu se poate face nici o
presupunere privind intarzierea maxima de expediere a unui
mesaj, rezulta ca timpul total de executie este inpredictibil
putandu-se schimba major de la o executie la alta a sistemului.
• Se poate insa estima timpul unei executii ideale T,
considerandu-se restrictiile: intarzieri de transmisie unitare si
ceasuri sincronizate.
• O alta masura este complexitatea de timp cauzal Tcausal definita
prin lungimea celui mai lung sir de expedieri de mesaje
corelate cauzal, din multimea tuturor executiilor posibile.
2013

Modelul defectelor
• In SD se pot defecta atat procesele cat si canalele de
comunicatie
• Defect = orice abatere de la comportamentul corect
dorit. Modelul defectelor defineste tipurile si
manifestarile defectelor in scopul intelegerii efectelor
lor.
• Exista trei mari categorii de defecte: defecte prin
omitere, defecte arbitrare si defecte de timp.
• Defectele prin omitere se refera la cazurile in care un
proces sau canal de comunicatie nu reuseste sa
efectueaze actiunile pe care trebuie sa le faca.
2013
• Defectele arbitrare (bizantine) descriu situatiile cele
Defecte prin omitere ale proceselor
• Caderea unui proces (engl. crash) inseamna ca procesul se
opreste (engl. halts) si nu mai executa nici un pas de calcul
• Detectarea unei caderi a unui proces se poate realiza prin
impunerea unei limite a timpului de raspuns (engl. timeout).
Daca un proces nu mai raspunde la invocari intr-un timp
prestabilit inseamna ca este posibil sa se fi produs o cadere a
procesului.
• Metoda limitarii timpului de raspuns functioneaza cu
certitudine absoluta doar pentru sistemele sincrone. Intr-un
sistem asincron faptul ca procesul nu raspunde poate insemna
fie o cadere, fie faptul ca procesul ruleaza foarte incet.
• O cadere detectabila a unui proces (de exemplu prin impunerea
unor limite de timp in SD sincrone) se numeste fail-stop.
2013

Defecte prin omitere ale canalelor de comunicatie


Proces p Proces q

send m receive

Canal de comunicatie
Tampon de iesire pentru mesaje Tampon de intrare pentru mesaje

• Apare cand canalul nu reuseste sa transmita un mesaj din tamponul de


iesire al procesului p catre tamponul de intrare al procesului q.
• Daca eroarea apare intre procesul expeditor p si tamponul sau de iesire
atunci ea se numeste send-omission failure.
• Daca eroarea apare intre tamponul de intrare al procesului receptor q si
proces atunci ea se numeste receive-omission failure.
• Daca eroarea apare intre tamponul de iesire al procesului expeditor p si
tamponul de intrare al procesului destinatar q atunci ea se numeste
channel-omission failure.
2013
Defecte arbitrare
• Descriu situatiile cele mai “rele” in care poate sa apara orice tip de eroare.
• Procesele se pot defecta arbitrar:
– prin executia unor actiuni eronate (posibil intentionat), de exemplu de asignare a
unor valori eronate sau prin returnarea unor valori eronate
– Prin omiterea unor pasi de calcul sau prin inserarea intentionata a unor pasi de calcul
neprevazuti
• Defectele arbirare ale proceselor nu pot fi detectate prin observarea
raspunsului procesului la invocari.
• Canalele de comunicatie se pot defecta arbitrar prin coruperea sau
intarzierea mesajelor, sau prin multiplicarea sau inserarea arbitrara de
mesaje. O comunicatie fiabila presupune proprietatile de validitate si
integritate.
• Erorile arbitrare ale canalelor de comunicatie sunt destul de rare deoarece
software-ul de comunicatie poate recunoaste si rejecta mesajele corupte
prin sume de control, respectiv nelivrarea sau duplicarea unor mesaje prin
numere de secventa.
2013

Defecte de omitere si defecte arbitrare

Class of failure Affects Description


Fail-stop Process Process halts and remains halted. Other processes may
detect this state.
Crash Process Process halts and remains halted. Other processes may
not be able to detect this state.
Omission Channel A message inserted in an outgoing message buffer never
arrives at the other end’s incoming message buffer.
Send-omission Process A process completes a send, but the message is not put
in its outgoing message buffer.
Receive-omission Process A message is put in a process’s incoming message
buffer, but that process does not receive it.
Arbitrary Process or Process/channel exhibits arbitrary behaviour: it may
(Byzantine) channel send/transmit arbitrary messages at arbitrary times,
commit omissions; a process may stop or take an
incorrect step.

2013
Defecte de timp

Class of Failure Affects Description


Clock Process Process’s local clock exceeds the bounds on its
rate of drift from real time.
Performance Process Process exceeds the bounds on the interval
between two steps.
Performance Channel A message’s transmission takes longer than the
stated bound.

2013

Modelul de securitate
• SD sunt motivate si de partajarea resurselor. Acestea
sunt incapsulate sub forma de obiecte, componente sau
servicii in cadrul proceselor SD. Accesul la ele este
furnizat prin interactiuni intre procese.
• Securizarea SD se poate realiza prin securizarea
proceselor (a accesului la anumite operatii, controlul
executiei proceselor), a canalelor de comunicatie si prin
protejarea obiectelor impotriva acceselor neautorizate.
• Modelul de securitate are in vedere:
– Protectia obiectelor
– Protectia proceselor si a interactiunilor dintre ele
– Modelarea si dejucarea pericolelor (atacurilor) de securitate
(engl. security threats)
2013
Protectia obiectelor
Access rights Object
invocation

Client
result Server

Principal (user) Network Principal (server)

• Obiectele se utilizeaza in mod diferit de catre utilizatori diferiti. Trebuie folosite metode
pentru controlul accesului.
• Se definesc drepturile de acces (engl. access rights) care stabilesc operatiile permise
asupra unui obiect de catre fiecare tip de utilizatori.
• Pentru includerea utilizatorilor in acest model, se asociaza fiecarei invocari si fiecarui
rezultat autoritatea generatoare. Aceasta autoritate se numeste principal si ea poate fi un
utilizator (ex. invocare) sau proces (ex. rezultat).
• Serverul verifica identitatea principalului si faptul ca acesta are suficiente drepturi sa
realizeze operatia ceruta asupra obiectului tinta. Clientul verifica identitatea principalului
din spatele serverului pentru a stabili ca rezultatul provine de la serverul corect.
2013

Securizarea proceselor si interactiunilor


• Procesele interactioneaza prin schimb de mesaje.

• Mesajele sunt expuse atacurilor deoarece in general serviciile de


comunicatie ale retelelor sunt deschise pentru a permite interactiuni
dinamice intre procese.

• Serverele si procesele peer isi expun interfetele pentru invocare din


partea oricarui alt proces.

• Natura aplicatiilor SD, spre exemplu din domeniul financiar-bancar,


predispune SD la confruntarea cu utilizatori ostili.

• Secretizarea si integritatea informatiei gestionata de astfel de SD este


cruciala.

2013
Pericole de securitate
Copy of m

The enemy
m’
Process p m Process q
Communication channel

• Modelarea pericolelor (atacurilor) de securitate presupune


existenta unui inamic sau adversar sa trimita mesaje unor
procese, respectiv sa citeasca, copieze si sa altereze mesajele
schimbate de procese.
• Doua tipuri de pericole:
– Pericole asupra proceselor
– Percole asupra canalelor de comunicatie
2013

Pericole asupra proceselor


• Un proces poate primi mesaje intr-un SD de la orice alt proces.
Trebuie determinata identiatea expeditorului. Protocoalele IP
includ adresa IP a expeditorului in fiecare mesaj, insa aceasta
adresa este usor de falsificat.
• Lipsa de cunoastere sigura a sursei expeditorului afecteaza
clientii si serverele astfel:
– Un server, necunoscand identitatea expeditorului, nu stie cand sa
accepte sau sa interzica o anumita invocare din partea unui client. De
exemplu, invocarea poate cere citirea unui anumit mesaj de posta
electronica, aceasta actiune necesitand cunoasterea cu certitudine a
identitatii clientului.
– Cand un client primeste rezultatul invocarii de la un server nu poate
identifica cu certitudine expeditorul rezultatului. In exemplul cu citirea
postei electronice, rezultatul poate fi returnat de un server implicat
intr-un atac de spoofing asupra serverului de posta electronica.
2013
Pericole asupra canalelor de comunicatie
• Un inamic poate copia, altera, injecta sau elimina mesaje intr-o
retea. Aceste actiuni pericliteaza integritatea si secretizarea
(engl. privacy) informatiei continuta in mesaje.
• Aceste atacuri pot fi prevenite prin implementarea conceptului
de canal sigur (engl. secure channel) folosind:
– Tehnici criptografice pentru codificarea si respectiv decodificarea
mesajelor cu ajutorul unor chei.
– Tehnici de autentificare bazate pe criptarea identitatii expeditorilor
mesajelor.
• Un canal sigur ne asigura:
– Fiecare proces cunoaste identitatea autoritatilor principale ale
celorlalte procese ce executa invocari asupra sa.
– Integritatea si secretizarea informatiei din mesaje.
– Eliminarea mesajelor duplicate si refacerea ordinii mesajelor prin
marcaje de timp si/sau de secventa.
2013

Exemplu de algoritm distribuit: Broadcasting


• Se considera un SD in care o entitate detine o informatie si
doreste sa o transmita tuturor celorlalte entitati din SD.
• Fie E multimea entitatilor si G topologia SD. Presupunem ca
legaturile sunt bidirectionale si ca fiabilitatea este totala (nu
exista erori).
• Daca G nu este conex anumite entitati nu vor putea receptiona
informatia. Asa ca vom presupune ca G este un graf conex.
• O singura entitate, ce contine informatia de transmis, va initia
procesul de transmisie – presupunerea de initiator unic.
• O strategie simpla de rezolvare a problemei: “daca o entitate
cunoaste informatia atunci o va face cunoscuta si vecinilor”
• Pentru a distinge intre entitatea initiator (ce detine initial
informatia de transmis I) si celelalte entitati introducem doua
stari: initiator si idle. Procesul va fi pornit de initiator. 2013
Protocol pentru Broadcasting (I)
• Protocolul pentru Broadcasting se mai numeste si protocol de
inundare (engl.flooding).
• Se considera protocolul B(x) pentru toate entitatile x ∈ E.
1. initiator × ı → { send(I) to N(x) }
2. idle × Receiving(I) → { process(I); send(I) to N(x) }
3. initiator × Receiving(I) → nil
4. idle × ı → nil
• unde ı desemneaza un impuls spontan si nil desemneaza
actiunea vida.
• Datorita conectivitatii si fiabilitatii totale, fiecare entitate va primi
informatia. Problema acestui protocol este insa ca nu se termina.
• Spre exemplu daca avem 3 entitati x, y si z astfel incat x este
initiator, iar y si z sunt idle, atunci y si z isi vor trimite la infinit
informatia atat unul altuia, cat si lui x.
2013

Protocol pentru Broadcasting (II)


• Pentru a se asigura terminarea protocolului trebuie ca fiecare entitate sa
transmita informatia vecinilor o singura data. Introducem trei stari:
initiator, idle si done.
1. initiator × ı → { send(I) to N(x); become done }
2. idle × Receiving(I) → { process(I); become done; send(I) to N(x) }
3. initiator × Receiving(I) → nil
4. idle × ı → nil
5. done × Receiving(I) → nil
6. done × ı → nil
• Protocolul se termina deoarece fiecare entitate va ajunge in timp finit in
starea done. Corectitudinea rezulta din faptul ca orice entitate ce ajunge in
starea done va contine informatia initiala.
• Este posibil ca unele entitati sa se termine (in starea done) fara ca alte
entitati sa fi inceput inca prelucrarile. Astfel ca trebuie sa distingem intre
terminarea locala a unei entitati si terminarea globala a intregului SD.
• Pentru acest protocol, nici o entitate nu stie cand procesul de transmisie sa
terminat. Aceasta este problema detectarii terminarii. 2013
Costul de comunicatie pentru Broadcasting
• Fiecare entitate va transmite informatia tuturor vecinilor sai. Astfel ca
numarul total de mesaje transmise va fi:
∑x∈E |N(x)| = 2 |E| = 2 m.
• Acest cost poate fi redus. Astfel, cand o entitate idle primeste informatia,
ea va transmite informatia tuturor vecinilor, excluzand entitatea de la care
a primit-o – acest lucru este posibil din axioma de orientare locala ce
afirma ca o entitate intre vecinii sai. Astfel, la primirea unui mesaj ea
poate identifica portul pe care a primit mesajul astfel incat sa evite
retransmiterea sa pe acel port.
1. initiator × ı → { send(I) to N(x); become done }
2. idle × Receiving(I) → { process(I); become done; send(I) to N(x)-{sender} }
3. initiator × Receiving(I) → nil
4. idle × ı → nil
5. done × Receiving(I) → nil
6. done × ı → nil
unde sender este vecinul care a transmis mesajul curent.
• Se poate arata ca acest algoritm necesita M = 2 m – n + 1 mesaje.
2013

Costul de calcul pentru Broadcasting


• Fie d(x,y) lungimea celei mai scurte cai intre nodurile x si y ale
grafului G.
• Informatia transmisa de initiator va trebui sa ajunga si la cea
mai indepartata entitate de initiator.
• Daca x este entitatea initiator atunci complexitatea ideala de
calcul va fi:
r(x) = maxy∈E{ d(x,y) }
• Valoarea r(x) se numeste excentricitatea sau raza lui x in graful
G.
• In cazul cel mai defavorabil, complexitatea ideala va fi:
d(G) = maxx∈E{ r(x) }
• Valoarea d(G) se numeste diametrul grafului G. Cu alte cuvinte
putem concluziona ca: T ≤ d(G).
2013
Pseudocod
• Regulile protocolului se grupeaza pe stari
• Daca actiunea pentru o pereche (s,e) este nil atunci regula corespunzatoare se va omite.
Rezulta ca pentru orice pereche (s,e) pentru care nu exista nici o regula asociata, se va
considera implicit regula ce realizeaza actiunea vida nil.
• Daca o actiune specifica schimbarea starii curente atunci aceasta operatie va fi ultima
inainte de terminarea actiunii.
• Multimea starilor, starilor initiale, starilor terminale si a restrictiilor protocolului vor fi
specificate explicit la inceputul protocolului.
• Evenimentele externe sunt: Spontan (impuls spontan), Receiving (receptionarea unui
mesaj) si When (declansarea temporizatorului). Ordinea de procesare a acestor
evenimente respecta urmatoarea precedenta: Spontan > When > Receiving.
• La orice moment de timp o entitate poate avea: (i) cel mult un eveniment de timp; (ii) cel
mult un impuls spontan; (iii) oricate evenimente de receptionare de mesaje (ele vor fi
tratate secvential, intr-o ordine arbitrara)
• Comanda send(M) to W va realiza copierea mesajului M pe toate porturile de iesire din
multimea W.
• Cand un mesaj M este trimis pe un port de iesire I, el va fi receptionat dupa un timp finit
de entitatea corespunzatoare portului I, generand un eveniment Receiving(M), moment in
caare variabila sender primeste valoarea I.
2013

Protocolul de inundare in pseudocod


PROTOCOL Inundare
Stari: S = {INITIATOR, IDLE, DONE};
Stari initiale SINIT = {INITIATOR, IDLE};
Stari terminale STERM = {DONE};
Restrictii: legaturi bidrectionale, fiabilitate totala, conectivitate, initiator unic
INITIATOR
Spontan
begin
send(I) to N(x)
become DONE
end
IDLE
Receiving(I)
begin
Proceseaza(I)
send(I) to N(x) – {sender}
become DONE
end
2013

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