Re: QUIC on streams compared to Minion (was Re: Proposal Towards Universal HTTP/3, with a polyfill of QUIC for TCP (Fwd: New Version Notification for draft-kazuho-httpbis-http3-on-streams-00.txt))

Michael Tuexen <michael.tuexen@lurchi.franken.de> Sun, 18 February 2024 10:38 UTC

Return-Path: <ietf-http-wg-request+bounce-httpbisa-archive-bis2juki=ietf.org@listhub.w3.org>
X-Original-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Delivered-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 56693C14F5F8 for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Sun, 18 Feb 2024 02:38:48 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.756
X-Spam-Level:
X-Spam-Status: No, score=-2.756 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, MAILING_LIST_MULTI=-1, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=unavailable autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=w3.org header.b="Hb7jjld3"; dkim=pass (2048-bit key) header.d=w3.org header.b="J69n+4VI"
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id oSBf-8WCE8_J for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Sun, 18 Feb 2024 02:38:44 -0800 (PST)
Received: from lyra.w3.org (lyra.w3.org [128.30.52.18]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id A3898C14F5FB for <httpbisa-archive-bis2Juki@ietf.org>; Sun, 18 Feb 2024 02:38:44 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=w3.org; s=s1; h=Subject:To:References:Message-Id:Cc:Date:In-Reply-To:From: Mime-Version:Content-Type:Reply-To; bh=LTPbeXk7klzHbi/UmGBHb/uEEWcXGeVRJ9wWmRJLuEc=; b=Hb7jjld3NBog0UhSvsOqlEryln EQDiPloZy/HrhA1LUrBwBDJ75xRLDxm6qCHmBwTu4OMe08hduAapXC66wGqbzq3n5mAYuTe9b4gkv p6UaoTgsktEdQa8crDZK5ncwj5FMNwXYKOL064gV3Mh4xJJl+jAEVCcfvARNUZsZ1axJr5YpwBW8U PxE6tLyOo+iWYd5oetvubnF9IYxaR58jPCr5KyaABRSQdPkGXWzdWDtqJb9hfFzrA47istXtUwXir KCmaEnJa9J3X7LNVMk2yQVxBmAYjUgLt0sD3Nf+iR0TeaV/00zzpmo91n/6ZbXsARZDlPDnvD62VR kYSNkTeA==;
Received: from lists by lyra.w3.org with local (Exim 4.94.2) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1rbeWu-00ENKU-OC for ietf-http-wg-dist@listhub.w3.org; Sun, 18 Feb 2024 10:36:16 +0000
Resent-Date: Sun, 18 Feb 2024 10:36:16 +0000
Resent-Message-Id: <E1rbeWu-00ENKU-OC@lyra.w3.org>
Received: from puck.w3.org ([34.196.82.207]) by lyra.w3.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from <michael.tuexen@lurchi.franken.de>) id 1rbeWs-00ENJO-Ff for ietf-http-wg@listhub.w3.org; Sun, 18 Feb 2024 10:36:14 +0000
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=w3.org; s=s1; h=To:References:Message-Id:Cc:Date:In-Reply-To:From:Subject: Mime-Version:Content-Type:Reply-To; bh=LTPbeXk7klzHbi/UmGBHb/uEEWcXGeVRJ9wWmRJLuEc=; t=1708252574; x=1709116574; b=J69n+4VIcu3gzeimOzlMyHmFFofYnpYzsre2DRPDM/9ccmtUMXS054D3cziG5fSRU54KpLR1591 GI6wHsvGPbZzjff4MbmFjoeocglUYd9QmKJnjRle/cN3hKzh8GOeTp1BxPio1AkSUUzh1NjdLxjSH qBKBIgaRnLhiggoAfrxuVpe36cUl2YJXWyAuTYcn0crOArE3/yI+Ba61Y/SdjE+c+GUhzqfUrEwn3 dRUtpV++cUijllRISoHh0vXEgrxWf8cahHegZSSNRpM9jQby/JzKfGng6FJXdeED7kwG4Hvw5yobP WNMxNxo42PCCI540G2V87xNcpyHXnkklwo0w==;
Received: from mail-n.franken.de ([193.175.24.27] helo=drew.franken.de) by puck.w3.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from <michael.tuexen@lurchi.franken.de>) id 1rbeWq-0010Ug-1o for ietf-http-wg@w3.org; Sun, 18 Feb 2024 10:36:14 +0000
Received: from smtpclient.apple (ip4d15f54e.dynamic.kabel-deutschland.de [77.21.245.78]) (Authenticated sender: lurchi) by mail-n.franken.de (Postfix) with ESMTPSA id 42D47721E2806; Sun, 18 Feb 2024 11:36:05 +0100 (CET)
Content-Type: text/plain; charset="utf-8"
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3774.400.31\))
From: Michael Tuexen <michael.tuexen@lurchi.franken.de>
In-Reply-To: <EE697E49-3C24-4EA4-8BAD-0020EF8EAFAE@ifi.uio.no>
Date: Sun, 18 Feb 2024 11:36:04 +0100
Cc: Lucas Pardue <lucaspardue.24.7@gmail.com>, Kazuho Oku <kazuhooku@gmail.com>, IETF QUIC WG <quic@ietf.org>, HTTP Working Group <ietf-http-wg@w3.org>
Content-Transfer-Encoding: quoted-printable
Message-Id: <F4E26E3A-01CF-44F9-AAE7-077DD3272EA8@lurchi.franken.de>
References: <170807134367.25372.9131938145722079298@ietfa.amsl.com> <CANatvzyLJnZH9UHaSoMWbv20VhEtAzY7HqRHCSWt-O65f24uwQ@mail.gmail.com> <078A16AD-9824-41B8-935D-0E4760FF1E22@ifi.uio.no> <939e22d5-1707-4964-9f59-0dea39feebdc@app.fastmail.com> <EE697E49-3C24-4EA4-8BAD-0020EF8EAFAE@ifi.uio.no>
To: Michael Welzl <michawe@ifi.uio.no>
X-Mailer: Apple Mail (2.3774.400.31)
X-W3C-Hub-Spam-Status: No, score=-4.9
X-W3C-Hub-Spam-Report: BAYES_00=-1.9, DMARC_MISSING=0.001, FORGED_SPF_HELO=1, RCVD_IN_DNSWL_HI=-5, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_PASS=-0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_DBL_BLOCKED_OPENDNS=0.001, W3C_NW=1
X-W3C-Scan-Sig: puck.w3.org 1rbeWq-0010Ug-1o fb4c37774f872c7511b5b551d8446e51
X-Original-To: ietf-http-wg@w3.org
Subject: Re: QUIC on streams compared to Minion (was Re: Proposal Towards Universal HTTP/3, with a polyfill of QUIC for TCP (Fwd: New Version Notification for draft-kazuho-httpbis-http3-on-streams-00.txt))
Archived-At: <https://www.w3.org/mid/F4E26E3A-01CF-44F9-AAE7-077DD3272EA8@lurchi.franken.de>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/51797
X-Loop: ietf-http-wg@w3.org
Resent-Sender: ietf-http-wg-request@w3.org
Precedence: list
List-Id: <ietf-http-wg.w3.org>
List-Help: <https://www.w3.org/email/>
List-Post: <mailto:ietf-http-wg@w3.org>
List-Unsubscribe: <mailto:ietf-http-wg-request@w3.org?subject=unsubscribe>

