Re: A side meeting on OpenSSL's plans about QUIC

Peter Gutmann <pgut001@cs.auckland.ac.nz> Wed, 03 November 2021 13:55 UTC

Return-Path: <pgut001@cs.auckland.ac.nz>
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 6BF333A14D1 for <quic@ietfa.amsl.com>; Wed, 3 Nov 2021 06:55:11 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.897
X-Spam-Level:
X-Spam-Status: No, score=-1.897 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_NONE=0.001, URIBL_BLOCKED=0.001] autolearn=unavailable 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 kQ5jDtHAm4JZ for <quic@ietfa.amsl.com>; Wed, 3 Nov 2021 06:55:06 -0700 (PDT)
Received: from au-smtp-delivery-117.mimecast.com (au-smtp-delivery-117.mimecast.com [103.96.21.117]) (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 34AF13A14FF for <quic@ietf.org>; Wed, 3 Nov 2021 06:55:05 -0700 (PDT)
Received: from AUS01-ME3-obe.outbound.protection.outlook.com (mail-me3aus01lp2239.outbound.protection.outlook.com [104.47.71.239]) (Using TLS) by relay.mimecast.com with ESMTP id au-mta-45-O78FDnwXOKGOi3ithc56xQ-2; Thu, 04 Nov 2021 00:53:56 +1100
X-MC-Unique: O78FDnwXOKGOi3ithc56xQ-2
Received: from SY4PR01MB6251.ausprd01.prod.outlook.com (2603:10c6:10:10b::10) by SYCPR01MB5263.ausprd01.prod.outlook.com (2603:10c6:10:8f::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.17; Wed, 3 Nov 2021 13:53:51 +0000
Received: from SY4PR01MB6251.ausprd01.prod.outlook.com ([fe80::5df1:ed71:3acc:e8fd]) by SY4PR01MB6251.ausprd01.prod.outlook.com ([fe80::5df1:ed71:3acc:e8fd%7]) with mapi id 15.20.4669.011; Wed, 3 Nov 2021 13:53:51 +0000
From: Peter Gutmann <pgut001@cs.auckland.ac.nz>
To: "Salz, Rich" <rsalz=40akamai.com@dmarc.ietf.org>, "tls@ietf.org" <tls@ietf.org>, "quic@ietf.org" <quic@ietf.org>
Subject: Re: A side meeting on OpenSSL's plans about QUIC
Thread-Topic: A side meeting on OpenSSL's plans about QUIC
Thread-Index: AQHX0BUztLDXb0Jg70aiHM+r2fDRyavx1A4w
Date: Wed, 03 Nov 2021 13:53:51 +0000
Message-ID: <SY4PR01MB62517C7526E083A9A2EE21A2EE8C9@SY4PR01MB6251.ausprd01.prod.outlook.com>
References: <66B5C38B-E95A-4C4F-A8EC-3ADE8A4E875F@akamai.com>
In-Reply-To: <66B5C38B-E95A-4C4F-A8EC-3ADE8A4E875F@akamai.com>
Accept-Language: en-NZ, en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
suggested_attachment_session_id: f2eb20c7-47ad-9ac1-aa88-af08f39af29a
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 02512fe0-e944-44f4-7cda-08d99ed15e1f
x-ms-traffictypediagnostic: SYCPR01MB5263:
x-microsoft-antispam-prvs: <SYCPR01MB526372ECB5632D01DB380900EE8C9@SYCPR01MB5263.ausprd01.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:10000
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0
x-microsoft-antispam-message-info: 0TWlNR0XyBYE4QN7BKEifMnEGPLNFv23aAajIrv++2vzTXXOGtUcOFgcC4PUeCw8UqsZz9xn0MGr970x5RPaFy264MmNPP0vfNW9ZiGCeZzahHJQc4OqMMmsx3rM91yPDID1xty9HlKpBF6YC7gkp9de3zUtzD4v+zn1LrN0z2bsu4VjwSu3l3xZMhOHzp6XrpBYxLLcvyaSFqOqEJce8pwWQ/vdMoaiiYIaq902FjvTNY7t1Qx7kxmDkfDB2JFhacoOOf/7WLEN/XVLwP2LxmlZ5o4ysPQlHi5DD7pMKog90pv0N9DGTO3/EVozJxSI5J/dc7j/1uE3fkD6z4j9AAeHngCdCohK5UkfBQ6zRuuCJ9aSHrXh8SxWKB7b0bNSowTbuRRK/JiUOB5GJ1vFeuXKd3ylr9pi8wj1R87VTvmA+X7rNLs3ykoTAJXjAkpv2Qoun0Tq6e1uIu4GJo5aywz1z0kEHFbPiTYWk78jo1unfbubzKTeRMgSs71cBWWicyNkJylFbTyzXR92l7W6u6fVjeSWTTVnnWYHiGqQwQIGF75t0GrudM0EMkwlXBkvlA5WHw/67ZDgAHqTPibs72xNsWDWhaxgY2ajsVm7yvgcXotScMBxq8B7c+cAlZReW8JR5bWg2uusjv4JBSbRRdMjNtw+BZQPbD+qJOJ3eNto6VmQ2xRH4WfFGh0IZu3ZbASKSqQh0p3RuFwS4xymYvvOpGgcspLVMSd0u4zAoLxgBhslJhyruXioSVJ3y46R2gWHFavA8hR70Fb5wwmkvMmXKC8EkQ4WjUjYmkXXu3s=
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SY4PR01MB6251.ausprd01.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(508600001)(186003)(7696005)(38100700002)(8936002)(45080400002)(52536014)(38070700005)(66446008)(316002)(83380400001)(8676002)(55016002)(786003)(966005)(9686003)(110136005)(71200400001)(122000001)(86362001)(66946007)(66574015)(6506007)(5660300002)(33656002)(2906002)(64756008)(76116006)(26005)(66556008)(66476007); DIR:OUT; SFP:1101
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: ec/1o7kY3zLZjsQGJb0WFxRUfaWbvCOhotoJgPwkAeiRKinrqHdujTPEmztz/zU/5WnGmmmvzEO5jLYmyDjRLxoSka0enNurs4zr9GLjFzfmC+nDjrdDZRVidfNGN3ghStphRkTSz7pd8GklToEQeCnMeZmd2QCSWoB5GBp3WwP6zB/9pF0yo9RukfGUFMRoxZFa5wp7SRuZwDTSpBlmc0tAF7oiXF/qmiJAF1oLlkfmuyyeUfx1I6zjPgX3PVpmzTF5gClX8UCBVktYCmNE7AfySKw4h6eccOaYdgFtOzMxawzdNen0ROMET05AE3I0EIo0/LBNHiVFjGxzBBStMiIzW5KhKIbytqjNKxw5GzZkbVyCgghta8SXmxdZWWqWf5fG1pmyXUyyO+YReo1EAa7ce2kQbCesOMG1OyOgWvR3HwIhsJHC61DuP4dQDD30OyEAujFsdOKWh2RC4mqCyoxAamnR7k2/atHk810ajKWMTWCtqKPFcrZ8qfvoIi3JcH5ou3i8hplEoVul1yW9EVj2OYECMPRqzaR3iKYnceOpppvHJ6AiHOWQ08AtP5IwcH652CaKdB54vJtmKvniAY+TM94AmYYVa5Msy28De/S9sd4GI2jb40+to92V2tQw6FeerPhvzlUJ3u08awfrbZt/ZMLC7BP/y/ot+VmqUrZYWwo5423P6RGlrreRFbsx9UddP2cD0Sj/puyHmGqYW4NqUEKcj8Vf6foXDo4JF+SjGHX0eLUOodEUXPmSsKKGawA/SQObJRENHbAZ+/+Jab+M4X3W4qHXSRYg07tUg1yU3GaZr7yQsyIkphGDzXWTQS/R5ErJ5dgVB6TqzFxxfBWZmL5nEz6MRlxdnViaTfbPyE1BXuVnr12Fg3A6I5DYxPb0B1HXb4mhWze2Dp4OQSLWGlT8mycUb7mQnDIO1tPj9U8XIdaf7QmNuFkGGXnTFptSF2bIPC1axQ8j98r2HFRx04T8Ra7RPuwt0rx+qmvm05Hye3Wuulfd1uan3uRm4Q+4I+v7sgB2d/kvnecExO3vpL1/xLkuYtsDg/hXaPfMex8BxadiX5L4CDqHZOzMLmcCCHmP7dyToml75CozJIV9TeymgVr2HRnkI5Tc7EukKgS7B1xq+NWL13LSOEJY8ZBXdvCe4TC9JTkpbkmpCXTGy7RXz8H8PsxKOLIx728FvT8m2D6Hv4InECurL1wuNr5u3bNfb33OuuOD3BqzRoLPFBmFCC3vblBOlkrzpGQ1+oQG3v7aEmjDxgZPorlbgssA8bEu9G8fep6uNTELohK3PWieS3fXB3VUeuEqp0bwKDVzyadeOUQ68bw7529cVNx7LofcyBTV9cRxMw+FvC+DwFOS2J8I2Ta3/WxmXk+abxW8YLF9ElXC7yEL48797t/9jUMCcJFdcNxB6hSsm4swU1zT2TKDUWvHFrsaDpOImxVszlnIU7yNB8dL/bFniqNlXUjAIgIWhwV/ZuUmUphhmWN+nrG094OyQ7U/Zgbm1/AqyCpG+XFWGaoyZFyH+FUFCNvPfYpdsHtdgHkp70rYimcU/mbAnGRuc72pWTLxK0ydQ7MCO0Ki0S715/f50AH6st7RAuBQlIDmN2H7YHjgh8d02ku2PDf1WxuOKzxNXE45Ugzd1KN0WwnLQaZUiTdKTPmnjImGtVBWKDqbtA==
MIME-Version: 1.0
X-OriginatorOrg: cs.auckland.ac.nz
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SY4PR01MB6251.ausprd01.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 02512fe0-e944-44f4-7cda-08d99ed15e1f
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2021 13:53:51.1950 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: d1b36e95-0d50-42e9-958f-b63fa906beaa
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: q3SNlKj9GQDiOJDPkFES/20WyzqutB0YF83EltpzJiIK5D6a0jjSWY4qZtc14f4yzoy2vI08Dv5CNbv4UjQHEaQ4LxmJFb2cYb2b2wfqctA=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SYCPR01MB5263
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: cs.auckland.ac.nz
Content-Language: en-NZ
Content-Type: text/plain; charset="WINDOWS-1252"
Content-Transfer-Encoding: quoted-printable
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/1JU_PcY4U9AnSIaA5YL2OIF5vsE>
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, 03 Nov 2021 13:55:18 -0000

Reposted here (with permission) since I think it's important to get this on
the record for discussion on this list.  It's always interesting to read about
protocol implementation details, especially if others can learn from them.

Peter.

-- Snip --

Please change your mind about your announced release plans
Salz, Rich rsalz at akamai.com
Fri Oct 29 15:13:35 UTC 2021

I think the current plan, to do QUIC over a series of releases, is a mistake
it seems seriously likely to make OpenSSL less relevant.  Some reasons follow.

According to https://www.openssl.org/blog/blog/2019/11/07/3.0-update/, the
initial target for 3.0 was end of 2019, but the announced release date was
moved once to early Q2 2020, then early Q4 2020. It was ultimately released
early Q4 2021. That’s a slip of nearly two years. Sure, I know COVID affected
many things, but the impact on OpenSSL, whose fellows all worked from home
offices, should have been slight. Regardless, the focus of this release was on
*cryptography* something which is highly familiar to the team.

With this release, as detailed in
https://www.mail-archive.com/openssl-project@openssl.org/msg02585.html, it
appears that OpenSSL is trying to do two things. Have a more rapid release
cadence -- the stated objective is six months -- and implement QUIC over a
series of releases. To keep a six-month cycle probably means five months of
planning and development. During the 3.0 work, the project hired, and then
fired, a project manager to keep things on track. Are you going to hire
another? The project has a very bad history of meeting time-bounded deadlines.
This is not surprising; software engineers tend to chronically under-estimate
the amount of time needed.

In addition, an LTS release will be either 3.1 if available by next September,
or the current 3.0. Neither alternative is good. The section on QUIC discusses
the MVP for that release. Making an LTS release that is based on a radical
restructuring of the record layer, not to mention having a half-baked and
useless QUIC release, does not meet the community's needs. It is also
exceedingly unlikely to be ready within a year, which means 3.0 will be the
next LTS release. This means that many issues found by the community while
adopting 3.0 will go unaddressed in LTS, as each will have to pass the "is
this a bug-fix" barrier or be approved as an exception. Exceptions are *wrong*
for an LTS release. The next LTS release should be just cleanup, fixes, and
usability enhancements found during 3.0 deployments.

The level of technical detail in the release requirements are curious. They go
into great detail and greatly constrain the OTC. This was not done for FIPS,
where the design was led by the OTC and had involvement from the project
sponsors. I know that some OTC members are not pleased with this level of
detail, and I don't blame them. It might be useful for the OMC to release a
rationale. Why is it necessary to "implement QUIC" when instead the directive
could have been "support QUIC"?  If the API from
https://github.com/openssl/openssl/pull/8797 is so distasteful (yes, enum's in
function parameters are not OpenSSL style), it would have been better if the
project convened leading TLS and QUIC implementors to come up with a new one.
That would have shown true leadership, and I know some of those affected by
these plans would have supported that.

QUIC is a subtle protocol. Its evolution within the IETF took several years,
and the development staff at major implementations includes full-time
developers, QA engineers, and documentation writers. Currently OpenSSL has
five full-time fellows, and none of them have any recognized experience in
implementing transport protocols. Look at the complexity in the BIO code
around DNS and handling IPv4/IPv6 address families portably. While the project
currently has DTLS, which is a UDP protocol, QUIC is more like the former than
the latter.

The MVP does not rise to the level of minimally viable: A single-stream client
that can be added to the s_client application without significant API changes.
There is no mention of server implementation -- will there be one? It's not
even mentioned as a stretch goal for the first release. Is that bifurcation of
the community intentional? If it's an oversight, it can be seen as yet another
indication that the QUIC plan is not well thought out.

There are numerous freely available QUIC implementations. For example, look at
https://interop.seemann.io/ which shows 14. It is easy to get an
implementation added to that, and yet OpenSSL is only promising to interop
against one implementation. Why aren't Google, bundled with Chrome and
Android, or Microsoft, bundled with Windows, or Apple,  bundled into iOS 15,
tested? Perhaps the reason is that only client-side is part of the first
release. Again, the Internet doesn't need yet another limited client-side-only
QUIC implementation, and the plan as currently stated will force anyone
deploying a server to go elsewhere. Even if you add single-stream server
support to the MVP, that will not be sufficient for any server that wants to
support modern browsers.

The additional API in PR8797 is under 2000 lines. It supports, at least,
Microsoft MSQUIC, Google QUIC, the QUIC implementation in Node.js, and ngtcp2
by Tatsuhiro Tsujikawa. The API devised by David Benjamin and ported by Todd
in the PR, is clearly something the QUIC community wants. In addition, Apache
Traffic Server implements QUIC and recommends QuicTLS, not OpenSSL. Nginx
supports using the QuicTLS fork during their development. A complete QUIC
implementation by OpenSSL will take several years and certainly be many times
that.

An OpenSSL implementation is not something the QUIC community wants. The
leaders of the MSQUIC, gQUIC, Curl, and Node projects have all spoken out
against OpenSSL implementing QUIC. Many people in the community commented in
PR 8797 against the OpenSSL plan, including Lars Eggert, IETF Chair and former
QUIC WG Chair, Martin Duke, IETF Transport Area Director, and Lucas Pardue,
co-chair of the QUIC WG.

It is important to realize that QUIC is not "done." While the initial
documents are RFCs, looking at https://datatracker.ietf.org/wg/quic/documents/
, shows that there are nearly a dozen drafts in preparation. Certainly not all
of them will advance to RFC, but many will. Also, other IETF WG's are using
QUIC, include ALPS in the TLS WG, and the multiplexed transport on top of QUIC
known as MASQUE WG. There will be *significant* progress on QUIC during the
time OpenSSL is distracted by playing catch-up. As little work can be done by
anyone on new features until a full-featured implementation is available,
OpenSSL will forever lag behind.

By focusing on QUIC, the project is also not serving its existing community.
The OMC plan has already tossed aside DTLS 1.3, no matter when it is finished.
What other worthwhile, standardized, work will be given short shrift? The plan
makes no mention of existing PR's, or possible new ones.

Now speaking for myself, I am concerned that the the implementation of the
stated plan will not be good. The performance impact of the 3.0 provider
interface have not been fully quantified, but experience shows the overhead is
significant. For example, Microsoft recommends avoiding the 3.0 version of
QuicTLS for performance reasons. I also suggest a careful reading of IETF RFC
9001. While it is possible to do a "pluggable" record implementation, that RFC
and wide implementation experience, shows that it is not necessary. This is
not like a new crypto algorithm or provider; a pluggable record layer to
accommodate TLS, DTLS, KTLS, and QUIC, seems like a fool's errand, perhaps
brought on by the hubris of thinking that the world needs OpenSSL to implement
QUIC.  It doesn't.  It needs OpenSSL to implement OpenSSL cryptography.

Thank you for having read this far. I apologize if my strong language offended
anyone, that was not my intent. I only wish to convey, as strongly as possible
through the medium of email, that the path the project is on is bad and will
force people to leave.  To repeat something I've seen posted before, "No
matter how far down the wrong road you've gone, turn back."

Most sincerely,
-rich $alz