Re: [tcpm] 1323bis - preparing for WGLC

David Borman <David.Borman@quantum.com> Thu, 21 March 2013 14:07 UTC

Return-Path: <prvs=1792399a12=david.borman@quantum.com>
X-Original-To: tcpm@ietfa.amsl.com
Delivered-To: tcpm@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 4F87721F909B for <tcpm@ietfa.amsl.com>; Thu, 21 Mar 2013 07:07:58 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.065
X-Spam-Level:
X-Spam-Status: No, score=-2.065 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, IP_NOT_FRIENDLY=0.334, J_CHICKENPOX_22=0.6, J_CHICKENPOX_33=0.6, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id mrPijYfswkhh for <tcpm@ietfa.amsl.com>; Thu, 21 Mar 2013 07:07:57 -0700 (PDT)
Received: from mx0b-000ceb01.pphosted.com (mx0b-000ceb01.pphosted.com [67.231.152.126]) by ietfa.amsl.com (Postfix) with ESMTP id 5E7EC21F9092 for <tcpm@ietf.org>; Thu, 21 Mar 2013 07:07:56 -0700 (PDT)
Received: from pps.filterd (m0001151 [127.0.0.1]) by mx0b-000ceb01.pphosted.com (8.14.5/8.14.5) with SMTP id r2LE7sJb000343; Thu, 21 Mar 2013 07:07:56 -0700
Received: from ppoxedge2.quantum.com ([146.174.252.28]) by mx0b-000ceb01.pphosted.com with ESMTP id 1b7fy3hcn1-4 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NOT); Thu, 21 Mar 2013 07:07:55 -0700
Received: from PPOMSG2.QUANTUM.com (10.50.35.27) by PPOXEDGE2.quantum.com (146.174.252.28) with Microsoft SMTP Server (TLS) id 14.2.318.1; Thu, 21 Mar 2013 08:07:09 -0600
Received: from PPOMSG1.QUANTUM.com ([10.50.35.26]) by ppomsg2 ([10.50.35.27]) with mapi id 14.02.0318.001; Thu, 21 Mar 2013 08:07:28 -0600
From: David Borman <David.Borman@quantum.com>
To: Joe Touch <touch@ISI.EDU>
Thread-Topic: [tcpm] 1323bis - preparing for WGLC
Thread-Index: AQHOJj1rdRfnG5R1r0CvnEcDPb7gqg==
Date: Thu, 21 Mar 2013 14:06:57 +0000
Message-ID: <AD01EFBA971A0A4EBB41E1AF7D81F00026B3F984@ppomsg1>
References: <012C3117EDDB3C4781FD802A8C27DD4F24AC0025@SACEXCMBX02-PRD.hq.netapp.com> <5149E317.2080206@isi.edu>
In-Reply-To: <5149E317.2080206@isi.edu>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [10.65.176.229]
Content-ID: <6603FAC69A07524B987E5353C67DA717@QUANTUM.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:5.10.8626, 1.0.431, 0.0.0000 definitions=2013-03-21_03:2013-03-21, 2013-03-21, 1970-01-01 signatures=0
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 suspectscore=1 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=7.0.1-1211240000 definitions=main-1303210089
Content-Type: text/plain; charset="Windows-1252"
Cc: "tcpm (tcpm@ietf.org)" <tcpm@ietf.org>
Subject: Re: [tcpm] 1323bis - preparing for WGLC
X-BeenThere: tcpm@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: TCP Maintenance and Minor Extensions Working Group <tcpm.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tcpm>, <mailto:tcpm-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/tcpm>
List-Post: <mailto:tcpm@ietf.org>
List-Help: <mailto:tcpm-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tcpm>, <mailto:tcpm-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 21 Mar 2013 14:07:58 -0000

On Mar 20, 2013, at 11:25 AM, Joe Touch <touch@ISI.EDU> wrote:

> Hi, all,
> 
> On 3/20/2013 7:07 AM, Scheffenegger, Richard wrote:
>> Hi group,
>> running up to and during the IETF 86, the following points were raised
>> w.r.t 1323bis. I hope this lengthy email makes it through your tl;dr filter…
>> 
> ...
>> 2. Guidance regarding late TS negotiation:
>> 
>> This is a technical (semantic) change of timestamps; the upcoming -07
>> version of the draft will have this text added; is the WG satisfied with
>> this wording, or shall more specific (2119) wording be added:
>> 
>>    A TCP MAY send the Timestamps option (TSopt) in an initial <SYN>
>>    segment (i.e., a segment containing a SYN bit and no ACK bit).  Once
>>    a TSopt has been sent or received in a non <SYN> segment, it MUST be
>>    sent in all segments.  Once a TSopt has been received in a non <SYN>
>>    segment, then any successive segment that is received without the RST
>>    bit and without a TSopt MAY be dropped without further processing,
>>    and an ACK of the current SND.UNA generated.
>>    Note that it is RECOMMENDED to negotiate the use of the timestamp
>>    option during the initial handshake.  Although this document is less
>>    restrictive regarding the use of the timestamp option when not sent
>>    initially, any guidance and discussion of potential issues when
>>    timestamp is enabled late in a session is beyond the scope of this
>>    document.
> >
>> I have received suggestions, to increase the “MAY” in the first sentence
>> to a “SHOULD” (but that might indicate to implementers, that any TCP
>> session SHOULD have TS enabled, not that TS MAY be used, and if, it
>> SHOULD be negotiated during SYN).
> 
> IMO, the first sentence should be a MUST. TCP needs to know about all the options it needs to support during the initial handshake. If you turn on the option later and it isn't supported, there's no way to "handshake" to let the other end know.

