next up previous contents
Next: PING Up: JChannel Protocols Previous: MACK

MNAK

The multicast negative acknowledgment layer (MNAK) is based on sequence numbers: all members of a group start sending with sequence number 0. Whenever a new member joins the group, all senders reset their sequence numbers to 07.2.

Every member maintains a table of senders from which it received (multicast) messages: a message from a member from which no message has been received so far triggers creation of a new entry in the table. The MNAK layer expects sequence numbers of messages from the same sender to increase monotonically: if a gap is detected, i.e. messages 4, 5, 7 and 8 were received from P, then a NAK for message 6 is sent to P. If the sender does not response after n tries, then the NAK is sent to all group members. If one of the group members still has the message, then it will send it on behalf of the original sender.

MNAK uses the SlidingWindow building block (see 3.1.6) to store messages. To purge messages that have been received by every MNAK layer, a STABLE layer would have to be added to the protocol stack7.3. Currently, messages are only purged when a new view is installed, because that resets the senders' sequence numbers anyway.

Compared to the MACK layer, MNAK is more efficient, as no ACK messages have to be sent to acknowledge every single message, but NAK messages have to be sent only in the case when a message was not received.


next up previous contents
Next: PING Up: JChannel Protocols Previous: MACK

1999-12-13