Re: [tcpinc] TCP-ENO draft 04 posted

David Mazieres <dm-list-tcpcrypt@scs.stanford.edu> Fri, 29 July 2016 23:11 UTC

Return-Path: <dm-list-tcpcrypt@scs.stanford.edu>
X-Original-To: tcpinc@ietfa.amsl.com
Delivered-To: tcpinc@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id B3B9E12D52D for <tcpinc@ietfa.amsl.com>; Fri, 29 Jul 2016 16:11:48 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.188
X-Spam-Level:
X-Spam-Status: No, score=-2.188 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HK_RANDOM_ENVFROM=0.001, HK_RANDOM_FROM=0.999, RP_MATCHES_RCVD=-1.287, SPF_PASS=-0.001] autolearn=no autolearn_force=no
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 pv1HwOQsy2mj for <tcpinc@ietfa.amsl.com>; Fri, 29 Jul 2016 16:11:48 -0700 (PDT)
Received: from market.scs.stanford.edu (www.scs.stanford.edu [IPv6:2001:470:806d:1::9]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 02ECD12D0C4 for <tcpinc@ietf.org>; Fri, 29 Jul 2016 16:11:47 -0700 (PDT)
Received: from market.scs.stanford.edu (localhost.scs.stanford.edu [127.0.0.1]) by market.scs.stanford.edu (8.14.7/8.14.7) with ESMTP id u6TNBl26001517; Fri, 29 Jul 2016 16:11:47 -0700 (PDT)
Received: (from dm@localhost) by market.scs.stanford.edu (8.14.7/8.14.7/Submit) id u6TNBkoC001497; Fri, 29 Jul 2016 16:11:46 -0700 (PDT)
X-Authentication-Warning: market.scs.stanford.edu: dm set sender to dm-list-tcpcrypt@scs.stanford.edu using -f
From: David Mazieres <dm-list-tcpcrypt@scs.stanford.edu>
To: Joe Touch <touch@isi.edu>, tcpinc <tcpinc@ietf.org>
In-Reply-To: <579BCAD1.4020509@isi.edu>
References: <87invokuu8.fsf@ta.scs.stanford.edu> <579BCAD1.4020509@isi.edu>
Date: Fri, 29 Jul 2016 16:11:46 -0700
Message-ID: <87fuqskpjh.fsf@ta.scs.stanford.edu>
MIME-Version: 1.0
Content-Type: text/plain
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpinc/6E0HETVfLMzjvHE20RTUe4YAqzM>
Subject: Re: [tcpinc] TCP-ENO draft 04 posted
X-BeenThere: tcpinc@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
Reply-To: David Mazieres expires 2016-10-27 PDT <mazieres-2u5dqmt2am7nrrif3uubqnwdi6@temporary-address.scs.stanford.edu>
List-Id: "Discussion list for adding encryption to TCP." <tcpinc.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tcpinc>, <mailto:tcpinc-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/tcpinc/>
List-Post: <mailto:tcpinc@ietf.org>
List-Help: <mailto:tcpinc-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tcpinc>, <mailto:tcpinc-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 29 Jul 2016 23:11:48 -0000

Joe Touch <touch@isi.edu> writes:

> Hi, all,
>
> I'm very confused by the new SYN data text.
>
> First, if you really want state based on previous connections that
> allows early use of SYN data  before the 3WHS, that seems to be the very
> definition of TFO. So declaring that this solution is valid only where
> TFO isn't used seems the opposite of what I would expect.

TFO requires sending plaintext.  ENO explicitly prohibits it.  Either or
both options could get munged by a middlebox.  Hence, it is much safer
to say that ENO specs can do something TFO-like than to allow ENO specs
to modify the semantics of TFO.

The principle here is that it is far more likely for a middlebox to
remove a TCP option than it is for a middlebox to add a TCP option
created out of thin air.

> Second, the text doesn't cover the case where the endpoint abilities
> have changed. Unless you use TFO cookies to verify that ability, you
> should not assume you know it. Which means you can easily be sending
> data you need to unroll - and the only safe way to do that (if the
> endpoint turns out to be non-ENO even if you assumed otherwise) is to
> terminate the connection.

Quite possibly.  However, the goal of section 4.7 is not to prevent TEPs
from doing "bad" things.  Rather, the goal is to impose the minimum
restrictions such that if different TEPs say different things about SYN
data, then it is always unambiguous which TEP specification governs a
particular SYN segment.  A secondary goal is to ensure that TEPs can
later be amended to take advantage of SYN data (because initial TEP
implementations MUST discard SYN data whose usage the old specification
did not define).

Questions about when to reset a connection (or whether to allow some
really weird behavior when the application has explicitly requested it)
should be deferred to the point at which a TEP actually wants to use SYN
data.  If you foresee problems with the current wording (as opposed to
what future TEPs might hypothetically do), then it would help to discuss
two questions separately:

  1. Is the current section 4.7 setting the right goals?
  2. Is the current section 4.7 achieving its goals?

> Third, the claim that "Using data in SYNs deviates..." is incorrect.
> Data in the SYN is valid for TCP. Did you mean "acting on received data
> in the SYN before the 3WHS in the absence of TFO deviates..."?

I originally had "consuming" instead of "using," but thought that read
kind of weird.  Would you prefer "consuming"?  And yes I definitely
meant in the absence of TFO, since the absence of TFO is required.  (TFO
itself already claims to deviate from standard TCP semantics.)

David