Re: [dispatch] Dispatching WebTransport

Peter Thatcher <pthatcher@google.com> Tue, 02 July 2019 00:14 UTC

Return-Path: <pthatcher@google.com>
X-Original-To: dispatch@ietfa.amsl.com
Delivered-To: dispatch@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 8AFC0120186 for <dispatch@ietfa.amsl.com>; Mon, 1 Jul 2019 17:14:09 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -17.499
X-Spam-Level:
X-Spam-Status: No, score=-17.499 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_MED=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, ENV_AND_HDR_SPF_MATCH=-0.5, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, USER_IN_DEF_DKIM_WL=-7.5, USER_IN_DEF_SPF_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=google.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id QGSbgAGaOh2G for <dispatch@ietfa.amsl.com>; Mon, 1 Jul 2019 17:14:05 -0700 (PDT)
Received: from mail-vs1-xe32.google.com (mail-vs1-xe32.google.com [IPv6:2607:f8b0:4864:20::e32]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 973CC1200CE for <dispatch@ietf.org>; Mon, 1 Jul 2019 17:14:05 -0700 (PDT)
Received: by mail-vs1-xe32.google.com with SMTP id a186so10075553vsd.7 for <dispatch@ietf.org>; Mon, 01 Jul 2019 17:14:05 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=056xF5+2LhgmNcKt5Xb1ZmNZYO372EFxR0eQJWSW0TY=; b=jrqKicc3ZlLZhrFIw051Br0g1MziPxlvNzUwCqEghYe0rkaWZ9KZHdo4xROxHIzSJ9 9A1aLji9HeHWKfNRcWtp3/y8uqvVSBGcgfTuYgpxEZY1iv08Sq6lT8PNgjV63qRRMIm3 UPGezmtOFjQ/snoZnNxo2yr3Z1fh/rLuuwK+6FlQbPTWiLPegzXhBoA2zkKtJL9dDHVm dwufmMTU4h+zVTNZrQ/FPjf2yINAcLy5Ebip4K1GpQJfE3FUi981BrE3hA63qRJPAs8I FQwILmHnCDEa0uXdpwNK35aCt8qp0YSbI0AKXFded97fi7kSGBMireLmnP8eL6JMIYaB HjWg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=056xF5+2LhgmNcKt5Xb1ZmNZYO372EFxR0eQJWSW0TY=; b=naLiwd3DazsGG8rAoeCScQtTpc+UIHLK5Kz+21YW3WGDpNsFZfBcNx87n5KztbKvBr Yzn/DGoU6004JCMK6QM+DQ5PaDSJ0Eh3w8pfdpI+ykQblTTWbuEPmw2DZa9QAnS1ETXZ 8KSPFuNY+2cy8ajqh51v0K6QR4hlOgR4wNy12sSJv3FdMfetDU741xVgR2PUQTKKKvWd Rb98SL9AE7SCVob6kJ1biCBZPbfABB14SVCPmjkOm9RPTaayeLTUy3JoHp4mUBfS0Wij E0rf2wiSrxvqHfoLKwR2PoxZLJhgh89gYpoB0NUm0TbdZsU9U560FR4tY9et6Mw9hNmK V2cA==
X-Gm-Message-State: APjAAAW+2LEQG6Tq0jYetEDnJOCkSutNsyv5flMV6HvGQn9blu71l9OJ ZvE4tRmDHZnsOL7HXUZxlKfFV2YMpVed0bfTxFeCZg==
X-Google-Smtp-Source: APXvYqzQg+ahiCqqlbHtYOiKuTENGMgmfT9D41ni/AJ/JDz2WfhBDI6YApKX43ey2Fhne9oWyie1iLgPrqVb8uwjhjg=
X-Received: by 2002:a67:d48b:: with SMTP id g11mr15927513vsj.63.1562026444124; Mon, 01 Jul 2019 17:14:04 -0700 (PDT)
MIME-Version: 1.0
References: <CAAZdMadKgUkAwnYQ7MmSR46qQZTh8+FF5BuKmc1r33SMyF91sQ@mail.gmail.com> <c2ceb9ab-b988-fe85-1ec9-400ebe9f96fe@gmail.com>
In-Reply-To: <c2ceb9ab-b988-fe85-1ec9-400ebe9f96fe@gmail.com>
From: Peter Thatcher <pthatcher@google.com>
Date: Mon, 01 Jul 2019 17:13:28 -0700
Message-ID: <CAJrXDUFuzMu1ZEnOqJ2dkBa6FxHnY58_mNeymK_oS5imNYsbfw@mail.gmail.com>
To: Sergio Garcia Murillo <sergio.garcia.murillo@gmail.com>
Cc: dispatch@ietf.org
Content-Type: multipart/alternative; boundary="0000000000005537c8058ca79f80"
Archived-At: <https://mailarchive.ietf.org/arch/msg/dispatch/toei7Ai30BB0gM8_A9naiykbrEs>
Subject: Re: [dispatch] Dispatching WebTransport
X-BeenThere: dispatch@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: DISPATCH Working Group Mail List <dispatch.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dispatch>, <mailto:dispatch-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/dispatch/>
List-Post: <mailto:dispatch@ietf.org>
List-Help: <mailto:dispatch-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dispatch>, <mailto:dispatch-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 02 Jul 2019 00:14:10 -0000

On Mon, Jun 17, 2019 at 7:52 AM Sergio Garcia Murillo <
sergio.garcia.murillo@gmail.com> wrote:

> From the draft:
>
>    WebTransport [OVERVIEW <https://tools.ietf.org/html/draft-vvv-webtransport-quic-00#ref-OVERVIEW>] is a protocol framework that enables clients
>    constrained by the Web security model to communicate with a remote
>    server using a secure multiplexed transport.
>
>
> Although while I agree with your analysis regarding current webrtc dc and
> sctp status, if this is a pure client-to-server transport, why is webrtc
> mentioned in the background at all? shouldn't this be a replacement of
> websockets and NOT of the webrtc datachannels?
>

It's both a better WebSocket and a better RTCDataChannel.  Take your pick
of how you look at it.


> Best regards
> Sergio
>
>
> On 17/06/2019 15:35, Victor Vasiliev wrote:
>
> Hello friendly IETF dispatchers,
>
> I am writing about new work I want to bring to IETF.  The proposal is
> called WebTransport.  It’s a combination of a Web API currently under
> development in W3C WICG [0], a protocol framework and some protocols that
> fit into that framework.  Combined, they would allow web applications to
> establish WebSocket-like connections that instead of ordered reliable
> messages use multiple streams and datagrams (datagrams are unreliable and
> streams do not have head-of-line blocking).  This is highly useful for
> real-time and other latency sensitive applications.
>
> # Background
>
> Historically, the only networking operations available to the Web
> applications were sending HTTP requests and receiving HTTP responses.  That
> model does not fit all applications well, so over time, more mechanisms
> were added.  The two most relevant here are WebSockets (RFC 6455) and RTC
> Data Channels (draft-ietf-rtcweb-data-channel).  WebSockets are a way for
> Web applications to do bidirectional communication over a TCP connection;
> they work great if TCP fits your transport needs, but perform poorly if
> your application is latency sensitive and would, in non-Web context, use a
> UDP-based protocol.  There are many different kinds of applications like
> that, but I would like to highlight two major categories which I to some
> extent surveyed when coming up with this proposal:
>
>    1. Custom client-server chat/multimedia protocols (faster-than-DASH
>    video streaming, game streaming, etc).  Those are usually developed by
>    teams with a good amount of resources, and they are interested in tailoring
>    the setup for their use case.
>    2. Game developers.  Online games are commonly real-time in nature and
>    benefit dramatically from ability to give up on transmitting old
>    information.  They usually use some in-house UDP-based protocol, and often
>    need to run on unusual platforms.
>
> WebRTC Data Channels are a mechanism that provides a WebSocket-like
> interface with unreliable delivery features.  On the wire, it’s
> SCTP-over-DTLS, established using ICE and SDP.  In theory, this provides
> users with enough functionality to build anything they need, since SCTP
> messages can be unreliable and unordered.  In practice, while
> RtcDataChannel is fairly straightforward to use for browser-to-browser
> peer-to-peer communication, it has seen much lower adoption than WebSockets
> in the client-server scenario, even considering the fact that its use cases
> is naturally more niche.
>
> The main reason for this is the incredible complexity of the WebRTC
> stack.  WebSockets are a fairly straightforward overlay on top of TCP and
> TLS; there is a wide variety of implementations out there, and it's
> fairly easy to write a new one (I wrote on myself in less than 1,000 lines
> of C++).  With data channels, however, once there is no browser to abstract
> all of the complexity away, the web developers are required to understand
> and implement (or at least integrate) SDP, ICE, STUN, DTLS and userspace
> SCTP.  While a lot of those have simplifications for this use case (ICE
> Lite) and some protocols listed have a variety of implementations widely
> available (DTLS), the entire system still requires going through hundreds
> of pages of RFCs in order to understand it well enough to implement.  This
> complexity barrier has precluded Data Channel adoption by communities of
> smaller developers who don’t have resources to implement them, notably game
> developers (see [1] and [2] for some discussion).
>
> Even among the people who got past the complexity barrier, the feedback I
> heard almost universally is that WebRTC Data Channels are hard to work
> with.  From the feedback I gathered, the main problem is usually around the
> transport protocol itself.  Userspace SCTP is essentially a monoculture:
> virtually all implementations use libusrsctp, a 80,000-line adaptation of
> FreeBSD SCTP implementation.  This lack of tool choice is fairly painful
> since latency-sensitive real-time applications often require quite a bit of
> tuning on the transport side to get the best performance (custom congestion
> control, etc).  In addition, the limitations on the message size stemming
> from both the API itself and the lack of widespread support for message
> interleaving (RFC 8260) means that the developers have to roll their own
> framing on top of SCTP messages if they want to avoid head-of-line-blocking
> (this is particularly bad because the framing overhead in data channels is
> already large as-is).
>
> In summary, we have a system that technically provides what everyone
> wants, but that nobody is happy with, and that is not usable by all but the
> most well-resourced users.
>
> # Proposal
>
> Our initial idea for fixing this was to take QUIC and do what WebSocket
> did to TCP: add security features that would make it safe to expose on the
> Web (by adding origin checks, etc), but otherwise expose it as-is.  This
> would get us out of libusrsctp monoculture (QUIC is not yet finished, but
> it already has a fairly diverse implementation ecosystem, see [3]), and
> remove all P2P-related complexity involving SDP and ICE.  The original
> proposal for that was called QuicTransport; we showed it to various people,
> and the feedback we got is that (1) the API should not be tied to a
> particular transport (since we already switched once from SCTP to QUIC,
> tying it to QUIC specificially would not be wise), and (2) it shouldn’t
> fail hard when QUIC is unavailable.
>
> As a result of that feedback, we abstracted it into a general-purpose
> framework called WebTransport.  The overview draft,
>
>   https://tools.ietf.org/html/draft-vvv-webtransport-overview-00
>
> describes the framework itself, mainly the requirements the transport
> protocols have to satisfy to be usable on the web through the API.  Within
> this framework, we propose the following protocols:
>
>    - QuicTransport -- a simple WebSocket-like adaptation of QUIC,
>    described in https://tools.ietf.org/html/draft-vvv-webtransport-quic-00
>    - Http3Transport -- a mechanism that allows creating custom non-HTTP
>    streams within an HTTP/3 session, described in
>    https://tools.ietf.org/html/draft-vvv-webtransport-http3-00.  This is
>    sort of a version of RFC 8441 for QuicTransport.
>    - FallbackTransport -- a TCP-based transport with multiplexed streams
>    that can be used when QUIC is not available (e.g. on network that require
>    CONNECT proxy).  We don’t have a draft specifically for this, and there are
>    at least two approaches we could take here: either reusing HTTP/2 as a
>    transport (i.e. just use draft-kinnear-httpbis-http2-transport), or
>    building a protocol with QUIC-like semantics on top of WebSockest.  The
>    earlier is a more straightforward way; the latter has the advantage of
>    being fully polyfillable in JavaScript.
>
>
> # Discussion
>
> At this point, I am fairly certain that there is a problem here that needs
> to be addressed.  I am formally requesting ART area to take this problem on.
>
> I believe the drafts above would be a good starting point for discussion.
> The design that they describe went through several iterations based on the
> feedback I got when I discussed this work within a more narrow audience
> (mostly people in QUIC working group), so we’re hopefully at least looking
> in the right direction here.  I am requesting feedback on this proposal,
> both on the overall plan and the specifics described in the drafts.  I hope
> to discuss this in depth in Montreal, both at dispatch and (in more depth)
> at a side-meeting.
>
> Thanks,
>   Victor.
>
> [0] https://github.com/WICG/web-transport
> [1] https://discourse.wicg.io/t/webtransport-proposal/3508/9
> [2] https://news.ycombinator.com/item?id=13266692
> [3] https://github.com/quicwg/base-drafts/wiki/Implementations
>
> _______________________________________________
> dispatch mailing listdispatch@ietf.orghttps://www.ietf.org/mailman/listinfo/dispatch
>
>
> _______________________________________________
> dispatch mailing list
> dispatch@ietf.org
> https://www.ietf.org/mailman/listinfo/dispatch
>