2.7.2. Receiver Initiated Error Recovery

The scalability problems of the sender initiated protocols can be resolved by using negative rather than positive acknowledgements. While positive acknowledgements were sent by the recipients when data packets arrived, negative acknowledgements are sent by the recipients when data packets do not arrive. Because it is the receiver who is responsible for tracking whether packets need to be resent, the term receiver initiated protocol is sometimes used.

The receiver must know what data packets it should receive. In applications that send a steady flow of data packets, timeouts coupled with sequential numbering of data packets can be used to detect packet loss. In applications that do not send a steady flow of data packets, keepalive packets can be introduced.

In receiver initiated protocols, the sender does not know how long to remember a data packet in case it needs to be resent. Timeouts can be used to forget data packets.

The network close to the sender of a data packet can become congested when a large number of recipients detects packet loss and sends negative acknowledgements to the sender. This is denoted as NAK implosion problem. The problem can be alleviated by having the recipients multicast rather than unicast the negative acknowledgements, and by introducing random delays before sending the negative acknowledgement. When a recipient sees an acknowledgement of a data packet during the random delay before sending its own acknowledgement of the same packet, it does not need to send the acknowledgement.