Internet Engineering Task Force                            Ethan Blanton
INTERNET DRAFT                                           Ohio University
File: draft-blanton-dsack-use-00.txt                         Mark Allman
                                                            BBN/NASA GRC
                                                              July, 2001
                                                 Expires:  January, 2002

               Using TCP DSACKs and SCTP Duplicate TSNs
                  to Detect Spurious Retransmissions

Status of this Memo

    This document is an Internet-Draft and is in full conformance with
    all provisions of Section 10 of [RFC2026].

    Internet-Drafts are working documents of the Internet Engineering
    Task Force (IETF), its areas, and its working groups.  Note that
    other groups may also distribute working documents as
    Internet-Drafts.

    Internet-Drafts are draft documents valid for a maximum of six
    months and may be updated, replaced, or obsoleted by other documents
    at any time.  It is inappropriate to use Internet-Drafts as
    reference material or to cite them other than as "work in progress."

    The list of current Internet-Drafts can be accessed at
    http://www.ietf.org/ietf/1id-abstracts.txt

    The list of Internet-Draft Shadow Directories can be accessed at
    http://www.ietf.org/shadow.html.

Abstract

    TCP and SCTP provide notification of duplicate segment receipt
    through DSACK and Duplicate TSN notification, respectively. This
    document presents a conservative method of using this information
    to identify unnecessary retransmissions.

Terminology

    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
    "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
    document are to be interpreted as described in RFC 2119 [RFC2119].

1   Introduction

    TCP [RFC793] and SCTP [RFC2960] provide notification of duplicate
    segment receipt through DSACK [RFC2883] and Duplicate TSN
    notifications, respectively.  Using this information, a TCP or SCTP
    sender can generally determine when a retransmission was sent in
    error.  While DSACKs and duplicate TSN notifications can be caused
    by segments being duplicated by the network [Pax97] shows this is
    exceedingly rare.  This document presents a conservative algorithm
    to disambiguate unnecessary retransmissions from loss events.


Expries: January 2002                                           [Page 1]


draft-blanton-dsack-use-00.txt                                 July 2001

    This document is intended to outline a reasonable and safe
    algorithm for detecting spurious retransmissions and discuss some
    of the considerations involved.  It is not intended to describe
    the only possible method for achieving this goal, although some of
    the guidelines in this document should be taken into consideration
    when designing an alternate algorithm.  Additionally, this
    document does not outline what a TCP or SCTP sender may do after
    a spurious retransmission is detected.  Some possibilities are
    mentioned in [RFC2883], such as reverting changes made to the
    congestion control state.  Discussion of this topic is left
    to a companion document that makes no assumptions about the manner
    in which spurious retransmissions are detected  [BA01b].

3   The Algorithm

    The complexity of the algorithm used for detecting spurious
    retransmits depends on the purpose in determining this information.
    For instance, if a sender is only interested in keeping a count of
    the number of spurious retransmits the information can be derived
    directly from the returning DSACK or duplicate TSN notifications.

    However, if the purpose of detecting spurious retransmissions is to
    ``undo'' unnecessary changes made to the congestion control state,
    as suggested in [RFC2883], the data sender needs to ensure that all
    retransmissions in a particular window of data were spurious before
    reverting the congestion control state.  In other words, we must
    ensure that DSACKs (or duplicate TSN notifications) do not mask real
    loss.

    For example, say segments N and N+1 are retransmitted.  Assume that
    segment N was dropped by the network and segment N+1 was needlessly
    retransmitted.  When the sender receives the notification that
    segment N+1 arrived more than once it can conclude that segment N+1
    was needlessly resent.  However, it cannot conclude that it is
    appropriate to revert the congestion control state because the
    window of data contained at least one real congestion indication
    (i.e., segment N was lost).

    The following algorithm ensures that all retransmissions sent in a
    particular window were, in fact, needless.  The following steps MUST
    be taken upon the receipt of each DSACK or duplicate TSN
    notification:

    (A) Check the corresponding sequence range or TSN to determine
        if it has been retransmitted.

        (A.1) If it was retransmitted, mark it as a duplicate.

        (A.2) If not, processing of this DSACK or Duplicate TSN is
            complete and can be terminated.  (This is a case when the
            network path duplicated a segment.)

    (B) Check all retransmitted segments in the previous window of
        data.

