Re: [tcpinc] TCP's treatment of data in SYN packets

David Mazieres <dm-list-tcpcrypt@scs.stanford.edu> Sat, 30 July 2016 23:28 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 A106912B057 for <tcpinc@ietfa.amsl.com>; Sat, 30 Jul 2016 16:28:25 -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 Y0yz_H6T9HTO for <tcpinc@ietfa.amsl.com>; Sat, 30 Jul 2016 16:28:25 -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 18C7712B056 for <tcpinc@ietf.org>; Sat, 30 Jul 2016 16:28:25 -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 u6UNSOr9005693 for <tcpinc@ietf.org>; Sat, 30 Jul 2016 16:28:24 -0700 (PDT)
Received: (from dm@localhost) by market.scs.stanford.edu (8.14.7/8.14.7/Submit) id u6UNSOmI018139; Sat, 30 Jul 2016 16:28:24 -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: tcpinc@ietf.org
In-Reply-To: <6E733C6E-DCEE-43A9-B320-E1266E7CE827@isi.edu>
Message-ID: <87lh0ioggw.fsf@ta.scs.stanford.edu>
References: <CAJU8_nU1WzQNFFUn_2o1cACutB01iyQ_hC29PHoutr8TRDKGnA@mail.gmail.com> <579A4669.7030600@isi.edu> <87lh0lselg.fsf@ta.scs.stanford.edu> <CAJU8_nUPrm9JJMrrMbL5+FpP-9CKC6EkidCry9UuZA5ZfyJtoA@mail.gmail.com> <579A8223.8050308@isi.edu> <CAJU8_nXSxr7ykC1TwptBmyP8pNccz52ozq=hF7-EYiaMdDeLBQ@mail.gmail.com> <579BA470.3000405@isi.edu> <CAJU8_nXjhHH1eEXPA3hvhJ3YXsP_v2djGX=X2p9+wyn767Hm5A@mail.gmail.com> <adcaa33a-3bf5-e63a-bd19-fd165b16aa7d@wizmail.org> <87oa5fniu0.fsf@ta.scs.stanford.edu> <6E733C6E-DCEE-43A9-B320-E1266E7CE827@isi.edu>
Date: Sat, 30 Jul 2016 16:28:24 -0700
MIME-Version: 1.0
Content-Type: text/plain
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpinc/qiPpXp6BziawXJ9T1APug4jtAlQ>
Subject: Re: [tcpinc] TCP's treatment of data in SYN packets
X-BeenThere: tcpinc@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
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: Sat, 30 Jul 2016 23:28:25 -0000

Joe Touch <touch@isi.edu> writes:

>> On Jul 30, 2016, at 10:20 AM, David Mazieres <dm-list-tcpcrypt@scs.stanford.edu> wrote:
>> 
>> And mandating no
>> buffering of discarded SYN data is a good way to do that...
>
> You can do that for ENO, but you cannot assert requirements for legacy
> stacks.
>
> The problem is that you keep saying you "know" when the other end
> supports ENO based on previous state, but if that were really true you
> wouldn't need to negotiate ENO in the 3WHS.

No, I'm saying *if* the application knows the other end of a connection
supports ENO, and in particular *if* the application intends to abort an
unencrypted connection anyway, *then* it probably makes sense for the
application to send data in a SYN segment.

You are right that if we could have an internet flag day, we wouldn't
need TCP-ENO at all.  But getting from the status quo to our goal of
~100% encrypted TCP traffic requires multiple stages--first
opportunistic encryption, then shimming in some sort of endpoint
authentication, finally having applications or middleware drop
unauthenticated connections.  If TCPINC succeeds, people may, for
example, configure NFS servers not to talk to workstations over
unencrypted TCP.  By that point it makes to discuss TEPs supporting SYN
data, but not now.  Now the question before the working group is how ENO
should avoid preempting/complicating those future discussions.

So far I haven't heard any objections to anything before the last
paragraph of section 4.7, which means the discussion needs to focus on
that last paragraph, namely:

   Using data in SYN segments deviates from TCP semantics and can cause
   problems with middleboxes or non-compliant TCP hosts.  Hence, all
   TEPs SHOULD support a normal mode of operation that does not make use
   of data in SYN segments.  Moreover, implementations SHOULD employ SYN
   data only if explicitly requested by the application or in cases
   where such use is highly unlikely to pose problems.

I think you've objected to the word "using" as too vague, and maybe
would prefer "standard TCP semantics" to make clear we aren't talking
about TFO.  You did not answer my question about whether the word
"consuming" is better than "using".  You also did not answer my question
about whether you would support a sentence saying active openers SHOULD
abort non-ENO connections if they have sent SYN data (though at this
point I think such a sentence would be good).  Your arguments seem
primarily directed at some hypothetical future straw-man TEP sending
encrypted SYN data to non-ENO aware hosts, but no existing TEP proposal
does that and more importantly that is not the question at hand.

So on the topic of TCP-ENO, do you have specific suggestions for
improving the last paragraph of section 4.7 of the draft?

David