Editor's Note: These minutes have not been edited. The first formal meeting of the TCP Implementor's Working Group was held at 1:30 PM on Monday, April 7th. The chairs of the group are Steve Alexander (sca@sgi.com) of Silicon Graphics and Vern Paxson (vern@ee.lbl.gov) of Lawrence Berkeley Labs. Vern started off the meeting by presenting the agenda. In order to ensure that the attendees were up-to-date, Vern then presented a brief overview of the scope, charter, and deliverables of the group. A brief overview of the policy on naming of vendor names followed. The policy is currently that it is acceptable to mention vendor names explicitly on the mailing list, or in informal discussions, but not in official products of the group, e.g. RFCs. In addition, naming names is inappropriate at formal WG meetings. In general, this is motivated by the belief that information about bugs in vendor releases tends to become out-of-date rather quickly, and that embedding such information in documents with a long life-time is problematic. One exception to this rule is that it is generally felt that referring to "BSD" or "BSD-derived" in a generic sense would be acceptable. Vern then presented an overview of the current format of the I-D on known TCP problems. This document is an enumeration of problem descriptions, with each description containing: - Name - Classification - Description - Significance (this is an impact, not a MUST/SHOULD/MAY) - Implications - Traces (if available) - Information about Detection - Suggested Fix - Any Specific Information pertaining to the problem Vern gave an overview of the current I-D status. At present, it has information about four problems: - no initial slow start - no slow start after retransmit due to timeout - retransmission of different data - failure to retain above-sequence data (violates SHOULD, not MUST) The problems remaining to be documented include: - initial RTO too low - uninitialized congestion window - slow-start with two segments - violations of delayed ACK rules - failure to correctly set PSH - Brakmo/Peterson header prediction bug - Brakmo/Peterson deflation bug - fast retransmit with timestamp sends two segments - Dawson keepalive problem - failure to correctly implement Nagle's algorithm - keepalive behavior (0-byte/1-byte) - failure to ACK above-sequence data - predictable ISN security problem - SYN-flood security problem - failure to implement fast retransmit/recovery - RTO estimation on slow links - replies to random ACKs - ICMP error handling - half-duplex close ignores subsequent data - urgent pointer confusion At this point, Vern briefly enumerated issues surrounding test tools. The chairs are soliciting a list for compilation into an I-D. The current goal is to have a first draft of this I-D available by the Munich meeting in August. There are a few technical issues related to some of the existing tools, such as Steve Parker's Packet Shell. These are: - a portable "raw socket" interface for such tools to use - how to suppress responses from the host TCP These need to be discussed, either directly between the interested parties, or on the group mailing list. Vern closed with a request for volunteers to help with the following areas: - reporting any problems not on the current list - working on detailed descriptions of known problems for inclusion in the I-D - developing new testing tools This concluded the formal agenda and open discussion began. The following issues were raised: Is the group formally attempting to survey all available implementations for the known problems, or in an effort to find new issues? Answer: not really. Bob Braden asked what percentage of the attendees are or have been implementors. Roughly 30 indicated they are implementors, and another 10-15 that they were former implementors. Total attendance was recorded as ~70. It was suggested that perhaps bake-offs should be started up again. This was generally considered to be a good idea; it is not clear that this is the responsibility of the group, and this should be discussed on the list and with the IESG. Matt Mathis raised the issue of backward compatibility and suggested that workarounds for defective implementations should be well-known, easy to test for, and easy to disable in the event that they cause performance overhead when not actually needed. He felt that the group should recommend that the workarounds be obsoleted. Jim Gettys brought up an issue with connections remaining in FIN-WAIT-2 indefinitely. This appears to be most common when using the Apache web server, but may have other causes as well. This should be added to the list of known issues. Perry Metzger brought up the issue of minimizing memory usage in stacks which fail to retain state after the application has closed. This probably requires further discussion on the mailing list. Bob Briscoe suggested the the specification is ambiguous about slow- start after an idle period. This needs to be reviewed. Matt Mathis suggested that part of the above problem is due to failure to agree on what how long of a time value is used to determine whether or not the connection is "idle." He felt that substituting the term "long idle" for "idle" would help stress the point that implementations which don't slow-start even after an hour or so of being idle are out of spec. The precise definition of "long idle" vs. "short idle" is still an area for research, but an hour is clearly too long. Perry Metzger brought up the fact that RFC 1948 (Defending Against Sequence Number Attacks) is not currently a standards-track document. Vern suggested that perhaps the group should recommend it in one of the new documents. We should probably also investigate whether the status of the document could (or should) be changed, possibly to BCP. Ian Heavens raised the issue of problem taxonomy. This may just be an issue of how the current I-D is organized. We should discuss this on the list. The meeting concluded at this point. Steve Alexander