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)

Christian Huitema <huitema@huitema.net> Sat, 17 February 2024 04:27 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 ED1D3C15153C for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Fri, 16 Feb 2024 20:27:44 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.757
X-Spam-Level:
X-Spam-Status: No, score=-7.757 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_DNSWL_HI=-5, 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_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="kEZKjxBM"; dkim=pass (2048-bit key) header.d=w3.org header.b="MQi/jK/o"
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 XiBBUOZDOq0j for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Fri, 16 Feb 2024 20:27: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 1018BC1519B7 for <httpbisa-archive-bis2Juki@ietf.org>; Fri, 16 Feb 2024 20:27:24 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=w3.org; s=s1; h=Subject:Content-Type:In-Reply-To:From:References:Cc:To:MIME-Version: Date:Message-ID:Reply-To; bh=0UTtvDcgyyBv0QDA17lu4xOywp2b4Bl5ac4jckdTdag=; b= kEZKjxBM5GDNdoFOiVzVCTcsvn4y9PeDHNdU0UJe4rjeohmkmhVANFx0qzksquvq2lGqhZ7z9Qje7 dxkC+LIxK6VL0lgtVPpvS1LMM4c2TOMMm52FbvjRv1hyNUe0QNo07qHgKWOlNXnFu8gWRDh16CNX3 kok/KtLF6ips2+KBfPVRDPgoWNssyGkxky6CUZfZFYHuzewMD2gty2+QCN7nfMWJd9tMRZomQzsBN uu6lBfbSJnKpoZva9zHb5DxcC2LJRWCm0sIkqAGyVBGywXs+G+/OMYTSrbzc5FSewa7MjImBnv9OK fwVTGnXcph5/l+tWfSf96KsPKMCRfwkIXA==;
Received: from lists by lyra.w3.org with local (Exim 4.94.2) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1rbCIC-00Bwck-Hv for ietf-http-wg-dist@listhub.w3.org; Sat, 17 Feb 2024 04:27:12 +0000
Resent-Date: Sat, 17 Feb 2024 04:27:12 +0000
Resent-Message-Id: <E1rbCIC-00Bwck-Hv@lyra.w3.org>
Received: from pan.w3.org ([3.222.182.102]) by lyra.w3.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from <huitema@huitema.net>) id 1rbCI9-00Bwbr-EL for ietf-http-wg@listhub.w3.org; Sat, 17 Feb 2024 04:27:09 +0000
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=w3.org; s=s1; h=Content-Type:In-Reply-To:From:References:Cc:To:Subject:MIME-Version: Date:Message-ID:Reply-To; bh=0UTtvDcgyyBv0QDA17lu4xOywp2b4Bl5ac4jckdTdag=; t=1708144029; x=1709008029; b=MQi/jK/obwY6qkmcn5vH3ux5inbBE/FmDm1xcJCzMMf95Jh z5CvDiYcfZp5UbZYH5I8zHMdXK+94SOfF/AuAbdSeCwK7VieCX9YbDI3Lk9YcxST1ESSZUke563tk /WtiXO2FcPd2b7B8gQbB55G8KC5f9bsUC7gceNoK47kjKJbC9cfbVNoNvBEz/4I9jE9rd9p6nH/c8 1NL/8TXZW0NR+NvodPiSxt6RAkaJdTCc82cZzy5RgRLHC4R8IKpA07M1ez92/rIc1WO+W8vYJ3Uvy 5RNHxJIzvMCFlLF0fLZBtIEqIAUbpljkDSyk8iWD57aH/a/GDBxSGTWNL7KvAvLA==;
Received-SPF: pass (pan.w3.org: domain of huitema.net designates 185.201.18.27 as permitted sender) client-ip=185.201.18.27; envelope-from=huitema@huitema.net; helo=out16-27.antispamcloud.com;
Received: from out16-27.antispamcloud.com ([185.201.18.27]) by pan.w3.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from <huitema@huitema.net>) id 1rbCI8-000qyg-1e for ietf-http-wg@w3.org; Sat, 17 Feb 2024 04:27:09 +0000
Received: from xse484.mail2web.com ([66.113.197.230] helo=xse.mail2web.com) by mx195.antispamcloud.com with esmtp (Exim 4.92) (envelope-from <huitema@huitema.net>) id 1rbCHz-004WyG-MY for ietf-http-wg@w3.org; Sat, 17 Feb 2024 05:27:04 +0100
Received: from xsmtp21.mail2web.com (unknown [10.100.68.60]) by xse.mail2web.com (Postfix) with ESMTPS id 4TcG3P0Ny5z5cG for <ietf-http-wg@w3.org>; Fri, 16 Feb 2024 20:26:57 -0800 (PST)
Received: from [10.5.2.17] (helo=xmail07.myhosting.com) by xsmtp21.mail2web.com with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.92) (envelope-from <huitema@huitema.net>) id 1rbCHw-0000DM-Tr for ietf-http-wg@w3.org; Fri, 16 Feb 2024 20:26:56 -0800
Received: (qmail 11639 invoked from network); 17 Feb 2024 04:26:56 -0000
Received: from unknown (HELO [10.32.61.221]) (Authenticated-user:_huitema@huitema.net@[192.0.32.236]) (envelope-sender <huitema@huitema.net>) by xmail07.myhosting.com (qmail-ldap-1.03) with ESMTPA for <kazuhooku@gmail.com>; 17 Feb 2024 04:26:56 -0000
Message-ID: <f23e13a8-f8e7-4fb4-bd58-ebd880613a37@huitema.net>
Date: Fri, 16 Feb 2024 20:26:55 -0800
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: Kazuho Oku <kazuhooku@gmail.com>, Hugo Landau <hlandau@openssl.org>
Cc: IETF QUIC WG <quic@ietf.org>, HTTP Working Group <ietf-http-wg@w3.org>, Lucas Pardue <lucas@lucaspardue.com>
References: <170807134367.25372.9131938145722079298@ietfa.amsl.com> <CANatvzyLJnZH9UHaSoMWbv20VhEtAzY7HqRHCSWt-O65f24uwQ@mail.gmail.com> <Zc8kDgXmkEku_61q@camelot.lhh.devever.net> <CANatvzwVpe2k9gjKFfkuudueDndS0Btgmx-_LWSajt=6K2MxMQ@mail.gmail.com>
From: Christian Huitema <huitema@huitema.net>
Autocrypt: addr=huitema@huitema.net; keydata= xjMEXtavGxYJKwYBBAHaRw8BAQdA1ou9A5MHTP9N3jfsWzlDZ+jPnQkusmc7sfLmWVz1RmvN J0NocmlzdGlhbiBIdWl0ZW1hIDxodWl0ZW1hQGh1aXRlbWEubmV0PsKWBBMWCAA+FiEEw3G4 Nwi4QEpAAXUUELAmqKBYtJQFAl7WrxsCGwMFCQlmAYAFCwkIBwIGFQoJCAsCBBYCAwECHgEC F4AACgkQELAmqKBYtJQbMwD/ebj/qnSbthC/5kD5DxZ/Ip0CGJw5QBz/+fJp3R8iAlsBAMjK r2tmyWyJz0CUkVG24WaR5EAJDvgwDv8h22U6QVkAzjgEXtavGxIKKwYBBAGXVQEFAQEHQJoM 6MUAIqpoqdCIiACiEynZf7nlJg2Eu0pXIhbUGONdAwEIB8J+BBgWCAAmFiEEw3G4Nwi4QEpA AXUUELAmqKBYtJQFAl7WrxsCGwwFCQlmAYAACgkQELAmqKBYtJRm2wD7BzeK5gEXSmBcBf0j BYdSaJcXNzx4yPLbP4GnUMAyl2cBAJzcsR4RkwO4dCRqM9CHpVJCwHtbUDJaa55//E0kp+gH
In-Reply-To: <CANatvzwVpe2k9gjKFfkuudueDndS0Btgmx-_LWSajt=6K2MxMQ@mail.gmail.com>
Content-Type: text/plain; charset="UTF-8"; format="flowed"
Content-Transfer-Encoding: 8bit
X-Originating-IP: 66.113.197.230
X-Spampanel-Domain: xsmtpout.mail2web.com
X-Spampanel-Username: 66.113.197.0/24
Authentication-Results: antispamcloud.com; auth=pass smtp.auth=66.113.197.0/24@xsmtpout.mail2web.com
X-Spampanel-Outgoing-Class: unsure
X-Spampanel-Outgoing-Evidence: Combined (0.12)
X-Recommended-Action: accept
X-Filter-ID: Pt3MvcO5N4iKaDQ5O6lkdGlMVN6RH8bjRMzItlySaT/XJJrZxWLqMINlzJOy7bAbPUtbdvnXkggZ 3YnVId/Y5jcf0yeVQAvfjHznO7+bT5zTlDIXnbDrmt7rtW6dGZ7UCtDMenGIAvt8zbCeT7BkmvAJ 5LzOu1USpz5yi97xt+Vaa40DxZPJuLUk3zkVKd8pdqDuc9lS3Nx+9iKFZ9qooHyjGXcl791+S7iI AbgeossW2bH8M4vgVRT9Y9sZckzvxt7qRlgXYaDJTDW7iyeV+NkTG/65RU1ibl09lrfJt/2M5GWE vd21JIOU6d1z4UKtlkj6XFxmciF24ypcQNUJlweph0m/7Zfos+AxsfpxEVjN0iSJBwaRRCp9wOH4 R+ueruaAHwXuyy+TYqhAD/3fQKb+Sk5ZBXUgt9/X6plqv8Jl041btgY00t8ZwQGEpPru7jvpIyNK kis6HYv8iaGiztnjGmKA6S0KnpdzPXa1+MU93SsS4aMXJmiJ2G0eb5ahZl4JtbUeAeiasM15bRnx JHf4QY6rMWrrY5VV38iWkCn+rgVEacJBv1CPC7fpONadtHUijJVykBfF9R5cnDw9IpnLGL9oVuhN QBoDT12SU/9oh9VoIekQHpwUfpYnEThmyMK2sfRxcLIBpPDnKg1FrAmtlEqPV7rA97L74IrdeqWt yL4tuJVL+OIMW33B5NzIHF29j8cA+VxmrdV21v79MMGon863E1HGjZsfM9C+/MIqM56VVlcswDb0 N8Su4voNiwQzKw+6v3CaIMG6s7LqJCd2Q1ZR5ZmVYo67U9gy/ASp0srCGhqQVLm3YuZYsovTDCKg VR73QInGXMxBSZ6tEqqFJ+yuyHYcCg/CvsRqnDH5d9Mpny2MqlrXcMQyNtV/3OQQbrkR+2srfXWJ lEPPS8OpyKA69LF1Ge2GaGfxmfrJyhoTyYjBAsgJ9fPu1C1rkwISTdKXHHyl1YNiB/Uix7CYwtBS QxO5224/0gCm1v3y3deP8vNnmz84mDUvZqxnoc7bV0+nE+EwV843xuls19yArgxzoa+KPg4iBZtv Ir6fmwij1JB2C+QdO3OG/whb
X-Report-Abuse-To: spam@quarantine14.antispamcloud.com
X-W3C-Hub-Spam-Status: No, score=-9.9
X-W3C-Hub-Spam-Report: BAYES_00=-1.9, DMARC_MISSING=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_DBL_BLOCKED_OPENDNS=0.001, W3C_AA=-1, W3C_DB=-1, W3C_WL=-1
X-W3C-Scan-Sig: pan.w3.org 1rbCI8-000qyg-1e cc7f4c3fb4602e5a1c4ed9cc1fbc8e3e
X-Original-To: ietf-http-wg@w3.org
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)
Archived-At: <https://www.w3.org/mid/f23e13a8-f8e7-4fb4-bd58-ebd880613a37@huitema.net>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/51791
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 2/16/2024 3:39 PM, 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.

I like this design. I know that I will have to add a QUIC over TCP 
option to cross some firewalls. QUIC over Streams looks fine, and is a 
lesser burden for me than having to implement H2. But then, let's take a 
step back.

We want a TCP solution because some networks block UDP. AFAIK, they do 
that because they want to monitor the TCP connections, either because 
they rely on features of TCP to manage a NAT, or because they rely on 
features of HTTP or H2 to manage proxies. I am concerned that the 
networks that block QUIC over UDP will also block QUIC over TCP, because 
they expect H2, not H3S.

Do we have data on the fraction of networks that block UDP today but 
would let H3S through?

-- Christian Huitema