distributed consensus
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 PresentationTRANSCRIPT
Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti
11
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.
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
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
Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti
55
Fallimento dei LinkFallimento dei Link
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
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
[…] […]
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.
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.
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}
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
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}
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
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
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
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
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
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
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.
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.
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
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
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.
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
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
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
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.
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
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)
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
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.
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’’)
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.
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}
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.
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
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à
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.
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
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
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;
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
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
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
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
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
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 […]
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 […]
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
Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti
5050
Fallimento dei processiFallimento dei processi
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
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
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
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
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
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
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 [...]
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
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
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
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
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
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
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) [...]
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 [...]
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
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
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
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
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;;
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..
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(λλ))..
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
Seminario a cura di Oscar Pistamiglio e Federico ViettiSeminario a cura di Oscar Pistamiglio e Federico Vietti 7474
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