- 2076 Asoj
Reliable multicast properties, algorithm
Short answer
Reliable multicast guarantees delivery to all correct group members or none, despite message loss. Properties: integrity, validity, agreement. One algorithm uses basic multicast with sequence numbers, piggybacked ACKs, NACKs for missing messages, and retransmission.
Explain reliable multicast with its properties and an algorithm.
Multicast sends one message to a group of processes. Reliable multicast ensures that the message is delivered to all correct members of the group (or to none), despite message loss or process failure.
Properties
- Integrity: a correct process delivers a message at most once, and only if it was multicast by a member of the group.
- Validity: if a correct process multicasts a message m, it eventually delivers m itself.
- Agreement: if a correct process delivers m, then all other correct processes in the group eventually deliver m. Together, validity and agreement mean that if a correct sender multicasts, every correct member gets the message. Stronger orderings can be added optionally: FIFO, causal and total order.
Algorithm 1: reliable multicast over basic (unreliable) multicast, using acknowledgements
Each process p keeps a sequence number for the next message it sends to group g, and, for every process q, = the sequence number of the latest message it has delivered from q.
- R-multicast(g, m) by p: attach and the piggybacked acknowledgements ( for all q), B-multicast to g, then increment .
- On B-deliver(m) at q from p with sequence number S (q compares it with its own ):
- if S = + 1: R-deliver m and increment ;
- if S > + 1: put m in the hold-back queue and send a negative acknowledgement (NACK) for the missing messages;
- if S ≤ : discard it (duplicate).
- If the piggybacked acknowledgements show that q has missed some message, q requests retransmission from the sender (or from any process that holds it).
Algorithm 2: reliable multicast over reliable one-to-one channels (eager)
on initialisation: received = {}
R-multicast(g, m): B-multicast(g, m) // includes sender
on B-deliver(m) from sender s:
if m not in received:
received = received + {m}
if s != me: B-multicast(g, m)
R-deliver(m)
Each process re-multicasts the message the first time it sees it, so if the sender crashes after reaching even one correct process, all correct processes still get it. Cost: O(N²) messages for a group of N.
Used for: replicated databases, group communication toolkits (ISIS), event notification and file distribution.
✓ Answer checked by Claude Opus 5.5 (high effort)
Related questions
- Random number properties; KS test algorithm · Simulation and Modeling, chapter 6
- Recursion properties, Fibonacci, TOH algorithm · Data Structure and Algorithm, chapter 5
- Random number properties and Gap test · Simulation and Modeling, chapter 6 · asked 4×
- B-tree properties; order 5 for 3, 14, 7, ... · Data Structure and Algorithm, chapter 6 · asked 2×