Re: [Webtransport] Choosing the Transport

Victor Vasiliev <vasilvv@google.com> Fri, 24 July 2020 05:04 UTC

Return-Path: <vasilvv@google.com>
X-Original-To: webtransport@ietfa.amsl.com
Delivered-To: webtransport@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 4552B3A0BAC for <webtransport@ietfa.amsl.com>; Thu, 23 Jul 2020 22:04:22 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -17.599
X-Spam-Level:
X-Spam-Status: No, score=-17.599 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, DKIM_VALID_EF=-0.1, ENV_AND_HDR_SPF_MATCH=-0.5, HTML_MESSAGE=0.001, 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 xu8IW9JM3Qn7 for <webtransport@ietfa.amsl.com>; Thu, 23 Jul 2020 22:04:20 -0700 (PDT)
Received: from mail-lj1-x229.google.com (mail-lj1-x229.google.com [IPv6:2a00:1450:4864:20::229]) (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 314273A0BAB for <webtransport@ietf.org>; Thu, 23 Jul 2020 22:04:20 -0700 (PDT)
Received: by mail-lj1-x229.google.com with SMTP id q6so8670096ljp.4 for <webtransport@ietf.org>; Thu, 23 Jul 2020 22:04:19 -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=ILMeiJLuBmTB1VmTjkxwvrY+5pTxuFJbTdHbphPrxTk=; b=R7MpIDSj76I1455TjavXiVEBGUc4HPJpxcHW7N75oAMjdvrJNyrPyghiDanlcPhVYk z6QHWbvJCT8i/+SJsIV9W9bzdfLOO1R9C5+dkW6sf4/ewb6jS6eaZFEm0+By5jWmFA8L noqKZ2KbQv3tznv0aq+NXA28n89LaERVLRKeBxMjTMVVX5H96/Zj9gvbOlpr5M2Iq5G8 Ym3xk4ONG0bXUJdbOoWFzbZD5hLikySdC4U3aaeZYGw+FPXhYNtUnYsbC9ksZQxZNyvM 4RTtM32or4zN3T8C1clCBx0BGkmXNdPSnzOynrcPISPvUHDlaPrePHMdWah0n3ZVZp9t RClg==
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=ILMeiJLuBmTB1VmTjkxwvrY+5pTxuFJbTdHbphPrxTk=; b=kwl04MoFkESk4y5Q5EcAQa1VXcAwHNHmIB93/j1cGAIQ26OwgZ8zrGjQb84zCymKNK 7c+aGY2OV2giSSW0shNl/qr+VT0dxEQ82ZEvjPdI0BWcVwmMAlZ8TQrBCWYMd0zvZnmJ KyFwu+qO7ynfr2CxDDiB+bS7gazb7Mr6y0jKGsQvir69240+iC0oEJ+tZRtllY6YHMD+ 3zRHC3vqYdcSjK/RZU7vN1g0GdoTZmRMoCVcVxltiKnJ14IX6foffIGbTntlRerkJb1w ngqvLbeWOhqbZ/0v5JMZI4ANDfhSSfhl8+fxN/7JMroDHsWGEMMjmm47jA0ZUbFl6m+5 4KvQ==
X-Gm-Message-State: AOAM531jvNQ3BLtwA1z4NFXrIycbfZcxyYyBJA1+icG0rHIV8ST5NQ5u +5aDVb8O0/Xhp+AGJZwz+EeFl8rMARMJD/T8N1fYTzkdacQ=
X-Google-Smtp-Source: ABdhPJwdsnhdg9BqZ0kxn0jyV7MH5mc+YI3Z7u6MxlFieIecqsMegOFMciwBOKgUtaZQvtfyv2JCAJjs0lmDAt+DRV4=
X-Received: by 2002:a2e:99c6:: with SMTP id l6mr3795596ljj.220.1595567057739; Thu, 23 Jul 2020 22:04:17 -0700 (PDT)
MIME-Version: 1.0
References: <CAAZdMafWeaZhCVbObPgvYm5gxZu6ksV5VkSoF=8Mx9OJBDA5rA@mail.gmail.com> <3c3dd70a-a2f4-42f2-95c3-913c3afe3fb7@www.fastmail.com>
In-Reply-To: <3c3dd70a-a2f4-42f2-95c3-913c3afe3fb7@www.fastmail.com>
From: Victor Vasiliev <vasilvv@google.com>
Date: Fri, 24 Jul 2020 01:04:06 -0400
Message-ID: <CAAZdMacQotXtab-5hso4jRadjnghz8zve3uOtvwO9KjebRq3FA@mail.gmail.com>
To: Martin Thomson <mt@lowentropy.net>
Cc: WebTransport <webtransport@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000b1849805ab28e745"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/UYdZNmIeS3ug-eJjVEhg-BqEuKw>
Subject: Re: [Webtransport] Choosing the Transport
X-BeenThere: webtransport@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <webtransport.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webtransport>, <mailto:webtransport-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webtransport/>
List-Post: <mailto:webtransport@ietf.org>
List-Help: <mailto:webtransport-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webtransport>, <mailto:webtransport-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 24 Jul 2020 05:04:22 -0000

On Thu, Jul 23, 2020 at 1:57 AM Martin Thomson <mt@lowentropy.net> wrote:

> Thanks for the summary Victor, that really helps frame things.
>
> There are other differences, I think, so it would be good to make sure
> that we've captured all the relevant ones before making a call.  And
> understanding all the implications of each is important.
>
> The one that comes to mind is the way that fallbacks work.  In HTTP, you
> can imagine leaning heavily on the HTTP mechanisms for QUIC upgrade (or TCP
> fallback), like Alt-Svc and so forth.  The questions raised regarding
> non-uniform support for features are relevant here, so this isn't
> completely free.  In another scheme, you can code the fallback directly,
> even to the point of having it in the API:
> connect(quicTransport=quic-transport://..., webSocketTransport=wss://...).
> In other words, a clean slate means that you have to build the features you
> want, but you don't necessarily have to deal with the baggage you might not.
>

What exactly do you mean by "non-uniform support for features"?

It's true that HttpTransport in its default state basically has to defer
the protocol choice to the browser, since the JavaScript code has no
visibility into the state of the socket pool.  I'll note, however, that
this is not an inherent property of the HTTP wire protocol itself, but
rather just the natural way we would treat this kind of URL by default
(which is why I split the two questions below the way I did).  You can
imagine adding extra options to connect() that would change this as needed.


>
> I haven't formed an opinion on this yet.  I have a few concerns/wrinkles
> to add below though.
>
> On Thu, Jul 23, 2020, at 07:23, Victor Vasiliev wrote:
> > I was previously concerned that having to
> > implement HPACK/QPACK would be a burden to the Web developers since
> > those are more complex than what you’d typically find in a WebSocket
> > implementation, but now that we have a draft to turn compression off
> > <https://tools.ietf.org/html/draft-vvv-httpbis-alps-00>, I’m less
> > worried about this.
>
> I think that suggests some additional complexities.  You have to implement
> all of that stack, and trust that browsers do so as well.  As we have
> learned, sourcing a new capability like this isn't necessarily free.  And
> this seems at least on-par with ALPN in terms of operational costs for
> server deployments.  Maybe it is less of a concern as webtransport
> endpoints are the only ones that need upgrading, but I don't see this as an
> easy solution.
>

That's true, though any HTTP extension of this kind would to some extent
rely on ALPS (or some other form of half-RTT settings), since otherwise you
have to pay a round-trip penalty by waiting for an indication that the
server actually supports ALPS.  Overall, I think that between this,
Accept-CH reliability draft, and other extensions, we would have to solve
the SETTINGS latency problem sooner or later anyways.


>
> > While on the surface the question here is “which drafts should we
> > adopt?”, I would like to break this question down into two layers:
>
> I think that there is question zero: do we need to pick one set, or do we
> need to build all four protocols?
>
> We have not seen sufficient justification for building four protocols
> rather than two, so I'm firmly in the "do less work camp" on this.
>

I don't believe I've seen any enthusiasm for four protocols so far, which
is why I posed the first question as a binary choice.  Fortunately, even if
more interest becomes apparent down the road, WebTransport is
currently structured in a way that we can always add more.


>
> >  1. Do we want to use the wire format in which we try to build
> > minimally on top of QUIC (QuicTransport), or do we base it on HTTP?
> >  2. To what extent WebTransport connections act like HTTP connections?
> > Do they have https URLs or a dedicated schema?  Which HTTP headers do
> > and don’t work?
>
> I think that the answer to the second depends on the first.  As much as
> possible I would prefer NOT to mint new URI schemes, but that is much
> harder if you define a completely new protocol.  I think that an important
> question to resolve before this (1.5?) is how these connections integrate
> into the origin model.


I think the "origin model" question is automatically answered by the URI
scheme, since that would tell us if WebTransport can be, in principle,
same-origin to a Web page.