distributed consensus

75
Seminario a cura di Oscar Pistamiglio e Fed Seminario a cura di Oscar Pistamiglio e Fed erico Vietti erico Vietti 1

Upload: venice

Post on 09-Jan-2016

34 views

Category:

Documents


0 download

DESCRIPTION

Distributed consensus. Problemi legati al consenso di due o più processi. Problema del consenso. Definizione - Sono quei problemi in cui si hanno vari processi connessi tra loro, i quali devono cooperare per ottenere un risultato comune, indipendentemente dal tipo di input. Alcuni esempi. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti

11

Page 2: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 22

Problema del consensoProblema del consenso

Definizione Definizione - Sono quei problemi in cui si - Sono quei problemi in cui si hanno vari processi connessi tra loro, i hanno vari processi connessi tra loro, i quali devono cooperare per ottenere un quali devono cooperare per ottenere un risultato comune, indipendentemente dal risultato comune, indipendentemente dal tipo di input. tipo di input.

Page 3: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 33

Alcuni esempiAlcuni esempi

Transazioni su database distribuitiTransazioni su database distribuiti Applicazioni in reteApplicazioni in rete Stima dell’altezza di un aereo grazie alla Stima dell’altezza di un aereo grazie alla

lettura di altimetrilettura di altimetri

In generale sistemi privi di memoria comune In generale sistemi privi di memoria comune

Page 4: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 44

Senza fallimenti Senza fallimenti Fallimento:Fallimento:

A livello di linkA livello di link Versione deterministicaVersione deterministica Versione RandomizedVersione Randomized

A livello di processoA livello di processo Failure StoppingFailure Stopping Byzantine StoppingByzantine Stopping

Tipologie di ambienteTipologie di ambiente

Page 5: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti

55

Fallimento dei LinkFallimento dei Link

Page 6: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 66

Fallimento dei link:Fallimento dei link:

Sono fallimenti legati alla consegna dei Sono fallimenti legati alla consegna dei messaggi:messaggi:

A invia un messaggio a B, ma questi non A invia un messaggio a B, ma questi non lo riceve ed A non rileva il fallimentolo riceve ed A non rileva il fallimento

Page 7: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 77

Fallimento del link:Fallimento del link:Versione DeterministicaVersione Deterministica

Problema dell’attacco coordinato:Problema dell’attacco coordinato:

Si hanno n generali che devono attaccare Si hanno n generali che devono attaccare un obiettivo comune. La riuscita un obiettivo comune. La riuscita dell’attacco si ha solo se tutti gli n dell’attacco si ha solo se tutti gli n generali decidono di attaccare generali decidono di attaccare contemporaneamente. Il coordinamento contemporaneamente. Il coordinamento è realizzato tramite scambio di messaggiè realizzato tramite scambio di messaggi

[…] […]

Page 8: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 88

Fallimento del link:Fallimento del link:Versione DeterministicaVersione Deterministica

Problema dell’attacco coordinato:Problema dell’attacco coordinato:

[…] Ogni generale attacca solamente se lo […] Ogni generale attacca solamente se lo stato del suo esercito è buono. In questo stato del suo esercito è buono. In questo caso invia un segnale positivo agli altri, caso invia un segnale positivo agli altri, altrimenti negativo.altrimenti negativo.

Page 9: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 99

Fallimento del link:Fallimento del link:Versione DeterministicaVersione Deterministica

Fallimenti dell’attacco coordinato:Fallimenti dell’attacco coordinato:

I messaggeri, che viaggiano a piedi, I messaggeri, che viaggiano a piedi, possono essere vittime di imboscate del possono essere vittime di imboscate del nemico, con conseguente perdita del nemico, con conseguente perdita del messaggio messaggio perdita di coordinamento perdita di coordinamento nell’attacco.nell’attacco.

Page 10: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 1010

Fallimento dei link:Fallimento dei link:Versione DeterministicaVersione Deterministica

Attacco coordinatoAttacco coordinato ConsensoConsenso

N generaliN generali N processiN processi

Stato Esercito (buono, Stato Esercito (buono, non buono)non buono)

Stato iniziale:Stato iniziale:

{1 - buono,0 - altrimenti}{1 - buono,0 - altrimenti}

Decisione bellicaDecisione bellica {0 - pace, 1 - attacco}{0 - pace, 1 - attacco}

Page 11: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 1111

Fallimento del link:Fallimento del link:Versione DeterministicaVersione Deterministica

Condizioni per decidere:Condizioni per decidere: Agreement (accordo):Agreement (accordo): 2 processi non possono 2 processi non possono

decidere in modo diversodecidere in modo diverso

Validity:Validity: Se tutti i processi iniziano con 0, la decisione è 0.Se tutti i processi iniziano con 0, la decisione è 0. Se tutti i processi iniziano con 1 e tutti i messaggi Se tutti i processi iniziano con 1 e tutti i messaggi

sono stati recapitati, l’unica decisione possibile è 1sono stati recapitati, l’unica decisione possibile è 1

Termination:Termination: ogni processo decide per seogni processo decide per se

Page 12: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 1212

Fallimento del link:Fallimento del link:Versione DeterministicaVersione Deterministica

Processi che interagiscono tra loro mediante gli archi di un grafo G <V,E> non orientato e connesso

{0,1}

{0,1}

{0,1}{0,1}

{0,1}

{0,1}

