| Simple Multicast ACK protocol. A positive acknowledgment-based protocol for reliable delivery of
multicast messages, which does not need any group membership service.
Basically works as follows:
- Sender S sends multicast message M
- When member P receives M, it sends back a unicast ack to S
- When S receives the ack from P, it checks whether P is in its
membership list. If not, P will be added. This is necessary to retransmit the next message
sent to P.
- When S sends a multicast message M, all members are added to a
retransmission entry (containing all members to which the message
was sent), which is added to a hashmap (keyed by seqno). Whenever
an ack is received from receiver X, X will be removed from the
retransmission list for the given seqno. When the retransmission
list is empty, the seqno will be removed from the hashmap.
- A retransmitter thread in the sender periodically retransmits
(either via unicast, or multicast) messages for which no ack has
been received yet
- When a max number of (unsuccessful) retransmissions have been
exceeded, all remaining members for that seqno are removed from
the local membership, and the seqno is removed from te hashmap,
ceasing all retransmissions
Advantage of this protocol: no group membership necessary, fast.
author: Bela Ban Aug 2002 version: $Revision: 1.14.6.1 $ version: Fix membershop bug: start a, b, kill b, restart b: b will be suspected by a. |