[Webtransport] Re: WebTransport over WebSocket

Marten Richter <marten.richter@tu-berlin.de> Sat, 06 September 2025 04:59 UTC

Return-Path: <marten.richter@tu-berlin.de>
X-Original-To: webtransport@mail2.ietf.org
Delivered-To: webtransport@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id 2658D5E637EF for <webtransport@mail2.ietf.org>; Fri, 5 Sep 2025 21:59:25 -0700 (PDT)
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -1.895
X-Spam-Level:
X-Spam-Status: No, score=-1.895 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, FONT_INVIS_MSGID=2.499, HTML_FONT_LOW_CONTRAST=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=unavailable autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (1024-bit key) header.d=tu-berlin.de
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 9v_S8Z9D07Zm for <webtransport@mail2.ietf.org>; Fri, 5 Sep 2025 21:59:23 -0700 (PDT)
Received: from mailrelay.tu-berlin.de (mailrelay.tu-berlin.de [130.149.7.70]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id C032C5E637DF for <webtransport@ietf.org>; Fri, 5 Sep 2025 21:59:22 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tu-berlin.de; l=12269; s=dkim-tub; t=1757134762; h=message-id:date:mime-version:subject:to:cc:references: from:in-reply-to; bh=midLOXxvA7kJE+hHYAp6A7on6gBq/qp9h2c2QsU0EPA=; b=UPd+tIQGJSF6ORPc2wOe6NpnEbJge45//CG74EBsusrOuoB0NnjPPa8l sApoXsJcSfU4OV9TujzxLapuv1mVKn5J0B65TipVA7pUkDB5l4lbV/iV2 i03SNzkyXZHTgiFETQBJBNEbenNJnMwUBEjieSb9qgi7tc0ohRpmLgBh8 4=;
X-CSE-ConnectionGUID: DH1FIl2uRp24+ijO88+o+g==
X-CSE-MsgGUID: 4YJAaFeiRB2kiR5YB2IepA==
X-IronPort-AV: E=Sophos;i="6.18,243,1751234400"; d="scan'208,217";a="34090323"
Received: from bulkmail.tu-berlin.de (HELO mail.tu-berlin.de) ([141.23.12.143]) by mailrelay.tu-berlin.de with ESMTP; 06 Sep 2025 06:59:15 +0200
Content-Type: multipart/alternative; boundary="------------dEvgwqOEiDh2WH8Tjr00Quk9"
Message-ID: <f72e0f53-bdf9-4fcd-b146-9af327d9d4d8@tu-berlin.de>
Date: Sat, 06 Sep 2025 06:58:58 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
To: Alan Frindell <afrind=40meta.com@dmarc.ietf.org>, Luke Curley <kixelated@gmail.com>, WebTransport <webtransport@ietf.org>
References: <CAHVo=ZkmNFer69h3yTcuzQOncsGtSYA3zwoaeZKR-WLbCMXa_Q@mail.gmail.com> <BBD06114-72E3-4680-AFF8-E8EB315B4FDE@fb.com>
Content-Language: en-US
From: Marten Richter <marten.richter@tu-berlin.de>
Organization: Technische Universität Berlin
In-Reply-To: <BBD06114-72E3-4680-AFF8-E8EB315B4FDE@fb.com>
Message-ID-Hash: QIZA5FANN3KDVXTQ5QJR3WJVN2WDUCJG
X-Message-ID-Hash: QIZA5FANN3KDVXTQ5QJR3WJVN2WDUCJG
X-MailFrom: marten.richter@tu-berlin.de
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: "kazuhooku@gmail.com" <kazuhooku@gmail.com>
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [Webtransport] Re: WebTransport over WebSocket
List-Id: WebTransport WG <webtransport.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/Zl4jfB3NRjQccFo1_GSCVS4yKLo>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Owner: <mailto:webtransport-owner@ietf.org>
List-Post: <mailto:webtransport@ietf.org>
List-Subscribe: <mailto:webtransport-join@ietf.org>
List-Unsubscribe: <mailto:webtransport-leave@ietf.org>

Hi,

I have written a WebTransport over WebSocket draft some time ago:

draft-richter-webtransport-websocket-03 - WebTransport over WebSocket
<https://datatracker.ietf.org/doc/draft-richter-webtransport-websocket/>but 
so far no response.

including a polyfill:
fails-components/webtransport: Http/3 webtransport support for node 
<https://github.com/fails-components/webtransport>

It is basically http/2 capsule translated to a Websocket frame, 
including support for backpressure and most capsules. (And also 
partially sending of websocket frames).
(Only problem is that my current implementation has swapped ids, which I 
intend to fix:
The logic in stream ID direction detection seems wrong · Issue #381 · 
fails-components/webtransport 
<https://github.com/fails-components/webtransport/issues/381>
if the Mozilla devs have finished finding other bugs in my http/2 
implementation).

Code of the parser is here.
webtransport/main/lib/http2/node/websocketparser.js at master · 
fails-components/webtransport 
<https://github.com/fails-components/webtransport/blob/master/main/lib/http2/node/websocketparser.js>

Marten

Am 06.09.2025 um 01:48 schrieb Alan Frindell:
>
> CC: QMux enthusiast Kazuho
>
> Hi Luke, thanks for sharing this work.  On the one hand, I want to 
> help the world move from on from WebSockets to WebTransport.  On the 
> other hand, I see your practical problem, and I want to help the world 
> access MoQ too.
>
> I think QMux, whenever it comes to fruition, should be directly 
> runnable on top of WebSockets, so I don’t think a separate draft is 
> needed.  There’s ongoing discussion of what the shape of QMux will be, 
> but “Just send WebTransport capsules” is one possibility.
>
> -Alan
>
> *From: *Luke Curley <kixelated@gmail.com>
> *Date: *Friday, September 5, 2025 at 3:02 PM
> *To: *WebTransport <webtransport@ietf.org>
> *Subject: *[Webtransport] WebTransport over WebSocket
>
> Hey WebTransport, As some of you might know, I've been working 
> full-time on a MoQ startup/app (hang. live). I finally got around to 
> the elephant in the room: Safari support.   And not just Safari, but a 
> TCP fallback in general. Some networks
>
> Hey WebTransport,
>
> As some of you might know, I've been working full-time on a MoQ 
> startup/app (hang.live). I finally got around to the elephant in the 
> room: Safari support.
>
> And not just Safari, but a TCP fallback in general. Some networks 
> block QUIC/UDP and there are many platforms that don't support 
> WebTransport yet (ex. Cloudflare Workers).
>
> My solution is more-or-less QMux over WebSocket. It works today and 
> supports any existing WebSocket service/library. It's also open source 
> <https://github.com/kixelated/web-transport/tree/main/web-transport-ws> 
> and available in both Rust and Typescript. I've also got a Typescript 
> client that performs Happy Eyeballs 
> <https://github.com/kixelated/moq/blob/f10f854e5c9cedf889c434e3e898eff0d10f10ca/js/moq/src/connection.ts#L51>.
>
> I know this is the intended purpose of WebTransport over HTTP/2. 
> However, adoption feels like an uphill battle as every client/server 
> needs to explicitly support it at the HTTP layer. I think a TCP 
> fallback needs to have widespread adoption, and layering on top of 
> WebSockets accomplishes that.
>
> I was wondering if anybody would be interested in writing a draft, 
> especially anybody involved in QMux. Or just send WebTransport 
> capsules over WebSocket; that would work too.
>
>
-- 
------------------------------------------------------------
Dr. Marten Richter
Institut für Theoretische Physik
Technische Universität Berlin
Hardenbergstr. 36 Sekr. EW 7-1
D-10623 Berlin
Germany
------------------------------------------------------------
email:marten.richter@tu-berlin.de
Tel: +49-30-314-24858 (office)
Fax: +49-30-314-21130
http://www.tu.berlin/agknorr/

------------------------------------------------------------