RE: draft-lubashev-quic-partial-reliability

"Lubashev, Igor" <ilubashe@akamai.com> Tue, 19 December 2017 13:13 UTC

Return-Path: <ilubashe@akamai.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 E0240129C6F for <quic@ietfa.amsl.com>; Tue, 19 Dec 2017 05:13:13 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.699
X-Spam-Level:
X-Spam-Status: No, score=-2.699 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, 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=akamai.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 FlhQl6VAONfF for <quic@ietfa.amsl.com>; Tue, 19 Dec 2017 05:13:09 -0800 (PST)
Received: from mx0a-00190b01.pphosted.com (mx0a-00190b01.pphosted.com [IPv6:2620:100:9001:583::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id EBCC4129C53 for <quic@ietf.org>; Tue, 19 Dec 2017 05:13:09 -0800 (PST)
Received: from pps.filterd (m0122333.ppops.net [127.0.0.1]) by mx0a-00190b01.pphosted.com (8.16.0.21/8.16.0.21) with SMTP id vBJDD7St013930; Tue, 19 Dec 2017 13:13:07 GMT
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=akamai.com; h=from : to : subject : date : message-id : references : in-reply-to : content-type : mime-version; s=jan2016.eng; bh=0UXGs/WvD0l9izpzkmiSIm5BqTTYqWGTF9yY3qg+Fcs=; b=lLiEOjuev5hd40zUReSXgsWPndL64IebkmIXwkyITgyrfgJhq+kt9U/+MQ42l8Ncntnf o5VRhLO/w/m2+fIBbWfKVxzFPTS4yEZ/iwuL7V8crVv6q3ogAwxmSzdxTrDwZsr5lhFH 3qyFcBYltgO2o8il4WfNy1XTy2pYyWqPPsAp+wsitzOMzee4zNKOfzWWsnhGynWfBDc1 aOEhjNJ/p1wn7SqP+QrRtAvFrrO+i9OS6nuunMIqXvsT/tp3ecfSknyLXt0MDyi6DcyJ K6Atk5ZIo8d9t0FLeimh/5Ux2Z3RBFv8Lb8YQaGEw6k8nkirg3J+SqMkDsZwkmE8GKGd hg==
Received: from prod-mail-ppoint1 (prod-mail-ppoint1.akamai.com [184.51.33.18]) by mx0a-00190b01.pphosted.com with ESMTP id 2evum91425-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 19 Dec 2017 13:13:07 +0000
Received: from pps.filterd (prod-mail-ppoint1.akamai.com [127.0.0.1]) by prod-mail-ppoint1.akamai.com (8.16.0.21/8.16.0.21) with SMTP id vBJDBGam007076; Tue, 19 Dec 2017 08:13:05 -0500
Received: from email.msg.corp.akamai.com ([172.27.123.32]) by prod-mail-ppoint1.akamai.com with ESMTP id 2evypxv3v2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Tue, 19 Dec 2017 08:13:05 -0500
Received: from USMA1EX-DAG1MB5.msg.corp.akamai.com (172.27.123.105) by usma1ex-dag1mb2.msg.corp.akamai.com (172.27.123.102) with Microsoft SMTP Server (TLS) id 15.0.1263.5; Tue, 19 Dec 2017 08:13:04 -0500
Received: from USMA1EX-DAG1MB5.msg.corp.akamai.com ([172.27.123.105]) by usma1ex-dag1mb5.msg.corp.akamai.com ([172.27.123.105]) with mapi id 15.00.1263.000; Tue, 19 Dec 2017 08:13:04 -0500
From: "Lubashev, Igor" <ilubashe@akamai.com>
To: "quic@ietf.org" <quic@ietf.org>, "Lucas.Pardue@bbc.co.uk" <Lucas.Pardue@bbc.co.uk>
Subject: RE: draft-lubashev-quic-partial-reliability
Thread-Topic: draft-lubashev-quic-partial-reliability
Thread-Index: AdN4eekQTxka84DaTqiLnO0Um5bpqQAMOJHZAAgTzPA=
Date: Tue, 19 Dec 2017 13:13:04 +0000
Message-ID: <85d7dc28d3bb40a38873f4d32a16fd71@usma1ex-dag1mb5.msg.corp.akamai.com>
References: <c1f5a6d8d21f423a93003f7b69dae882@usma1ex-dag1mb5.msg.corp.akamai.com>, <7CF7F94CB496BF4FAB1676F375F9666A3BAB1A4A@bgb01xud1012>
In-Reply-To: <7CF7F94CB496BF4FAB1676F375F9666A3BAB1A4A@bgb01xud1012>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-transport-fromentityheader: Hosted
Content-Type: multipart/alternative; boundary="_000_85d7dc28d3bb40a38873f4d32a16fd71usma1exdag1mb5msgcorpak_"
MIME-Version: 1.0
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-12-19_07:, , signatures=0
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 mlxscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1711220000 definitions=main-1712190190
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-12-19_07:, , signatures=0
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1011 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1711220000 definitions=main-1712190191
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/Qoq1KDFBJ2etcIXN-fh7XAI_Gns>
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 13:13:14 -0000

Thanks Lucas!

Yes, I have seen other proposals, and this is my alternative.

The idea is that all streams, other than stream 0, can be partially reliable, in both directions, without a need to negotiate (other than version negotiation, in case the initial QUIC version does not support this).

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.

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.

- Igor

-----Original Message-----
From: Lucas Pardue [Lucas.Pardue@bbc.co.uk]
Received: Tuesday, 19 Dec 2017, 4:38AM
To: Lubashev, Igor [ilubashe@akamai.com]; QUIC WG [quic@ietf.org]
Subject: RE: draft-lubashev-quic-partial-reliability

Hi Igor,

Thanks for wrting this up, it is an interesting proposal. It seems flexible enough to apply to a few different use cases, although I do wonder how expressive or accommodating APIs could be.

Some basic questions:

Is this proposal the "alternative single-stream method"? I think it is but may be assuming incorrectly.

With this proposal, partial reliability seems to unilaterally apply to all streams, based on the potential reception of the MIN_STREAM_DATA frame at any point during the connection lifetime. This seems a different approach than others where the reliability type is indicated on stream creation. Could this feature be negotiated for the connection (or path ;) )? I can see a case for simplistic client in constrained devices that may not want the overhead of supporting this feature.

Similar to above, is this capability symmetric? Could it be restricted to one direction of traffic?

What stream are MIN_STREAM_DATA frames sent on? Could the stream ID field be omitted if the frame is only sent on the stream it affects?
________________________________________
From: QUIC [quic-bounces@ietf.org] on behalf of Lubashev, Igor [ilubashe@akamai.com]
Sent: 19 December 2017 03:39
To: QUIC WG
Subject: draft-lubashev-quic-partial-reliability

I’ve just posted a draft on adding partial reliability to QUIC streams.

Datatracker link: https://tools.ietf.org/html/draft-lubashev-quic-partial-reliability
Github link: https://github.com/igorlord/draft-lubashev-quic-partial-reliability

This draft introduces a generic way to add partial reliability to QUIC streams using a single new frame: MIN_STREAM_FRAME (and keeping one new per-stream variable: Min Stream Offset).

The high-level idea is that the sender keeps track of messages within a stream and can “expire” old messages whenever it wants.  The “expiration” is a signal to the transport to not retransmit expired data (and a signal to the other endpoint that this data will not be retransmitted).  All details are in the draft.

I am very interested in feedback on this proposal.


  *   Igor



-----------------------------
http://www.bbc.co.uk
This e-mail (and any attachments) is confidential and
may contain personal views which are not the views of the BBC unless specifically stated.
If you have received it in
error, please delete it from your system.
Do not use, copy or disclose the
information in any way nor act in reliance on it and notify the sender
immediately.
Please note that the BBC monitors e-mails
sent or received.
Further communication will signify your consent to
this.
-----------------------------