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: <huitema@huitema.net>
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 06DA5C15153C for <quic@ietfa.amsl.com>; Fri, 16 Feb 2024 20:27:07 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.907
X-Spam-Level:
X-Spam-Status: No, score=-6.907 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, 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, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
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 jMPSTFSwamyj for <quic@ietfa.amsl.com>; Fri, 16 Feb 2024 20:27:06 -0800 (PST)
Received: from out16-27.antispamcloud.com (out16-27.antispamcloud.com [185.201.18.27]) (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 E0720C14CE27 for <quic@ietf.org>; Fri, 16 Feb 2024 20:27:05 -0800 (PST)
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-004WyE-66 for quic@ietf.org; Sat, 17 Feb 2024 05:27:04 +0100
Received: from xsmtp22.mail2web.com (unknown [10.100.68.61]) by xse.mail2web.com (Postfix) with ESMTPS id 4TcG3P0qhSz5wm for <quic@ietf.org>; Fri, 16 Feb 2024 20:26:57 -0800 (PST)
Received: from [10.5.2.17] (helo=xmail07.myhosting.com) by xsmtp22.mail2web.com with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.92) (envelope-from <huitema@huitema.net>) id 1rbCHw-0004Z1-Vk for quic@ietf.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
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)
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+bT5x6h2yQpzTslcOqazQkKtAFKj/EwzSHE5FGYwwjsNRPCJHf ndVR8aKNOSLzM5i+EyPmD6wdmZPcItWbGe10hXJtXL4FsauCVkDjmcYJdU3yWp7KuHNaaKdg7iBE ZefdsNUFWKwa/wzJUjmazeC7ImcagYlnbzLIe7S77Bwkxve1ZxQ6V51u76v35b1wNe/MvdL22qpm 82rnE7pjN2vlNLVT2+J9PgaoF8SQHto3le4zsHTaeQtlKubP6iUTjj6yPARK6buALVaA782LKxg6 vRmng8N1aLhXqdc+jC1RcnVud53D5caUhbVtvqItBqoizkEt9O20UjkwI0v+LOlw05G4BS+iyyNq bT8dUMXMJ4tUCMj6G37ZfAMLceP5aNHPt26RBupu5v1nytoNnc138GfEEIgtEXyXj6S3SDvReMcV 8TXUjLjYWQt1/5xnQymMoPsgr/U0flMcy2Vi/IcBgY4arPaiJ1W6hAyiRC61jekdwIcXNugoOEbH RyFULpSjm7iff8pZ9ure3k2YtJj4Q8Z75yU2/k272/C6MSSt5C5ZSWaQfxhOtIJWZpn3lejD+iOc 6FcvarWCkI/MW7t0wH1TC8CKASqFe0kBQ5ZmwPhPJiyZvdx3ZJDsPzrvEdt+b8mxX4OQOI/UQ6jn FfMBgzwOSHunMg5j/UO+IMRndiIcrlDLATGFXHu6TzgIgWHKI0bZcpPgEJKLbDyaC/LdLvvYOUM2 Re3tAkceNDHo2MELYvpVB9v9zY0h8asEYmbGGsJD9ySC20IzFkBtfP+lFUR4XTjDUhPU+lX+8jnv X/zy8713qFZSq8Fx+9otn0aqja8VKPqpdskk5LxBR/9t1zMMkdu6/R2FM84kxYRFSvC1IDg1BRW7 hzp8w3iHcOwbVtsmWfnQGGis4EvbR3jXsI0ESXwhBU2hwt/J18C+HygJl/jEzm1SsR8v3aJbN/NZ fa8pHhHaz+HPa0HAgEx4sWDF
X-Report-Abuse-To: spam@quarantine14.antispamcloud.com
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/IeXwfsxPRetkj89RK9EzNjCL_8c>
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 04:27:07 -0000


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