Sistemi Distribuiti - Esercitazione
BROADCAST
Best-Effort Broadcast e Reliable Broadcast
Valeria Anastasio
Francesco Di Palma
Federico Pisani
Sistemi distribuiti – Esercitazione Broadcast
Confronto
BEST EFFORT
BROADCAST
RELIABLE
BROADCAST
RELIABLE UNIFORM
BROADCAST
beBroadcast(m)
rBroadcast(m)
beDeliver(m,originatore) rDeliver(m,originatore)
urBroadcast(m)
urDeliver(m,originatore)
Validity
No Duplication
No Creation
Validity
No Duplication
No Creation
Validity
No Duplication
No Creation
Agreement: se un
Uniform Agreement: se
un messaggio m è
consegnato da un
processo Pi allora m è
prima o poi consegnato da
ogni processo corretto Pj
Dà garanzie anche se il
mittente del messaggio si
guasta. Riguarda solo il
funzionamento dei processi
corretti.
Dà garanzie anche se il
mittente del messaggio si
guasta. Riguarda il
funzionamento sia dei
processi corretti che di
quelli guasti.
messaggio m è consegnato
da un processo corretto Pi
allora m è prima o poi
consegnato da ogni processo
corretto Pj
La correttezza
dell’algoritmo si fonda
sulle proprietà del canale
perfetto. Non ci sono
garanzie se il sender si
guasta
Algo Lazy ; Algo Eager
Sistemi distribuiti – Esercitazione Broadcast
Broadcast - Esercizio 1.1
Best-Effort Broadcast (ma non Reliable)
Ricevuto e Consegnato
Ricevuto ma non Consegnato
P1
P2
P3
Il processo P1 invia un messaggio a tutti i processi (compreso se
stesso) attraverso il Best-Effort Broadcast, tramite il metodo
beBroadcast().
P2 e P3 sono corretti
P3 non consegnerà mai il messaggio inviato da P1
Sistemi distribuiti – Esercitazione Broadcast
Broadcast - Esercizio 1.2
Reliable Broadcast (ma non Uniform)
Ricevuto e Consegnato
Ricevuto ma non Consegnato
P1
P2
P3
Il processo P1 invia un messaggio a tutti i processi (compreso se
stesso) attraverso il Reliable Broadcast, tramite il metodo
rBroadcast().
P1 e P2 sono guasti
P3 è corretto ma non consegnerà mai il messaggio inviato da P1
Sistemi distribuiti – Esercitazione Broadcast
Broadcast - Esercizio 2.1
Ricevuto e Consegnato
Reliable Broadcast (Algoritmo Lazy)
Ricevuto ma non Consegnato
P1
P2
P3
Il caso peggiore si verifica quando P1 invia un messaggio (ricevuto da tutti gli altri
processi) e successivamente si guasta: allora, secondo le specifiche di RB – Lazy, i
processi superstiti, appena sospetteranno P1grazie al pFD, rilanceranno il
messaggio appena ricevuto dal processo sospettato. In definitiva, si ha un invio
iniziale di N messaggi da parte di P1ed in seguito altri N reinvii, da parte degli N-1
processi superstiti (che riceveranno, quindi, ognuno N-1 messaggi):
2
N + (N ! 1)" (N ! 1) = N + (N ! 1) = N 2 ! N + 1
Sistemi distribuiti – Esercitazione Broadcast
Broadcast - Esercizio 2.2
Reliable Broadcast (Algoritmo Lazy)
Ricevuto e Consegnato
Ricevuto ma non Consegnato
P1
P2
P3
Nel caso in cui non si verifichino
guasti, vengono inviati N
messaggi; questo poiché P1
invia il proprio messaggio e
coloro che lo hanno ricevuto
non lo replicano ( P1 non è
sospettato)
Nel caso in cui P1si guasti, tutti i processi che
hanno ricevuto da P1 ne vengono a conoscenza
attraverso il pFD. Rifacendosi allora al caso
dell’esercizio 2.1 e facendo attenzione al fatto che
in questo caso si tratta di messaggi inviati e non
ricevuti, si ottengono, oltre agli N invii iniziali, N
rilanci da parte degli N-1 superstiti:
N + (N - 1) N = N 2
Sistemi distribuiti – Esercitazione Broadcast
Broadcast - Esercizio 2.3
Ricevuto e Consegnato
Reliable Broadcast (Algoritmo Lazy)
Ricevuto ma non Consegnato
P1
P2
P3
Nel caso in cui non si verifichino
guasti, per l’algoritmo RB –
Lazy, l’unica chiamata al
beBroadcast() è quella di P1 per
l’invio del messaggio:
T=1
Nel caso in cui P1 si guasti, tutti i processi che
hanno ricevuto da questo lo sospettano mediante
il pFD. Nel caso peggiore (tutti i processi hanno
ricevuto da P ), quindi, ci saranno: 1 invocazione
1
del metodo beBroadcast() per l’invio da parte di P1
e N-1 invocazioni per i reinvii degli altri processi
T = 1 + N-1 = N
Sistemi distribuiti – Esercitazione Broadcast