Re: Updated DATAGRAM -03 draft

Bjorn Mellem <mellem@google.com> Wed, 17 July 2019 19:51 UTC

Return-Path: <mellem@google.com>
X-Original-To: quic@ietfa.amsl.com
Delivered-To: quic@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 993841204A7 for <quic@ietfa.amsl.com>; Wed, 17 Jul 2019 12:51:51 -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 vSYtpkwr53bJ for <quic@ietfa.amsl.com>; Wed, 17 Jul 2019 12:51:47 -0700 (PDT)
Received: from mail-lj1-x231.google.com (mail-lj1-x231.google.com [IPv6:2a00:1450:4864:20::231]) (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 DDE271205E7 for <quic@ietf.org>; Wed, 17 Jul 2019 12:51:46 -0700 (PDT)
Received: by mail-lj1-x231.google.com with SMTP id v24so24888154ljg.13 for <quic@ietf.org>; Wed, 17 Jul 2019 12:51:46 -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=Bemjp/PEODicnFuyWyDweyEc+FEI3cl5S257kXLK+Qw=; b=kK25Kql+ZNSJc1iBg5WBh98/yy8avkd9HsgaBiPD+dPxMa8Oligw9AI0nP7iHsyLbu kAau/R0/+qXBx0sEh/FPaC22JJgKIFsyN3eZUY+PwToTYW8VQtyo+UUCp5j8nps3fRQ6 5qK4JTcPOCx7m0IW/IyR2dQGYmEZnHHzCtDFxZeHooHEQ2aZUQ9qJ5pKmS2fi/GPn+8W tq49g/B+CZfaFZ91XjUXpYIQyeYvI7SRCoxqrIyEWDFUgKB9aCmJNVFEICM2uRSd1TXD M7AUCni1gLEYl8Pjd0YzqQh42INt0mwHgEV3lo4oGOxVM0azL1/B1NaBKvQtZArFwFWw cTaA==
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=Bemjp/PEODicnFuyWyDweyEc+FEI3cl5S257kXLK+Qw=; b=gbPrOfy4qY1upmeND66OotGYBCDkO/USHsRW3TL2CrUcSHck0B4tcNvlZ6v+FZeufk unX6Mn7sVUo8yEBfmFbQ0utIeNsCnkc2wPRakdyqqjoMhK4IMFCsq+Kg79aFrglUcU3d 4UFJi4KQmVLF3/0rxpHiLn/ka7JgENv9HegFUbAWxK6UAqIKH71r4kxmg/cROJljCqBr n1XeDSn6HDCOvm+b0ZjIZtHURKMNUAOQjEeJBqvzCCtsuaUwe59fgvHnModxiC/5hXbB SI7C3EO9tUXGYqIA+m2HrCmZ5vFx+bAVCKNMI7x47ROjuGvBjeFOIgkGRzBrGApmRhe+ U5Ig==
X-Gm-Message-State: APjAAAV9HBB5bttaKJ3WOTxfxf83M520iuhXe0bLEwOuwkdlhUPhruOm RbDTPbqWDTS+9l4HAvYn+ogpzEihTKu9rVS/6YQbDw==
X-Google-Smtp-Source: APXvYqwQ8m0bKng4gvXOyMvMh48kAZVxb2Fp7ik6o9pZL9FYNmWbV5lk7pqfWsE7s2nTylCwTMWpMOBpco5wE8ZpPgA=
X-Received: by 2002:a2e:6348:: with SMTP id x69mr22139811ljb.186.1563393104609; Wed, 17 Jul 2019 12:51:44 -0700 (PDT)
MIME-Version: 1.0
References: <CY4PR15MB1542BBF479C310E861C733F0CDCF0@CY4PR15MB1542.namprd15.prod.outlook.com> <2F2121D0-503B-48CF-99E1-A9CE9192FF87@apple.com> <HE1PR07MB44257B24563DC9EBC93335EBC2C90@HE1PR07MB4425.eurprd07.prod.outlook.com>
In-Reply-To: <HE1PR07MB44257B24563DC9EBC93335EBC2C90@HE1PR07MB4425.eurprd07.prod.outlook.com>
From: Bjorn Mellem <mellem@google.com>
Date: Wed, 17 Jul 2019 12:51:32 -0700
Message-ID: <CACcUHGPymb2p5nOoX8Pm+5QB08TYa=7VhO9r0vPOg92pYsZpEg@mail.gmail.com>
Subject: Re: Updated DATAGRAM -03 draft
To: Ingemar Johansson S <ingemar.s.johansson@ericsson.com>
Cc: Tommy Pauly <tpauly@apple.com>, Roberto Peon <fenix@fb.com>, Robin MARX <robin.marx@uhasselt.be>, Mikkel Fahnøe Jørgensen <mikkelfj@gmail.com>, QUIC WG <quic@ietf.org>, Christian Huitema <huitema@huitema.net>
Content-Type: multipart/alternative; boundary="000000000000a54cc1058de5d259"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/UAQBYkVjHKM57XJbTjYRt66ed3Y>
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Main mailing list of the IETF QUIC working group <quic.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic>, <mailto:quic-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic/>
List-Post: <mailto:quic@ietf.org>
List-Help: <mailto:quic-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic>, <mailto:quic-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 17 Jul 2019 19:51:57 -0000

In Google's work on WebRTC-over-QUIC, we've generally used the GCC (Google
Congestion Control) scheme described in this draft:
https://tools.ietf.org/html/draft-ietf-rmcat-gcc-02.

We're moving toward an approach that essentially tunnels media over a QUIC
datagram flow.  In doing this, I've made a couple of observations about
congestion-controlled datagrams:

 1. In cases where we control the QUIC implementation, it's simple enough
to make it use GCC.  However, we'd like to be able to use it through
interfaces like WebTransport (https://github.com/WICG/web-transport,
https://tools.ietf.org/html/draft-vvv-webtransport-overview-00), where we
do not control the QUIC transport directly.  (This could probably be solved
with appropriate APIs for configuring WebTransport's congestion control.)

 2. GCC is work-in-progress.  There are fairly regular changes aimed at
improving its performance in various edge cases.  In order to deploy
changes we either need an extremely broad API or control of the transport.

While this might seem like an API problem, among the proposed solutions is
"don't congestion control datagrams (let the application do that) and
implement a circuit-breaker instead".  That would obviously require that
the transport does not congestion control datagrams, either.

There are other possibilities that might work for real-time media, such as
exposing timing information and allowing an application to set a *lower*
rate if it wants to preserve latency.  But what about tunneling other
protocols over QUIC datagrams?  Do we expect those to work within QUIC's
congestion control?  Disable the upper-layer protocol's congestion
control?  Or hook the two together in some cooperative manner?

Bjorn

On Tue, Jul 16, 2019 at 11:31 PM Ingemar Johansson S <
ingemar.s.johansson@ericsson.com> wrote:

> +1.
>
> In the general non-QoS scenario it is to prefer that the streams share one
> connection and thus one congestion control.
>
>
>
> My experiments with SCReAM (RFC8298) shows that this can be made to work
> quite well on RTP streams, an implementation of this is found at
> https://github.com/EricssonResearch/scream. It is however not
> straightforward to get perfect prioritization such as 70% of the bandwidth
> goes to stream A and 30% to stream B when it comes to real-time low latency
> media. The key reason is that the low latency goal means that there are
> often no packets to schedule as extra delay due to queueing in the sender
> should be avoided, variations on source rates from video encoder makes it
> more challenging.
>
> In comparison, “Infinite” bitrate sources such as file transfers are much
> easier to work with as they provide data ready to schedule for transmission
> on the sender side until the file transfer is done.
>
> In the SCReAM case I have so far managed to get something like ball-park
> weighted fairness, fig 7 in
> https://www.hindawi.com/journals/wcmc/2018/3142496/ shows how it works in
> a real test scenario over a LTE access.
>
>
>
> I mentioned non-QoS scenarios. In scenarios where an underlying network
> supports QoS (such as 4G/5G), then it can be beneficial to use two or more
> connections, which are then scheduled over different bearers.
>
>
>
> /Ingemar
>
>
>
> *From:* Tommy Pauly <tpauly@apple.com>
> *Sent:* den 16 juli 2019 14:47
> *To:* Roberto Peon <fenix@fb.com>
> *Cc:* Mikkel Fahnøe Jørgensen <mikkelfj@gmail.com>; QUIC WG <quic@ietf.org>;
> Christian Huitema <huitema@huitema.net>; Robin MARX <
> robin.marx@uhasselt.be>
> *Subject:* Re: Updated DATAGRAM -03 draft
>
>
>
> I definitely agree that sharing one connection, where the frames are all
> subject to a shared congestion control, will provide the most control and
> the best results.
>
>
>
> What it does bring up, however, is the need for text regarding
> prioritization in the document, similar to the “Stream Prioritization”
> section in the main transport document. The application should be able to
> indicate to the quic implementation the relative priority of a flow of
> datagrams with regards to other streams and other flows, thus indicating
> how to schedule frames when congestion control opens up. This is also a way
> in which having a flow identifier known at the transport can be useful
> (although this identifier could be used strictly locally to get a similar
> effect).
>
>
>
> Thanks,
>
> Tommy
>
>
>
> On Jul 15, 2019, at 6:23 PM, Roberto Peon <fenix@fb.com> wrote:
>
> 
>
> Using two connections would be unfortunate-- this will almost always
> guarantee worse results than even the most simple proportional
> prioritization or fair-share scheduling because you can cause self
> contention and dilute your measurement accuracy.
>
> -=R
> ------------------------------
>
> *From:* QUIC <quic-bounces@ietf.org> on behalf of Mikkel Fahnøe Jørgensen
> <mikkelfj@gmail.com>
> *Sent:* Monday, July 15, 2019 12:12:09 PM
> *To:* QUIC WG; Christian Huitema; Robin MARX
> *Cc:* Tommy Pauly
> *Subject:* Re: Updated DATAGRAM -03 draft
>
>
>
> You could also carry two connections, one for video and one for game
> status updates.
>
>
>
> I’m wondering if there is, or should be, a way to accomplish this on a
> single connection.
>
> I asked something similar a long time ago and I don’t think there is any
> amition for managing bandwidth in this for on a single connection, at least
> for QUIC v1.
>
>
>
>
>
> On 15 July 2019 at 21.04.58, Christian Huitema (huitema@huitema.net)
> wrote:
>
>
> On 7/15/2019 3:03 AM, Robin MARX wrote:
> > Hello Tommy,
> >
> > Good to see the updated draft.
> > I do wonder about the decision to enforce congestion control for
> > DATAGRAM frames and the effect this will have on the gaming use case.
> > As also discussed in Prague, real-time gaming often requires a set
> > update rate frequency (e.g., 30-60 messages per second) for
> > responsiveness.
> > I wonder if congestion controlling the frames (e.g., delaying/dropping
> > them) will produce some weird edge cases that really mess with this
> > setup.
> > It's a bit difficult to assess because the messages are usually
> > relatively small (though they could be mixed with larger messages,
> > e.g., RPCs) and you could make the argument that, if there is actual
> > congestion, the packets will be dropped in the network either way.
> > You could also say that custom game-focused implementations will just
> > ignore the text and do their own logic as needed.
> >
> > So I'm not sure the text needs changes, I just wanted to mention that
> > it might not be optimal for the real-time gaming use case and that it
> > might be capable footgun with some weird edge cases if people do stick
> > to the text.
>
>
> Not really. If the network is congested and the video game still
> persists sending frequent messages the most likely outcome will be
> queuing and losses, and thus bad game play. The proper behavior in a
> congested network is to switch to a low bandwidth mode of some kind --
> maybe a lower frame rate, or a lower resolution. This is pretty much the
> same issue as voice or video over IP: if the network is congested, it
> makes sense to use a higher compression rate. With congestion control,
> the application can detect the upset of congestion and adopt these
> strategies. That's generally much better than to just passively accept
> queues and losses.
>
> -- Christian Huitema
>
>