6. Chapter 6: Coordination and Agreement
6.5. Coordination and agreement in group communication
System model:
- Contains a collection of processes, which can communicate reliably over one-to-one channels.
- Processes may fail only by crashing.
- The processes are members of groups.
- To simplify, processes is member of at most one group at a time.
- Operation multicast(g, m) sends the message m to all members of the group g of processes.
- Operation deliver(m) that delivers a message sent by multicast to the calling process.
- Every message m carries the unique identifier of the process sender(m) that sent it and the unique destination group identifier group(m).
- Assume that processes do not lie about the origin or destinations of messages.
Basic multicast
- A correct process will eventually deliver the message, as long as the multicaster does not crash.
- Straightforward way to implement B-multicast is to use a reliable one-to-one send operation:
To B-multicast(g, m): for each process p ∈ g, send(p, m);
On receive(m) at p: B-deliver(m) at p.
Reliable multicast
Uniform properties
- The agreement above refers only to the behaviour of correct processes – processes that never fail.
- If a process was not correct and crashed after it had R-delivered a message, since any process that R-delivers the message must first B-multicast it, it follows that all correct processes will still eventually deliver the message.
- Uniform agreement: If a process, whether it is correct or fails, delivers message m, then all correct processes in group(m) will eventually deliver m.
- It is useful in applications where a process may take an action that produces an observable inconsistency before it crashes.
Ordered multicast
Overlapping groups
- The preceding definitions considered only non-overlapping groups.
- Global FIFO ordering: If a process issues multicast(g, m) and then multicast(g’, m’), then every correct process in g ∩ g’ that delivers m’ will deliver m before m’.
- Global causal ordering: If multicast(g, m) -> multicast(g’, m’), where -> is the happened before relation induced by any chain of multicast messages, then any correct process in g ∩ g’ that delivers m’ will deliver m before m’.
- Pairwise total ordering: If a correct process delivers message m sent to g before it delivers m’ sent to g’, then any other correct process in g ∩ g’ that delivers m’ will deliver m before m’.
- Global total ordering: Let ‘<‘ be the relation of ordering between delivery events. We require that ‘<‘ obeys pairwise total ordering and that it is acyclic.