Re: [tcpm] More TCP option space in a SYN: draft-briscoe-tcpm-syn-op-sis-02

John Leslie <john@jlc.net> Mon, 29 September 2014 16:58 UTC

Return-Path: <john@jlc.net>
X-Original-To: tcpm@ietfa.amsl.com
Delivered-To: tcpm@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 0646F1A88B1 for <tcpm@ietfa.amsl.com>; Mon, 29 Sep 2014 09:58:44 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.986
X-Spam-Level:
X-Spam-Status: No, score=-4.986 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, RP_MATCHES_RCVD=-0.786] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 3Zp7uj31X0SB for <tcpm@ietfa.amsl.com>; Mon, 29 Sep 2014 09:58:42 -0700 (PDT)
Received: from mailhost.jlc.net (mailhost.jlc.net [199.201.159.4]) by ietfa.amsl.com (Postfix) with ESMTP id 0F47A1A883A for <tcpm@ietf.org>; Mon, 29 Sep 2014 09:58:42 -0700 (PDT)
Received: by mailhost.jlc.net (Postfix, from userid 104) id 5FE2EC94C0; Mon, 29 Sep 2014 12:58:39 -0400 (EDT)
Date: Mon, 29 Sep 2014 12:58:39 -0400
From: John Leslie <john@jlc.net>
To: Joe Touch <touch@isi.edu>
Message-ID: <20140929165839.GJ83009@verdi>
References: <542344DA.9020905@isi.edu> <201409250956.s8P9uae9013452@bagheera.jungle.bt.co.uk> <alpine.OSX.2.00.1409251716260.69041@ayourtch-mac> <201409251842.s8PIgUdQ015414@bagheera.jungle.bt.co.uk> <alpine.OSX.2.00.1409260049040.69041@ayourtch-mac> <201409260957.s8Q9vmEd018560@bagheera.jungle.bt.co.uk> <20140926145037.GA82183@verdi> <201409261716.s8QHGC7I020142@bagheera.jungle.bt.co.uk> <20140926195338.GH83009@verdi> <542979DC.7090601@isi.edu>
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <542979DC.7090601@isi.edu>
User-Agent: Mutt/1.4.1i
Archived-At: http://mailarchive.ietf.org/arch/msg/tcpm/oh-gbXU6UF1wG6XB62PPFotdzPg
Cc: tcpm IETF list <tcpm@ietf.org>
Subject: Re: [tcpm] More TCP option space in a SYN: draft-briscoe-tcpm-syn-op-sis-02
X-BeenThere: tcpm@ietf.org
X-Mailman-Version: 2.1.15
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: Mon, 29 Sep 2014 16:58:44 -0000

Joe Touch <touch@isi.edu> wrote:
> On 9/26/2014 12:53 PM, John Leslie wrote:
>> Bob Briscoe <bob.briscoe@bt.com> wrote:
>>> " If an upgraded TCP client includes the TCP Fast Open option
>>> " [I-D.ietf-tcpm-fastopen] in the SYN, it MUST be placed with the extra
>>> " TCP options after the end of the payload.
>> 
>> Indeed, that is a good way to ensure that the SYN receiver is aware
>> of the sender's intent to place something _after_ the data intended to
>> be passed to the application.
> 
> I'd like to understand the logic behind this claim.

   Good!

> Regardless of where signalling information is placed:
> 
> - legacy servers will (irrevocably) accept it as
> application data; the only way to undo it is to
> terminate the connection*
> 
> - upgraded servers will know where to find it
> 
> Except to make parsing more complex, what is the perceived benefit of
> using trailer-based signalling?

   Bob, I believe, thinks he can outwit meddleboxes. I'll let him make
that case.

   Myself, I see it a a way to coexist with things to come.

   Joe, I suspect, is thinking how to do this in hardware.

   Indeed, to a middlebox, harder-to-find translates to "expensive",
possibly prohibitively expensive. To an actual endpoint, the expense
is bearable -- if you need to act on both anyway, it's a toss-up...

   But myself, I think in terms of how to coexist with future things
like FastOpen. I believe we've got a better shot at ensuring that
nothing _follows_ our extended options than ensuring that nothing
precedes them.

   Repeating Bob's words:
>
>>> " If an upgraded TCP client includes the TCP Fast Open option
>>> " [I-D.ietf-tcpm-fastopen] in the SYN, it MUST be placed with the extra
>>> " TCP options after the end of the payload.

and recalling that extended options _can't_ be parsed until the inital
TCP option invoking extended options is parsed, we see that the receiving
endpoint _must_ know about the overlap of extended-options and fast-open.

   That brings us to the tussle of whether either _must_ play with the
data the other wants to add. To me, the simplest case is that fast-open
does its job first (hopefully someday to include a byte-count), while
extended-options comes along and puts its data after fast-open's data
(and anything else which may come along), trusting the receiver to
remove it from anything to be passed to the application.

   I am convinced we will see cases where both fast-open and extended-
options need to be used.

   While this tussle could go either way, I prefer to place the
complexity in extended-options.

> *- TCP-FO is particularly dangerous when coupled with dual-SYN (DS)
> variants when the connection uses a cookie from a previous connection;
> non-DS FO servers can't prevent passing invalid data to the application
> by terminating the connection when the SYN-ACK is received by the client.

   I had to read this twice to get Joe's point. :^(

   Dual-SYN solutions would be expected to place fast-open in both SYNs,
probably with the same cookie. In the legacy case, nothing can prevent
the payload being passed to the application long before the sender
becomes aware of the state of the other SYN. This probably deserves
mention in any dual-SYN proposal.

   (Obviously, if the legacy SYN is postponed long enough, this ceases
to be a problem; but by then you've lost most of the latency advantage.)

--
John Leslie <john@jlc.net>