{0,1}

{0,1}

Page 13: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 1313

Fallimento del link:Fallimento del link:Versione DeterministicaVersione Deterministica

Vogliamo dimostrare che Vogliamo dimostrare che non esistenon esiste un un algoritmo A che risolve il problema algoritmo A che risolve il problema utilizzando le condizioni di decisione utilizzando le condizioni di decisione precedentemente citate.precedentemente citate.

Per semplicità utilizzeremo un grafo di Per semplicità utilizzeremo un grafo di due nodi connessi da un arcodue nodi connessi da un arco

Page 14: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 1414

Fallimento del link:Fallimento del link:Versione DeterministicaVersione Deterministica

Ipotesi:Ipotesi: G = <V,E>G = <V,E> V = { 1, 2 }V = { 1, 2 } E = { (1,2) }E = { (1,2) } { Condizioni precedenti }{ Condizioni precedenti }

Tesi:Tesi: Non esiste algoritmo risolutivoNon esiste algoritmo risolutivo

Page 15: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 1515

Fallimento del link:Fallimento del link:Versione DeterministicaVersione Deterministica Dimostrazione per assurdo:Dimostrazione per assurdo:

P1P2

Ad ogni esecuzione ciclica dell’algoritmo del processo i viene inviato un messaggio a tutti gli altri processi, contenente il proprio valore di decisione.

Ogni ciclo dell’algoritmo è chiamato round “r”

1 1

Decisione

Page 16: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 1616

Fallimento del link:Fallimento del link:Versione DeterministicaVersione Deterministica Dimostrazione per assurdo:Dimostrazione per assurdo:

P1P2

La sequenza di messaggi verrà denotata con il simbolo

. ⍺

Riportata qui di fianco c’è la sequenza . ⍺

In questo caso al termine degli r-esimo round entrambi i processi decideranno 1, quindi i generali attaccano.

1 1

Page 17: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 1717

Fallimento del link:Fallimento del link:Versione DeterministicaVersione Deterministica Dimostrazione per assurdo:Dimostrazione per assurdo:

P1P2

Chiamiamo questa sequenza di messaggi come ⍺1.

Questa sequenza è uguale alla precedente ad eccezione dell’assenza dell’ultimo messaggio. Infatti fallisce la ricezione dell’ultimo messaggio di P1.

Per P1 la sequenza è indistinguibile dalla precedente

1 1

Page 18: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 1818

Fallimento del link:Fallimento del link:Versione DeterministicaVersione Deterministica

L’ L’ indistinguibilitàindistinguibilità di una sequenza di una sequenza ⍺ da una da una sequenza sequenza ⍺1 da parte di un certo da parte di un certo

processo Pprocesso Py si indica con:si indica con:

⍺ ~ ⍺1

y

Page 19: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 1919

Fallimento del link:Fallimento del link:Versione DeterministicaVersione Deterministica Dimostrazione per assurdo:Dimostrazione per assurdo:

P1P2

Se creiamo un’altra sequenza ⍺2 che differisce dalla precedente per l’assenza di un arco che va da P2 a P1, avremo che per P2 questa sequenza sarà indistinguibile dalla precedente, ossia:

1 1

⍺1 ~ ⍺2

2

Decisione per entrambi uguale a 1.

Page 20: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 2020

Fallimento del link:Fallimento del link:Versione DeterministicaVersione Deterministica Dimostrazione per assurdo:Dimostrazione per assurdo:

P1P2

Se continuiamo su questa strada, rimuovendo alternativamente un arco da entrambe le parti. Raggiungeremo una sequenza ’ in cui i ⍺messaggi non sono consegnati.

I processi sono forzati a decidere 1 in questo caso.

1 1

Decisione per entrambi uguale a 1.

Page 21: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 2121

Fallimento del link:Fallimento del link:Versione DeterministicaVersione Deterministica Dimostrazione per assurdo:Dimostrazione per assurdo:

P1P2

Supponiamo di avere la sequenza ’’ in cui nessun ⍺messaggio è consegnato.

Ma il valore iniziale di P2 stavolta è 0.

P2 è forzato a decidere 1 in questo caso perché P1 deciderà 1 visto che per lui:

1 0

Decisione per entrambi uguale a 1. ’’⍺ ~ ’⍺

1

Page 22: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 2222

Fallimento del link:Fallimento del link:Versione DeterministicaVersione Deterministica Dimostrazione per assurdo:Dimostrazione per assurdo:

P1P2

A questo punto immaginiamo la sequenza

’’’ in cui nessun messaggio ⍺è consegnato, ma entrambi i processi sono inizializzati a 0.

Siccome per P2 non c’è alcuna differenza rispetto alla sequenza precedente:

0 0

’’’⍺ ~ ’’⍺2

Page 23: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 2323

Fallimento del link:Fallimento del link:Versione DeterministicaVersione Deterministica Dimostrazione per assurdo:Dimostrazione per assurdo:

P1P2

P2 deciderà nuovamente 1 perché non è cambiato nulla rispetto a prima.

Mentre P1 deciderà 0

0 0

Decisione spaiata in disaccordo con l’Agreement

C.V.D.

Page 24: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 2424

Fallimento del link: Fallimento del link: Versione Versione RandomizedRandomized

In questa versione si inseriscono delle In questa versione si inseriscono delle supposizioni ulteriori:supposizioni ulteriori: Che il protocollo di comunicazione termini Che il protocollo di comunicazione termini

