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)

Kazuho Oku <kazuhooku@gmail.com> Mon, 26 February 2024 06:35 UTC

Return-Path: <kazuhooku@gmail.com>
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 3C2BFC14F5EF for <quic@ietfa.amsl.com>; Sun, 25 Feb 2024 22:35:18 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.104
X-Spam-Level:
X-Spam-Status: No, score=-7.104 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DC_PNG_UNO_LARGO=0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=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, 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=gmail.com
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 EhG-HF-RarXW for <quic@ietfa.amsl.com>; Sun, 25 Feb 2024 22:35:17 -0800 (PST)
Received: from mail-ed1-x533.google.com (mail-ed1-x533.google.com [IPv6:2a00:1450:4864:20::533]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 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 D3BD5C14F5EC for <quic@ietf.org>; Sun, 25 Feb 2024 22:35:16 -0800 (PST)
Received: by mail-ed1-x533.google.com with SMTP id 4fb4d7f45d1cf-564e4df00f3so3378653a12.3 for <quic@ietf.org>; Sun, 25 Feb 2024 22:35:16 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1708929314; x=1709534114; darn=ietf.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=lmwZeLWLJBlN0NL/HMcQGMaRFd2cyM4UQ9G+y9V6OHQ=; b=Q/UIEeiKT7GFPk7HOWpFVqMBwyiI+K1caLZzHoL83zW2lq0u0K2RWPW/Jo2r0UJV1p VvcrmcKgAyImeo2My56IUxYF37V62BnHmHiq3q54JzdXe9/sCK3WZM5qbFk+npkjuHBd hCiNR77M/DYdjPGe1gaGgDXY8Fa2EHES3u/0mf8fgWqXcY6RXYTgYNKrSjarg2PBuRcE qWoJ4pG+C9RiozyoCyDQjYSHNC9+sSCr7nJ4AyYg+dO/0+SI6ct0mSAoa0iB2I4BFhAJ nYxgMOcJIFzISauBflbVQBOW++4yuph7a0ZgW+lDn0CoCbq/hz9VJxwAfGoUVFaah67v 9BZw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1708929314; x=1709534114; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=lmwZeLWLJBlN0NL/HMcQGMaRFd2cyM4UQ9G+y9V6OHQ=; b=g/Sqvo3Dhfqh3HnOc6cQLvrMbx2cKrq36fYtImmanaVA8YgKoiIDmC0YvKZgDla5/+ znmP2TbHeuNCiiyqn/Wxd3o1KS41Dp1F5l+6nkA3H24ZHLklsML8/3NCABJEkaR29cx+ YXYCxfKc1+Num8CP72AZe1d9lniEkagrarNROl3DweVah2KpzIWrlVqWypFNzO9RKTGk GzsudoXetFo+M83xvOjuJ/QNxvlrot48zqbGPvZgmSs9MQFE6sifni4ciGUmowoA3Spf 3zY/ZAwMBWh0Ls/ppE2v4giEmmgt1w5ET9qBMpxUdLQ68+Pf97OZTeEGoK1l+fvPqhXx pKjQ==
X-Gm-Message-State: AOJu0YyPla9+FA9qGbZi84QoxxD7MVaO63Z2wDRf1Nur/m3DGyBkwZxF fZHVDeMse0vTezdUcuWt7kcu4Nu+Sy1aVqVy1tbOZLxVdinOjCfNqmFxedRH76wEj+BJhecjb5m vTeWnMACnpOcWemEfUAANA/WNWoY=
X-Google-Smtp-Source: AGHT+IFkoqh5Ce2NnCgN1dtdbEln8hZB3IbrkhBKuLo9aSlAcryWFszQVch4d3CI9WfAKfNUzjUdNztXHw4TNTyjk7o=
X-Received: by 2002:aa7:c60b:0:b0:565:b666:a663 with SMTP id h11-20020aa7c60b000000b00565b666a663mr2621293edq.3.1708929314110; Sun, 25 Feb 2024 22:35:14 -0800 (PST)
MIME-Version: 1.0
References: <170807134367.25372.9131938145722079298@ietfa.amsl.com> <CANatvzyLJnZH9UHaSoMWbv20VhEtAzY7HqRHCSWt-O65f24uwQ@mail.gmail.com> <CAFyC=UcyG1OGprsTWvkEBK-tf-Oqs=HPmxZs8X42XR+yfgfv0w@mail.gmail.com> <CANatvzx-YSouO5aA0T4RXjXm9aTWGGf1HUut39an+2HAYTY_kA@mail.gmail.com> <CAFyC=UeQ73EiLpP44AN0RqTf91VH3+ULr_df8y3A7s36POy9cA@mail.gmail.com>
In-Reply-To: <CAFyC=UeQ73EiLpP44AN0RqTf91VH3+ULr_df8y3A7s36POy9cA@mail.gmail.com>
From: Kazuho Oku <kazuhooku@gmail.com>
Date: Mon, 26 Feb 2024 15:35:02 +0900
Message-ID: <CANatvzx6HCtd7oTmhiuvtEPpsYoR37XFE6ihdLgtVAVJWAHE3A@mail.gmail.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)
To: Dmitry Adamushka <dmitry@twingate.com>
Cc: IETF QUIC WG <quic@ietf.org>, HTTP Working Group <ietf-http-wg@w3.org>
Content-Type: multipart/related; boundary="000000000000b6d6a80612431c54"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/7Xzw-k41ZgZMsDjb8ssKlKq2MvM>
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: Mon, 26 Feb 2024 06:35:18 -0000