> On Feb 18, 2024, at 11:22, Michael Welzl <michawe@ifi.uio.no> wrote:
> 
> Hi,
> 
> Below:
> 
>> On Feb 17, 2024, at 5:40 PM, Lucas Pardue <lucaspardue.24.7@gmail.com> wrote:
>> 
>> Hi Michael,
>> 
>> On Sat, Feb 17, 2024, at 11:30, Michael Welzl wrote:
>>> Hi,
>>> 
>>> QUIC over TCP… I hope that the people doing this are aware of the old work on Minion?   If not, see:
>>> https://datatracker.ietf.org/doc/html/draft-iyengar-minion-protocol-02
>>> https://datatracker.ietf.org/doc/html/draft-iyengar-minion-concept-02
>>> https://www.usenix.org/conference/nsdi12/technical-sessions/presentation/nowlan
>>> 
>>> IIRC, the original Minion idea was to introduce a marker in the bytestream, but the later development (perhaps captured in the drafts above?) worked off the principle that protocols above TCP already have these kinds of markers anyway - i.e., it doesn’t even need a change to the wire protocol, it’s just a “vertical” change about how to talk to the TCP buffer below.
>>> 
>>> Considering this, it seems almost silly to me to ignore this and map QUIC over TCP when streams can so nicely be implemented via TCP too, just by “breaking” the TCP API “contract".
>>> 
>>> My apologies if this is already a part of the plan - I just wanted to point out this work because at this point, it’s old and might have been forgotten - yet it seems to fit the idea of mapping QUIC over TCP like a glove.
>> 
>> I'm aware of minion but haven't looked at it in a long while, thanks for the reminder. I read over it very briefly and I intend to spend more time digesting. 
>> 
>> However, my intial understanding is that minion has a hard requirement on DTLS, is that correct? 
> 
> 
> I don’t know, it’s long since I last read the drafts.  But, in principle, the whole idea is based on being able to identify boundaries within the byte stream - and these boundaries must somehow be communicated (vertically) down to the TCP engine.  So, my suspicion is that they may have tied this to DTLS just for the convenience because DTLS does give you these boundaries.
I don't think so, since that would limit the message size to the maximum record
size of DTLS, which is about 16KB.
My understanding is that you want to support unordered delivery. Since TLS enforces
ordered delivery of its records, you need to use DTLS here. This is similar to
SCTP, where you also use DTLS for that reason (and partial reliability).

