R. Kettimuthu and W. Allcock, "Improved Selective Acknowledgment Scheme for TCP," Preprint ANL/MCS-P1168-0604, June 2004. [pdf]
A selective acknowledgment (SACK) mechanism, combined with a selective repeat retransmission policy, has been proposed to overcome the limitations with the cumulative acknowledgment scheme in TCP, With the SACK mechanism, the receiver informs the sender about the noncontiguous blocks of data that have been received and queued. However, for each such noncontiguous block, SACK requires 8 bytes to convey the information to the sender. Since TCP options field has a fixed length, an acknowledgment packet, at the maximum, can carry information about only 4 noncontiguous blocks. Under some error conditions, this limitation can cause the TCP sender to retransmit packets that have already been received successfully by the receiver. In this paper, we propose an improved selective acknowledgment (ISACK) scheme to overcome the limitations of the current selective acknowledgment scheme. Using examples, we demonstrate how the proposed scheme works. We further propose an adaptive selective acknowledgment (ASACK) strategy that dynamically switches between SACK and ISACK to give optimal performance.