dopo dopo r r round (cicli dell’algoritmo con round (cicli dell’algoritmo con spedizione di messaggi)spedizione di messaggi)

Che ci sia una probabilità di errore Che ci sia una probabilità di errore εε, ovvero , ovvero che possa succedere che i processi non che possa succedere che i processi non raggiungano lo stesso risultatoraggiungano lo stesso risultato

Page 25: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 2525

Fallimento del link: Fallimento del link: Versione Versione RandomizedRandomized

Con probabilità di errore si intende con Con probabilità di errore si intende con quale probabilità sia il disaccordo tra i quale probabilità sia il disaccordo tra i processi a causa di messaggi non processi a causa di messaggi non recapitatirecapitati

Quel che vogliamo fare è cercare di Quel che vogliamo fare è cercare di stabilire qual è la relazione che c’è tra la stabilire qual è la relazione che c’è tra la probabilità di errore probabilità di errore εε ed il numero di ed il numero di roundround

Page 26: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 2626

Fallimento del link: Fallimento del link: Versione Versione RandomizedRandomized

Premessa: la difficoltà di calcolo della Premessa: la difficoltà di calcolo della stima è data soprattutto da stima è data soprattutto da qualiquali messaggi sono perduti messaggi sono perduti ci poniamo ci poniamo nel caso peggiore: un avversario che nel caso peggiore: un avversario che cerca di impedire il corretto cerca di impedire il corretto raggiungimento del consenso:raggiungimento del consenso: InputInput Communication patternCommunication pattern

Page 27: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 2727

Fallimento del link: Fallimento del link: Versione Versione RandomizedRandomized

Formalizzazione delle condizioni(1)Formalizzazione delle condizioni(1) Communication PatternCommunication Pattern

E’ un sottoinsieme E’ un sottoinsieme ωω dell’insieme così dell’insieme così definito:definito:

{(i,j,k): (i,j) è un arco del grafo, e k≥1}{(i,j,k): (i,j) è un arco del grafo, e k≥1}

Ovvero di tutte le triple che contengono i Ovvero di tutte le triple che contengono i due nodi di un arco ed un intero. Un due nodi di un arco ed un intero. Un elemento appartenente ad elemento appartenente ad ωω indica che al indica che al round round kk è stato inviato un messaggio da i a è stato inviato un messaggio da i a j.j.

Page 28: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 2828

Fallimento del link: Fallimento del link: Versione Versione RandomizedRandomized

Un Un communication pattern communication pattern è definito è definito ““buonobuono” se per ogni elemento di ” se per ogni elemento di ωω, , k < rk < r, ed in quel caso si può , ed in quel caso si può utilizzare come descrittore utilizzare come descrittore dell’insieme di messaggi che sono dell’insieme di messaggi che sono stati inviati in una esecuzionestati inviati in una esecuzione

Page 29: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 2929

Fallimento del link: Fallimento del link: Versione Versione RandomizedRandomized

Formalizzazione delle condizioni (2)Formalizzazione delle condizioni (2) Agreement: Agreement: per ogni avversario B per ogni avversario B

abbiamo che:abbiamo che:PrPrBB[ alcuni processi decido per 0 o [ alcuni processi decido per 0 o

decidono per 1 ] < decidono per 1 ] < εε Validity: Validity: la stessa di primala stessa di prima

Non è necessaria la Non è necessaria la termination termination (terminano in r round)(terminano in r round)

Page 30: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 3030

Fallimento del link: Fallimento del link: Versione Versione RandomizedRandomized

Per questo problema del consenso in Per questo problema del consenso in versione non deterministica versione non deterministica presentiamo un algoritmo che fissa la presentiamo un algoritmo che fissa la probabilità di errore probabilità di errore εε in questo modo: in questo modo:

r

1 r

1

Page 31: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 3131

Fallimento del link: Fallimento del link: Versione Versione RandomizedRandomized

Premesse:Premesse: L’algoritmo necessita di alcune L’algoritmo necessita di alcune

conoscenze che un processo deve conoscenze che un processo deve avere:avere: i i valori iniziali valori iniziali di ogni altro processo;di ogni altro processo; cosa sanno gli altri processi sui cosa sanno gli altri processi sui

valori iniziali di tutti gli altri processi.valori iniziali di tutti gli altri processi.

Page 32: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 3232

Fallimento del link: Fallimento del link: Versione Versione RandomizedRandomized

Premesse:Premesse: Si fissa un ordinamento su ogni Si fissa un ordinamento su ogni

communication pattern communication pattern ωω::

1.1. (i,k) ≤(i,k) ≤ωω (i,k’) per 1 ≤ i ≤ n e 0 ≤ k ≤ (i,k’) per 1 ≤ i ≤ n e 0 ≤ k ≤ k’k’

2.2. se (i,j,k) appartiene a se (i,j,k) appartiene a ωω, allora (i,k-1) , allora (i,k-1) ≤≤ωω (j,k)(j,k)

3.3. se (i,k) ≤se (i,k) ≤ωω (i’,k’) e (i’,k’) ≤(i’,k’) e (i’,k’) ≤ωω (i’’,k’’) (i’’,k’’) allora (i,k) ≤allora (i,k) ≤ωω (i’’,k’’) (i’’,k’’)

Page 33: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 3333