2024年2月23日(金) 0:42 Dmitry Adamushka <dmitry@twingate.com>:

> Hi Kazuho,
>
>
>> I am interested in what constraints this use-case introduces to QUIC on
>> Streams. Am I correct to understand that your interest in forwarding the
>> stream-related frames of QUIC (and possibly also DATAGRAM frames) through
>> multiple hops, with each hop being either QUIC v1 (UDP) or QUIC on Streams
>> (TCP)?
>>
>
> Yes, but there is more to it. And as you suggested, I'm also sharing our
> use cases with the mailing list. If nothing else, maybe some people will
> find them interesting or entertaining.
>
> In principle, it looks like QUIC on Streams takes just the
> streams/multiplexing part of QUIC and runs it on TCP/TLS-like transports.
> Our use case seems to require 'QUIC on Streams' + 'QUIC v1 crypto'. I
> wonder whether it is so extremely unusual or not. Let me elaborate.
>
> QUIC on Streams is designed to work on top of transports that provide the
> 4 capabilities listed in 3.1.
> <https://datatracker.ietf.org/doc/html/draft-kazuho-quic-quic-on-streams#section-3.1>Properties
> of Underlying Transpor
> <https://datatracker.ietf.org/doc/html/draft-kazuho-quic-quic-on-streams#name-properties-of-underlying-tr>
> t.
> For QUIC v1, the underlying transport is plain UDP, which doesn't provide
> any of these 4 capabilities.
>
> Thus, it's either all four or none, which prompts the question: are there
> any useful transports* that possess only a subset of these capabilities?
>
> We want end-to-end Client<->Connector QUIC connections (which represent
> secure tunnels) between Clients and Connectors. The streams of these QUIC
> connections carry the payload of the user's TCP (transparently terminated
> by our proxy on the Client side) or UDP flows. Both Clients and Connectors
> are transport-layer proxies.
>
>
> [image: design2(5).png]
> Path 3 is the classical QUIC v1.
> Path 4 is addressed by QUIC on Streams.
> Paths 1 and 2 consist of multiple transports, each possessing all four
> capabilities. However, as a whole, these paths lack 'Confidentiality and
> Integrity' because of the presence of Relay.
>
> For Paths 1 and 2, we would need something like 'QUIC on Streams' + 'QUIC
> v1 crypto'. It would need to start with a TLS handshake similar to regular
> QUIC v1. Then, its behavior might resemble QUIC on Streams, but with QUIC
> frames likely embedded into QUIC packets -- providing cryptographic
> functions but no reliable delivery, congestion control, or other QUIC v1
> services.
>

Thank you for sharing the use case. This is very interesting.

I think we can use QUIC on Streams as is to fulfill both the use cases, in
either of the following ways:

1. Run QUIC on Streams on top of end-to-end TLS.

The idea here is that the Relay can forward encrypted bytes of an
end-to-end TLS connection.

In the case of path 1, I think it would be possible to set up a TLS
connection between Client and Connector, on top of "TCP/TLS Connection 1"
and "TCP/TLS Connection 2"? Then, we can run QUIC on Streams on top of that
end-to-end TLS connection for multiplexing streams.

In the case of path 2, Client and Connector can establish an end-to-end TLS
connection atop of QUIC streams provided by the two hops. Then, we would
run QUIC on Streams on top of that end-to-end TLS connection.

2. Run QUIC v1 on top of unreliable multi-hop transport, each hop provided
either by QUIC v1 or QUIC on Streams.

The idea here is that the Client and the Connector would send QUIC v1
packets through the hops (i.e., "TCP/TLS connection X" and "QUIC/UDP
Connection X"). The hops or the Relay between the hops might drop the
end-to-end QUIC v1 packets, but that'd be fine as they would be
retransmitted as needed.

In the case of path 1, QUIC on Streams would be used atop each hop (i.e.,
"TCP/TLS connection 1" and 2), and the end-to-end QUIC v1 packets will be
conveyed by the DATAGRAM frames.

In the case of path 2, each hop (i.e., "QUIC/UDP Connection 1") would
convey the end-to-end QUIC v1 packets using the DATAGRAM frames.

WDYT?


> There is another possibility for using Path 2 with QUIC v1. Path 2 is
> special because it can either possess three capabilities
> (in-order-delivery, reliable-delivery, congestion-control) or only
> (congestion-control*) when QUIC DATAGRAMs are used for tunneling. On one
> hand, if we intend to tunnel QUIC packets through this path, congestion
> control may be redundant here (which is anyway the case with some QUIC
> implementations). On the other hand, it might be preferable to keep
> congestion control enabled on these two connections but disable it on the
> end-to-end QUIC connection.
>
> Now, another outrageous question: Would it be useful to have Multipath
> QUIC running simultaneously on top of UDP and TCP/TLS at least? The ideal
> case for us is to have a single QUIC connection (secure tunnel) working on
> top of all these paths above.
>
> One of the user use cases is to allow uninterrupted migration of user
> flows, say, SSH sessions, between network paths. For example, an SSH
> session starts through a Relay (Path 1 or 2) and later switches to a
> peer-to-peer path (Path 3) once it becomes available.
>
> Kind regards,
> Dmitry
>
>

-- 
Kazuho Oku