Re: [Webtransport] Choosing the Transport
virat tara <virattara@gmail.com> Thu, 23 July 2020 18:33 UTC
Return-Path: <virattara@gmail.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 523623A0D32 for <webtransport@ietfa.amsl.com>; Thu, 23 Jul 2020 11:33:47 -0700 (PDT)
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, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=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 PyuF5Uu_ZjN8 for <webtransport@ietfa.amsl.com>; Thu, 23 Jul 2020 11:33:44 -0700 (PDT)
Received: from mail-ua1-x92f.google.com (mail-ua1-x92f.google.com [IPv6:2607:f8b0:4864:20::92f]) (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 85B163A0D47 for <webtransport@ietf.org>; Thu, 23 Jul 2020 11:33:38 -0700 (PDT)
Received: by mail-ua1-x92f.google.com with SMTP id u6so2145400uau.8 for <webtransport@ietf.org>; Thu, 23 Jul 2020 11:33:38 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=dME7PemwXqrbP4ozpgqFWjol8zlkJ57ulF6wkzh4JbE=; b=JrD+p9itTJjBbSwu/HkkQgbtqJDqJ4hyMoyJzSp+gomsRlKLSuYfO//PuDJD9rca2V JY5vltngnqqEt90LPyVm6jh8R/0qyePoZnJ7P8K+ONCdx1NkAdpv3od3AzfdYTJbtZe2 UqpDPURR5YLwcLREA9bKix/T53WzkfszBsQkGrcfVZ5vLBym8uIrIQDOVjTAhVG6d9sf u964fW9Wf+uaU8JjLjokGHe7rPkzbbm7YFHyGv2jecussbHQnoM3L5k9ScAKh4yHDsZz uZjI+TCtAZwpdRi6jTNWUAaMzeAIXOom9/oOlH0HY7Vmaq6fT6w09lahoCF8ijCGjt2Z F1lQ==
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=dME7PemwXqrbP4ozpgqFWjol8zlkJ57ulF6wkzh4JbE=; b=nKb8TcuEt1q3BFk3WwGXwz6xPqE+XII75bu7u9z6JCu36uxM+ssevzhKjjZ991Rqgt JvP384njNe5UyJQtF4k7FFhizSRgRONymeKsKQkVWlYD+9ZFEjgW4UiBH9Dw1NLAQ/A8 Zyq4hzPNiCMaQjJP44fEnijbquig95Ud+BZZKUTWExHvJeBavIqo1IKftcM4SfGEIUn0 up24nvW1GHN3wOjHZwBksfYpjBBS0smERT5rmifOemMwhjn9/2DMdbK66lY7ac2w/nXv +hStwrqHZ9jhSS47GswLJYFxnxig3bGspo1kuAArFEul85ACXEi/M7NNyi0gm3/BTUBB YRgA==
X-Gm-Message-State: AOAM530O8oYADRh58HN/kHyJSbq3H3VIFdul7ZXpGMof/QlqwTG0bDVF rWXIk0h2SqXMtE2LsInw1WrInzhqSo9R4MCf9hc=
X-Google-Smtp-Source: ABdhPJwfSDU4g/hePuCJFYhxrHksustoZA23z/fwFSy3hi8HvzWyq4x+eEmma5IC8yaH260LfniLc6F0agAJPVzR4PU=
X-Received: by 2002:ab0:29cb:: with SMTP id i11mr5375826uaq.12.1595529217334; Thu, 23 Jul 2020 11:33:37 -0700 (PDT)
MIME-Version: 1.0
References: <CAAZdMafWeaZhCVbObPgvYm5gxZu6ksV5VkSoF=8Mx9OJBDA5rA@mail.gmail.com>
In-Reply-To: <CAAZdMafWeaZhCVbObPgvYm5gxZu6ksV5VkSoF=8Mx9OJBDA5rA@mail.gmail.com>
From: virat tara <virattara@gmail.com>
Date: Fri, 24 Jul 2020 00:03:20 +0530
Message-ID: <CAD7QVt=VdLKwTOyknGRFQV+5Yq-b6UxQcsVTvuLi83qFyktgDg@mail.gmail.com>
To: Victor Vasiliev <vasilvv=40google.com@dmarc.ietf.org>
Cc: WebTransport <webtransport@ietf.org>
Content-Type: multipart/alternative; boundary="0000000000003a610e05ab2018a8"
Archived-At: <https://mailarchive.ietf.org/arch/msg/webtransport/H90tZIUaKFj1g5T312pULLfZCio>
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: Thu, 23 Jul 2020 18:33:51 -0000
Hi, For an app that would use both regular HTTP calls and WebTransport, from the server's perspective, won't using HttpTransport instead of a dedicated connection like in QuicTransport help it to reduce the number of active connections/sockets per client? Thus allowing it to serve more distinct clients per server. Particularly for apps that make occasional HTTP calls and heavily rely on a full-duplex protocol for the rest of their working. On Thu, Jul 23, 2020 at 2:53 AM Victor Vasiliev <vasilvv= 40google.com@dmarc.ietf.org> wrote: > Hello everyone, > > We recently adopted the overview draft > <https://tools.ietf.org/html/draft-ietf-webtrans-overview-00> that > describes the general requirements for and the model of WebTransport. > However, we haven't yet adopted any specific wire protocol proposals. > There are currently three of those presented to the working group: > > - QuicTransport > <https://tools.ietf.org/html/draft-vvv-webtransport-quic-02> > - Http2Transport > <https://tools.ietf.org/html/draft-kinnear-webtransport-http2-01> > - Http3Transport > <https://tools.ietf.org/html/draft-vvv-webtransport-http3-02> > - [hypothetical WebTransport over WebSocket] > > Back when the original idea of WebTransport was forming, the hope was to > implement and ship all four of those, since they all fit different use > cases better. After talking more to the people at IETF, it sounds like > four transports is a bit too much, and we should settle on two (one over > QUIC, and one over TCP). The natural picks would be either Http3Transport > with Http2Transport as fallback (HttpTransport for short), or QuicTransport > with… *something* as a fallback. Let’s look at the differences between > those two options. > > *Differences* > > The most substantial wire format difference between those two proposals is > the handshake. QuicTransport originally did not have any handshake; we had > to add a bespoke handshake later in order to implement the Origin header, > and we also added a Path header later on. We currently don’t have any form > of response headers, so if the server is unhappy with the origin or path > received, it has to close the connection with CONNECTION_CLOSE.. In > HttpTransport, we have regular HTTP header fields for both request and > response, meaning that the server can do things like return a 4xx/5xx for > an error. > > During the connection itself, the difference is minimal: QuicTransport > uses streams and datagrams as-is, while Http3Transport prefixes everything > with an ID, since it is multiplexed with other HTTP traffic. There might > be a question of whether prefixing can impose undesirable framing overhead; > I think if that ever becomes a serious problem, we can come up with some > extension to work this around. > > If we decide that QuicTransport is a way to go, we’d have to add more > features into its handshake, since I suspect most people won’t be happy > with what’s in there right now (HTTP headers like Location or Forwarded > would be a good example of what people would end up needing in practice, > together with an ability to tag along arbitrary key-value metadata for > debugging purposes). If we decide that HttpTransport is a way to go, we > would have to ensure that the result is easy for Web developers to use, and > that we understand the differences between it and regular HTTP. > > From the server complexity standpoint, I am not particularly worried about > either. We’ve implemented QuicTransport in Chrome, and I wrote two servers > for it, in C++ and in Python; the Python one took about 100 lines of code. > Http2Transport has been implemented, in somewhat different forms, by both > Apple and Facebook, so we have practical experience with it too.. 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. > > There is a question of how much of the HTTP ecosystem we would be actually > getting by adopting HTTP. It is true that basing WebTransport on HTTP does > not mean HTTP middleware would automatically implement it. That said, we > do get a lot of useful features from HTTP, notably message routing and a > well-understood metadata format. Everyone knows what a code 200 or 404 is, > and a lot of people have built their internal debugging/tracing tools based > on adding HTTP headers to things, and being able to easily port those to > WebTransport would be an asset. I’ve seen some arguments that content > negotiation and caching might be applicable to certain classes of > WebTransport resources too (e.g. a live stream can be cached in the sense > that requesting a live stream is joining it), though those kinds of cases > would have to be content-specific and they do not generalize as nicely as > caching for regular HTTP resources. An interesting point to note is that > WebTransport is always included programmatically (as opposed to being > navigated to or sourced via URL from HTML), thus alleviating the need for a > lot of otherwise useful HTTP headers. > > *Questions* > > While on the surface the question here is “which drafts should we adopt?”, > I would like to break this question down into two layers: > > 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? > > > Regarding the first issue, I am increasingly leaning towards keeping only > the HTTP-based option. QuicTransport’s most appealing feature is its > simplicity; however, ever since we’ve had to add a header to communicate > the Web origin, there has been increasingly more and more reasons to add > new features to it, so even if we go that way, we’re probably going to end > up with something that’s a lot like HTTP. Also, we know exactly how to do > TCP fallback in this case, so this removes a lot of design problems from > consideration. Fixing complexity and other problems with HTTP is probably > more viable. > > Regarding the second issue, I am not sure how much of it is in scope for > this working group. While we do need to define a URL schema, and the > choice of schema will give us a lot of answer (by making WebTransport same > or different origin as HTTP), a lot of those questions have been > traditionally answered somewhere in Fetch spec, or simply not addressed in > the standards at all. I am not quite sure what to do with those. > > What do people think? > -- > Webtransport mailing list > Webtransport@ietf.org > https://www.ietf.org/mailman/listinfo/webtransport >
- [Webtransport] Choosing the Transport Victor Vasiliev
- Re: [Webtransport] Choosing the Transport Martin Thomson
- Re: [Webtransport] Choosing the Transport virat tara
- Re: [Webtransport] Choosing the Transport Bernard Aboba
- Re: [Webtransport] Choosing the Transport Ben Schwartz
- Re: [Webtransport] Choosing the Transport Martin Thomson
- Re: [Webtransport] Choosing the Transport Bernard Aboba
- Re: [Webtransport] Choosing the Transport Martin Thomson
- Re: [Webtransport] Choosing the Transport Victor Vasiliev
- Re: [Webtransport] Choosing the Transport Martin Thomson
- Re: [Webtransport] Choosing the Transport Victor Vasiliev
- Re: [Webtransport] Choosing the Transport Victor Vasiliev
- Re: [Webtransport] Choosing the Transport virat tara
- Re: [Webtransport] Choosing the Transport Bernard Aboba
- Re: [Webtransport] Choosing the Transport Bernard Aboba
- Re: [Webtransport] Choosing the Transport Yutaka Hirano
- Re: [Webtransport] Choosing the Transport virat tara
- Re: [Webtransport] Choosing the Transport Bernard Aboba