Best regards
Michael
> 
> So, in principle, it’s not about DTLS, it’s about handing over boundaries. FWIW, in TAPS, this was solved with a “framer” concept, where a sort of callback for defining and parsing boundaries is handed over to the system. How to best do this in a more general and static system with TLS in between, I really don’t know.
> 
> 
>> Part of the motivation of QUIC on streams, as pointed at in the draft, is to address a concrete problem in HTTP/2 stream limits. There are proposals for how to fix HTTP/2 itself but some of that effort could be invested in swapping over to HTTP/3 using QUIC on streams. Whether that would be successful depends on the change complexity matrix.
>> 
>> It's the authors view that many clients and servers already support HTTP/2 over TLS and HTTP/3 (native QUIC) simultaneously, meaning the complexity of adding HTTP/3 over QUIC over TLS is minimized. Mostly because QUIC implementations would need minor tweaks only. As an implementer (not author hat), the requirement to use DTLS would already start to be a put off for me in the above scenario. 
>> 
>> Can a minion-style (RE)COBS approach could be used with TLS? If so, what benefits would that bring over the current proposal?
> 
> For the first question, see above: probably not easily, but technically, *somehow*, yes. For the second question: it would remove HOL blocking.
> 
> 
>> HTTP/2 is already subject to TCP Head of Line Blocking. Maybe it could be nice to design a replacement that can fix that using TLS too.
> 
> 
> True!
> 
> 
>> However, if I understand the minion protocol design (a big if, I'm happy to be corrected), it only supports 4 reorderings. Furthermore, since the "bookends" are in the plaintext stream, it seems trivial for an on-path attacker to interfere with them, opening up a new suite of security issues.
> 
> Hm… I forgot these details.
> 
> Well I don’t know if it *really* fits - it was just something that seemed suitable to me, as it might be able to remove HOL blocking when using streams, but … as always, the devil is in the details.
> 
> Cheers,
> Michael
> 
> 
> 
>> 
>> Cheers
>> Lucas
>> 
>>> 
>>> Cheers,
>>> Michael
>>> 
>>> 
>>> 
>>>> On Feb 16, 2024, at 9:24 AM, Kazuho Oku <kazuhooku@gmail.com> wrote:
>>>> 
>>>> Hello QUIC and HTTP enthusiasts,
>>>> 
>>>> We, Lucas and I, have submitted two drafts aimed at broadening the reach of HTTP/3 - yes, making it available over TCP as well. We are eager to hear your thoughts on these:
>>>> 
>>>> QUIC on Streams: A polyfill for operating QUIC on top of TCP.
>>>> https://datatracker.ietf.org/doc/html/draft-kazuho-quic-quic-on-streams
>>>> 
>>>> HTTP/3 on Streams: How to run HTTP/3 unmodified over TCP, utilizing QUIC on Streams.
>>>> https://datatracker.ietf.org/doc/html/draft-kazuho-httpbis-http3-on-streams
>>>> 
>>>> As the co-author of the two drafts, let me explain why we have submitted these.
>>>> 
>>>> The rationale behind our proposal is the complexity of having two major HTTP versions (HTTP/2 and HTTP/3), both actively used and extended. This might not be the situation that we want to be in.
>>>> 
>>>> HTTP/2 is showing its age. We discussed its challenges at the IETF 118 side meeting in Prague.
>>>> 
>>>> Despite these challenges, we are still trying to extend HTTP/2, as seen with WebTransport. WebTransport extends both HTTP/3 and HTTP/2, but it does so differently for each, due to the inherent differences between the HTTP versions.
>>>> 
>>>> Why are we doing this?
>>>> 
>>>> Because HTTP/3 works only on QUIC. Given that UDP is not as universally accessible as TCP, we find ourselves in a position where we need to maintain and extend not only HTTP/3 but also HTTP/2 as a backstop protocol.
>>>> 
>>>> This effort comes with its costs, which we have been attempting to manage.
>>>> 
>>>> However, if we could create a polyfill for QUIC that operates on top of TCP, and then use it to run HTTP/3 over TCP, do we still need to invest in HTTP/2?
>>>> 
>>>> Of course, HTTP/2 won’t disappear overnight.
>>>> 
>>>> Yet, by making HTTP/3 more universally usable, we can at least stop extending HTTP/2.
>>>> 
>>>> By focusing our new efforts solely on HTTP/3, we can conserve energy.
>>>> 
>>>> By making HTTP/3 universally accessible, and by having new extensions solely to HTTP/3, we can expect a shift of traffic towards HTTP/3.
>>>> 
>>>> This shift would reduce the necessity to modify our HTTP/2 stacks (we’d be less concerned about performance issues), and provide us with a better chance to phase out HTTP/2 sooner.
>>>> 
>>>> Some might argue that implementing a polyfill of QUIC comes with its own set of costs. However, it is my understanding that many QUIC stacks already have the capability to read QUIC frames other than from QUIC packets, primarily for testing purposes. This suggests that the effort would be more about leveraging existing code paths rather than writing new code from scratch. Furthermore, a QUIC polyfill would extend its benefits beyond just HTTP, by aiding other application protocols that aim to be built on top of QUIC, providing them accessibility over TCP.
>>>> 
>>>> Please let us know what you think. Best regards,
>>>> 
>>>> ---------- Forwarded message ---------
>>>> From: <internet-drafts@ietf.org>
>>>> Date: 2024年2月16日(金) 17:15
>>>> Subject: New Version Notification for draft-kazuho-httpbis-http3-on-streams-00.txt
>>>> To: Kazuho Oku <kazuhooku@gmail.com>, Lucas Pardue <lucas@lucaspardue.com>
>>>> 
>>>> 
>>>> A new version of Internet-Draft draft-kazuho-httpbis-http3-on-streams-00.txt
>>>> has been successfully submitted by Kazuho Oku and posted to the
>>>> IETF repository.
>>>> 
>>>> Name:     draft-kazuho-httpbis-http3-on-streams
>>>> Revision: 00
>>>> Title:    HTTP/3 on Streams
>>>> Date:     2024-02-16
>>>> Group:    Individual Submission
>>>> Pages:    5
>>>> URL:      https://www.ietf.org/archive/id/draft-kazuho-httpbis-http3-on-streams-00.txt
>>>> Status:   https://datatracker.ietf.org/doc/draft-kazuho-httpbis-http3-on-streams/
>>>> HTML:     https://www.ietf.org/archive/id/draft-kazuho-httpbis-http3-on-streams-00.html
>>>> HTMLized: https://datatracker.ietf.org/doc/html/draft-kazuho-httpbis-http3-on-streams
>>>> 
>>>> 
>>>> Abstract:
>>>> 
>>>>    This document specifies how to use HTTP/3 on top of bi-directional,
>>>>    byte-oriented streams such as TLS over TCP.
>>>> 
>>>> Discussion Venues
>>>> 
>>>>    This note is to be removed before publishing as an RFC.
>>>> 
>>>>    Discussion of this document takes place on the HTTP Working Group
>>>>    mailing list (ietf-http-wg@w3.org), which is archived at
>>>>    https://lists.w3.org/Archives/Public/ietf-http-wg/.
>>>> 
>>>>    Source for this draft and an issue tracker can be found at
>>>>    https://github.com/kazuho/draft-kazuho-httpbis-http3-on-streams.
>>>> 
>>>> 
>>>> 
>>>> The IETF Secretariat
>>>> 
>>>> 
>>>> 
>>>> 
>>>> -- 
>>>> Kazuho Oku
> 
>