Re: Consensus Calls for Transport/TLS issues, post-Cupertino

"Martin Thomson" <mt@lowentropy.net> Wed, 30 October 2019 05:02 UTC

Return-Path: <mt@lowentropy.net>
X-Original-To: quic@ietfa.amsl.com
Delivered-To: quic@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 9E4DA1200E3 for <quic@ietfa.amsl.com>; Tue, 29 Oct 2019 22:02:50 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.7
X-Spam-Level:
X-Spam-Status: No, score=-2.7 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=lowentropy.net header.b=fP54RQci; dkim=pass (2048-bit key) header.d=messagingengine.com header.b=XCzyCDNQ
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 wKc2qmLtK-i2 for <quic@ietfa.amsl.com>; Tue, 29 Oct 2019 22:02:48 -0700 (PDT)
Received: from out3-smtp.messagingengine.com (out3-smtp.messagingengine.com [66.111.4.27]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id A0D8312003E for <quic@ietf.org>; Tue, 29 Oct 2019 22:02:48 -0700 (PDT)
Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id 1C59521A92; Wed, 30 Oct 2019 01:02:47 -0400 (EDT)
Received: from imap2 ([10.202.2.52]) by compute1.internal (MEProxy); Wed, 30 Oct 2019 01:02:47 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lowentropy.net; h=mime-version:message-id:in-reply-to:references:date:from:to :cc:subject:content-type; s=fm3; bh=llNDkmw0W4vEnmb+ZxgzGybQU1uI VUh30qHoYfym+1U=; b=fP54RQciikvugvMN2dEOYmiwsE+SNuLKltbwtiN7lD0C lQFHpL1/GyCgLFzaFmaQwwSisIE1KvSMyIvoD/rRo417whd9hmgII23Zmk/RU/xG N+jwGCsXan2i49q959F9akXr2QhpC46ERdU+Oe00gNpxILMEi0tByn80Wgs7T/6Q m+JV6P2SMVZpLE5WjJmr30U4sfv6zTOQ5GtCX0AZlXPAPI/NNFlx2aMkVwFcifYI rFcuCvnFPPPL6RKZRinatKRFYRRSwVrj8KxgqMldAEJv8YI84LVzsvy1ESqDBANo NX4mpoyeuX3YvPvw84FxuN71/qoFb6gZdN+8Ck5tpg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; bh=llNDkm w0W4vEnmb+ZxgzGybQU1uIVUh30qHoYfym+1U=; b=XCzyCDNQr3US9aVYGqLRBZ PeLaSG2GoBuoqvYC28UHGzkuZtGIqKpc5k/UhRfvd21Fdku6z0VtiTXeZiDAH6wJ WpFgaClvnz1YURDQ+LYH+4mtZ1j7OoRftvcUA0NlxBvjRw7tggjR1zg9lFGht3JY dQrMLvC+KvXckV2+lH6EzXEi8tDl6u0hX3rgeI9G3pK4vUmhpO9Q8D9XFPXY4X68 i3+aX7m9t0VH9Pm8m95P0PpxjIEhGhEyQuUGFzpdMpIgt8KOJMb0/YZUv+Hhxdur 3+dQmpg408Vhh4RiTWN+upBVKB6F+CUlV5uCbdXEtgQNrznKOjS657zvX5gqs+Bw ==
X-ME-Sender: <xms:dhm5XX5vV4DnJS8qyFcTQ_rCAnMe8ZNBwMP4LFtHk06c1JNNzEAwKw>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedufedruddtvddgjeelucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepofgfggfkjghffffhvffutgesthdtredtreertdenucfhrhhomhepfdforghr thhinhcuvfhhohhmshhonhdfuceomhhtsehlohifvghnthhrohhphidrnhgvtheqnecurf grrhgrmhepmhgrihhlfhhrohhmpehmtheslhhofigvnhhtrhhophihrdhnvghtnecuvehl uhhsthgvrhfuihiivgeptd
X-ME-Proxy: <xmx:dhm5XeuXNkVc0JU6mH-S-9tld6I5adq1qpuEoGaIaz3h_dsK59w81w> <xmx:dhm5XQP7xPmCWpX9ixgNM-gXZWars6pDB8RSSnTn3n3avgEGXpnhtw> <xmx:dhm5XZVcSRtXhJZ1zjet5f02hKlBUdLOoaJs73K6VlH3CZbMa6XK9A> <xmx:dxm5XVFetYnP327d8v2Q9qVhFG5rnkKDqrYscfUFQ8pUvg95PJ2teg>
Received: by mailuser.nyi.internal (Postfix, from userid 501) id 5D0F4E00A3; Wed, 30 Oct 2019 01:02:46 -0400 (EDT)
X-Mailer: MessagingEngine.com Webmail Interface
User-Agent: Cyrus-JMAP/3.1.7-509-ge3ec61c-fmstable-20191030v1
Mime-Version: 1.0
Message-Id: <1e5ae15f-56cf-47c5-930a-9f5bae59763b@www.fastmail.com>
In-Reply-To: <CABcZeBP4BwBsySd8Phhg3fd3kTMoS6E=j5tit3pg7JKe7vrb6Q@mail.gmail.com>
References: <4D6397AF-B411-4E67-AFD2-76E8F2AD462C@mnot.net> <CANatvzwYA-NN+p5jLu4vpgKY_G-ZoUM03CacZWS2FAPyPqgiiw@mail.gmail.com> <BN3PR00MB0083E9A10A58F4CCC7B8A5C6B3680@BN3PR00MB0083.namprd00.prod.outlook.com> <22517ab5-9a6c-4486-b7ea-03badc064cbe@www.fastmail.com> <CANatvzx=RWB1Bio7tqX7nN_Vn1SfSaE69LZbuiU5pWeXP=BwNQ@mail.gmail.com> <DB6PR10MB176678E88FF226C2EB8FF78EAC680@DB6PR10MB1766.EURPRD10.PROD.OUTLOOK.COM> <CACpbDccOe01VBjwwy=mdSi5nync8bXa506OMTbLPpBH-hoj4Sw@mail.gmail.com> <CAPDSy+4S06qHBbitdH07Ah6gJYV+ZMY4huYLVGw14Q-n6isCrg@mail.gmail.com> <BN6PR2201MB17008576E4F8400B5DDB696FDA6B0@BN6PR2201MB1700.namprd22.prod.outlook.com> <CACpbDcf+n47NXh8XMEKx6n1fiJPZ+WyuivNmuBy1vKhZYZe6Uw@mail.gmail.com> <CAM4esxQYyTQPpF13v0AT4R=TcFOa9=UCn0nWsiqwMReYFOYDYg@mail.gmail.com> <CABcZeBM2QGC+wx-UUKMkJDqxKscOgJfhqwPhr7QXg3h-GpZwfQ@mail.gmail.com> <4d408d7a-7c50-4ccc-a42b-fb2b71b0c507@www.fastmail.com> <CABcZeBMdQPMeu862uizQYKr451Y9mvwhZ4MT7h_te5ho_Y9DOQ@mail.gmail.com> <98b890c7-d57f-484c-88d5-056e4e607465@www.fastmail.com> <CABcZeBP4BwBsySd8Phhg3fd3kTMoS6E=j5tit3pg7JKe7vrb6Q@mail.gmail.com>
Date: Wed, 30 Oct 2019 16:02:28 +1100
From: Martin Thomson <mt@lowentropy.net>
To: 'Eric Rescorla' <ekr@rtfm.com>
Cc: Martin Duke <martin.h.duke@gmail.com>, Jana Iyengar <jri.ietf@gmail.com>, Mike Bishop <mbishop@evequefou.be>, David Schinazi <dschinazi.ietf@gmail.com>, Mikkel Fahnøe Jørgensen <mikkelfj@gmail.com>, IETF QUIC WG <quic@ietf.org>, Kazuho Oku <kazuhooku@gmail.com>
Subject: Re: Consensus Calls for Transport/TLS issues, post-Cupertino
Content-Type: text/plain
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/SRi6mAXDGjQilW7LKevujLv6GnE>
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Main mailing list of the IETF QUIC working group <quic.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic>, <mailto:quic-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic/>
List-Post: <mailto:quic@ietf.org>
List-Help: <mailto:quic-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic>, <mailto:quic-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 30 Oct 2019 05:02:51 -0000

On Wed, Oct 30, 2019, at 10:58, Eric Rescorla wrote:
> On Mon, Oct 28, 2019 at 8:32 PM Martin Thomson <mt@lowentropy.net> wrote:
> > On Tue, Oct 29, 2019, at 10:34, Eric Rescorla wrote:
> >  > On Sun, Oct 27, 2019 at 7:47 PM Martin Thomson <mt@lowentropy.net> wrote:
> >  > > On Mon, Oct 28, 2019, at 10:01, Eric Rescorla wrote:
> >  > > > I think we're clearly going to need to spend some time on this. I don't 
> >  > > > think the spec is satisfactory as-is: we should be designing a 
> >  > > > transport that works for all use cases, not just H3. That said, I also 
> >  > > > don't agree that we need an additional explicit signal. We have one, 
> >  > > > it's called "ACK". We should figure out how to make that work.
> >  > > 
> >  > > I think that we've established that ACK doesn't work without something to push it along.
> >  > 
> >  > No, I don't agree with that assessment.
> > 
> >  Well, I'd like some proof. I shared what I believe to be proof earlier. Happy to walk through it again though.
> 
> Yeah, I think that would help. I've gotten a little lost on the list, 
> so maybe you can re-point it out to me.

Let me try restating it more thoroughly:

The problem that Marten identified is a deadlock because one side discards keys at a time that might be significantly in advance of the other.  If the endpoint that retains keys still hasn't received acknowledgments, it enters a deadlock state if it exhausts the congestion window by sending Handshake packets.

(As an aside, David suggested that we might avoid deadlock if the congestion controller didn't create a dependency cycle between 1-RTT and Handshake, but I didn't detect any inclination to do that, nor am I completely confident that attempting to do so would guarantee success.  There's also the problem that Kazuho and Jana identified, which observes that a loose upper bound on convergence time was undesirable if we want to enable migration.)

Both peers can enter this potential deadlock state in different ways, so we need a symmetric solution.  I can draw up what this looks like in converse, but just imagine that the client sends and loses a Handshake ACK that is separate from the Finished.  That side of this could be addressed with implicit acknowledgment for the server, but I don't think we want to go there.

Any signal that is based purely on "organic" traffic (that is stuff that is sent by the application) can produce an asymmetric state where one side receives the signal and the other does not.  If both peers stop sending packets at that point, which "organic" traffic would have to permit, then the keys will be gone on one side and not the other.

In general, frames from an endpoint don't result in any mandatory transport-level action other than an ACK frame.  ACK frames don't elicit acknowledgment and aren't sent again.  PATH_CHALLENGE is the other way to get a transport-level forced response, but that is similar in that PATH_RESPONSE also doesn't require retransmision.  An endpoint that sends a packet can decide not to send another packet.  Thus, any implicit signal we create can only guarantee one-way propagation, which is firmly in two generals territory as Christian points out.

A PATH_CHALLENGE is almost right for this purpose, because it initiates a three-way exchange, but the lack of requirements for retransmission makes it difficult to guarantee that the process terminates.  And that probably requires overloading semantics for the frames in uncomfortable ways.  Forcing either endpoint to repeatedly initiate path validation would be worse than HANDSHAKE_DONE, especially when you consider that the path is already validated by the handshake.

Thus, while we might be able to define a process where each peer can satisfy themselves that their peer is "done", we don't have an "organic" process that we can attach to for roughly synchronizing the times that endpoints reach that conclusion.