Distributed systems Reliable Broadcast Prof R Guerraoui Distributed
Distributed systems Reliable Broadcast Prof R. Guerraoui Distributed Programming Laboratory © R. Guerraoui 1
Broadcast A deliver m B m broadcast deliver C 2
Broadcast abstractions P 2 P 1 Best-effort broadcast Reliable broadcast Uniform broadcast P 3 3
Modules of a process indication request (deliver) indication request (deliver) 4
Intuition Broadcast is useful for instance in applications where some processes subscribe to events published by other processes (e. g. , stocks) The subscribers might require some reliability guarantees from the broadcast service (we say sometimes quality of service – Qo. S) that the underlying network does not provide 5
Overview We shall consider three forms of reliability for a broadcast primitive (1) Best-effort broadcast (2) (Regular) reliable broadcast (3) Uniform (reliable) broadcast We shall give first specifications and then algorithms 6
Best-effort broadcast (beb) Events Request: <beb. Broadcast, m> Indication: <beb. Deliver, src, m> • Properties: BEB 1, BEB 2, BEB 3 7
Best-effort broadcast (beb) Properties BEB 1. Validity: If pi and pj are correct, then every message broadcast by pi is eventually delivered by pj BEB 2. No duplication: No message is delivered more than once BEB 3. No creation: No message is delivered unless it was broadcast 8
Best-effort broadcast delivery p 1 m p 2 delivery m p 3 delivery 9
Best-effort broadcast delivery p 1 m 1 p 2 delivery crash m 2 delivery m 1 p 3 delivery 10
Reliable broadcast (rb) Events Request: <rb. Broadcast, m> Indication: <rb. Deliver, src, m> • Properties: RB 1, RB 2, RB 3, RB 4 11
Reliable broadcast (rb) Properties RB 1 = BEB 1. RB 2 = BEB 2. RB 3 = BEB 3. RB 4. Agreement: For any message m, if a correct process delivers m, then every correct process delivers m 12
Reliable broadcast p 1 crash m 1 p 2 delivery m 2 m 1 p 3 delivery 13
Reliable broadcast p 1 delivery m 1 p 2 crash m 2 delivery m 1 p 3 delivery 14
Reliable broadcast delivery p 1 m 1 p 2 m 2 delivery crash m 2 crash m 1 p 3 delivery 15
Uniform broadcast (urb) Events Request: <urb. Broadcast, m> Indication: <urb. Deliver, src, m> • Properties: URB 1, URB 2, URB 3, URB 4 16
Uniform broadcast (urb) Properties URB 1 = BEB 1. URB 2 = BEB 2. URB 3 = BEB 3. URB 4. Uniform Agreement: For any message m, if a process delivers m, then every correct process delivers m 17
Uniform reliable broadcast delivery p 1 m 1 p 2 crash m 2 delivery crash m 1 p 3 delivery m 2 delivery 18
Uniform reliable broadcast delivery p 1 m 1 p 2 m 2 delivery crash m 1 p 3 crash delivery 19
Overview We consider three forms of reliability for a broadcast primitive (1) Best-effort broadcast (2) (Regular) reliable broadcast (3) Uniform (reliable) broadcast We give first specifications and then algorithms 20
Algorithm (beb) Implements: Best. Effort. Broadcast (beb). Uses: Perfect. Links (pp 2 p). upon event < beb. Broadcast, m> do forall pi in S do trigger < pp 2 p. Send, pi, m>; upon event < pp 2 p. Deliver, pi, m> do trigger < beb. Deliver, pi, m>; 21
Algorithm (beb) delivery p 1 m delivery p 2 m p 3 delivery 22
Algorithm (beb) Proof (sketch) BEB 1. Validity: By the validity property of perfect links and the very facts that (1) the sender sends the message to all and (2) every correct process that pp 2 p. Delivers a message beb. Delivers it BEB 2. No duplication: By the no duplication property of perfect links BEB 3. No creation: By the no creation property of the perfect links 23
Algorithm (beb) p 1 m 1 delivery m 2 p 2 delivery m 1 p 3 crash m 2 delivery 24
Algorithm (rb) Implements: Reliable. Broadcast (rb). Uses: Best. Effort. Broadcast (beb). Perfect. Failure. Detector (P). upon event < Init > do delivered : = ; correct : = S; forall pi in S do from[pi] : = empty; 25
Algorithm (rb – cont’d) upon event < rb. Broadcast, m> do delivered : = delivered U {m}; trigger < rb. Deliver, self, m>; trigger < beb. Broadcast, [Data, self, m]>; 26
Algorithm (rb – cont’d) upon event < crash, pi > do correct : = correct {pi}; forall [pj, m] in from[pi] do trigger < beb. Broadcast, [Data, pj, m]>; 27
Algorithm (rb – cont’d) upon event < beb. Deliver, pi, [Data, pj, m]> do if m not in delivered then delivered : = delivered U {m}; trigger < rb. Deliver, pj, m>; if pi not in correct then trigger < beb. Broadcast, [Data, pj, m]>; else from[pi] : = from[pi] U {[pj, m]}; 28
Algorithm (rb) p 1 m p 2 p 3 delivery m delivery 29
Algorithm (rb) p 1 crash m m p 2 delivery m m p 3 delivery 30
Algorithm (rb) Proof (sketch) RB 1. RB 2. RB 3: as for the 1 st algorithm RB 4. Agreement: Assume some correct process pi rb. Delivers a message m rb. Broadcast by some process pk. If pk is correct, then by property BEB 1, all correct processes beb. Deliver and then reb. Deliver m. If pk crashes, then by the completeness property of P, pi detects the crash and beb. Broadcasts m to all. Since pi is correct, then by property BEB 1, all correct processes beb. Deliver and then reb. Deliver m. 31
Algorithm (urb) Implements: uniform. Broadcast (urb). Uses: Best. Effort. Broadcast (beb). Perfect. Failure. Detector (P). upon event < Init > do correct : = S; delivered : = forward : = empty; ack[Message] : = ; 32
Algorithm (urb – cont’d) upon event < crash, pi > do correct : = correct {pi}; upon event < urb. Broadcast, m> do forward : = forward U {[self, m]}; trigger < beb. Broadcast, [Data, self, m]>; 33
Algorithm (urb – cont’d) upon event <beb. Deliver, pi, [Data, pj, m]> do ack[m] : = ack[m] U {pi}; if [pj, m] not in forward then forward : = forward U {[pj, m]}; trigger < beb. Broadcast, [Data, pj, m]>; 34
Algorithm (urb – cont’d) upon event (for any [pj, m] in forward) <correct ack[m]> and <m not in delivered> do delivered : = delivered U {m}; trigger < urb. Deliver, pj, m>; 35
Algorithm (urb) delivery p 1 m m m delivery p 2 m p 3 m m delivery 36
Algorithm (urb) delivery p 1 m m crash p 2 p 3 m suspicion m delivery 37
Algorithm (urb) Proof (sketch) URB 2. URB 3: follow from BEB 2 and BEB 3 A simple lemma: If a correct process pi beb. Delivers a message m, then pi eventually urb. Delivers m. Any process that beb. Delivers m beb. Broadcasts m. By the completeness property of the failure detector and property BEB 1, there is a time at which pi beb. Delivers m from every correct process and hence urb. Delivers m. 38
Algorithm (urb) Proof (sketch) URB 1. Validity: If a correct process pi urb. Broadcasts a message m, then pi eventually beb. Broadcasts and beb. Delivers m: by our lemma, pi urb. Delivers m. URB 4. Agreement: Assume some process pi urb. Delivers a message m. By the algorithm and the completeness and accuracy properties of the failure detector, every correct process beb. Delivers m. By our lemma, every correct process will urb. Deliver m. 39
- Slides: 39