Professional Documents
Culture Documents
SD - 06.5 - Tiempo y Sincronizacion (Martin Kleppman)
SD - 06.5 - Tiempo y Sincronizacion (Martin Kleppman)
Broadcast
and
Logical Clocks
Broadcast protocols
Broadcast (multicast) is group communication:
► One node sends message, all nodes in group deliver
it
Broadcast protocols
Broadcast (multicast) is group communication:
► One node sends message, all nodes in group deliver it
► Set of group members may be fixed (static) or
dynamic
Broadcast protocols
Node A: Node B:
Application Application
Network
Receiving versus delivering
Node A: Node B:
Application Application
broadcast
Network
Receiving versus delivering
Node A: Node B:
Application Application
broadcast
Network
Application Application
broadcast deliver
Causal broadcast:
If broadcast(m1) → broadcast(m2) then m 1 must be
delivered before m 2
Forms of reliable broadcast
FIFO broadcast:
If m 1 and m 2 are broadcast by the same node, and
broadcast(m1) → broadcast(m2), then m 1 must be
delivered before m 2
Causal broadcast:
If broadcast(m1) → broadcast(m2) then m 1 must be
delivered before m 2
Causal broadcast:
If broadcast(m1) → broadcast(m2) then m 1 must be
delivered before m 2
m3 m3
m3
FIFO broadcast
A B C
m1 m1
m1
m2 m2 m2
m3 m3
m3
A B C
m1 m1
m1
m2 m2 m2
m3 m3
m3
A B C
m1 m1
m1
m2 m2 m2
m3 m3
m3
m2 m2
Causal
broadcast
A B C
m1 m1
m1
m3 m2 m2
m3
m3
Causal broadcast
A B C
m1 m1
m1
m3 m2 m2
m3
m3
A B C
m1 m1
m1
m3 m2 m2
m3
m3
A B C
m1 m1
m1
m2 m2
m3 m3
m3
m2 m2
Total order broadcast
(1)
A B C
m1 m1
m1
m3 m2 m2
m3
m3
Total order broadcast (1)
A B C
m1 m1
m1
m3 m2 m2
m3
m3
A B C
m1 m1
m1
m3 m2 m2
m3
m3
A B C
m1 m1
m1
m2 m2
m3 m3
m3
m2
Total order
Causal broadcast
broadcast
FIFO broadcast
Reliable broadcast
Best-
= stronger than
effort
broadcast
Broadcast algorithms
m1
Eager reliable
broadcast
Idea: the first time a node receives a particular message,
it
re-broadcasts to each other node (via reliable links).
A B C
Eager reliable broadcast
A B C
m1
m1
Eager reliable broadcast
A B C
m1
m1
m1
m1
Eager reliable broadcast
A B C
m1
m1
m1
m1 m1
m1
Eager reliable broadcast
A B C
m1
m1
m1
m1 m1
m1
on initialisation do
sendSeq : = 0; delivered : = ⟨0, 0, . . . , 0⟩; buffer : = { }
end on
on initialisation do
sendSeq : = 0; delivered : = ⟨0, 0, . . . , 0⟩; buffer : = { }
end on