Internet Engineering Task Force Ethan Blanton INTERNET DRAFT Ohio University File: draft-blanton-dupack-thresh-adjust-00.txt Mark Allman BBN/NASA GRC July, 2001 Expires: January, 2002 Adjusting the Duplicate ACK Threshold to Avoid Spurious Retransmits 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 This document outlines steps TCP and SCTP senders can take after the determine that a spurious retransmission has been sent to revert a needless change of the congestion control state. In addition, we present several methods to prevent or mitigate unnecessary TCP and SCTP fast retransmits in the face of segment reordering. 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 The TCP or SCTP fast retransmit mechanism can be triggered by the reordering of packets in the network even in no-loss situations [BA01a,BPS99]. This document presents several mechanisms to prevent or mitigate these unnecessary fast retransmits caused by reordering. This document is not intended to describe every possible approach to the problem; on the contrary, it aims to outline a few potential Expires: January 2002 [Page 1] draft-blanton-dupack-thresh-adjust-00.txt July 2001 algorithms in order to spur further interest and research on the subject. The problem of detecting unnecessary retransmissions and disambiguating reordering from loss is outside the scope of this document, although some reliable method of doing this is required. [BA01b] and [Lud00] present such algorithms. 2 Definitions It is assumed that the reader is familiar with the congestion control concepts and terminology in [RFC2581] for TCP and/or [RFC2960] for SCTP. In addition, the following terms will be used: ``dupthresh'' represents the number of duplicate ACKs (or SACKs in the case of SCTP) required to trigger a fast retransmit. 3 Reverting Congestion Control State [RFC2883,LK00] both mention the possibility of reverting congestion control state when a sender determines that the congestion window was reduced unnecessarily due to a spurious retransmission. This document specifies that a sender that reliably detects a spurious retransmission MAY ``undo'' the needless congestion control state changes using the following algorithm: (1) When retransmitting a segment and before reducing cwnd, save the value of cwnd as cwnd_prev. (2) Upon the detection of a spurious retransmit, set ssthresh to cwnd_prev. This causes a 1 RTT slow start back to the cwnd state held before the sender needlessly made changes to the congestion control state. Furthermore, using the above algorithm causes a smooth increase of cwnd, whereas simply setting cwnd to cwnd_prev upon detection of a spurious retransmit would cause the transmission of a potentially large burst. If a sender uses the above algorithm, one of the algorithms specified in the next section MUST be used in an attempt to prevent further needless retransmissions. 4 Preventing Spurious Retransmits [Editor's Note: The descriptions of the algorithms in this section are necessrily terse -- the I-D deadline being near. These subsections will be filled out more in future revisions of this document.] 4.1 Increase dupthresh by some constant Expires: January 2002 [Page 2] draft-blanton-dupack-thresh-adjust-00.txt July 2001 A very simple approach is to increase dupthresh by some small constant each time a spurious fast retransmit is detected. 4.2 Increase dupthresh by some factor dependent on the reordering Taking the length of the reordering event that caused a spurious fast retransmit into consideration, dupthresh can be increased to some value large enough to have prevented this spurious retransmission. 4.3 Delayed fast retransmit As proposed in [Pax97], the fast retransmit can be delayed by some small amount of time after dupthresh duplicate ACKs have been received. When an unnecessary fast retransmit is detected, this delay can be increased by a small amount that would have been sufficient to prevent the spurious retransmission. 4.4 Average duplicate ACK count tracking If the average number of duplicate ACKs received during a reordering event is tracked, then dupthresh can be set to some function of this value in order to minimize false retransmits. 5 Future Work In addition to changing the duplicate ACK treshold this document will eventually outline mechanisms for adjusting the retransmission timeout when the RTO is firing prematurly. 6 Security Considerations Reversion of congestion control state and adjustment of the duplicate ACK threshold themselves have no obvious security considerations. Any security considerations pertaining to the method of determining that a fast retransmit was spurious are directly applicable to this document. Reversion of congestion control state depends on an accurate indication that the retransmission was spurious to prevent the intentional disabling of congestion control. Acknowledgments The authors would like to thank Sally Floyd, Reiner Ludwig, Vern Paxson and Randall Stewart for spurring this work through their previous work for providing input during the formative stages of this draft. References [BA01a] E. Blanton, M. Allman. On Making TCP More Robust to Packet Reordering. In preparation. Expires: January 2002 [Page 3] draft-blanton-dupack-thresh-adjust-00.txt July 2001 [BA01b] E. Blanton, M. Allman. Using TCP DSACKs and SCTP Duplicate TSNs to Detect Spurious Retransmissions. Internet-Draft draft-blanton-dsack-use-00.txt, July 2001. Work in progress. [BPS99] J. Bennett, C. Partridge, N. Shectman. Packet Reordering is Not Pathological Network Behavior. IEEE/ACM Transactions on Networking, December 1999. [LK00] R. Ludwig, R. Katz. The Eifel Algorithm: Making TCP Robust Against Spurious Retransmissions. Computer Communication Review Volume 30 Number 1, January 2000. [Lud00] R. Ludwig. The Eifel Algorithm for TCP. draft-ietf-tsvwg-tcp-eifel-alg-00.txt, February 2001. Work in progress. [Pax97] V. Paxson. End-to-End Internet Packet Dynamics. Presented at ACM SIGCOMM, September 1997. [RFC2581] M. Allman, V. Paxson, W. Stevens, TCP Congestion Control, RFC 2581, April 1999. [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. RFC 2960, October 2000. 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 Expires: January 2002 [Page 4]