Subject: A proposed extension to the SACK Option for TCP

From: Sally Floyd <[email-masked]>
Date: Mon, 13 Sep 1999 19:44:30 -0700

Jamshid Mahdavi, Matt Mathis, Matthew Podolsky, Allyn Romanow and
I have written an internet-draft about "An Extension to the Selective
Acknowledgement (SACK) Option for TCP", and we are sending it to
the tcp-impl list for a final round of feedback before we submit
it to the area directors for consideration as an Experimental RFC.
(The draft has already incorporated feedback from the end2end-interest
mailing list.) The abstract is appended below, and the internet-draft
itself is available at
"http://search.ietf.org/internet-drafts/draft-floyd-sack-00.txt".
The main point of the extension is for the TCP data receiver to
use SACK blocks to give the TCP data sender more information about
duplicate packets that have been received.

Our hope is that this proposed draft itself, to add a new type of
SACK block in the SACK option, will be relatively uncontroversial.
Our belief is that this extension does not introduce any
backwards-compatibility issues with existing implementations of
SACK TCP (RFC 2018, now at Proposed Standard).  I would note that
all of the co-authors of RFC 2018 are also co-authors of this
proposed extension.

My own expectation is that later research and proposals on specific
algorithms for the TCP data sender to in fact *make use of* this
SACK option could generate more discussion (and possibly controvery,
it is hard to say).  I would hope that this proposal would enable
additional work on algorithms for making TCP more robust to reordered
packets, ACK loss, packet replication, and/or early retransmit
timeouts.

Feedback would be appreciated.

- Sally
--------------------------------
http://www.aciri.org/floyd/
--------------------------------

An Extension to the Selective Acknowledgement (SACK) Option for TCP

by Sally Floyd, Jamshid Mahdavi, Matt Mathis, Matthew Podolsky, and
Allyn Romanow

Abstract

   This note defines an extension of the Selective Acknowledgement
   (SACK) Option [RFC 2018] for TCP.  RFC 2018 specified the use of the
   SACK option for acknowledging out-of-sequence data not covered by
   TCP's cumulative acknowledgement field.  This note extends RFC 2018
   by specifying the use of the SACK option for acknowledging duplicate
   packets.  This note suggests that when duplicate packets are
   received, the first block of the SACK option field can be used to
   report the sequence numbers of the packet that triggered the
   acknowledgement.  This extension to the SACK option allows the TCP
   sender to infer the order of packets received at the receiver,
   allowing the sender to infer when it has unnecessarily retransmitted
   a packet.  A TCP sender could then use this information for more
   robust operation in an environment of reordered packets, ACK loss,
   packet replication, and/or early retransmit timeouts.

URL "http://search.ietf.org/internet-drafts/draft-floyd-sack-00.txt".