Fallimento del link: Fallimento del link: Versione Versione RandomizedRandomized

Premesse:Premesse: Si fissa Si fissa information levelinformation level : : levellevelωω(i,k) (i,k) di di

ogni processo i al round k, con 0 ≤ k ≤ r, ogni processo i al round k, con 0 ≤ k ≤ r, così definito ricorsivamente:così definito ricorsivamente:

1.1. se k = 0 se k = 0 levellevelωω(i,k) = 0(i,k) = 0

2.2. se k > 0 e j != i e (j, 0) ≰se k > 0 e j != i e (j, 0) ≰ωω (i, k) (i, k) levellevelωω(i,k) = 0(i,k) = 0

Ed in questo modo si definiscono i casi Ed in questo modo si definiscono i casi base.base.

Page 34: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 3434

Fallimento del link: Fallimento del link: Versione Versione RandomizedRandomized

3.3. k > 0 e (j, 0) ≤k > 0 e (j, 0) ≤ωω (i, k) per ogni j != i (i, k) per ogni j != i

per ogni j != i per ogni j != i

llj j = max {= max {levellevelωω(j,k’) (j,k’) : (j, k’) ≤: (j, k’) ≤ωω (i, (i, k) }k) }

llj j è il più grande livello è il più grande livello

che i conosce per il nodo jche i conosce per il nodo j

levellevelωω(i,k) = 1 + min {l(i,k) = 1 + min {lj j : j != i}: j != i}

Page 35: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 3535

Fallimento del link: Fallimento del link: Versione Versione RandomizedRandomized

Sintetizzando: ogni processo inizia Sintetizzando: ogni processo inizia con livello 0 e quando riceve un con livello 0 e quando riceve un messaggio modifica il proprio messaggio modifica il proprio livello inserendo il valore del livello inserendo il valore del

livello del processo mittente del livello del processo mittente del messaggio incrementato di 1.messaggio incrementato di 1.

Page 36: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 3636

Fallimento del link: Fallimento del link: Versione Versione RandomizedRandomizedEsempio:Esempio:

P1

00

10

1

3

3

5

5

2

2

4

4

4

1

2

3

4

5

6

0

RoundsCommunication

pattern

ω = { (1,2,1),

(1,2,2),(2,1,2),(1,2,3),(2,1,4),(1,2,5),(2,1,5),(1,2,6)}

n = 2

r = 6

Page 37: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 3737

Fallimento del link: Fallimento del link: Versione Versione RandomizedRandomized

Un lemma fondamentale è il seguente:Un lemma fondamentale è il seguente: Per ogni buon Per ogni buon communication pattern communication pattern ω

ed ogni k, 0 ≤ k ≤ r, ed ogni i e j,≤ k ≤ r, ed ogni i e j,

| | levellevelωω(i,k) - level(i,k) - levelωω(j,k) | (j,k) | ≤≤ 1 1

Cioè i livelli di ogni nodo differiscono Cioè i livelli di ogni nodo differiscono al più di una unitàal più di una unità

Page 38: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 3838

Fallimento del link: Fallimento del link: Versione Versione RandomizedRandomized

Questo si dimostra intuitivamente Questo si dimostra intuitivamente pensando che tutti i livelli sono pensando che tutti i livelli sono inizializzati a 0 e poi il livello di ogni inizializzati a 0 e poi il livello di ogni processo ad un certo round processo ad un certo round k k è dato dal è dato dal proprio livello al round precedente proprio livello al round precedente oppure dal massimo livello degli altri oppure dal massimo livello degli altri processi incrementati di 1.processi incrementati di 1.

Page 39: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 3939

Fallimento del link: Fallimento del link: Versione Versione RandomizedRandomized

Altro lemma fondamentale è il seguente:Altro lemma fondamentale è il seguente: Per ogni buon Per ogni buon communication pattern communication pattern ω

completo (cioè contenente tutte le possibili triple (i,j,k)):

levellevelωω(i,k) = k per ogni i e k(i,k) = k per ogni i e k

Cioè se la comunicazione non ha Cioè se la comunicazione non ha errori allora ad ogni round il livello è errori allora ad ogni round il livello è uguale al numero del round stessouguale al numero del round stesso

Page 40: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 4040

Fallimento del link: Fallimento del link: Versione Versione RandomizedRandomized

Anche in questo caso la dimostrazione è Anche in questo caso la dimostrazione è intuitiva, cioè se non ci sono messaggi intuitiva, cioè se non ci sono messaggi mancanti ad ogni round il livello è mancanti ad ogni round il livello è incrementato di 1 e quindi al round k il incrementato di 1 e quindi al round k il livello è k stesso. livello è k stesso.

Conseguenza: se non ci sono errori al Conseguenza: se non ci sono errori al termine dello scambio di messaggi il termine dello scambio di messaggi il livello è uguale ad rlivello è uguale ad r

Page 41: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 4141

Fallimento del link: Fallimento del link: Versione Versione RandomizedRandomized

Vediamo ora una definizione informale Vediamo ora una definizione informale dell’algoritmo:dell’algoritmo:

ogni processo tiene traccia del proprio ogni processo tiene traccia del proprio livello nella variabile livello nella variabile level level valutando i valutando i communication patterncommunication pattern che gli giungono; che gli giungono;

Il processo 1 crea un valore Il processo 1 crea un valore keykey compreso compreso tra 1 ed tra 1 ed r;r;