That really depends on the TCP option.

Turning on timestamps midstream without it being in the initial SYN isn't
technically that hard, as long as once you start sending and receiving them,
you continue to send/receive them for the rest of the connection.

The original reason for negotiating options in the SYN was twofold:
1) SYNs are reliably delivered, hence no additional negotiation
mechanism is needed.  2) At the time, all TCP implementations would
handle unknown options in the SYN, but some implementations would
crash if they received unknown TCP options in non-SYN packets.

Hopefully reason #2 is no longer needed.

Enabling TS midstream on the receiver is easy: if you receive any
packet with TS, then enable TS and use it for the duration of the
connection.  On the sender, you just start sending TS in every
packet, and remember the seq# of the first non-retransmitted packet
that was sent with TS.  If a TS is received in any packet, then enable
TS for the duration of the connection.  If no TS has been received when
an ACK that covers the initial TS seq# is received, then disable
sending TS for the duration of the connection.

As long as an unexpected TS mid-stream doesn't crash the other
side, then you're good to go, provided you take care of using
the TS for PAWS during the transition.

Other options, like WS, have to be negotiated in the SYN; trying
to change the WS value mid-stream using the current option would
require implementing additional negotiating mechanisms, since
ACKs are not reliably transmitted.

Honestly, the dictum that all TCP options have to be negotiated
in the SYN is to avoid sending TCP options mid stream to the other
side that the other side doesn't understand and isn't able to
properly ignore without crashing.  Be conservative in what you
send, liberal in what you receive.  But maybe it's time to say
that any TCP implementation that can't safely ignore unknown
options mid-stream is just plain broken and the standards shouldn't
continue to try to accommodate them anymore. 

			-David Borman

> 
>> Another suggestion was to add a sentence like “Timestamps MUST be
>> negotiated in <SYN> and <SYN,ACK> unless another mechanism allows
>> enabling them in during an established session.  Such a  mechanism is
>> outside the scope of this document.”
> 
> This is the one I expected, and is fine. It can either be confirmed by the option itself or by some other option; the overall assumption is that "the set of options that MAY be used during a TCP connection MUST be negotiated during the 3WHS". (that text is outside the scope of this doc, though)
> 
>> 3. More appropriate introductory text; the following statement will
>>    supersede very old text (that apparently addressed WS, TS and SACK
>>    back in RFC1072); this was already presented at IETF 86 and received
>>    no objections.
>> 
>>    The window scale option negotiates fundamental parameters of the TCP
>>    session.  Therefore, it is only sent during the initial handshake.
>>    Furthermore, the window scale option will be sent in a <SYN,ACK>
>>    segment only if the corresponding option was received in the initial
>>    <SYN> segment.
>>    The timestamps option may appear in any data or ACK segment, adding
> 
> The "*" inserted below is explained further down...
> 
>>    12 bytes to the 20-byte TCP header. *  It is recommended that this TCP
> 
> Again, IMO recommended should be REQUIRED (in all caps too).
> 
>>    option will be sent on non-SYN segments only after an exchange of
>>    options on the SYN segments has indicated that both sides understand
>>    the extension.
> 
> The portion below is a bit different:
> 
>>                  We believe that the bandwidth saved by reducing
>>    unnecessary retransmission timeouts will more than pay for the extra
>>    header bandwidth.
> 
> it talks about the bandwidth of the overall connection; it's not specific to the SYN exchange. It might be useful to move this up to the "*" above.
> 
> Joe
> _______________________________________________
> tcpm mailing list
> tcpm@ietf.org
> https://www.ietf.org/mailman/listinfo/tcpm

----------------------------------------------------------------------
The information contained in this transmission may be confidential. Any disclosure, copying, or further distribution of confidential information is not permitted unless such privilege is explicitly granted in writing by Quantum. Quantum reserves the right to have electronic communications, including email and attachments, sent across its networks filtered through anti virus and spam software programs and retain such messages in order to comply with applicable data security and retention requirements. Quantum is not responsible for the proper and complete transmission of the substance of this communication or for any delay in its receipt.