Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
Distributed consensus
Problemi legati al consenso di due o più processi Seminario a cura di Oscar Pistamiglio e Federico Vietti
2
Seminario a cura di Oscar Pistamiglio e Federico Vietti
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. Seminario a cura di Oscar Pistamiglio e Federico Vietti
3
Seminario a cura di Oscar Pistamiglio e Federico Vietti
Alcuni esempi Transazioni su database distribuiti Applicazioni in rete Stima dell’altezza di un aereo grazie alla lettura di altimetri In generale sistemi privi di memoria comune Seminario a cura di Oscar Pistamiglio e Federico Vietti
4
Seminario a cura di Oscar Pistamiglio e Federico Vietti
Tipologie di ambiente Senza fallimenti Fallimento: A livello di link Versione deterministica Versione Randomized A livello di processo Failure Stopping Byzantine Stopping Seminario a cura di Oscar Pistamiglio e Federico Vietti
5
Seminario a cura di Oscar Pistamiglio e Federico Vietti
Fallimento dei Link Seminario a cura di Oscar Pistamiglio e Federico Vietti
6
Seminario a cura di Oscar Pistamiglio e Federico Vietti
Fallimento dei link: Sono fallimenti legati alla consegna dei messaggi: A invia un messaggio a B, ma questi non lo riceve ed A non rileva il fallimento Seminario a cura di Oscar Pistamiglio e Federico Vietti
7
Fallimento del link: Versione Deterministica
Problema dell’attacco coordinato: Si hanno n generali che devono attaccare un obiettivo comune. La riuscita dell’attacco si ha solo se tutti gli n generali decidono di attaccare contemporaneamente. Il coordinamento è realizzato tramite scambio di messaggi […] Seminario a cura di Oscar Pistamiglio e Federico Vietti
8
Fallimento del link: Versione Deterministica
Problema dell’attacco coordinato: […] Ogni generale attacca solamente se lo stato del suo esercito è buono. In questo caso invia un segnale positivo agli altri, altrimenti negativo. Seminario a cura di Oscar Pistamiglio e Federico Vietti
9
Fallimento del link: Versione Deterministica
Fallimenti dell’attacco coordinato: I messaggeri, che viaggiano a piedi, possono essere vittime di imboscate del nemico, con conseguente perdita del messaggio perdita di coordinamento nell’attacco. Seminario a cura di Oscar Pistamiglio e Federico Vietti
10
Fallimento dei link: Versione Deterministica
Attacco coordinato Consenso N generali N processi Stato Esercito (buono, non buono) Stato iniziale: {1 - buono,0 - altrimenti} Decisione bellica {0 - pace, 1 - attacco} Seminario a cura di Oscar Pistamiglio e Federico Vietti
11
Fallimento del link: Versione Deterministica
Condizioni per decidere: Agreement (accordo): 2 processi non possono decidere in modo diverso Validity: Se tutti i processi iniziano con 0, la decisione è 0. Se tutti i processi iniziano con 1 e tutti i messaggi sono stati recapitati, l’unica decisione possibile è 1 Termination: ogni processo decide per se Seminario a cura di Oscar Pistamiglio e Federico Vietti
12
Fallimento del link: Versione Deterministica
{0,1} {0,1} 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} Seminario a cura di Oscar Pistamiglio e Federico Vietti
13
Fallimento del link: Versione Deterministica
Vogliamo dimostrare che non esiste un algoritmo A che risolve il problema utilizzando le condizioni di decisione precedentemente citate. Per semplicità utilizzeremo un grafo di due nodi connessi da un arco Seminario a cura di Oscar Pistamiglio e Federico Vietti
14
Fallimento del link: Versione Deterministica
Ipotesi: G = <V,E> V = { 1, 2 } E = { (1,2) } { Condizioni precedenti } Tesi: Non esiste algoritmo risolutivo Seminario a cura di Oscar Pistamiglio e Federico Vietti
15
Fallimento del link: Versione Deterministica
Dimostrazione per assurdo: 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” P2 P1 1 1 Decisione Seminario a cura di Oscar Pistamiglio e Federico Vietti
16
Fallimento del link: Versione Deterministica
Dimostrazione per assurdo: 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. P2 P1 1 1 Seminario a cura di Oscar Pistamiglio e Federico Vietti
17
Fallimento del link: Versione Deterministica
Dimostrazione per assurdo: 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 P2 P1 1 1 Seminario a cura di Oscar Pistamiglio e Federico Vietti
18
Fallimento del link: Versione Deterministica
L’ indistinguibilità di una sequenza ⍺ da una sequenza ⍺1 da parte di un certo processo Py si indica con: y ⍺ ~ ⍺1 Seminario a cura di Oscar Pistamiglio e Federico Vietti
19
Fallimento del link: Versione Deterministica
Dimostrazione per assurdo: 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: P2 P1 1 1 Decisione per entrambi uguale a 1. 2 ⍺1 ~ ⍺2 Seminario a cura di Oscar Pistamiglio e Federico Vietti
20
Fallimento del link: Versione Deterministica
Dimostrazione per assurdo: 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. P2 P1 1 1 Decisione per entrambi uguale a 1. Seminario a cura di Oscar Pistamiglio e Federico Vietti
21
Fallimento del link: Versione Deterministica
Dimostrazione per assurdo: 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: P2 P1 1 Decisione per entrambi uguale a 1. 1 ⍺’’~ ⍺’ Seminario a cura di Oscar Pistamiglio e Federico Vietti
22
Fallimento del link: Versione Deterministica
Dimostrazione per assurdo: 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: P2 P1 2 ⍺’’’~ ⍺’’ Seminario a cura di Oscar Pistamiglio e Federico Vietti
23
Fallimento del link: Versione Deterministica
Dimostrazione per assurdo: P2 deciderà nuovamente 1 perché non è cambiato nulla rispetto a prima. Mentre P1 deciderà 0 P2 P1 Assurdo! C.V.D. Decisione spaiata in disaccordo con l’Agreement Seminario a cura di Oscar Pistamiglio e Federico Vietti
24
Fallimento del link: Versione Randomized
In questa versione si inseriscono delle supposizioni ulteriori: Che il protocollo di comunicazione termini dopo r round (cicli dell’algoritmo con spedizione di messaggi) Che ci sia una probabilità di errore ε, ovvero che possa succedere che i processi non raggiungano lo stesso risultato Seminario a cura di Oscar Pistamiglio e Federico Vietti
25
Fallimento del link: Versione Randomized
Con probabilità di errore si intende con quale probabilità sia il disaccordo tra i processi a causa di messaggi non recapitati Quel che vogliamo fare è cercare di stabilire qual è la relazione che c’è tra la probabilità di errore ε ed il numero di round Seminario a cura di Oscar Pistamiglio e Federico Vietti
26
Fallimento del link: Versione Randomized
Premessa: la difficoltà di calcolo della stima è data soprattutto da quali messaggi sono perduti ci poniamo nel caso peggiore: un avversario che cerca di impedire il corretto raggiungimento del consenso: Input Communication pattern Seminario a cura di Oscar Pistamiglio e Federico Vietti
27
Fallimento del link: Versione Randomized
Formalizzazione delle condizioni(1) Communication Pattern E’ un sottoinsieme ω dell’insieme così definito: {(i,j,k): (i,j) è un arco del grafo, e k≥1} Ovvero di tutte le triple che contengono i due nodi di un arco ed un intero. Un elemento appartenente ad ω indica che al round k è stato inviato un messaggio da i a j. Seminario a cura di Oscar Pistamiglio e Federico Vietti
28
Fallimento del link: Versione Randomized
Un communication pattern è definito “buono” se per ogni elemento di ω, k < r, ed in quel caso si può utilizzare come descrittore dell’insieme di messaggi che sono stati inviati in una esecuzione Seminario a cura di Oscar Pistamiglio e Federico Vietti
29
Fallimento del link: Versione Randomized
Formalizzazione delle condizioni (2) Agreement: per ogni avversario B abbiamo che: PrB[ alcuni processi decido per 0 o decidono per 1 ] < ε Validity: la stessa di prima Non è necessaria la termination (terminano in r round) Seminario a cura di Oscar Pistamiglio e Federico Vietti
30
Fallimento del link: Versione Randomized
Per questo problema del consenso in versione non deterministica presentiamo un algoritmo che fissa la probabilità di errore ε in questo modo: Seminario a cura di Oscar Pistamiglio e Federico Vietti
31
Fallimento del link: Versione Randomized
Premesse: L’algoritmo necessita di alcune conoscenze che un processo deve avere: i valori iniziali di ogni altro processo; cosa sanno gli altri processi sui valori iniziali di tutti gli altri processi. Seminario a cura di Oscar Pistamiglio e Federico Vietti
32
Fallimento del link: Versione Randomized
Premesse: Si fissa un ordinamento su ogni communication pattern ω: (i,k) ≤ω (i,k’) per 1 ≤ i ≤ n e 0 ≤ k ≤ k’ se (i,j,k) appartiene a ω, allora (i,k-1) ≤ω (j,k) se (i,k) ≤ω (i’,k’) e (i’,k’) ≤ω (i’’,k’’) allora (i,k) ≤ω (i’’,k’’) Seminario a cura di Oscar Pistamiglio e Federico Vietti
33
Fallimento del link: Versione Randomized
Premesse: Si fissa information level : levelω(i,k) di ogni processo i al round k, con 0 ≤ k ≤ r, così definito ricorsivamente: se k = 0 levelω(i,k) = 0 se k > 0 e j != i e (j, 0) ≰ω (i, k) levelω(i,k) = 0 Ed in questo modo si definiscono i casi base. Seminario a cura di Oscar Pistamiglio e Federico Vietti
34
Fallimento del link: Versione Randomized
k > 0 e (j, 0) ≤ω (i, k) per ogni j != i per ogni j != i lj = max {levelω(j,k’) : (j, k’) ≤ω (i, k) } lj è il più grande livello che i conosce per il nodo j levelω(i,k) = 1 + min {lj : j != i} Seminario a cura di Oscar Pistamiglio e Federico Vietti
35
Fallimento del link: Versione Randomized
Sintetizzando: ogni processo inizia con livello 0 e quando riceve un messaggio modifica il proprio livello inserendo il valore del livello del processo mittente del messaggio incrementato di 1. Seminario a cura di Oscar Pistamiglio e Federico Vietti
36
Fallimento del link: Versione Randomized
Esempio: Rounds Communication 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) } P1 1 1 2 1 2 2 3 3 4 3 4 n = 2 r = 6 4 5 5 4 5 6 Seminario a cura di Oscar Pistamiglio e Federico Vietti
37
Fallimento del link: Versione Randomized
Un lemma fondamentale è il seguente: Per ogni buon communication pattern ω ed ogni k, 0 ≤ k ≤ r, ed ogni i e j, | levelω(i,k) - levelω(j,k) | ≤ 1 Cioè i livelli di ogni nodo differiscono al più di una unità Seminario a cura di Oscar Pistamiglio e Federico Vietti
38
Fallimento del link: Versione Randomized
Questo si dimostra intuitivamente pensando che tutti i livelli sono inizializzati a 0 e poi il livello di ogni processo ad un certo round k è dato dal proprio livello al round precedente oppure dal massimo livello degli altri processi incrementati di 1. Seminario a cura di Oscar Pistamiglio e Federico Vietti
39
Fallimento del link: Versione Randomized
Altro lemma fondamentale è il seguente: Per ogni buon communication pattern ω completo (cioè contenente tutte le possibili triple (i,j,k)): levelω(i,k) = k per ogni i e k Cioè se la comunicazione non ha errori allora ad ogni round il livello è uguale al numero del round stesso Seminario a cura di Oscar Pistamiglio e Federico Vietti
40
Fallimento del link: Versione Randomized
Anche in questo caso la dimostrazione è intuitiva, cioè se non ci sono messaggi mancanti ad ogni round il livello è incrementato di 1 e quindi al round k il livello è k stesso. Conseguenza: se non ci sono errori al termine dello scambio di messaggi il livello è uguale ad r Seminario a cura di Oscar Pistamiglio e Federico Vietti
41
Fallimento del link: Versione Randomized
Vediamo ora una definizione informale dell’algoritmo: ogni processo tiene traccia del proprio livello nella variabile level valutando i communication pattern che gli giungono; Il processo 1 crea un valore key compreso tra 1 ed r; Il valore key è inserito in tutti i messaggi spediti; Nei messaggi è anche inserito la descrizione dei valori iniziali di tutti i messaggi; Seminario a cura di Oscar Pistamiglio e Federico Vietti
42
Fallimento del link: Versione Randomized
dopo r round ogni processo valuta quale decisione prendere e decide per 1 solo se le seguenti condizioni sono verificate: se il livello calcolato è grande almeno come key; se i valori iniziali di tutti i processi sono a 1 Seminario a cura di Oscar Pistamiglio e Federico Vietti
43
Fallimento del link: Versione Randomized
Formalizziamo l’algoritmo e definiamo l’alfabeto di ogni messaggio, che è nella seguente tripla: (L, V, k) dove L è il vettore dei livelli precedenti alla elaborazione che farà il processo che riceve il messaggio; V è un vettore che può assumere i valori {0,1,undefined} e rappresenta gli eventuali valori iniziali di ogni processo k è il valore della chiave decisa dal processo 1 Seminario a cura di Oscar Pistamiglio e Federico Vietti
44
Fallimento del link: Versione Randomized
Statesi: rounds ∈ N, inizialmente 0 decision ∈ {unknown, 0, 1}, inizialmente unknown key ∈ [1, r] ∪ undefined, inizialmente undefined per ogni j, 1 ≤ j ≤ n: val(j) ∈ {0, 1, undefined}; inizialmente val(i) è il valore iniziale del processo e val(j) = undefined per ogni i != j level(j) ∈ [-1,r]; inizialmente level(i) = 0 and level(j) = -1 per ogni i != j Seminario a cura di Oscar Pistamiglio e Federico Vietti
45
Fallimento del link: Versione Randomized
randi: se i = 1 e rounds = 0 allora key := valore casuale msgsi: send (L, V, key) a tutti i j, in cui L è il vettore dei livelli interno al processo e V è il vettore dei valori iniziali Seminario a cura di Oscar Pistamiglio e Federico Vietti
46
Fallimento del link: Versione Randomized
transi: rounds := rounds + 1 (Lj,Vj,kj) sono i messaggi ricevuti da j, per ogni j da cui è arrivato un messaggio se c’è qualche kj definito key := kj per tutti j != i se c’è qualche Vj(j) definito val(j) := Vj(j) se c’è qualche Lj(j) > level(j) level(j) := max {Lj(j)} level(i) := 1 + min {level(j): j != i} Se rounds = r se key è definito e level(i) ≥ key e val(j) =1per ogni j decision := 1 altrimenti decision := 0 Seminario a cura di Oscar Pistamiglio e Federico Vietti
47
Fallimento del link: Versione Randomized
Esempio: Il processo 1 sceglie una qualsivoglia key compresa tra 1 e 6. Al momento del r-esimo round ogni processo valuta la decisione da prendere confrontando i dati raccolti fino al tempo r. Per decidere viene fatto un confronto tra la chiave e il livello raggiunto […] Seminario a cura di Oscar Pistamiglio e Federico Vietti
48
Fallimento del link: Versione Randomized
[…] ogni processo ha un proprio livello. Se vi è stata una perdita di messaggi i livelli sono minori di r. La differenza tra i livelli è sempre minore o uguale a 1. Come detto inizialmente il fallimento dell’algoritmo si ha con il disaccordo dei processi, evento che si verifica una volta su r round […] Seminario a cura di Oscar Pistamiglio e Federico Vietti
49
Fallimento del link: Versione Randomized
[…] ossia quando tra i processi, quello con valore di livello massimo ha tale valore uguale alla chiave (una volta su 6), e vi è almeno un processo con valore di livello differente. Level al round 6 Risultato P1 P2 1 Accordo 2 3 4 5 Disaccordo 6 key = 5 n = 2 r = 6 Seminario a cura di Oscar Pistamiglio e Federico Vietti
50
Fallimento dei processi
Seminario a cura di Oscar Pistamiglio e Federico Vietti
51
Fallimento dei processi
Vi sono 2 tipi di fallimento: Stopping failure I processi falliscono senza dare nessun tipo di allarme Byzantine failure I processi che falliscono mostrano un comportamento casuale Seminario a cura di Oscar Pistamiglio e Federico Vietti
52
Fallimento dei processi
Il problema Abbiamo una rete composta da n-nodi connessi in un grafo non orientato Tutti i processi iniziano con un input fisso tratto da un insieme di valori V Obiettivo: arrivare ad una decisione comune valutando i valori iniziali Il numero di processi falliti è al massimo f Seminario a cura di Oscar Pistamiglio e Federico Vietti
53
Fallimento dei processi
Siccome stavolta intervengono i fallimenti, questi verranno considerati non in termini probabilistici, ma fissandone un limite superiore f Seminario a cura di Oscar Pistamiglio e Federico Vietti
54
Fallimento dei processi: Stopping Failure
Condizioni di correttezza: Agreement: 2 processi non possono decidere in modo diverso Validity: Se tutti i processi partono con un valore v appartenente all’insieme V, allora questo è l’unico valore possibile di decisione Termination: Tutti i processi che non falliscono decidono Seminario a cura di Oscar Pistamiglio e Federico Vietti
55
Fallimento dei processi: Byzantine Failure
Condizioni di correttezza: Agreement (new): 2 processi non falliti non possono decidere in modo diverso Validity (new): Se tutti i processi non falliti partono con un valore v appartenente all’insieme V, allora questo è l’unico valore possibile di decisione per i processi non falliti Termination: Tutti i processi che non falliscono decidono Seminario a cura di Oscar Pistamiglio e Federico Vietti
56
Fallimento dei processi: Stopping Failure
Tre algoritmi per risolvere il problema: FloodSet - algoritmo di base OptFloodSet - FloodSet a complessità ridotta EIG – Exponential Information Gathering Seminario a cura di Oscar Pistamiglio e Federico Vietti
57
Fallimento dei processi: Stopping Failure
Algoritmo informale: Ogni processo ha una variabile W che è un sottoinsieme di V, inizialmente contenente il valore iniziale del processo. Ad ogni round, che sono f+1, ogni processo invia in modalità broadcast, la sua W. Al momento della ricezione del messaggio dagli altri processi, aggiorna la sua W, aggiungendogli i valori di W inviati dagli altri processi [...] Seminario a cura di Oscar Pistamiglio e Federico Vietti
58
Fallimento dei processi: Stopping Failure
[...] dopo f+1 round il processo decide v0 se il suo W è composto da più di un elemento, se invece W è un singoletto decide per l’elemento contenuto Seminario a cura di Oscar Pistamiglio e Federico Vietti
59
Fallimento dei processi: Stopping Failure
Val. 2 1 3 4 f = 1 n = 4 W1 = { 1 } W2 = { 1 } 1 2 Proc. Val. 1 3 4 Round = 0 Proc. Val. 1 2 3 W3 = { 1 } Proc. Val. 1 2 4 3 4 W4 = { 1 } Seminario a cura di Oscar Pistamiglio e Federico Vietti
60
Fallimento dei processi: Stopping Failure
Il processo 2 fallisce Proc. Val. 2 3 1 4 f = 1 n = 4 W1 = { 1 } 1 2 W2 = { 1 } Round = 1 Proc. Val. 1 2 3 W3 = { 1 } Proc. Val. 1 2 4 3 4 W4 = { 1 } Seminario a cura di Oscar Pistamiglio e Federico Vietti
61
Fallimento dei processi: Stopping Failure
Il processo 2 fallisce Proc. Val. 2 3 1 4 f = 1 n = 4 Decision1 = 1 W1 = { 1 } 1 2 W2 = { 1 } Round = 2 Proc. Val. 1 2 3 W3 = { 1 } Proc. Val. 1 2 4 3 4 Decision3 = 1 Decision4 = 1 W4 = { 1 } Seminario a cura di Oscar Pistamiglio e Federico Vietti
62
Fallimento dei processi: Stopping Failure
Algoritmo FloodSet (formale): Statesi: rounds ∈ N, inizialmente 0 decision ∈ V U {unknown}, inizialmente unknown W⊆V, inizialmente il singoletto contenente il valore iniziale del processo i Msgsi: If rounds ≤ f allora invia W agli altri processi Seminario a cura di Oscar Pistamiglio e Federico Vietti
63
Fallimento dei processi: Stopping Failure
transi: rounds := rounds + 1 Sia Xj un messaggio del processo j, per ogni j dal quale i riceve un messaggio Wi = Wi U Uj Xj Se rounds = f + 1 allora se |W|=1 allora decision = v dove W = { v } altrimenti decision = v0 Seminario a cura di Oscar Pistamiglio e Federico Vietti
64
Fallimento dei processi: Stopping Failure
Algoritmo EIGStop: Ogni processo dispone di un albero. Su ogni nodo avrà un valore (val(x)) che gli comunicano gli altri processi. Il nodo radice (chiamato λ) avrà il valore iniziale val(x) del processo stesso. Round 1: Il processo i-esimo invia il suo val(x) a tutti gli altri processi. Il processo i riceverà quindi i messaggi provenienti dagli altri processi contenenti il valj(x) [...] Seminario a cura di Oscar Pistamiglio e Federico Vietti
65
Fallimento dei processi: Stopping Failure
[...] se v appartenente a V arriva a i da j allora i registra il valore v in val(j) altrimenti se non arriva un messaggio con un valore non appartenente all’insieme i registrerà val(j)=null [...] Seminario a cura di Oscar Pistamiglio e Federico Vietti
66
Fallimento dei processi: Stopping Failure
[...] Round k (2 ≤ k ≤ f +1): il processo i invia a tutti gli altri le coppie (x,v) dove x è il valore di un nodo a livello k-1 sull’albero T Se xj è un nodo a livello k in T, dove x è una stringa e j è un indice singolo e il messaggio dice che val(x) = v appartenente a V ed arriva a i da j, allora i setta val(xj) a v Seminario a cura di Oscar Pistamiglio e Federico Vietti
67
Fallimento dei processi: Stopping Failure
Livelli 1 2 3 4 EIG Tree Seminario a cura di Oscar Pistamiglio e Federico Vietti
68
Fallimento dei processi: Stopping Failure
1 2 Esempio 1 null 2 3 1 3 null null 1 null 2:3 3:2 1:3 3:1 1 3 Crash! Seminario a cura di Oscar Pistamiglio e Federico Vietti
69
Fallimento dei processi: Byzantine Failure
L’algoritmo che descriveremo per risolvere il problema, EIGByz, è uno tratto dal EIGstop. Premessa importante per tutti gli algoritmi che risolvono questo problema è la seguente:è sempre fissato che il numero dei processi deve essere maggiore di tre volte il numero dei fallimenti. Cioè: n > 3f Seminario a cura di Oscar Pistamiglio e Federico Vietti
70
Fallimento dei processi: Byzantine Failure
Algoritmo EIGByz: L’algoritmo è uguale a EIGStop con le seguenti differenze: Se un processo riceve un messaggio che non è nella forma corretta non lo considera e si comporta come se non l’avesse ricevuto (cioè mette valore NULL); Al round f+1 il processo sostituisce i valori NULL nell’albero con il valore v0; Seminario a cura di Oscar Pistamiglio e Federico Vietti
71
Fallimento dei processi: Byzantine Failure
Nel momento della decisione il processo parte dalle foglie fino alla radice inserendo un nuovo valore newval(x) per ogni nodo x. Se nodo è foglia newval(x) = val(x) Altrimenti newval(x) = m dove m è il valore che maggiormente si trova nelle varibili newval nei figli di x. Se un valore di maggioranza non c’è si inserisce val0. Seminario a cura di Oscar Pistamiglio e Federico Vietti
72
Fallimento dei processi: Byzantine Failure
Il valore di decisione è preso andando a vedere cosa c’è, alla fine dell’esecuzione precedentemente descritta, nel valore newval del nodo radice, newval(λ). Seminario a cura di Oscar Pistamiglio e Federico Vietti
73
Esempio: n=4, con l’albero del processo 1
EIG Tree 5 5 1 2 3 4 5 5 5 5 5 5 5 5 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 3 5 5 5 2 5 5 5 1 1 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 Il processo quattro impazzisce e spedisce messagi a caso 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 7 5 2 1 8 9 3 7 2 8 3 5 1 3 Seminario a cura di Oscar Pistamiglio e Federico Vietti
74
Seminario a cura di Oscar Pistamiglio e Federico Vietti
The End Seminario a cura di Oscar Pistamiglio e Federico Vietti
75
Seminario a cura di Oscar Pistamiglio e Federico Vietti
Bibliografia Lynch, Distributed Algorithms, Ed. Kaufmann Seminario a cura di Oscar Pistamiglio e Federico Vietti
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.