Il valore Il valore key key è inserito in tutti i messaggi è inserito in tutti i messaggi spediti;spediti;

Nei messaggi è anche inserito la Nei messaggi è anche inserito la descrizione dei valori iniziali di tutti i descrizione dei valori iniziali di tutti i messaggi;messaggi;

Page 42: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 4242

Fallimento del link: Fallimento del link: Versione Versione RandomizedRandomized

dopo dopo r r round ogni processo valuta round ogni processo valuta quale decisione prendere e decide quale decisione prendere e decide per 1 solo se le seguenti condizioni per 1 solo se le seguenti condizioni sono verificate:sono verificate: se il livello calcolato è grande almeno se il livello calcolato è grande almeno

come come keykey;; se i valori iniziali di tutti i processi se i valori iniziali di tutti i processi

sono a 1sono a 1

Page 43: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 4343

Fallimento del link: Fallimento del link: Versione Versione RandomizedRandomized

Formalizziamo l’algoritmo e definiamo l’alfabeto di Formalizziamo l’algoritmo e definiamo l’alfabeto di ogni messaggio, che è nella seguente tripla:ogni messaggio, che è nella seguente tripla:

(L, V, k)(L, V, k)

dovedove L è il vettore dei livelli precedenti alla L è il vettore dei livelli precedenti alla

elaborazione che farà il processo che riceve il elaborazione che farà il processo che riceve il messaggio;messaggio;

V è un vettore che può assumere i valori V è un vettore che può assumere i valori {0,1,undefined}{0,1,undefined} e rappresenta gli eventuali e rappresenta gli eventuali valori iniziali di ogni processovalori iniziali di ogni processo

k è il valore della chiave decisa dal processo 1 k è il valore della chiave decisa dal processo 1

Page 44: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 4444

Fallimento del link: Fallimento del link: Versione Versione RandomizedRandomized

StatesStatesii::

rounds ∈ N, inizialmente 0rounds ∈ N, inizialmente 0

decision ∈ {unknown, 0, 1}, inizialmente unknowndecision ∈ {unknown, 0, 1}, inizialmente unknown

key ∈ [1, r] ∪ undefined, inizialmente undefinedkey ∈ [1, r] ∪ undefined, inizialmente undefined

per ogni j, 1 ≤ j ≤ n:per ogni j, 1 ≤ j ≤ n:

val(j) ∈ {0, 1, undefined}; inizialmente val(i) è val(j) ∈ {0, 1, undefined}; inizialmente val(i) è il valore iniziale del processo e val(j) = il valore iniziale del processo e val(j) = undefined per ogni i != jundefined per ogni i != j

level(j) ∈ [-1,r]; inizialmente level(i) = 0 and level(j) ∈ [-1,r]; inizialmente level(i) = 0 and level(j) = -1 per ogni i != jlevel(j) = -1 per ogni i != j

Page 45: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 4545

Fallimento del link: Fallimento del link: Versione Versione RandomizedRandomized

randrandii::

se i = 1 e rounds = 0 allora key := valore se i = 1 e rounds = 0 allora key := valore casualecasuale

msgsmsgsii::

send (L, V, key) a tutti i j, in cui L è il send (L, V, key) a tutti i j, in cui L è il vettore dei livelli interno al processo e V vettore dei livelli interno al processo e V è il vettore dei valori inizialiè il vettore dei valori iniziali

Page 46: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 4646

Fallimento del link: Fallimento del link: Versione Versione RandomizedRandomized

transtransii::rounds := rounds + 1rounds := rounds + 1

(L(Ljj,V,Vjj,k,kjj) sono i messaggi ricevuti da j, per ogni j da cui è ) sono i messaggi ricevuti da j, per ogni j da cui è arrivato un messaggioarrivato un messaggio

se c’è qualche kse c’è qualche kjj definito key := k definito key := kjj

per tutti j != iper tutti j != i

se c’è qualche Vse c’è qualche Vjj(j) definito (j) definito val(j) := V val(j) := Vjj(j) (j)

se c’è qualche Lse c’è qualche Ljj(j) > level(j) (j) > level(j) level(j) := max {L level(j) := max {Ljj(j)}(j)}level(i) := 1 + min {level(j): j != i} level(i) := 1 + min {level(j): j != i} Se rounds = r Se rounds = r

se key è definito e level(i) ≥ key e val(j) =1per ogni j se key è definito e level(i) ≥ key e val(j) =1per ogni j decision := 1decision := 1

altrimenti decision := 0altrimenti decision := 0

Page 47: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 4747

Fallimento del link: Fallimento del link: Versione Versione RandomizedRandomized

Esempio:Esempio:

Il processo 1 sceglie una qualsivoglia Il processo 1 sceglie una qualsivoglia keykey compresa tra 1 e 6.compresa tra 1 e 6.

Al momento del r-esimo round ogni processo Al momento del r-esimo round ogni processo valuta la decisione da prendere confrontando i valuta la decisione da prendere confrontando i dati raccolti fino al tempo r.dati raccolti fino al tempo r.

Per decidere viene fatto un confronto tra la Per decidere viene fatto un confronto tra la chiave e il livello raggiunto […]chiave e il livello raggiunto […]

Page 48: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 4848

Fallimento del link: Fallimento del link: Versione Versione RandomizedRandomized

