1 / 75

Distributed consensus

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.

venice
Download Presentation

Distributed consensus

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Distributed consensus Problemi legati al consenso di due o più processi Seminario a cura di Oscar Pistamiglio e Federico Vietti

  2. 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. 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. 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. Fallimento dei Link Seminario a cura di Oscar Pistamiglio e Federico Vietti

  6. 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 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 0 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 0 0 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 0 0 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 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) } Esempio: 0 0 0 P1 1 0 1 2 2 1 3 2 3 4 4 3 n = 2 r = 6 5 4 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. 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

More Related