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)

Hugo Landau <hlandau@openssl.org> Sat, 17 February 2024 21:03 UTC

Return-Path: <hlandau@openssl.org>
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 CDEBFC14F5EE for <quic@ietfa.amsl.com>; Sat, 17 Feb 2024 13:03:51 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.408
X-Spam-Level:
X-Spam-Status: No, score=-4.408 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=openssl.org
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 9ni4KEjYPfNk for <quic@ietfa.amsl.com>; Sat, 17 Feb 2024 13:03:47 -0800 (PST)
Received: from mta.openssl.org (mta.openssl.org [34.32.178.11]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 0B2ABC14F5E9 for <quic@ietf.org>; Sat, 17 Feb 2024 13:03:46 -0800 (PST)
Received: from camelot.lhh.devever.net (cpc117822-heme13-2-0-cust624.9-1.cable.virginm.net [81.111.210.113]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mta.openssl.org (Postfix) with ESMTPSA id 5313432A829; Sat, 17 Feb 2024 21:03:44 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=openssl.org; s=dkim-2020-2; t=1708203824; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=nVLtMHd3aDdYNSQGYOJ1y45WqvPW6UnwwkA7gglcDfo=; b=IKkxuPxMccoaZMHgkua/n9Kkt3TEUdyWUEvFjTl++8neQQpUO67WewgVin4uqsvwdi01LG OMmvf55gtqX/IYSCNpJnUxEPS3aNaSIo3qXguupkMhl8tZN93kh0dvaIrO7se+cEtDuYxV +LBDBn1L2ZxgP7GgK1x+k8LEZnVL055f3R6W1tUZ+DtQaGpJvJ+vy2oZ8yMcIZhS+4vAqM /OrlR/K9n0V3f+g90V4MOq3HxB2s0Lmz3e+twps8MPHUbVVu4/G8kkxEZKuwNx1RF6QPtf oFQJL2KNhH7kFwfouirc9MWLLZ+T+Tcp3h7dIqYWDFhTNZ1FMkDeGitMdKnWRg==
Authentication-Results: ORIGINATING; auth=pass smtp.auth=hlandau smtp.mailfrom=hlandau@openssl.org
Date: Sat, 17 Feb 2024 21:03:42 +0000
From: Hugo Landau <hlandau@openssl.org>
To: Kazuho Oku <kazuhooku@gmail.com>
Cc: IETF QUIC WG <quic@ietf.org>, HTTP Working Group <ietf-http-wg@w3.org>, Lucas Pardue <lucas@lucaspardue.com>
Subject: 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)
Message-ID: <ZdEfLiGmzKFZTurh@camelot.lhh.devever.net>
References: <170807134367.25372.9131938145722079298@ietfa.amsl.com> <CANatvzyLJnZH9UHaSoMWbv20VhEtAzY7HqRHCSWt-O65f24uwQ@mail.gmail.com> <Zc8kDgXmkEku_61q@camelot.lhh.devever.net> <CANatvzwVpe2k9gjKFfkuudueDndS0Btgmx-_LWSajt=6K2MxMQ@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <CANatvzwVpe2k9gjKFfkuudueDndS0Btgmx-_LWSajt=6K2MxMQ@mail.gmail.com>
X-Rspamd-Action: no action
X-Rspamd-Server: mta
X-Rspamd-Queue-Id: 5313432A829
X-Spamd-Bar: /
X-Spamd-Result: default: False [-0.10 / 15.00]; MIME_GOOD(-0.10)[text/plain]; RCVD_COUNT_ZERO(0.00)[0]; FREEMAIL_TO(0.00)[gmail.com]; NEURAL_HAM(-0.00)[-0.990]; ARC_NA(0.00)[]; MISSING_XM_UA(0.00)[]; ASN(0.00)[asn:5089, ipnet:81.110.0.0/15, country:GB]; MIME_TRACE(0.00)[0:+]; FREEMAIL_ENVRCPT(0.00)[gmail.com]; FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_HAS_DN(0.00)[]; DKIM_SIGNED(0.00)[openssl.org:s=dkim-2020-2]; FROM_EQ_ENVFROM(0.00)[]; TO_DN_ALL(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; RCPT_COUNT_THREE(0.00)[4]
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/RkBQq99NhFQPb0IUitqm8EofF9A>
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.39
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: Sat, 17 Feb 2024 21:03:51 -0000

On Sat, Feb 17, 2024 at 08:39:18AM +0900, Kazuho Oku wrote:
> 2024年2月16日(金) 18:00 Hugo Landau <hlandau@openssl.org>:
> >
> > > 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,
> > It's an interesting proposal. Looks fairly sensible.
> > I could see a lot of other uses also for having a mapping of the QUIC
> > application-level semantics without QUIC itself, such as for diagnostic
> > use or intra-DC backhaul of incoming traffic.
> >
> > I question the utility of implicit length signalling. Unless there's a
> > real use for this (maybe there is and I'm just not seeing it) I would
> > probably just prohibit these encodings. The max_frame_size transport
> > parameter proposed here cannot be reduced below 16384. So you're saving
> > at most 3 bytes (to encode 16384) for every 16384 bytes. That would seem
> > to yield an efficiency increase of 0.018%. For larger max_frame_size
> > values this obviously gets even smaller.
> >
> > Is there a rationale to supporting this I'm not seeing?
> 
> Thank you for your comments!
> 
> Regarding your question, in the initial draft, we attempted to limit
> changes to the way frames are communicated, while preserving the frame
> encoding of QUIC v1 unchanged. The purpose of this approach is to
> maximize code reuse between QUIC v1 and QUIC over Streams.
> 
> For STREAM frames that lack length fields, we considered two options:
> a) defining a method to deduce the length from another source, or
> b) prohibiting the use of such frames.
> 
> We opted for option (a) for consistency, under the assumption that it
> would not be more complex to implementations than (b).
> 
> However, it was a narrow decision. I acknowledge that opting for (b)
> would also be straightforward to implement, especially since STREAM
> frames lacking length fields are identified by specific frame types
> (namely, 0x08, 0x09, 0x0c, 0x0d), and considering we're already
> restricting the use of certain QUIC v1 frames.
Yeah. I would strongly support (b) without a very clear motivating use
case otherwise.