RE: Proposal: Run QUIC over DTLS

Hannes Tschofenig <> Wed, 07 March 2018 12:36 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 4D0C512D877 for <>; Wed, 7 Mar 2018 04:36:05 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.909
X-Spam-Status: No, score=-1.909 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_PASS=-0.001, T_KAM_HTML_FONT_INVALID=0.01, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (1024-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id Opf7xoH58Myh for <>; Wed, 7 Mar 2018 04:36:02 -0800 (PST)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 57826127909 for <>; Wed, 7 Mar 2018 04:36:01 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=U8lgJO6JMHa9bcnBR8NCJktgI/upZQ+ZFvnVncpa3iA=; b=TzIn+Zztb8YhhjOhDxh+yT/ptR4F/vUkPtllWR13pdqaOXtV5F+xSZd7FzgEq51XJvt8ceIuuojaGcLr/OhlvmWxefKP9aGnLsagbPBlo2SVg2XZeHS3saXrbF3bsFiApu5BXZe6UzMkVSknp9YiVlImi1tlgRps160nq4mE8ns=
Received: from ( by ( with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.548.13; Wed, 7 Mar 2018 12:35:58 +0000
Received: from ([fe80::783f:d09c:fea6:f83d]) by ([fe80::783f:d09c:fea6:f83d%17]) with mapi id 15.20.0548.016; Wed, 7 Mar 2018 12:35:58 +0000
From: Hannes Tschofenig <>
To: Benjamin Kaduk <>, Eric Rescorla <>
CC: "" <>
Subject: RE: Proposal: Run QUIC over DTLS
Thread-Topic: Proposal: Run QUIC over DTLS
Date: Wed, 7 Mar 2018 12:35:58 +0000
Message-ID: <>
References: <> <> <> <> <> <> <> <>
In-Reply-To: <>
Accept-Language: en-US
Content-Language: en-US
authentication-results: spf=none (sender IP is );
x-originating-ip: []
x-ms-publictraffictype: Email
x-microsoft-exchange-diagnostics: 1; VI1PR0801MB1309; 7:6DiiCLfdQHSGm8SLt0TtSi/t3kfSILzsCccNTphUyrmZoucpG2mmiDih+SxXx6Bdv//N8HRiVs6Tn4XOodrrP+2QIEKTGkDFfrL4wGfpK60T43zl7xPETR0S2u1I/oyvIqwvPpt3ozkbJfk/nIKT6OE8ctsHe6Lk2CDG/I10zT1aYlkn3RytxthYz4UOlp6Zi1/zR6tW99LvSpNycq9uZ6gn89JKfwwCOAn1kch5Pf4VVMJWh8FDpw+XS1IzCNut
x-ms-exchange-antispam-srfa-diagnostics: SSOS;
x-ms-office365-filtering-ht: Tenant
x-ms-office365-filtering-correlation-id: 9b70e69f-1849-4385-51b8-08d58427fa7b
x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(48565401081)(5600026)(4604075)(3008032)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:VI1PR0801MB1309;
x-ms-traffictypediagnostic: VI1PR0801MB1309:
x-microsoft-antispam-prvs: <>
x-exchange-antispam-report-test: UriScan:(28532068793085)(158342451672863)(21748063052155);
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040501)(2401047)(8121501046)(5005006)(3002001)(93006095)(93001095)(3231220)(944501244)(52105095)(10201501046)(6055026)(6041288)(20161123564045)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123558120)(6072148)(201708071742011); SRVR:VI1PR0801MB1309; BCL:0; PCL:0; RULEID:; SRVR:VI1PR0801MB1309;
x-forefront-prvs: 0604AFA86B
x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(396003)(39380400002)(366004)(376002)(39860400002)(346002)(189003)(199004)(40434004)(236005)(229853002)(9686003)(6306002)(6246003)(66066001)(2906002)(5890100001)(25786009)(5660300001)(97736004)(7696005)(5250100002)(76176011)(6116002)(2900100001)(3660700001)(110136005)(3846002)(790700001)(8936002)(2950100002)(86362001)(53936002)(4326008)(54896002)(3280700002)(26005)(59450400001)(53546011)(6506007)(316002)(478600001)(561944003)(8676002)(33656002)(186003)(81156014)(102836004)(99286004)(68736007)(81166006)(6436002)(7736002)(55016002)(93886005)(105586002)(106356001)(14454004)(74316002)(72206003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0801MB1309;; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en;
received-spf: None ( does not designate permitted sender hosts)
x-microsoft-antispam-message-info: Gi7EsxcTzWwBv5MFPh3JCgxuRDoefKUHQRhCCcSywI1BlRJiCf2CYWkF3JJ5nAmDkcPqPQ7GY3KRA/vsqoAxWRaP+GCChvR+ZN0VjUJBHsCNfSbrNn360jNKnl1M0aNOlys1RjXA2/7+mnzELWHHxpvtMTPhc+wA/7vMKMorh3RTramTRlOoFp3oBQaXTsCfT0DGcIBMexIrYhdctGUuXGVRObqbhRsg5cPlFxEfryefR8v7+S5ZMYcTzOqAyX6vxt1D5BzNzdgoD2xZLsridTkHOzA4o4AMmyIlk1RKNHw346vvHWzRbrnOh0AK36GFcL6VyqD07g4dfOTOOPsYFQ==
spamdiagnosticoutput: 1:99
spamdiagnosticmetadata: NSPM
Content-Type: multipart/alternative; boundary="_000_VI1PR0801MB211286227F3E2F5C42B87ACDFAD80VI1PR0801MB2112_"
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-Network-Message-Id: 9b70e69f-1849-4385-51b8-08d58427fa7b
X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Mar 2018 12:35:58.2520 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB1309
Archived-At: <>
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: Main mailing list of the IETF QUIC working group <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Wed, 07 Mar 2018 12:36:05 -0000

This is an interesting case where the group needs to decide whether it wants to publish something quicker or go for an architecturally cleaner design. I has often been argued that the IETF tries to aim for the best possible quality rather than trying to meet deadlines. In fact that has been expressed in the past as a criticism towards other organizations, like the 3GPP, who were very tough when it comes to deadlines.

It will be interesting to see how this plays out in the end. In any case, it will definitely be an interesting case to cite in the future.


From: QUIC [] On Behalf Of Benjamin Kaduk
Sent: 07 March 2018 05:14
To: Eric Rescorla
Subject: Re: Proposal: Run QUIC over DTLS

I am apparently even slower than Ted at reading the document and the discussion so far, but I largely agree with his conclusions (and there is of course a lot of overlap with other opinions expressed thus far).

The draft does do a good job of pointing out some flaws in the current setup, especially relating to "stream 0", but also the version negotiation roughness (which, to be fair, we've mentioned occasionally already).

While we do retain the ability to change the DTLS header format (well, we think we do) in ways that TLS has ossified, as others have pointed out, we don't actually have as much data about that as we do for QUIC, and I also think part of the appeal of QUIC to me is that we would not be starting from something with as much baggage as (D)TLS and could really shake things up.  Likewise for QUIC-as-transport vs. DTLS-as-transport, this feels like a step backwards in terms of innovation.

These are definitely interesting ideas to think about, and I expect the issues raised here to improve the work we end up with, but I'm worried that redoing the layering like this would make it nearly impossible to meet our timeline goals.

On 03/06/2018 05:25 PM, Ted Hardie wrote:
I've now had a chance to read the document, and I think you have identified a legitimate pain point with the treatment of stream 0.  At the very, least renaming it so that the differences between its behavior and other streams are less surprising seems warranted.  Like Christian, I would also be interested in seeing the PR you sketch out below.
I think, however, that the proposal to re-layer on top of DTLS should be dropped.  I am even, frankly, reluctant to see a presentation of it at IETF 101, since I suspect the 20 minutes will eat a good bit more mental time than that.
I have two basic reasons for that, similar to those put forward by others.  The first is that this will require additional time and coordination.  DTLS has some modest changes to do, and there are some not-at-all modest changes to both specification and code required on the QUIC side.  Though your proposal is complete enough to give a good idea of what to expect, there is enough to nail down (like carrying the transport parameters) that it will take multiple cycles of discussion and testing to go from here back to where we are in terms of implementations interoperating.  While your proposal may well reduce implementation complexity, I didn't see any user-impacting feature that was gained (and if I missed it, my apologies).  "Done" is a user-impacting feature.  Without a balancing user-impacting feature, the delay for relayering doesn't seem to be at the right place in the hierarchy of concerns.
The second reason relates to WebRTC.  As you note, there is interest on the WebRTC side in adopting QUIC and relayering would make the current version of the data channel (SCTP over DTLS) easy to run side-by-side with a later QUIC over DTLS.  While I agree, I think the appetite for change in WebRTC is a bit larger and that it includes potentially running the media over a version of QUIC that supports partial reliability and multipath.  I believe, as a result, that having a full-on effort that tackles WebRTC over QUIC may result in some trade-off choices that we will not make correctly if we tackle only the data channel parallel now.  If we try to do it all together (Transport, HTTP and WebRTC), I suspect the delay will simply push this into a downward spiral of attention and effort.

My last reason is not so basic, because it is a concern about ossification.  You noted in your message to the list:
    We are designing a protocol that will be used long into the future, so
    having the right architecture is especially important.

While we hope that the protocol will be useful long into the future, we are also trying to demonstrate that building a new transport on top of UDP can be done and deployed widely.  That should open up the possibility of deploying more as time goes on.  If we get caught up trying to make this version perfect because we believe it is our last chance, we may find ourselves with the deployment timeline of v6 instead of gQUIC.
I do appreciate your making the effort to consider this in a different layering and your presenting the results to the working group.  I think the effort will improve the handshake and the treatment of stream 0, but I personally believe it should do so within the framework we have already laid out.

On Tue, Mar 6, 2018 at 7:12 AM, Eric Rescorla <<>> wrote:
FWIW it is possible to move the style of version negotiation from my draft directly into the current draft if we so wanted. It's just that it's necessary if QUIC is at the bottom of the stack and so is a nice extra win.

Specifically, we would have the version in the long header In Initial refer not to the QUIC version we want to negotiate but rather to the version whose obfuscation method we are using (probably the client's minimum). The CH would then have an extension which contained the QUIC versions we support (as in TLS.supported_versions) and then the SH would contain both selected versions. We could have the remaining obfuscated long header packets could use *either* obfuscation version. The encrypted long header packets would of course use the negotiated versions.

A few notes:

- The CH always comes in one packet so that you don't have to worry about it being immediately available to the server
- The SH may be broken up but as noted above, the obfuscation version isn't part of the negotiation.

As with my draft, this would give you 1-RTT negotiation if the client obfuscated with a version the server knew and 2-RTT if the client obfuscated with a version the server didn't know, as opposed to always having 2-RTT

If people think they like this idea, I'd be happy to write it up a separate PR.


IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.