Re: flow control and DATAGRAM

Christian Huitema <> Mon, 29 October 2018 22:29 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 2E069131030 for <>; Mon, 29 Oct 2018 15:29:05 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.598
X-Spam-Status: No, score=-2.598 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, MIME_QP_LONG_LINE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id SMOI8aaGLhyc for <>; Mon, 29 Oct 2018 15:29:03 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id E4D29127133 for <>; Mon, 29 Oct 2018 15:29:02 -0700 (PDT)
Received: from ([]) by with esmtps (TLSv1:AES256-SHA:256) (Exim 4.89) (envelope-from <>) id 1gHG1r-0001db-Np for; Mon, 29 Oct 2018 23:29:00 +0100
Received: from [] ( by with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.63) (envelope-from <>) id 1gHG1l-0003Zb-CK for; Mon, 29 Oct 2018 18:28:57 -0400
Received: (qmail 20901 invoked from network); 29 Oct 2018 22:28:51 -0000
Received: from unknown (HELO []) ([]) (envelope-sender <>) by (qmail-ldap-1.03) with ESMTPA for <>; 29 Oct 2018 22:28:50 -0000
Content-Type: multipart/alternative; boundary="Apple-Mail-116CD75E-F367-49B3-B076-0B94A107B7D9"
Mime-Version: 1.0 (1.0)
From: Christian Huitema <>
X-Mailer: iPhone Mail (16A404)
In-Reply-To: <>
Date: Mon, 29 Oct 2018 15:28:49 -0700
Cc: Tommy Pauly <>, Jana Iyengar <>, Ian Swett <>, QUIC WG <>, Martin Thomson <>
Content-Transfer-Encoding: 7bit
Message-Id: <>
References: <> <> <> <> <> <>
To: "Lubashev, Igor" <>
Subject: Re: flow control and DATAGRAM
Authentication-Results:; auth=pass smtp.auth=
X-AntiSpamCloud-Outgoing-Class: unsure
X-AntiSpamCloud-Outgoing-Evidence: Combined (0.23)
X-Recommended-Action: accept
X-Filter-ID: EX5BVjFpneJeBchSMxfU5hjWGYCzUh7YG8fkBxPHR8h602E9L7XzfQH6nu9C/Fh9KJzpNe6xgvOx q3u0UDjvO37pNwwF1lRXh5rzvPzo9Jts1ujulqUFmMITHM77eiVi+vRj6yzEgvVZTGazwRo55s7i TvJ2/ZGzVWB9scFAaCdIFaUvXN+CI+RGy3Me16pB6nkU4uouGtaIPSwAALHVjh/TBCf6oYXAWGet lavcAjD9ytQxIHf9lN5jjLJaPK8lRJSPf/SXbEnDSsal/zZzc4n9VZdr7RAFD5mRwooUYhwMPaBP aKeQW+/QlaOdv8isl/qMm08Zpim2AHUKEWvQ6G/bWfgucjnNmABpGhD9TTttrFCuZ0NkwnSz2Luu o1u9uevuNfM1HjkNEFwape+IgNezYqxGMqsKjARq8PBC4qjpVMhqNcdjhoIlgrKzBvjTmdySlZou 9qHIGOZDEEo7Oyc1nq0gsY582CWqKjiRB3ukywmZtiDkyd4mEBjJGGEJE2d52fY0d/1mkgffWkdO 4QEiRQv+PVjjwa+Z5RFCOMTc/0DL0kGticgfK7BXdIl5xnsMi381k+gKZDYa33nZ/Q2hElfCmYHd K/F6jFUrRk5k354Leo8WHhg9Xcph2esmZk4AVtnYApSiFQp1w3dnUoiPn/2xNqt6sQVacVXeY6AU 1zqm/evfkH8cHl25+qKdJvWZ9M/O6eVqbri1Q0O8/x2vWOKTBJk2Pbgs7SLYxsDtOMdZHeKLxpi2 To9NNZ6PS0eJxHqSOPlqEdtb5t20uHG5BnVj6tDKYf18xfK0O5gaJ/Nk40anfxYE/e+AHCqTw6nI oDr0sXUZ7YZoZ/GZ+u+WjISfXGa/P6JeP9Rx/xr6vvsamCqhsCKWQTQWW5aiOYN2LGYOY+RZZ70I EJvMPP9qwM7RXpJS8RjTdyh2j5BSM6Vge5/tyLofFHTUZzjpzRBCCyVCnQKBwcrUTMoPTDRj9D8H LKHAKpPGP8EPnuBvlPE9yn4+7R7hw716lUpV
Archived-At: <>
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Main mailing list of the IETF QUIC working group <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Mon, 29 Oct 2018 22:29:05 -0000

> On Oct 29, 2018, at 2:28 PM, Lubashev, Igor <> wrote:
> > ACK to a packet containing a DATAGRAM frame means:
> > - The packet made it across the network to the QUIC endpoint on the other side
> > - The QUIC implementation will deliver the DATAGRAM frame to application (it won't drop it locally)
> > 
> > Does that make sense?
> This only makes sense, if there is an effective flow control for DATAGRAMs.  The spec should be implementable by poll/read QUIC implementations as well as by callback-on-network-receive-thread implementations.  Unless there is an effective flow control, a buffering QUIC implementation must be able to discard DATAGRAMs, if the receiver app is not catching up.  The receiver would then have to ignore all non-DATAGRAM frames in that packet, since it would be unable to ACK the packet.  If the receiver is processing DATAGRAMs and STREAMs at different speeds, deliberate discards of packets containing DATAGRAMs would interfere with the congestion control, effectively HOL blocking STREAMs.

On the other hand, Datagram will be used to carry the media flows currently carried over RTP, and RTP does not include any kind of flow control. 

The known weakness of RTP is the lack of integrated congestion control between data and media, do that a parallel data download can jeopardize  the quality of the real time media. But that's an argument for counting the datagrams in the congestion control window, not an argument for flow control.

There is an argument for controlling the rate at which media is sent. But that's typically done at the app layer, by negotiating codecs and compression parameters.

-- Christian Huitema