La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Distributed consensus

Presentazioni simili


Presentazione sul tema: "Distributed consensus"— Transcript della presentazione:

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


Scaricare ppt "Distributed consensus"

Presentazioni simili


Annunci Google