Re: [Moq] Exploring HTTP/3

Luke Curley <kixelated@gmail.com> Thu, 09 February 2023 17:56 UTC

Return-Path: <kixelated@gmail.com>
X-Original-To: moq@ietfa.amsl.com
Delivered-To: moq@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id B5550C15EB2E for <moq@ietfa.amsl.com>; Thu, 9 Feb 2023 09:56:04 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level:
X-Spam-Status: No, score=-2.097 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, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-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 CV94VtapZERr for <moq@ietfa.amsl.com>; Thu, 9 Feb 2023 09:56:02 -0800 (PST)
Received: from mail-ej1-x62c.google.com (mail-ej1-x62c.google.com [IPv6:2a00:1450:4864:20::62c]) (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 C4330C16950A for <moq@ietf.org>; Thu, 9 Feb 2023 09:56:02 -0800 (PST)
Received: by mail-ej1-x62c.google.com with SMTP id qb15so6716602ejc.1 for <moq@ietf.org>; Thu, 09 Feb 2023 09:56:02 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=c0o0FUxendsHP6z86hP145vmww/sp/1wkEPvmkEo2Jo=; b=Kw8z8Q3ZCQeHNbm/ztitUZZ+e8vSO8OFryZsijR2tVQyXRvWlxn97xZoZ24pvhqFRe 8sJ51u98mM84WP83F3l6uXa3Q4a0a+yO/tK+cgo5w/zKVs5WF+mRJCafqq7MlRJcTPFn vwO5vuwiIORMbq8YFzfW6o0VESC3fM+M4HvR1mGfDBePV00vUOL3X8JOFfheIhH7B7EY FwEC8LkAwQN265m5ZrxeY6+Wm9aqkxJ3C15z2n87Ub3VCuA9IgCoJ9nwTF93zKdUHzJQ i27HX+W8ySk3wwbabqFAcbCELnYSbbG+XQUjJIMmcBYVBOU+c7BcQgs0sY4sP+0r0Cgi B+jw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=c0o0FUxendsHP6z86hP145vmww/sp/1wkEPvmkEo2Jo=; b=ILAXb31SBCTIyasWXdPFutIrBIpPdqo8F7olRQdl4l/aLetWiladiraIPl4of7fqke VQmNdn8GrttUn/s1htEH1Se90g0B3zeYvlb02FhuQBWqjIwHA3zxu3WUOox5MF7HEZsl IwfiPsP1zLJXfFe/3ZSc95+YfnQRGFfR0hI3w9o5F28ByQdpdV1047j3KlP8ON9SXm6h fEn8X3bpJ+mWaZQnM49z01mofQQC7B67SPm2jw/LjtC3CEeRMlWl3YdfcsWa4GsxWJaz IehadiC/mWzc3pfQnMTtu0Mj23bScta7FlSXfCCBQNZpBJKBLe28lnm0pAKLye4k9cMJ 0H7w==
X-Gm-Message-State: AO0yUKXArh6xaN35/vxoXdpgKRyu4lPpKGaRQUldAodXUkRUc9906q7X pF2FlRKiMcHufgGvMPdQSNJMCHstnSH3naFQTUsZ7rNZONA=
X-Google-Smtp-Source: AK7set+NFv+J1+gz3N4LBBYITBU6fxEYdcpRjXUwofHOQxWxmeYDe2NJbHGCqcJZdJS76iVl6QrFnwlm7fjM1IERhM4=
X-Received: by 2002:a17:906:4d58:b0:87b:d491:4311 with SMTP id b24-20020a1709064d5800b0087bd4914311mr2508373ejv.275.1675965360278; Thu, 09 Feb 2023 09:56:00 -0800 (PST)
MIME-Version: 1.0
References: <CAHVo=ZmD7KvKxh2tTeaM2B+0q9=qZPgBydmfaHor5MaPODZf6w@mail.gmail.com> <CALGR9oas8cMBrX1WVf64fH13jr1r-S0KQB5spNzFj41k9Lgk+A@mail.gmail.com> <CAHVo=Z=Nov7B24A=M2pxPnUgyBg3n-AjF8AD2mKwgbTQ81F+mA@mail.gmail.com> <CALGR9ob4i7Z8zuqFVHtzOGV3QMTFjvOK4uZW3Xfvb5ZsoULvMg@mail.gmail.com> <CAKKJt-eC=h20Va4+64r=zkhYXK_ypC+txLqzgpr+YL=HW-DD+g@mail.gmail.com> <CALGR9oYr2OZZcfmFdqLgQ0Uqu7pAwQTnbuf-Fm64m58Spe6xYw@mail.gmail.com>
In-Reply-To: <CALGR9oYr2OZZcfmFdqLgQ0Uqu7pAwQTnbuf-Fm64m58Spe6xYw@mail.gmail.com>
From: Luke Curley <kixelated@gmail.com>
Date: Thu, 09 Feb 2023 09:55:50 -0800
Message-ID: <CAHVo=ZmeJfdoLc9NatDDEeAQG0X9_aygQm0ZSdtzeKEu=bO2pw@mail.gmail.com>
To: Lucas Pardue <lucaspardue.24.7@gmail.com>
Cc: Spencer Dawkins at IETF <spencerdawkins.ietf@gmail.com>, MOQ Mailing List <moq@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000f490be05f44817d2"
Archived-At: <https://mailarchive.ietf.org/arch/msg/moq/YenUYG5_cuLWpBBmkTuO8ohyMyU>
Subject: Re: [Moq] Exploring HTTP/3
X-BeenThere: moq@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: Media over QUIC <moq.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/moq>, <mailto:moq-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/moq/>
List-Post: <mailto:moq@ietf.org>
List-Help: <mailto:moq-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/moq>, <mailto:moq-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 09 Feb 2023 17:56:04 -0000

Yeah, I do think HTTP semantics mostly get in the way here.

One of the problems with Warp over HTTP/3 is that prioritization is best
scoped to a connection. Meanwhile HTTP semantics are agnostic to the
underlying transport and we can't enforce connection sharing.q

For example, suppose a client issues a request for segment 5 and segment 6,
asking that the newer segment is delivered first during congestion.

If the two requests share a HTTP/3 or HTTP/2 connection, then the HTTP
server can prioritize. Any available bandwidth under the congestion window
is spent on STREAM frames for segment 6 first.

If the two requests are over separate QUIC/TCP connections, then IP/flow
priorities could work, but not really. Support is limited and it gets messy
since QUIC packets are sequenced. We would need something like multi-path
to individually prioritize QUIC packets within a connection (ex. there's a
3rd request with a different priority).

If the two requests hit a server that doesn't support prioritization, then
that hop will round-robin. Head-of-line blocking may even be preferable,
but there's no way of knowing that a HTTP relay doesn't support
prioritization. That was my biggest concern with the HTTP Priority header:
it's a hop-to-hop property expressed in an end-to-end header.


One of the reasons for using WebTransport instead of HTTP/3 is that it
gives us a firm guarantee that streams share an underlying connection.
Additionally, QuicTransport used to guarantee that it was a dedicated
connection, although that went out the window when pooling "support" was
added.

We still run the risk of a generic WebTransport relay using round-robin,
but without adding priorities explicitly to WebTransport, I don't think
there's any way to avoid that.


On Thu, Feb 9, 2023, 8:36 AM Lucas Pardue <lucaspardue.24.7@gmail.com>
wrote:

> Hey Spencer,
>
> On Thu, 9 Feb 2023, 16:00 Spencer Dawkins at IETF, <
> spencerdawkins.ietf@gmail.com> wrote:
>
>> Lucas,
>>
>> On Wed, Feb 8, 2023 at 4:55 PM Lucas Pardue <lucaspardue.24.7@gmail.com>
>> wrote:
>>
>>>
>>>> And yeah, I agree that browsers are the main obstacles when pushing
>>>> media, but that doesn't change too much with WebTransport. We still need a
>>>> way to set the priority when pushing a WebTransport stream, much like we
>>>> would need a way to set the priority when issuing a HTTP PUT. I suppose
>>>> it's easier to modify WebTransport since it's in development.
>>>>
>>>
>>> The W3C WebTransport WG has been considering the questions of
>>> prioritization and congestion control feedback for a relatively long time.
>>> And we have been making progress. It has the right people and the right
>>> charter to work on it. I'm a little pessimistic about trying to get
>>> momentum for HTTP upload changes MoQ could require, in the sorts of
>>> timeframes that MoQ would find useful. For context, fetch *does *even
>>> support preference of HTTP version, nor exposese connection pooling. But
>>> maybe I'm too conservative in this regard. Asking ourselves the questions
>>> is definitely worthwhile.
>>>
>>
>> Could this have been "fetch *does NOT* even support preference of HTTP
>> version"?
>>
>> I was guessing so, but didn't want to guess when I could ask.
>>
>
> Yes you're right. Thanks for spotting that! I always appreciate a careful
> eye.
>
> At the HTTP semantic layer, the version doesn't really matter, your
> request or response objects get transferred around. The same scheme value
> "https" works for all versions. Under the hood there's lots of differences
> and complexity of course. The Fetch API feels about the right layer of
> abstraction for most purposes.
>
> My sense so far has been that QUIC  is providing unique qualities that the
> MoQ protocol (whatever it is) wants to harness. If that's true, HTTP/3 is a
> hard requirement of an HTTP-based MoQ protocol, then we'd have work to do
> in the web platform to ensure its abstractions don't get in the way.
> Likewise, implementation details like internal stacks, layering, security
> model etc would need to be considered. This isn't an impossible task but
> nor will it just happen without investment and engagement.
>
> Cheers
> Lucas
>