Expries: January 2002                                           [Page 2]


draft-blanton-dsack-use-00.txt                                 July 2001


        (B.1) If all segments or chunks marked as retransmitted have
            also been marked as duplicate, we conclude that all
            retransmissions in the previous window of data were spurious
            and no loss occurred.

        (B.2) If any segment or chunk is still marked as retransmitted
            but not marked as duplicate, there are outstanding
            retransmissions that could indicate loss within this window
            of data.  We can make no conclusions based on this
            particular DSACK/duplicate TSN notification.

    In addition to keeping the state mentioned in [BA01a] (for TCP) and
    [RFC2960] (for SCTP), an implementation of this algorithm must track
    all sequence numbers or TSNs that have been acknowledged as
    duplicates.

4   Security Considerations

    It is possible for the receiver to falsely indicate spurious
    retransmissions in the case of actual loss, potentially causing a
    TCP or SCTP sender to inaccurately conclude that no loss took place
    (and cause inappropriate changes to the senders congestion control
    state).  Consider the following scenario:

    A receiver watches every segment or chunk that arrives and
    acknowledges any segment that arrives out of order by more than
    some threshold amount as a duplicate, assuming that it is a
    retransmission.  A sender using the above algorithm will assume
    that the retransmission was spurious.

    As a more trivial example, a receiver could simply acknowledge
    every segment or chunk received as a duplicate as they arrive.
    This approach is more easily defeated by heuristics, but would
    nonetheless cause the algorithm in this document to come to
    an incorrect conclusion.

    The ECN nonce sum proposal [WES01] may help mitigate the ability of
    the receiver to hide real losses from the sender.

References

    [BA01a] E. Blanton, M. Allman.  A Conservative SACK-based Loss
        Recovery Algorithm for TCP.  Internet-Draft
        draft-allman-tcp-sack-06.txt, July 2001.  Work in progress.

    [BA01b] E. Blanton, M. Allman.  Adjusting the Duplicate ACK
        fThreshold to Avoid Spurious Retransmits.  Internet-Draft
        draft-blanton-tcp-dupack-thresh-adjust-00.txt, July 2001.
        Work in progress.

    [FF99] S. Floyd, K. Fall.  Promoting the Use of End-to-End
        Congestion Control on the Internet.  IEEE/ACM Transactions
        on Networking, August 1999.

Expries: January 2002                                           [Page 3]


draft-blanton-dsack-use-00.txt                                 July 2001


    [Pax97] V. Paxson.  End-to-End Internet Packet Dynamics.  In ACM
        SIGCOMM, September 1997.

    [RFC793] Jon Postel.  Transmission Control Protocol.  Std 7, RFC
        793.  September 1981.

    [RFC2883] S. Floyd, J. Mahdavi, M. Mathis, M. Podolsky.  An
        Extension to the Selective Acknowledgement (SACK) Option for
        TCP.  RFC 2883, July 2000.

    [RFC2960] R. Stewart, Q. Xie, K. Morneault, C. Sharp, H.
        Schwarzbauer, T. Taylor, I. Rytina, M. Kalla, L. Zhang, V.
        Paxson.  Stream Control Transmission Protocol.  October 2000.

    [WES00] D. Wetherall, D. Ely, N. Spring.  Robust ECN Signaling with
        Nonces.  Internet-Draft draft-ietf-tsvwg-tcp-nonce-00.txt,
        January 2001.  Work in progress.

Authors' Addresses:

    Ethan Blanton
    Ohio University Internetworking Research Lab
    Stocker Center
    Athens, OH  45701
    eblanton@irg.cs.ohiou.edu

    Mark Allman
    BBN Technologies/NASA Glenn Research Center
    Lewis Field
    21000 Brookpark Rd.  MS 54-5
    Cleveland, OH  44135
    Phone: 216-433-6586
    Fax: 216-433-8705
    mallman@bbn.com
    http://roland.grc.nasa.gov/~mallman



















Expries: January 2002                                           [Page 4]