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

Jana Iyengar <notifications@github.com> Wed, 26 August 2020 00:43 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 D64453A091A for <quic-issues@ietfa.amsl.com>; Tue, 25 Aug 2020 17:43:01 -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 bm00WstD6pJX for <quic-issues@ietfa.amsl.com>; Tue, 25 Aug 2020 17:43:00 -0700 (PDT)
Received: from out-9.smtp.github.com (out-9.smtp.github.com [192.30.254.192]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 4D3FF3A0917 for <quic-issues@ietf.org>; Tue, 25 Aug 2020 17:43:00 -0700 (PDT)
Received: from github-lowworker-6b40fdd.va3-iad.github.net (github-lowworker-6b40fdd.va3-iad.github.net [10.48.16.64]) by smtp.github.com (Postfix) with ESMTP id BCD705801F1 for <quic-issues@ietf.org>; Tue, 25 Aug 2020 17:42:59 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1598402579; bh=lHoeMPHWEdUfNKrQ70cfAeZO9guz2wzgKzFrniyQ1AY=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=krLj1i06DdWI0ZkTTsdO3CUbbODcPD5pDN9w5+dFTyu6rYfxMfOyRRta2qrhcL4ol cbHxcUvMSuNc7qURctTJo43mdlCQNfsCkYIQsE2dN0dBSTcMy/jzSS5cl1DnEYk3lH cunnvqGBtQ/iTh4U78v9ahb2b53BXFOeHDHOJJGI=
Date: Tue, 25 Aug 2020 17:42:59 -0700
From: Jana Iyengar <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+AFTOJKYPTTE3EZ3CZ5QYUS55KGIRHEVBNHHCRYSBB4@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/475071512@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_5f45b01377803_931196449758d"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: janaiyengar
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/mKwuIbUg7c5gmr7xWgG34szlujM>
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: Wed, 26 Aug 2020 00:43:02 -0000

@janaiyengar commented on this pull request.

Thanks for doing this -- a few minor comments. Overall LGTM, but let's wait until iterations on #3978 end and we know where that lands.

> +
+The sender exits slow start and enters a recovery period when a packet is lost
+or when the ECN-CE count reported by its peer increases.
+
+A sender re-enters slow start any time the congestion window is less than the
+slow start threshold, which only occurs after persistent congestion is
+declared.
+
+### Recovery Period {#recovery-period}
+
+A sender enters the recovery period when it detects the loss of a packet or the
+ECN-CE count reported by its peer increases. A sender that is already in a
+recovery period stays in it and does not re-enter it.
+
+On entering a recovery period, a sender MUST set the slow start threshold to
+the half the value of the congestion window at the moment that loss is

```suggestion
half the value of the congestion window at the moment that loss is
```

>  
 The recovery period aims to limit congestion window reduction to once per round
-trip. Therefore during recovery, the congestion window remains unchanged
-irrespective of new losses or increases in the ECN-CE counter.
+trip. Therefore during a recovery period, the congestion window remains does

```suggestion
trip. Therefore during a recovery period, the congestion window does
```

> +sent during the recovery period is acknowledged. This is slightly different
+from TCP's definition of recovery, which ends when the lost packet that started
+recovery is acknowledged.

```suggestion
sent during the recovery period is acknowledged. This is slightly different
from TCP's definition of recovery, which ends when the lost segment that started
recovery is acknowledged ({{?RFC5681}}).
```

>  
 ~~~
 OnCongestionEvent(sent_time):
-  // Start a new congestion event if packet was sent after the
-  // start of the previous congestion recovery period.
-  if (!InCongestionRecovery(sent_time)):
-    congestion_recovery_start_time = now()
-    congestion_window *= kLossReductionFactor
-    congestion_window = max(congestion_window, kMinimumWindow)
-    ssthresh = congestion_window
-    // A packet can be sent to speed up loss recovery.
-    MaybeSendOnePacket()
+  // No reaction when recovery period.

```suggestion
  // No reaction if already in a recovery period.
```

> +                                        v
+ +------------+     Loss or       +------------+
+ | Congestion |  ECN-CE increase  |  Recovery  |
+ | Avoidance  |------------------>|   Period   |
+ +------------+                   +------------+
+           ^                            |
+           |                            |
+           +----------------------------+
+              Acknowledgment of packet
+                sent during recovery
+~~~
+{: #fig-cc-fsm title="Congestion Control States and Transitions"}
+
+These states and the transitions between them are described in subsequent
+sections.
+

Perhaps add a note about persistent congestion, since that's not an explicit state in this machine. Maybe something like "Note that a sender can declare persistent congestion in any of these states (see {{persistent-congestion}}), after which it enters slow start.".

-- 
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-475071512