Re: [quicwg/base-drafts] State machine for CC (#4055)

ianswett <notifications@github.com> Tue, 01 September 2020 23:45 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 181C73A043E for <quic-issues@ietfa.amsl.com>; Tue, 1 Sep 2020 16:45:10 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.098
X-Spam-Level:
X-Spam-Status: No, score=-3.098 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, 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 fX13YrVcq8j9 for <quic-issues@ietfa.amsl.com>; Tue, 1 Sep 2020 16:45:08 -0700 (PDT)
Received: from out-16.smtp.github.com (out-16.smtp.github.com [192.30.254.199]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 8E3E93A0417 for <quic-issues@ietf.org>; Tue, 1 Sep 2020 16:45:08 -0700 (PDT)
Received: from github-lowworker-39b4a70.va3-iad.github.net (github-lowworker-39b4a70.va3-iad.github.net [10.48.16.66]) by smtp.github.com (Postfix) with ESMTP id 0B0747A0068 for <quic-issues@ietf.org>; Tue, 1 Sep 2020 16:45:06 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1599003906; bh=xa/XngcGNz/v6FhchTOMTP4Xdng5AQhxEvdU8Vw3cho=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=jdaaZiHikzMJaShObL1lerx6Cmy3OX9ep4WrqTVzfkxgxc5i9dQLXzOqlOfNBaBGS 4qXL+4XyWlUHKa/vO8sgj5rWAiEqcZ8bOf+ju4aJ/K6f6JFkUOa/lhMfQR+aDWbaE1 P1VnXQ1WWXqjdb8/esdywoGo6L8BoJmkRaoL/ETE=
Date: Tue, 01 Sep 2020 16:45:05 -0700
From: ianswett <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+AFTOJK2L3EN2BXI4FQ353AF5LK7ADEVBNHHCRYSBB4@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/pull/4055/review/480182596@github.com>
In-Reply-To: <quicwg/base-drafts/pull/4055@github.com>
References: <quicwg/base-drafts/pull/4055@github.com>
Subject: Re: [quicwg/base-drafts] State machine for CC (#4055)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5f4edd01d87ee_19481964212444"; 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/aSeyxfUjAMG283pOkwHcNudu9c4>
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: Tue, 01 Sep 2020 23:45:10 -0000

@ianswett commented on this pull request.

This is a large change, but is largely good.  Some suggestions, particularly around the use of Recovery as a state vs the "recovery period"

>  
-While in slow start, a NewReno sender increases the congestion window by the
-number of bytes acknowledged when each acknowledgment is processed, resulting in
+The congestion controller has three distinct states, as shown in
+{{fig-cc-fsm}}.
+
+~~~
+                 Start or         +------------+

Start seems odd to me, maybe "New Path"?

```suggestion
                 New Path or         +------------+
```

>  exponential growth of the congestion window.
 
-A sender MUST exit slow start and enter recovery when a loss is detected or when
-the ECN-CE counter reported by the peer increases.
+The sender exits slow start and enters a recovery period when a packet is lost

I think we need to keep the MUST?

```suggestion
The sender MUST exit slow start and enter a recovery period when a packet is lost
```

>  
-A sender MUST exit congestion avoidance and enter recovery when a loss is
-detected or when the ECN-CE counter reported by the peer increases.
+On entering a recovery period, a sender MUST set the slow start threshold to
+half the value of the congestion window at the moment that loss is

```suggestion
half the value of the congestion window when loss is
```

>  
-## Congestion Avoidance
+### Recovery Period {#recovery-period}

I think this should be "Recovery", not recovery period, since "Recovery" is a state, just like Slow Start is a state.  When we only referred to recovery period in a few spots, it seemed ok, but I've always heard the phrase "enter recovery", never "enters a recovery period".

>  
-A sender MUST exit congestion avoidance and enter recovery when a loss is
-detected or when the ECN-CE counter reported by the peer increases.
+On entering a recovery period, a sender MUST set the slow start threshold to
+half the value of the congestion window at the moment that loss is
+detected. The congestion window MUST be set to the reduced value of the slow
+start threshold before exiting the recovery period. Implementations MAY set the

I prefer the organization the existing text for this paragraph, and starting the new paragraph with "Implementations MAY..."

> @@ -1653,20 +1697,21 @@ OnPacketAcked(acked_packet):
 ## On New Congestion Event
 
 Invoked from ProcessECN and OnPacketsLost when a new congestion event is
-detected. May start a new recovery period and reduces the congestion
-window.
+detected. If not in a recovery period, this starts a recovery period and

This is a good example of 'recovery' the state vs  the 'recovery period'.

```suggestion
detected. If not already in recovery, this starts a recovery period and
```

-- 
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/4055#pullrequestreview-480182596