[…] ogni processo ha un proprio livello. Se vi è […] ogni processo ha un proprio livello. Se vi è stata una perdita di messaggi i livelli sono stata una perdita di messaggi i livelli sono minori di r. La differenza tra i livelli è sempre minori di r. La differenza tra i livelli è sempre minore o uguale a 1.minore o uguale a 1.

Come detto inizialmente il fallimento Come detto inizialmente il fallimento dell’algoritmo si ha con il disaccordo dei dell’algoritmo si ha con il disaccordo dei processi, evento che si verifica una volta su r processi, evento che si verifica una volta su r round […]round […]

Page 49: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 4949

Fallimento del link: Fallimento del link: Versione Versione RandomizedRandomized[…] ossia quando tra i […] ossia quando tra i

processi, quello con processi, quello con valore di livello massimo valore di livello massimo ha tale valore uguale ha tale valore uguale alla chiave (una volta su alla chiave (una volta su 6), e vi è almeno un 6), e vi è almeno un processo con valore di processo con valore di livello differente.livello differente.

Level al Level al round 6round 6 RisultatoRisultatoPP11 PP22

00 11 AccordoAccordo

11 22 AccordoAccordo

22 33 AccordoAccordo

33 44 AccordoAccordo

44 55 DisaccordoDisaccordo

55 66 AccordoAccordo

key = 5 n = 2 r = 6

Page 50: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti

5050

Fallimento dei processiFallimento dei processi

Page 51: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 5151

Fallimento dei processiFallimento dei processi

Vi sono 2 tipi di fallimento:Vi sono 2 tipi di fallimento: Stopping failureStopping failure

I processi falliscono senza dare nessun tipo di I processi falliscono senza dare nessun tipo di allarme allarme

Byzantine failureByzantine failureI processi che falliscono mostrano un I processi che falliscono mostrano un

comportamento casuale comportamento casuale

Page 52: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 5252

Fallimento dei processiFallimento dei processi

Il problemaIl problema Abbiamo una rete composta da n-nodi Abbiamo una rete composta da n-nodi

connessi in un grafo non orientatoconnessi in un grafo non orientato Tutti i processi iniziano con un input fisso tratto Tutti i processi iniziano con un input fisso tratto

da un insieme di valori Vda un insieme di valori V Obiettivo: arrivare ad una decisione comune Obiettivo: arrivare ad una decisione comune

valutando i valori inizialivalutando i valori iniziali Il numero di processi falliti è al massimo fIl numero di processi falliti è al massimo f

Page 53: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 5353

Fallimento dei processiFallimento dei processi

Siccome stavolta intervengono i Siccome stavolta intervengono i fallimenti, questi verranno considerati fallimenti, questi verranno considerati non in termini probabilistici, ma non in termini probabilistici, ma fissandone un limite superiore ffissandone un limite superiore f

Page 54: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 5454

Fallimento dei processi:Fallimento dei processi:Stopping FailureStopping Failure

Condizioni di correttezza:Condizioni di correttezza: Agreement:Agreement: 2 processi non possono decidere 2 processi non possono decidere

in modo diversoin modo diverso Validity:Validity:

Se tutti i processi partono con un valore v Se tutti i processi partono con un valore v appartenente all’insieme V, allora questo è appartenente all’insieme V, allora questo è l’unico valore possibile di decisionel’unico valore possibile di decisione

Termination:Termination: Tutti i processi che non falliscono Tutti i processi che non falliscono decidonodecidono

Page 55: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 5555

Fallimento dei processi:Fallimento dei processi:Byzantine FailureByzantine Failure

Condizioni di correttezza:Condizioni di correttezza: Agreement (new):Agreement (new): 2 processi 2 processi non fallitinon falliti non non

possono decidere in modo diversopossono decidere in modo diverso Validity (new):Validity (new):

Se tutti i processi non falliti partono con un valore v Se tutti i processi non falliti partono con un valore v appartenente all’insieme V, allora questo è l’unico appartenente all’insieme V, allora questo è l’unico valore possibile di decisione per i valore possibile di decisione per i processi non processi non fallitifalliti

Termination:Termination: Tutti i processi che non falliscono Tutti i processi che non falliscono decidonodecidono

Page 56: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 5656

Fallimento dei processi:Fallimento dei processi:Stopping FailureStopping Failure

Tre algoritmi per risolvere il problema:Tre algoritmi per risolvere il problema: FloodSet - algoritmo di baseFloodSet - algoritmo di base OptFloodSet - FloodSet a complessità OptFloodSet - FloodSet a complessità

ridottaridotta EIG – Exponential Information GatheringEIG – Exponential Information Gathering

Page 57: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 5757

Fallimento dei processi:Fallimento dei processi:Stopping FailureStopping Failure

Algoritmo informale:Algoritmo informale:

Ogni processo ha una Ogni processo ha una variabile Wvariabile W che è un che è un sottoinsieme di V, inizialmente contenente il sottoinsieme di V, inizialmente contenente il valore iniziale del processo.valore iniziale del processo.

Ad ogni Ad ogni roundround, che sono , che sono f+1f+1, ogni processo invia , ogni processo invia in modalità broadcast, la sua W. Al momento in modalità broadcast, la sua W. Al momento della ricezione del messaggio dagli altri processi, della ricezione del messaggio dagli altri processi, aggiorna la sua W, aggiungendogli i valori di W aggiorna la sua W, aggiungendogli i valori di W inviati dagli altri processi [...]inviati dagli altri processi [...]

