Le comunicazioni ordinate Comunicazioni Ordinate E’ importante (e utile) definire delle primitive di comunicazione che diano qualche garanzia sull’ordine di consegna dei messaggi inviati all’interno di un gruppo di processi Vedremo le seguenti: Comunicazione che rispetta l’ordine FIFO di invio dei messaggi Comunicazione che rispetta l’ordine causale Comunicazione che rispetta un ordine totale Comunicazione in un gruppo di processi Comunicazione di gruppo: gruppo definito di processi. Primitive di gruppo che garantiscono vari tipi di reliability: (1) Best-effort broadcast (2) (Regular) reliable broadcast (3) Uniform (reliable) broadcast Rivediamo la specifica del (Regular) reliable brodcast, (d’ora in poi solo Reliable broadcast) : Safety. Integrity (No Duplication, No Creation): per qualsiasi messaggio m, ogni processo corretto consegna m al più una volta, e solo se m è stato precedentemente inviato in broadcast da un processo mittente Liveness: Validity: se un processo corretto invia in broadcast un messaggio m, allora tutti i processi corretti alla fine consegnano m. Agreement : se un processo corretto consegna un messaggio m, allora tutti i processi corretti alla fine consegnano m. Utilità della comunicazione ordinata Nel Reliable broadcast non c’è alcun requisito sull’ordine in cui i messaggi sono consegnati Per alcune applicazioni ciò può portare ad “anomalie”... Esempio: sistema di prenotazione aerea. L’anomalia consiste in una consegna di un msg di cancellazione di una prenotazione che il server non ha ancora registrato! client server “reserve” “Prices 15% off” “cancel” t FIFO Broadcast\specifica Qual è la soluzione? Occorre che i messaggi di broadcast inviati dallo stesso mittente vengano consegnati nello stesso ordine in cui i messaggi sono stati inviati. A questo scopo introduciamo una nuova primitiva di comunicazione di gruppo in grado di implementare questa soluzione: FIFO Broadcast La specifica del FIFO broadcast è costituita dalle proprietà viste per il Reliable broadcast alle quali si aggiunge un’altra proprietà di Safety per catturare la nozione di ordine: FIFO Order: se un processo invia in broadcast un messaggio m prima di un messaggio m’, allora nessun processo corretto consegna m’ a meno che non abbia precedentemente consegnato m. FIFO Broadcast = Reliable Broadcast + FIFO Order FIFO Broadcast\algoritmo Each process q holds: S p a count of messages broadcast by p Rp the sequence number of the latest message sent by p and delivered by q For p to FO-multicast a message to g, it piggybacks S p on the message, rbBroadcasts it and increments S p by 1 Mes sage process ing deliver On receipt of a message from q sent by p with sequence number S, p checks whether S = Rp + 1. If so, q FO-delivers it Rp + if S > 1 then q places message in hold-back queue until intervening messages have been delivered. (note that rbBroadcast does eventually deliver messages unless the sender crashes) Hold-back queue Incoming mes sages Delivery queue When deliv ery guarant ees are met Utilità della comunicazione ordinata(2) Il FIFO order non preclude tutte le anomalie dovute ad uno strano ordine di consegna… Es: Applicazione di tipo newsgroup. Prof. m1: “Fri exam cancelled” m2: Student 1 Student 2 “let’s party on Thu night” m3: “but we have an exam on Fri!” Anche se il FIFO order è soddisfatto (banalmente), cosa non va? m2 dipende da m1 ma Student 2 consegna m2 prima di m1 Qual è la soluzione? Poiché m1 precede causalmente m2, allora m2 non deve essere consegnato finchè prima non viene consegnato m1 A questo scopo introduciamo una nuova primitiva alle comunicazioni di gruppo in grado di implementare questa soluzione: Causal Broadcast Causal Broadcast\specifica La specifica del Causal broadcast è costituita dalle proprietà viste per il Reliable broadcast alle quali si aggiunge un’altra proprietà di Safety per catturare la nozione di ordine: Causal Order: se il broadcast di un messaggio m precede causalmente il broadcast di un messaggio m’, allora nessun processo corretto consegna m’ a meno che non abbia precedentemente consegnato m. Causal Broadcast = Reliable Broadcast+Causal Order Causal Order FIFO Order, ma FIFO OrderCausal Order Quindi, Causal Order = FIFO Order + ? Causal Broadcast\specifica Causal Order = FIFO Order + Local Order. Local Order: se un processo consegna un msg m prima di inviare in broadcast un msg m’, allora nessun processo corretto consegna m’ a meno che non abbia precedentemente consegnato m. Esempio: p q t m m’ r Viene ritardato e consegnato solo dopo la consegna di m Causal Broadcast\implementazioni Due implementazioni Un algoritmo blocking che usa vector clocks Un algoritmo non-blocking che usa il passato p1 COBcast(m1) COdelv(m1) COdelv(m2) IDEA DI BASE: PIGGYBACKING DEI MESSAGGI che fanno parte del PASSATO COdelv(m ) del msg inviato 3 m1 p2 COdelv(m2) COdelv(m1) COBcast(m3) COdelv(m3) m1,m2 , m3 m2 p3 CObcast(m2) COdelv(m2) COdelv(m1) scarta m2 già COdelivered! COdelv(m3) Utilità della comunicazione ordinata(3) Anche il Causal Order non è abbastanza forte per assicurare l’assenza di anomalie Es. Applicazione banking. Conto bancario replicato su due siti R1 R2 A:£100 Deposit £20 A:£120 A:£132 Add 10% interest A:£110 A:£130 A:£100 Sebbene le repliche siano inizialmente identiche alla fine sono inconsistenti anche se il Causal Order è soddisfatto (banalmente) Qual è la soluzione? per garantire che le repliche siano sempre identiche, si deve assicurare che tutti gli update siano consegnati nel medesimo ordine anche quando non sono causalmente dipendenti. A questo scopo introduciamo una nuova primitiva comunicazione di gruppo in grado di implementare questa soluzione : Total Order (Atomic) Broadcast Atomic Broadcast\specifica La specifica del Total Order broadcast è costituita dalle proprietà viste per il Reliable broadcast alle quali si aggiunge un’altra proprietà di Safety per catturare la nozione di ordine: Total Order: se due processi corretti p e q consegnano entrambi m ed m’, allora p consegna m prima di m’ se e solo se q consegna m prima di m’ Si noti che la proprietà di total order è una proprietà ortogonale rispetto a FIFO order e causal order. Quindi il total order non è una proprietà più forte rispetto alle altre due. Ad esempio tutti i processi potrebbero consegnare due messaggi, inviati dallo stesso processo, in ordine inverso rispetto a quello di invio. Gerarchia delle Primitive di Broadcast Reliable broadcast Total Order Atomic broadcast FIFO Order FIFO Order Total Order FIFO broadcast Local Order Causal Order Causal broadcast FIFO Atomic broadcast Causal Order Total Order Local Order Causal Atomic broadcast Atomic Broadcast e Consenso Si può realizzare il Consenso con l’atomic broadcast Si può realizzare l’atomic broadcast con Consenso e reliable broadcast: il messaggio viene inviato in Reliable Broadcast, i processi riceventi propongono un numero di sequenza per il messaggio (in realtà per tutti quelli in coda non ancora ordinati) facendo partire un Consenso. Alla fine decideranno per la stessa sequenza di consegna per i messaggi. Quindi si può dimostrare che l’Atomic Broadcast e il Consenso sono problemi equivalenti in un sistema con canali affidabili Ciò significa che non esiste alcun algoritmo che soddisfa la specifica dell’atomic broadcast in un modello di sistema asincrono con guasti di tipo crash: FLP per ATOMIC BROADCAST!! System model Static set of processes Π = {p1 … pn} Message passing over perfect channels (message exchanging between correct processes is reliable) Asynchronous Crash fault model for processes We characterize the system in terms of its possible runs R TOcast(m) TOdeliver(m) r R m p1 p2 m m pn crash A few notation Property P: predicate on the system, identifying a set of runs RP R P P’ iff RP RP’ RP’ RP R Specification S(P1,…,Pm): logical and of m properties, identifying a set of runs R RS=RP1∩ … ∩ RPm R RP1 RS S → S’ iff RS RS’ RS RS’ R RPn TO specifications Total order specifications are usually composed by four properties, namely Validity, Integrity,Agreement, and Order. A Validity property guarantees that messages sent by correct processes will eventually be delivered at least by correct processes; An Integrity property guarantees that no spurious or duplicate messages are delivered; An Agreement property ensures that (at least correct) processes deliver the same set of messages; An Order property constrains (at least correct) processes delivering the same messages to deliver them in the same order. TO specifications Total Order Broadcast = S(V,I,A,O) V =NUV Validity UI I = Integrity A = Agreement O = Order TO(A,O) Distinct specifications arise from distinct formulations of each property uniform vs non-uniform A uniform property imposes restrictions on the behavior of (at least) correct processes on the basis of events occurred in some process TO Specifications Crash failure + Perfect channels NUV. if a correct process TOCAST a message m then some correct process will eventually deliver m UI. For any message m, every process p delivers m at most once and only if m was previously tocast by some (correct or not) process. The Agreement property (Uniform Agreement, UA) If a process (correct or not) todelivers a message m, then all correct processes will eventually todeliver m; (Non-uniform Agreement, NUA) If a correct process todelivers a message m, then all correct processes will eventually todeliver m The Agreement property Constrains the set of delivered messages Correct processes always deliver the same set of messages M Each faulty process p delivers a set Mp m4 UA: Mp M NUA: Mp can be s.t. Mp - M ≠ m3 m2 m1 p1 m3 m2 m4 p2 m3 m1 m1 m2 m3 m4 p2 m1 p3 m2 p1 m1 UA m4 m4 m3 m1 m2 p3 m5 m4 m3 NUA The Order property Constrains the order of message deliveries and possibly the set of delivered messages SUTO: if p delivers m<m’, q delivers m’ only after m same order same prefix of the set of delivered messages after an omission, disjoint sets of delivered messages WUTO: if p,q deliver m,m’, they get the same order no restrictions on the set of delivered messages m m m1 m2 m3 m2 m3 SUTO 3 m3 m1 m7 6 m7 WUTO p2 p2 m1 p3 m2 p1 p1 m1 m1 m6 m2 m4 m5 m1 p3 m2 m4 m5 The Order property (2) SUTO and WUTO are uniform They both have a non-uniform counterparts: SNUTO and WNUTO (Strong Non-uniform Total Order, SNUTO). If some correct process todelivers some message m before message m', then a correct process todelivers m‘ only after it has todelivered m. (Weak Non-uniform Total Order, WNUTO) If correct processes p and q both todeliver messages m and m', then p todelivers m before m' if and only if q todelivers m before m‘ The Order property (2) SUTO WUTO SNUTO WNUTO m2 m3 m1 m2 m3 m2 m1 m1 m6 p1 SNUTO m7 p2 m4 m5 p3 m2 m3 m1 m2 m3 m2 m1 m1 m6 p1 WNUTO m7 p2 p3 m4 m5 TO specifications m1 TO(NUA,SUTO) m3 m2 m1 The strongest TO spec. m2 m3 p2 m1 m2 p3 TO(UA,SUTO) (Strongest total order) m6 p1 m1 m2 m3 m6 p2 m1 p3 m2 m4 m4 p1 TO(UA,SUTO) m1 m2 m5 TO(NUA,SUTO) m3 m4 TO specifications (2) TO(UA,WUTO) m1 m2 m3 TO(UA,SUTO) (Strongest total order) m4 p1 m1 m3 m2 m4 p2 m1 m3 m2 m4 TO(UA,WUTO) TO(NUA,SUTO) p3 TO(NUA,WUTO) m1 m2 m3 m4 m2 m3 m4 m6 p1 m1 m6 p2 m1 p3 m3 m2 m4 m5 m6 TO(NUA,WUTO) TO specifications (3) TO(UA,WNUTO) m1 m3 m2 TO(UA,SUTO) (Strongest total order) m4 p1 m1 m3 m2 m4 p2 m1 m4 m2 m3 TO(UA,WUTO) TO(NUA,SUTO) TO(UA,WNUTO) TO(NUA,WUTO) p3 TO(NUA,WNUTO) m1 m2 m3 m4 m2 m3 m4 m6 p1 m1 m6 p2 m1 p3 m4 m2 m3 m5 m6 TO(NUA,WNUTO)