Re: [dispatch] Dispatching WebTransport

Sergio Garcia Murillo <sergio.garcia.murillo@gmail.com> Mon, 17 June 2019 14:52 UTC

Return-Path: <sergio.garcia.murillo@gmail.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 529A51200C5 for <dispatch@ietfa.amsl.com>; Mon, 17 Jun 2019 07:52:46 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.998
X-Spam-Level:
X-Spam-Status: No, score=-1.998 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, 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 ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Q-GcvHp8_8v6 for <dispatch@ietfa.amsl.com>; Mon, 17 Jun 2019 07:52:42 -0700 (PDT)
Received: from mail-ed1-x536.google.com (mail-ed1-x536.google.com [IPv6:2a00:1450:4864:20::536]) (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 42205120114 for <dispatch@ietf.org>; Mon, 17 Jun 2019 07:52:42 -0700 (PDT)
Received: by mail-ed1-x536.google.com with SMTP id s49so16622137edb.1 for <dispatch@ietf.org>; Mon, 17 Jun 2019 07:52:42 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-language; bh=Szat7g1wAygEXtkPl1Sb69v9mNalVQ6pGtXvkY4mt0o=; b=hFxwsGtyKudNP23WSHoBtto/PoKtLZ+hvTsgSQFJcU6IyJnqzd/rTBnVeGW3FyA4gl fUtty7hDEqg40jFL5uAz1Mchsf2lkYPszSa+iRhPQlgZUC4786bXobdKXKysPr3zKWnp 9OPfMwze1/rQGFbkCfTthI5FM9Xuex578i2wKQbArUA4QPYuUwxm9VwOS7335bCICQxL WmICCYSYKnzFDYfBmFnUXr60m4Ic/qcVexgGscHvvandJq6MopNTzzBEnO92byOFbQQS 7BsSc1jn03pxku3SRkrV8Ix/vY3lhL7RdmidoQ+B+9oAmSUjE2tAB9KggdNYRIfA1zlE tRpg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language; bh=Szat7g1wAygEXtkPl1Sb69v9mNalVQ6pGtXvkY4mt0o=; b=JdgmknIefeG3K1A2hxH9MZOxzdipY1ZWPKcy1X3vogb7KmvD3L+9pGfHPcJLKRN4yr u87IglsfcFOldGyJvwTEpFRSX6/A6fwqrpefXtXjINukv2n5bFg0c4qV6tfsPxSG6TP6 QDHDstv5xGy8yMN33Q5Fu26hdgXu8Q7UaxfAFQw3utKBF3T0WzDRM/gTrh1O4lcDkX2E dCrLNMBhLWiIkSFU6+md1U4cPLRYWEEwpKzfBZKdu2uWAyCCdIlpU3fedbRCMfuG/uMc W/iIEsr0TWdvRjXlxpsx7l3jeocmaGzoUZ2hqxybqpTs523jfROC0K5zLUsFQheFffmG tWPA==
X-Gm-Message-State: APjAAAW2jsGyjmTSsYlV5jAt53erj8qUjKoSACjn4OfJqYd9MbT3iJGA zSDQRGc8Xj/rgXpEqS+IXFaNWpxTXWU=
X-Google-Smtp-Source: APXvYqyVqCtUj0uIREjNLnJRAx+mRpfbMVYdspTYjvncbLhol+H15X5J39y85pM4BdZ2a0bJCexzjQ==
X-Received: by 2002:a17:906:b7d8:: with SMTP id fy24mr29804233ejb.230.1560783160545; Mon, 17 Jun 2019 07:52:40 -0700 (PDT)
Received: from [10.255.3.20] (82.red-80-38-205.staticip.rima-tde.net. [80.38.205.82]) by smtp.googlemail.com with ESMTPSA id m31sm3857686edd.42.2019.06.17.07.52.39 for <dispatch@ietf.org> (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 17 Jun 2019 07:52:39 -0700 (PDT)
To: dispatch@ietf.org
References: <CAAZdMadKgUkAwnYQ7MmSR46qQZTh8+FF5BuKmc1r33SMyF91sQ@mail.gmail.com>
From: Sergio Garcia Murillo <sergio.garcia.murillo@gmail.com>
Message-ID: <c2ceb9ab-b988-fe85-1ec9-400ebe9f96fe@gmail.com>
Date: Mon, 17 Jun 2019 16:52:38 +0200
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.7.1
MIME-Version: 1.0
In-Reply-To: <CAAZdMadKgUkAwnYQ7MmSR46qQZTh8+FF5BuKmc1r33SMyF91sQ@mail.gmail.com>
Content-Type: multipart/alternative; boundary="------------D20E38983A6B742CA3BEA8F3"
Content-Language: en-US
Archived-At: <https://mailarchive.ietf.org/arch/msg/dispatch/MctQmua_hd0JBDF0JWBOvnchoHA>
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: Mon, 17 Jun 2019 14:52:47 -0000

 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?

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 list
> dispatch@ietf.org
> https://www.ietf.org/mailman/listinfo/dispatch