CURRENT MEETING REPORT Minutes of tcpfix BOF Reported by: Bob Braden/USC Information Sciences Institute Summary This BOF was convened to discuss various issues that have arisen in the specification of the current generation TCP protocol. Agenda -- Monday 4 December: o RSTs Considered Harmful: Ian Heavens o ACK Processing Rules: Phil Karn o Congestion Control Algorithms: Sally Floyd o Selective Acknowledgments SACK: Sally Floyd FACK: Jamshid Madhavi RSTs Considered Harmful Ian Heavens reported on his work on the possibility of unreliable TCP data delivery when a RST segment is used instead of a FIN handshake to terminate a connection. The basic problem is that terminating a connection using RST avoids TIME-WAIT state, which is needed to protect against old duplicates. His Internet Draft draft-heavens-problems-rsts-01.txt contains many explicit examples of the faulty sequences that can occur as a result. To solve this problem, Heavens is proposing a change to the TCP state diagram to provide an acknowledgment for RSTs that terminate connections; he notes that the resulting state diagram is exactly analogous to the non-conservative close of TP4. This threat to reliable delivery due to RST's is in addition to the "TIME-WAIT assassination" problem noted by Bob Braden in RFC-1337. Issues of backwards compatibility have not been resolved, since Netscape and other applications terminate via RSTs. ACK Processing Rules Phil Karn discussed how an ambiguity in the RFC-793 specification of ACK processing could (and did) lead to a TCP implementation that fails during certain cases of continuous full-duplex data transmission. When one side closes its window and the other probes with an ACK, if ACKs sent by the probing end are rejected as unacceptable by the end with the closed window then data transmission in the other direction ceases. Karn's proposed solution is to change the acceptability test for segment sequence numbers so that the ACK field of an incoming segment is processed even when SEG.SEQ is not RCV.NXT, provided that RCV.NXT <= SEG.SEQ < RCV.NXT + Max window size. The result is that out-of-window ACKs will still be dropped, but ACKs that are out of sequence but within the window will be processed normally. Congestion Control Algorithms Sally Floyd reported on a bug fix for Tahoe and Reno fast retransmit code, documented in the short paper: ftp://ftp.ee.lbl.gov/papers/ fastretrans.ps. Floyd also called attention to the LBL network simulator, a new version of which is now available. See http://www-nrg.ee.lbl.gov/ns/. Van Jacobson has previosly-unpublished version of the TCP congestion algorithms that closes the congestion window when the sender has not sent data for more than a round-trip time. A note about this will be reachable from the http://www-nrg.ee.lbl.gov/ directory. Selective Acknowledgments Sally Floyd briefly discussed comparisons of the performance of Tahoe and Reno TCP with TCP augmented with Selective Acknowledgments (SACK). The work is discussed in ftp://ftp.ee.lbl.gov/papers/sacks.ps.Z. Simulations of SACK have shown that it effectively repairs a serious defect of Reno TCP: transmission must often wait for a retransmit timeout when multiple packets are dropped from one window of data. During the earlier discussions of SACK in the tcplw Working Group, there was concern that the TCP header has room for only three SACK blocks in its option field. Floyd and Fall have found that under the conditions they have tested, three is sufficient. Jamshid Mahdavi described work on a SACK-variant algorithm called FACK ("Forward Acknowledgment") that he and Matt Mathis have developed. FACK essentially uses a single SACK block, but it sends the block containing the most-recently-received segment. Simulations have shown this works very well, and that FACK is easier than SACK to implement with the TCP Large Windows extensions (RFC1323). Conceptually, it decouples congestion management from data recovery. Conclusions and Actions The group agreed on the following actions from this meeting. 1. Ian Heavens will revise his Internet Draft to clarify and brevity, with the intention that the RST handshake will move towards the standards track. 2. The ambiguity and fix suggested by Phil Karn should be documented. 3. The tcplw (TCP Large Windows) should proceed with SACK.