RE: draft-lubashev-quic-partial-reliability

Mikkel Fahnøe Jørgensen <mikkelfj@gmail.com> Tue, 19 December 2017 17:15 UTC

Return-Path: <mikkelfj@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 9ACA212D838 for <quic@ietfa.amsl.com>; Tue, 19 Dec 2017 09:15:22 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.698
X-Spam-Level:
X-Spam-Status: No, score=-2.698 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_LOW=-0.7, SPF_PASS=-0.001, UNPARSEABLE_RELAY=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 U5DCaIzFsjOX for <quic@ietfa.amsl.com>; Tue, 19 Dec 2017 09:15:20 -0800 (PST)
Received: from mail-it0-x22a.google.com (mail-it0-x22a.google.com [IPv6:2607:f8b0:4001:c0b::22a]) (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 B8AC612D94F for <quic@ietf.org>; Tue, 19 Dec 2017 09:15:20 -0800 (PST)
Received: by mail-it0-x22a.google.com with SMTP id f190so3595167ita.5 for <quic@ietf.org>; Tue, 19 Dec 2017 09:15:20 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:in-reply-to:references:mime-version:date:message-id:subject:to; bh=4XelZiDgLBB/8idyvW5rt2FVqmOUrWjkUpS0VplHZ3c=; b=Tp/vAty+2IrpNG1X81VsCWGXdPmAPxfuY5gj4Fp4QbQ9yBr7yVgoExtFHCHM05ekbF RDz/ybXI6D0+OXg50LsZs2pLvxKWm3lnJy1B/uCtGjnjbtX/zZdEwp8WUAPDMNLNN4Dz Dc35q5ZYAXrP7/zcMS627CBMF51jWWbdr8Fz48kzc+uzFncCkDe/zjPVSibWP7PYOjGm n2sSS77ul0UTFThvgWUCQqEqUGFSRB9dE+e3a8gUbJ1iUKQzueJhttCwiYt3c4mlBcsO EXFtN4/kHS8uYk96H6c1QY/JwM9ZnSdGxEMyGA9769Ldw2jLZhDAuPLsq8qt64mOda6+ g9xg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:in-reply-to:references:mime-version:date :message-id:subject:to; bh=4XelZiDgLBB/8idyvW5rt2FVqmOUrWjkUpS0VplHZ3c=; b=A79ZIEx+g3VShgLKUlOEoT3YOqXqpuru6ScWq3rcutAUK/3e519WpGPmlXR/Wj2YcG BnzOn24hyFX92n5lm3Xthv2Bn74n1jOJ9MWVTo44MUNhKnR8GVEcNPVIZ5Wyc6oWORrc tDTqXhTVvJN4mIEsdk1XRpNXyytfJjpQw3rJQD4Vc2kuGYjf6kiu5FUTQJaz1DBG/G91 mMDd6+dbdnzUdGzjQDvrxTOtcmZyA7pTXFZUG28YIqXI0YbMQgowu7bZIqql2AFLBOW2 LWJ0pz+S/rsrHk9VbqR8jZNBMmAVLyaR+6+Vd+MqBACVkB+omJsuvyXEuZe9HjeIvZbk TbgQ==
X-Gm-Message-State: AKGB3mJF9wosk+S1Z428Cx4U0UJRYprQf9mIckE7EQG6u6vq5VaiAKht gCLoyVk+wZ+/KVIREc7k58PviBvv1866g8EOc7oNDQ==
X-Google-Smtp-Source: ACJfBot8Zcu/Wile72LGwuL8RtUo6lU7CPPZTQH819xr8mWdQktTmeh+aq95yY/al2XO4a8fFayS6MtC5B7m8yJa4Hk=
X-Received: by 10.36.95.14 with SMTP id r14mr4034805itb.42.1513703720097; Tue, 19 Dec 2017 09:15:20 -0800 (PST)
Received: from 1058052472880 named unknown by gmailapi.google.com with HTTPREST; Tue, 19 Dec 2017 09:15:19 -0800
From: Mikkel Fahnøe Jørgensen <mikkelfj@gmail.com>
In-Reply-To: <7CF7F94CB496BF4FAB1676F375F9666A3BAB1B01@bgb01xud1012>
References: <c1f5a6d8d21f423a93003f7b69dae882@usma1ex-dag1mb5.msg.corp.akamai.com> <7CF7F94CB496BF4FAB1676F375F9666A3BAB1A4A@bgb01xud1012> <85d7dc28d3bb40a38873f4d32a16fd71@usma1ex-dag1mb5.msg.corp.akamai.com> <7CF7F94CB496BF4FAB1676F375F9666A3BAB1B01@bgb01xud1012>
X-Mailer: Airmail (420)
MIME-Version: 1.0
Date: Tue, 19 Dec 2017 09:15:19 -0800
Message-ID: <CAN1APddU53Jzfy998NtOqVZC8ZdXYGEZf042VKw7yMGCixq-bg@mail.gmail.com>
Subject: RE: draft-lubashev-quic-partial-reliability
To: Lucas Pardue <lucas.pardue@bbc.co.uk>, "Lubashev, Igor" <ilubashe@akamai.com>, "quic@ietf.org" <quic@ietf.org>
Content-Type: multipart/alternative; boundary="001a1144b57a881ab60560b49c0a"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/TQatYXoUXPZyl-fdYBYeey-psqY>
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.22
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, 19 Dec 2017 17:15:23 -0000

I think this proposal largely makes good sense.

Be default no MIN_STREAM_DATA frame is sent which is then the current
stream behaviour.
Any application protocol can define its own rules about which streams can
behave partially reliable.

A counter argument is that QUIC explicitly distinguishes between uni- and
bi-directional streams, so why not between partial- and fully reliable
streams? The answer might be that uni- streams can close state early, while
there is no similar concern for partial reliability.

Another concern is time-based partial reliability. If data is old, don’t
retransmit regardless. But an application protocol can handle this.

My main concern is that sending MIN_FRAME_DATA can generate A LOT of
traffic with lots of tiny messages where you only care about, say, the last
three 1 byte messages sent (hoping at least one gets through). The
MIN_FRAME_DATA could be much larger than the messages forcing less frequent
traffic. Of course, locally you can have you own rules, and just
periodically update MIN_FRAME_DATA, but this is a bit odd.

A variation of the concept could be sending MIN_FRAME_DATA as a delta to
most recent: never expect more than X bytes older than most recently seen,
but that also has it issues when messages are variable length.


As to client vs server asymmetri: It strongly suggest not to make a
distinction here because there are many symmetric peer to peer use cases
and also opposite cases: server to client with partially reliable video,
client to server with partially reliable game state, server to server with
partially reliable gossip protocol to statistically advance a common state
(e.g. "I have processed so many bytes now, how about you?”).


Kind Regards,
Mikkel Fahnøe Jørgensen


On 19 December 2017 at 16.47.08, Lucas Pardue (lucas.pardue@bbc.co.uk)
wrote:

Igor wrote:



The bookkeeping is simple enough and the runtime resources required is just
one uint64_t per steam, so I do not see a problem for constrained devices.

Ultimately, partial reliability is a feature that an application either
needs or does not. If an application needs it, it most likely requires it.
In any case, an application can do its own negotiation if it desires to do
so. For example, it can use stream 1 for that.

Now I understand this is connection-wide, I generally agree. However, for
something like conventional HTTP/QUIC, the reliable guarantee assurances
are required by the mapping. If partial reliability is default enabled
transport feature, applications like HTTP/QUIC must restrict or disable it
– I’m not sure if the editors/drafts have broached that subject yet (I’ve
certainly had some feedback on my draft about such restrictions).



I did not fully understand the last question. Are you asking whether it is
possible for the connection to negotiate just a single stream (in each
direction) that would be partially reliable and, therefore, not send a
stream id with MIN_STREAM_DATA? I could actually think of a version of
MIN_STREAM_DATA that has an implied stream id -- the stream id of a
prior/following STREAM frame in the same packet. That would be an
optimization that I am happy to add, if there is enough support for it.



Apologies, I hadn’t drunk any coffee when first replying and got myself
confused. All QUIC frames of this nature should normally include a Stream
ID, which identifies the stream it is sent on. I think your suggestion
relies on serial ordering/processing (even inside a packet), which might be
a hard sell.



Separately, in terms of asymmetry, I was thinking that you might always
want (as a policy) clients to transmit with full reliability but provide
data to them with partial reliability. I think this is again an application
mapping concern.



Regards,

Lucas