Page 58: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 5858

Fallimento dei processi:Fallimento dei processi:Stopping FailureStopping Failure

[...] dopo f+1 round il processo decide v[...] dopo f+1 round il processo decide v00 se se

il suo W è composto da più di un elemento, il suo W è composto da più di un elemento, se invece W è un singoletto decide per se invece W è un singoletto decide per l’elemento contenutol’elemento contenuto

Page 59: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 5959

Fallimento dei processi:Fallimento dei processi:Stopping FailureStopping Failure

Proc.Proc. Val.Val.

22 11

33 11

44 11Proc.Proc. Val.Val.

11 11

33 11

44 11

Proc.Proc. Val.Val.

11 11

22 11

44 11

f = 1n = 4

1

3 4

2

W3 = { 1 }

W4 = { 1 }

W2 = { 1 }W1 = { 1 }

Round = 0

Proc.Proc. Val.Val.

11 11

22 11

33 11

Page 60: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 6060

Fallimento dei processi:Fallimento dei processi:Stopping FailureStopping Failure

Proc.Proc. Val.Val.

22

33 11

44 11

Proc.Proc. Val.Val.

11 11

22

44 11

f = 1n = 4

1

3 4

2

W3 = { 1 }

W4 = { 1 }

W2 = { 1 }

W1 = { 1 }

Round = 1

Proc.Proc. Val.Val.

11 11

22

33 11

Il processo 2 fallisce

Page 61: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 6161

Fallimento dei processi:Fallimento dei processi:Stopping FailureStopping Failure

Proc.Proc. Val.Val.

22

33 11

44 11

Proc.Proc. Val.Val.

11 11

22

44 11

f = 1n = 4

1

3 4

2

W3 = { 1 }

W4 = { 1 }

W2 = { 1 }

W1 = { 1 }

Round = 2

Proc.Proc. Val.Val.

11 11

22

33 11

Il processo 2 fallisceDecision1 = 1

Decision3 = 1 Decision4 = 1

Page 62: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 6262

Fallimento dei processi:Fallimento dei processi:Stopping FailureStopping Failure

Algoritmo FloodSet (formale):Algoritmo FloodSet (formale):StatesStatesii::

rounds ∈ N, inizialmente 0rounds ∈ N, inizialmente 0

decision ∈ V U {unknown}, inizialmente decision ∈ V U {unknown}, inizialmente unknownunknown

W⊆V, inizialmente il singoletto contenente il W⊆V, inizialmente il singoletto contenente il valore iniziale del processo ivalore iniziale del processo i

MsgsMsgsii::

If rounds ≤ f allora invia W agli altri processiIf rounds ≤ f allora invia W agli altri processi

Page 63: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 6363

Fallimento dei processi:Fallimento dei processi:Stopping FailureStopping Failure

transtransii::

rounds := rounds + 1rounds := rounds + 1

Sia XSia Xj j un messaggio del processo j, per ogni j un messaggio del processo j, per ogni j dal quale i riceve un messaggiodal quale i riceve un messaggio

WWi i = W= Wi i U U UUj j XXjj

Se rounds = f + 1 alloraSe rounds = f + 1 allora

se |W|=1 allora decision = v dove W = { v }se |W|=1 allora decision = v dove W = { v }

altrimenti decision = valtrimenti decision = v00

Page 64: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 6464

Fallimento dei processi:Fallimento dei processi:Stopping FailureStopping Failure

Algoritmo EIGStop:Algoritmo EIGStop:Ogni processo dispone di un albero. Su Ogni processo dispone di un albero. Su ogni nodo avrà un valore (val(x)) che gli ogni nodo avrà un valore (val(x)) che gli comunicano gli altri processi.comunicano gli altri processi.Il nodo radice (chiamato Il nodo radice (chiamato λλ) avrà il valore ) avrà il valore iniziale val(x) del processo stesso.iniziale val(x) del processo stesso.Round 1:Round 1: Il processo i-esimo invia il suo Il processo i-esimo invia il suo val(x) a tutti gli altri processi. Il processo i val(x) a tutti gli altri processi. Il processo i riceverà quindi i messaggi provenienti dagli riceverà quindi i messaggi provenienti dagli altri processi contenenti il valaltri processi contenenti il valjj(x) [...](x) [...]

Page 65: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 6565

Fallimento dei processi:Fallimento dei processi:Stopping FailureStopping Failure

[...] se v appartenente a V arriva a i [...] se v appartenente a V arriva a i da j allora i registra il valore v in val(j) da j allora i registra il valore v in val(j) altrimenti se non arriva un messaggio altrimenti se non arriva un messaggio con un valore non appartenente con un valore non appartenente all’insieme i registrerà val(j)=null [...]all’insieme i registrerà val(j)=null [...]

Page 66: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 6666

Fallimento dei processi:Fallimento dei processi:Stopping FailureStopping Failure

[...][...]

Round k (2 ≤ k ≤ f +1):Round k (2 ≤ k ≤ f +1): il processo i il processo i invia a tutti gli altri le coppie (x,v) dove x invia a tutti gli altri le coppie (x,v) dove x è il valore di un nodo a livello k-1 è il valore di un nodo a livello k-1 sull’albero Tsull’albero TSe xj è un nodo a livello k in T, dove x è Se xj è un nodo a livello k in T, dove x è una stringa e j è un indice singolo e il una stringa e j è un indice singolo e il messaggio dice che val(x) = v messaggio dice che val(x) = v appartenente a V ed arriva a i da j, allora appartenente a V ed arriva a i da j, allora i setta val(xj) a vi setta val(xj) a v

