Re: flow control and DATAGRAM
Jana Iyengar <jri.ietf@gmail.com> Tue, 30 October 2018 02:24 UTC
Return-Path: <jri.ietf@gmail.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 B937C1288BD for <quic@ietfa.amsl.com>; Mon, 29 Oct 2018 19:24:15 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.999
X-Spam-Level:
X-Spam-Status: No, score=-1.999 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_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 gjlmt7FX-7L4 for <quic@ietfa.amsl.com>; Mon, 29 Oct 2018 19:24:13 -0700 (PDT)
Received: from mail-lf1-x12a.google.com (mail-lf1-x12a.google.com [IPv6:2a00:1450:4864:20::12a]) (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 93DC812008A for <quic@ietf.org>; Mon, 29 Oct 2018 19:24:12 -0700 (PDT)
Received: by mail-lf1-x12a.google.com with SMTP id h192so7669264lfg.3 for <quic@ietf.org>; Mon, 29 Oct 2018 19:24:12 -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=P7I5gr2z5y5yS/MLzDnmDstmcwwneD6mE6s56skPHUE=; b=uwmhEoTTRfEXePcruZjdyg2dOseSSFGJ2lIwYTE7bWW2rKCMQFmDk91N5NVG5lIqGD wMMSe8i0m16x3MWEzbOGVbPbQueef2xIveNZki0M+uCA1IvXMEUI7ukZmEpTX8dYtZTb Dd71ebq1FrS7XEhl5Uxi/2Bg+13QdFn7fnbmQwsuZFOJPDbDJRxtDoTDDSS4e9Wqp/SE RVxRX1OBmPqC/5VDqu56zVNQyW2UmHvoDjw2iLE0+drdW79l4B1y9j9AVO9dUIUjuKDE b6DQbwVC6qdyuwolXrS5ul3/Yzt0vZxl2kL6WLymTt4FpFKFSKpjsqBHEBHdBMJKGE6t q/jg==
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=P7I5gr2z5y5yS/MLzDnmDstmcwwneD6mE6s56skPHUE=; b=nFWrE7wFGCdOoJAAEAGqxO08BZAbUivk0G/ZLBcWXHsqpREN+hCgvyZB3OQOfLG33E kN6aZXui/5uO3Z/AzMOX23TsLAJDKfytM+0jjjT84UaBqmbNWnEtFcUKaQV5UjBjqEG+ Kv+B+L97oYyaE7qwBD3G3urFX6cMtsGPPNZwaa3BmjL93W+VWEheGg0A8+DQZ24eBykR DlohPFtOJP7SS1X28w8Gw54LYwhgv1zdX6rWXdU7BpaxO9QxxTroj3Ji3xZAgC0FMqNz KmgfAneXW6uL42RKqzD3P8qkfcVaPFm2CMsS9ngKYkWxSBy3WxomjftrkbB2bvgI9vhd Q9pw==
X-Gm-Message-State: AGRZ1gLz2DKDp9zazZaN4BZXQt596wEgcaJ5jU9uXPnK6yakBYlHKVml IxjDFwVn6IXguxF6DWhQuS1KBubintIYdys4THI=
X-Google-Smtp-Source: AJdET5cM6NoH8OENcgVWALzytfkmO03g3bfw2WnRP7kuuV+CA+oqu8EUOnkGFfSIOdaRYPuBxNLT3JZ9KunqFz81QGw=
X-Received: by 2002:a19:25c2:: with SMTP id l185-v6mr623800lfl.122.1540866250645; Mon, 29 Oct 2018 19:24:10 -0700 (PDT)
MIME-Version: 1.0
References: <CABkgnnU26aYD=TybuD0FZGYtfEa6np-Sk3Jo6t7LRp0wzKh3Lg@mail.gmail.com> <CAKcm_gMDOyJC0AwOo2knN6AMxVbySjGsrLvjcC9A8UA9xcvcWw@mail.gmail.com> <19D3595B-8845-45B6-A60D-9E934DD49FAC@apple.com> <CACpbDcfk+GXb3aL5LG0wQM87thRGO5Y4Q+9cbXf5YuW1=jWCig@mail.gmail.com> <B7BE2454-2A4D-4323-B0A5-0D73BD4B819F@apple.com>
In-Reply-To: <B7BE2454-2A4D-4323-B0A5-0D73BD4B819F@apple.com>
From: Jana Iyengar <jri.ietf@gmail.com>
Date: Mon, 29 Oct 2018 19:23:59 -0700
Message-ID: <CACpbDcd5YWcxyEH3TS1FssgAT13oqeBBQg92+J0uJqhxPz2qkA@mail.gmail.com>
Subject: Re: flow control and DATAGRAM
To: tpauly@apple.com
Cc: Ian Swett <ianswett@google.com>, QUIC WG <quic@ietf.org>, Martin Thomson <martin.thomson@gmail.com>
Content-Type: multipart/alternative; boundary="0000000000008425a4057968e112"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/A-WWIRF5zZeH8_8bLRh4Rw7tPWU>
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: Tue, 30 Oct 2018 02:24:16 -0000
Hey Tommy, > I'm not suggesting any changes to when the packet gets > ack'ed—specifically, I was responding to Martin's hypothetical of having an > ACK to a DATAGRAM frame meaning that the application had processed the > frame. My impression is that the ACK to a packet containing a DATAGRAM > frame means: > - The packet made it across the network to the QUIC endpoint on the other > side > ... and was processed by the QUIC receiver (not necessarily by the application). This is the same semantic as the ack of a regular frame. > - The QUIC implementation will deliver the DATAGRAM frame to application > (it won't drop it locally) > In which case you will need flow control. If you agree, then we're on the same page so far. > Having a separate outstanding data limit for the DATAGRAM "stream" is an > interesting solution to the space. It would then have the nice property of > not looking like traditional flow control. It could even be measured in > number of frames, rather than bytes (depending on what the limiting factors > are). > In terms of flow control, I don't think DATAGRAM flow control is any different than sending stream data on any stream and then canceling it -- there are no retransmissions, but the sender still accounts for it in flow control. My thought here was basically to have exactly the same flow control as stream-level flow control, and allow for DATAGRAM bytes to fall within connection-level flow control as normal. The simplest scheme would be to reserve a stream ID for DATAGRAM data -- this could be 0 or 2^62-1 -- and then MAX_STREAM_DATA uses this stream ID for flow control of DATAGRAM octets. Alternatively, define a new frame called MAX_DATAGRAM_DATA that is carries the largest allowed offset that can be sent as a DATAGRAM, and introduce an offset field in the DATAGRAM frame. - jana > Thanks, > Tommy > > On Oct 29, 2018, at 12:37 PM, Jana Iyengar <jri.ietf@gmail.com> wrote: > > Tommy, > > Changing the semantics of an acknowledgment to include delivery up to the > application is a fundamental change to the QUIC machinery, and it doesn't > work. First, an ACK frame acknowledges packets, and you can't have > different semantics of an acknowledgment for different frames that are > carried in the same packet. Second, it interferes with RTT measurement, and > it conflates flow control with congestion control, which gets messy. (This > conflation is an interesting problem to consider theoretically, but not one > for us at this time IMO.) > > I am wondering if applying a stream-level flow control for DATAGRAMs makes > sense instead. Meaning that you treat DATAGRAMs as a separate stream for > flow control purposes. You might benefit from having an offset in the > DATAGRAM frame for this purpose. > > - jana > > On Mon, Oct 29, 2018 at 8:21 AM Tommy Pauly <tpauly@apple.com> wrote: > >> Hi Martin, Ian, >> >> Yes, very good points! >> >> My tendency would be to prefer what Ian's implementation does of passing >> these DATAGRAM frames up immediately to the application. I don't think that >> the acknowledgment needs to indicate that the frame was processed by the >> application, but merely that it has been delivered to the application (that >> is, the application doesn't get to do anything with the frame that can >> influence the acknowledgment). >> >> The current draft indicates that the content of the DATAGRAM frames >> contributes to the limit used for MAX_DATA, and that if that amount is >> reached, the frames are blocked along with STREAM data. I think this works >> fine for the sender, while the receiver gets into the discussion you >> present. On the sender side, reaching MAX_DATA could mean dropping the >> DATAGRAM frames when unable to send more (and sending BLOCKED instead). >> Since the frames are unreliable, they can be dropped in this situation >> without violating the API contract. >> >> On the receiver side, I agree that queuing the DATAGRAM frames to let the >> application drive flow control in the way it does for STREAM frames adds >> complexity and diminishes the utility of the frame and ACKs.. However, I >> can imagine taking a fairly simplistic approach in which the data limit is >> automatically increased upon reception of the frame (and the frame is >> immediately passed to the application). This allows the initial_max_data to >> put a cap on the amount of data in a given flight of DATAGRAMS, and allow >> the size of a flight of DATAGRAM frames to be limited by the amount of room >> left over from STREAM data that may be consuming the connection-wide flow >> control. >> >> Perhaps this approach needs a clearer name other than "flow control", >> since it has a somewhat different meaning in effect. >> >> As for ACKs, if we never discard on the receiver side, the ACK is pretty >> useful for detecting if there was network-based packet loss. >> >> Thanks, >> Tommy >> >> On Oct 29, 2018, at 5:32 AM, Ian Swett <ianswett@google.com> wrote: >> >> Good catch Martin, I missed that in the draft as well, and I also think >> it's impossibly with the proposed design. >> >> And yes, I think Martin's proposed solution is likely the only practical >> one. In my implementation, the frame is passed up to the application >> immediately, so technically QUIC processed it, and it's the application's >> job to decide what to do with it. >> >> On Mon, Oct 29, 2018 at 1:16 AM Martin Thomson <martin.thomson@gmail.com> >> wrote: >> >>> Hi Tommy, >>> >>> Your slides - < >>> https://github.com/quicwg/wg-materials/blob/master/ietf103/IETF103-QUIC-Datagram.pdf >>> > >>> - say that DATAGRAM frames respect connection-level flow control. I >>> missed that in the draft, and I don't know how they can do that in the >>> face of packet loss, especially when you don't necessarily retransmit >>> lost DATAGRAM frames. >>> >>> For that to work, you would need a bunch more machinery to make the >>> connection-level flow control sync between endpoints in the case that >>> packets are lost. A disagreement about how much flow control is used >>> causes things to break down badly. Ian and I discussed this point at >>> the last meeting and quickly agreed that while it might be nice to >>> have flow control for this stuff, the increase in complexity is >>> considerable and (at the time) we thought it wouldn't be worth it. >>> >>> The problem that introduces is that you could end up having too many >>> DATAGRAM frames arrive. The receiver has to drop something at the >>> point that it can't handle them. And we say that when you acknowledge >>> something, you processed it. That's tricky. >>> >>> It might be easier to say that a QUIC acknowledgment for a DATAGRAM >>> frame doesn't mean that it was received and processed by an >>> application. An endpoint might discard these frames before passing >>> them on to applications if it doesn't have space. In other words, >>> acknowledgment of DATAGRAM means that QUIC got it, not that the >>> application got it. Sadly, that means that the QUIC acknowledgment >>> machinery doesn't help the application that uses DATAGRAM all that >>> much. Also, the lower bound on reliability is 0, which isn't the best >>> thing ever. >>> >>> Hard choices, I know. I don't have a good design for maintaining >>> connection-level flow control (or any back pressure mechanism with >>> equivalent properties) that doesn't add both complexity and overhead. >>> >>> Cheers, >>> Martin >>> >>> >> >
- flow control and DATAGRAM Martin Thomson
- Re: flow control and DATAGRAM Ian Swett
- Re: flow control and DATAGRAM Tommy Pauly
- Re: flow control and DATAGRAM Jana Iyengar
- Re: flow control and DATAGRAM Tommy Pauly
- RE: flow control and DATAGRAM Lubashev, Igor
- Re: flow control and DATAGRAM Christian Huitema
- RE: flow control and DATAGRAM Lubashev, Igor
- Re: flow control and DATAGRAM Martin Thomson
- Re: flow control and DATAGRAM Roberto Peon
- Re: flow control and DATAGRAM Jana Iyengar
- RE: flow control and DATAGRAM Lubashev, Igor
- Re: flow control and DATAGRAM Jana Iyengar
- Re: flow control and DATAGRAM Ian Swett
- Re: flow control and DATAGRAM David Schinazi
- RE: flow control and DATAGRAM Mike Bishop
- Re: flow control and DATAGRAM Subodh Iyengar
- Re: flow control and DATAGRAM Jana Iyengar
- Re: flow control and DATAGRAM Tommy Pauly