Re: [quicwg/base-drafts] Editorial rework (#2080)

ianswett <notifications@github.com> Sat, 01 December 2018 13:53 UTC

Return-Path: <noreply@github.com>
X-Original-To: quic-issues@ietfa.amsl.com
Delivered-To: quic-issues@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 695F3130DC1 for <quic-issues@ietfa.amsl.com>; Sat, 1 Dec 2018 05:53:22 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -9.46
X-Spam-Level:
X-Spam-Status: No, score=-9.46 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.46, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=github.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 lL-9s535nc5z for <quic-issues@ietfa.amsl.com>; Sat, 1 Dec 2018 05:53:20 -0800 (PST)
Received: from out-7.smtp.github.com (out-7.smtp.github.com [192.30.252.198]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id D692B128C65 for <quic-issues@ietf.org>; Sat, 1 Dec 2018 05:53:19 -0800 (PST)
Date: Sat, 01 Dec 2018 05:53:18 -0800
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1543672398; bh=qxIMBLsRhpdp/GXEeUJ2nyuvnGWJTzII7NIGPYwPHO4=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=dMt6K2fgl9Ogin41bWPkLN39k+MXQQ+2KGDt7rle/96zHeXxNk7vF9vxDTbEa+u68 mUveMqIprGbR35hxWB7A+0gusigEwZk/IYMm9pWn+HG/MH9p8GggqeCPHfRPgpvVYg /dRxrHZHGsigJe7HclWFLljD+RhqD0d/McySk81Y=
From: ianswett <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+0166e4abd8d2745d03c0422ca6325daa920c34f10d97dec092cf00000001181a544d92a169ce17080d94@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/pull/2080/review/180523967@github.com>
In-Reply-To: <quicwg/base-drafts/pull/2080@github.com>
References: <quicwg/base-drafts/pull/2080@github.com>
Subject: Re: [quicwg/base-drafts] Editorial rework (#2080)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5c02924e34b5_3ff43f95394d45b41216077"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: ianswett
X-GitHub-Recipient: quic-issues
X-GitHub-Reason: subscribed
X-Auto-Response-Suppress: All
X-GitHub-Recipient-Address: quic-issues@ietf.org
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic-issues/xiCKg1rczB0emzeArUFeW7Ou4zM>
X-BeenThere: quic-issues@ietf.org
X-Mailman-Version: 2.1.29
List-Id: Notification list for GitHub issues related to the QUIC WG <quic-issues.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic-issues>, <mailto:quic-issues-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic-issues/>
List-Post: <mailto:quic-issues@ietf.org>
List-Help: <mailto:quic-issues-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic-issues>, <mailto:quic-issues-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 01 Dec 2018 13:53:23 -0000

ianswett commented on this pull request.

Thanks Jana, I think this is a nice improvement on my PR

> -fraction of an RTT, but implementations MAY experiment with absolute
-thresholds. The RECOMMENDED time threshold, expressed as a fraction
-of the round-trip time (kTimeThreshold), is 1/8.
-
-An endpoint SHOULD declare packets lost no earlier than
-(1 + kTimeThreshold) * max(SRTT, latest_RTT) after when they were
-sent.  If packets sent prior to the largest acknowledged packet cannot yet
-be declared lost, then a timer SHOULD be set for the remaining time.
+{{?RFC6675}}, and RACK {{?RACK=I-D.ietf-tcpm-rack}}. This section provides an
+overview of how these algorithms are implemented in QUIC.
+
+When an ACK frame is received that newly acknowledges a packet, a QUIC sender
+uses two thresholds to determine if prior packets should be declared lost.  A
+packet is declared lost under the following conditions:
+
+* it has a smaller packet number than the newly acknowledged packet,

I would prefer merging the first two bullets because I think it might flow better.
ie: "The packet is retransmittable, unacknowledged, and was sent prior to an acknowledged packet."

The removal of the mention of packet number was to capture the concept a bit more and we talk about packet number in the next bullet.

Also, we typically capitalize the first letter after the *, which I think looks better.

> @@ -596,13 +570,14 @@ kMaxTLPs:
   The RECOMMENDED value is 2.
 
 kPacketThreshold:
-: Maximum reordering in packet number space before FACK style loss detection
+: Maximum reordering in packets  before packet threshold loss detection

```suggestion
: Maximum reordering in packets before packet threshold loss detection
```

> -#### Time Threshold
-
-Time threshold loss detection uses a time threshold to determine how much
-reordering to tolerate.  In this document, the threshold is expressed as a
-fraction of an RTT, but implementations MAY experiment with absolute
-thresholds. The RECOMMENDED time threshold, expressed as a fraction
-of the round-trip time (kTimeThreshold), is 1/8.
-
-An endpoint SHOULD declare packets lost no earlier than
-(1 + kTimeThreshold) * max(SRTT, latest_RTT) after when they were
-sent.  If packets sent prior to the largest acknowledged packet cannot yet
-be declared lost, then a timer SHOULD be set for the remaining time.
+{{?RFC6675}}, and RACK {{?RACK=I-D.ietf-tcpm-rack}}. This section provides an
+overview of how these algorithms are implemented in QUIC.
+
+When an ACK frame is received that newly acknowledges a packet, a QUIC sender

I'm now thinking we should drop newly because we also trigger loss on a timer.  If there's something subtle we're trying to say there, we should probably make it more explicit?

At some point, we discussed basing loss detection on the largest recently acknowledged packet(ie: in the last ACK), but I don't think that's what the pseudocode does and I don't think that's what the current gQUIC code does.  If we want to discuss that, maybe add a paragraph that the algorithm may be enhanced by doing so and it may reduce spurious retransmits in some cases?

> +upon detecting loss.  Implementations that detect spurious retransmissions and
+increase the reordering threshold in packets or time MAY choose to start with
+smaller initial reordering thresholds to minimize recovery latency.
+
+### Packet Threshold
+
+The RECOMMENDED initial value for the packet reordering threshold
+(kPacketThreshold) is 3, based on TCP loss detection {{?RFC5681}} {{?RFC6675}}.
+
+Some networks may exhibit higher degrees of reordering, causing a sender to
+detect spurious losses.  Implementers MAY use algorithms developed for TCP, such
+as TCP-NCR {{?RFC4653}}, to improve QUIC's reordering resilience.
+
+### Time Threshold {#time-threshold}
+
+Ack-based loss detection uses a time threshold to determine how much reordering

I find changing this sentence to start with "Ack-based" is confusing, because there's also the packet number threshold.

How about dropping this first sentence entirely, since I think it's said better above?

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/pull/2080#pullrequestreview-180523967