Page 67: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 6767

Fallimento dei processi:Fallimento dei processi:Stopping FailureStopping Failure

val(val(λλ))val(val(λλ))

1:val(1)1:val(1)1:val(1)1:val(1) 2:val(2)2:val(2)2:val(2)2:val(2) 3:val(3)3:val(3)3:val(3)3:val(3)

1:val(2)1:val(2)1:val(2)1:val(2) 1:val(3)1:val(3)1:val(3)1:val(3) 1:val(4)1:val(4)1:val(4)1:val(4)

4:val(4)4:val(4)4:val(4)4:val(4)

1:2:val(3)1:2:val(3)1:2:val(3)1:2:val(3) 1:2:val(4)1:2:val(4)1:2:val(4)1:2:val(4)

1:2:3:val(4)1:2:3:val(4)1:2:3:val(4)1:2:3:val(4) 1:2:4:val(3)1:2:4:val(3)1:2:4:val(3)1:2:4:val(3)

LivelliLivelli

00

11

22

33

44

Page 68: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 6868

Fallimento dei processi:Fallimento dei processi:Stopping FailureStopping Failure

1

2 3

2:3 3:2

2

1 3

1:3 3:1

31

0 0

0 1 0 null

null null 1 null

Page 69: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 6969

Fallimento dei processi:Fallimento dei processi:Byzantine FailureByzantine Failure

L’algoritmo che descriveremo per L’algoritmo che descriveremo per risolvere il problema, EIGByz, è uno tratto risolvere il problema, EIGByz, è uno tratto dal EIGstop.dal EIGstop.Premessa importante per tutti gli Premessa importante per tutti gli algoritmi che risolvono questo problema è algoritmi che risolvono questo problema è la seguente:è sempre fissato che il la seguente:è sempre fissato che il numero dei processi deve essere numero dei processi deve essere maggiore di tre volte il numero dei maggiore di tre volte il numero dei fallimenti. Cioè:fallimenti. Cioè:

n > 3fn > 3f

Page 70: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 7070

Fallimento dei processi:Fallimento dei processi:Byzantine FailureByzantine Failure

Algoritmo EIGByz:Algoritmo EIGByz:L’algoritmo è uguale a EIGStop con le L’algoritmo è uguale a EIGStop con le seguenti differenze:seguenti differenze: Se un processo riceve un messaggio che Se un processo riceve un messaggio che non è nella forma corretta non lo considera non è nella forma corretta non lo considera e si comporta come se non l’avesse e si comporta come se non l’avesse ricevuto (cioè mette valore NULL);ricevuto (cioè mette valore NULL); Al round f+1 il processo sostituisce i Al round f+1 il processo sostituisce i valori NULL nell’albero con il valore vvalori NULL nell’albero con il valore v00;;

Page 71: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 7171

Fallimento dei processi:Fallimento dei processi:Byzantine FailureByzantine Failure

Nel momento della decisione il Nel momento della decisione il processo parte dalle foglie fino alla processo parte dalle foglie fino alla radice inserendo un nuovo valore radice inserendo un nuovo valore newval(x)newval(x) per ogni nodo per ogni nodo xx. .

Se nodo è foglia Se nodo è foglia newval(x) = val(x)newval(x) = val(x) Altrimenti Altrimenti newval(x) = mnewval(x) = m dove m è il dove m è il

valore che maggiormente si trova nelle valore che maggiormente si trova nelle varibili varibili newvalnewval nei figli di x. Se un valore di nei figli di x. Se un valore di maggioranza non c’è si inserisce maggioranza non c’è si inserisce valval00..

Page 72: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 7272

Fallimento dei processi:Fallimento dei processi:Byzantine FailureByzantine Failure

Il valore di decisione è preso Il valore di decisione è preso andando a vedere cosa c’è, alla fine andando a vedere cosa c’è, alla fine dell’esecuzione precedentemente dell’esecuzione precedentemente descritta, nel valore descritta, nel valore newvalnewval del nodo del nodo radiceradice, newval(, newval(λλ))..

Page 73: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 7373

1 2 3 4 1 2 3 4 1 2 3 41

Esempio: Esempio: n=4n=4, con , con l’albero del processo 1l’albero del processo 1

5

5 5 5 5

5 5 5 4 5 5 5 3 5 5 5 2 5 5 5 1

5

5

5

7

5

5

5

5

5

5

5

2

5

5

5

1

5

5

5

8

5

5

5

9

5

5

5

0

5

5

5

3

5

5

5

7

5

5

5

2

5

5

5

8

5

5

5

0

5

5

5

3

5

5

5

5

5

5

5

1

5

5

5

3

1

2

3

4

1 2 3 4

5 5 555 5 55 5 5 55 5 5 55

5 5 55

5

Il processo quattro impazzisce e spedisce messagi a caso

2 3 4

Page 74: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 7474

Page 75: Distributed consensus

Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 7575

BibliografiaBibliografia

Lynch,Lynch, Distributed AlgorithmsDistributed Algorithms, Ed., Ed. KaufmannKaufmann