Re: [quicwg/base-drafts] Restarting from idle (#2023)

janaiyengar <notifications@github.com> Tue, 20 November 2018 20:13 UTC

Return-Path: <bounces+848413-a050-quic-issues=ietf.org@sgmail.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 6AABE130DCF for <quic-issues@ietfa.amsl.com>; Tue, 20 Nov 2018 12:13:53 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.47
X-Spam-Level:
X-Spam-Status: No, score=-3.47 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.47, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, RCVD_IN_DNSWL_NONE=-0.0001, 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 ixaQRz41Qnso for <quic-issues@ietfa.amsl.com>; Tue, 20 Nov 2018 12:13:51 -0800 (PST)
Received: from o4.sgmail.github.com (o4.sgmail.github.com [192.254.112.99]) (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 0C01B12D4E9 for <quic-issues@ietf.org>; Tue, 20 Nov 2018 12:13:50 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=github.com; h=from:reply-to:to:cc:in-reply-to:references:subject:mime-version:content-type:content-transfer-encoding:list-id:list-archive:list-post:list-unsubscribe; s=s20150108; bh=hR6A+xA0eV83Vo6Z2yIlbY2CDMw=; b=EUtFf5dgXmYIPopn VFLVxXTByKvaBtloKIoZhEHf32R9HlmAmw3rf0Jr3Y26hBWcP9F5yrdkegb4c6W+ y1uN0V9U6+rhKLqXCVz4JXG/vkcUGMpuzviroJsXrQoWJiMy/I8EyJJlds7sMRBe YQqJw/Kg1ulDvh8vE6tn9gssXxA=
Received: by filter0251p1iad2.sendgrid.net with SMTP id filter0251p1iad2-15077-5BF46AFE-4 2018-11-20 20:13:50.125321353 +0000 UTC m=+417301.220319447
Received: from github-lowworker-f6df7df.cp1-iad.github.net (unknown [192.30.252.41]) by ismtpd0030p1mdw1.sendgrid.net (SG) with ESMTP id 4uzn9-bHTD-0poIuoTZoDQ for <quic-issues@ietf.org>; Tue, 20 Nov 2018 20:13:50.032 +0000 (UTC)
Received: from github.com (localhost [127.0.0.1]) by github-lowworker-f6df7df.cp1-iad.github.net (Postfix) with ESMTP id D565B3E026B for <quic-issues@ietf.org>; Tue, 20 Nov 2018 12:13:49 -0800 (PST)
Date: Tue, 20 Nov 2018 20:13:50 +0000
From: janaiyengar <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+0166e4abe1ad0dafbeb47771ed4f3c7ad48dc34cd52f290f92cf00000001180c2cfd92a169ce16d1022c@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/pull/2023/review/176947468@github.com>
In-Reply-To: <quicwg/base-drafts/pull/2023@github.com>
References: <quicwg/base-drafts/pull/2023@github.com>
Subject: Re: [quicwg/base-drafts] Restarting from idle (#2023)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5bf46afdd396e_5bb53ffa5ecd45b84267e1"; 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
X-SG-EID: l64QuQ2uJCcEyUykJbxN122A6QRmEpucztpreh3Pak2lgfq1sftB9ogjqnXcPt2WpModff53In6R2J IIbAstUcBkYu97uGFY5LfloZ0qtuwsPMIzQDvIehq67fHbNRcZ+4/Vo7L4PZa2+3BA4xhOCUf+TM+K WMQcI7FznP9ohfHXqYXvqvJNaiWxUldVnT8VcAda0vXQ6K26Ir6amFP7R/dbCXcI7Xa+FDU56N66sW c=
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic-issues/EklZbDXJ94V-RM3mSGqHF3-G0oM>
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, 20 Nov 2018 20:13:53 -0000

janaiyengar commented on this pull request.



> @@ -1040,6 +1040,24 @@ As an example of a well-known and publicly available implementation of a flow
 pacer, implementers are referred to the Fair Queue packet scheduler (fq qdisc)
 in Linux (3.11 onwards).
 
+## Resumption from idle
+
+A connection is idle if bytes in flight is 0 and there is nothing

"if there are no bytes in flight"

> @@ -1040,6 +1040,24 @@ As an example of a well-known and publicly available implementation of a flow
 pacer, implementers are referred to the Fair Queue packet scheduler (fq qdisc)
 in Linux (3.11 onwards).
 
+## Resumption from idle
+
+A connection is idle if bytes in flight is 0 and there is nothing
+retransmittable to send.  This occurs when the connection is application

"no pending retransmittable data to send"

> @@ -1040,6 +1040,24 @@ As an example of a well-known and publicly available implementation of a flow
 pacer, implementers are referred to the Fair Queue packet scheduler (fq qdisc)
 in Linux (3.11 onwards).
 
+## Resumption from idle
+
+A connection is idle if bytes in flight is 0 and there is nothing
+retransmittable to send.  This occurs when the connection is application
+limited and after a verified retransmission timeout.  In order to limit the

"This can occur when the connection is application limited, or after a retransmission timeout." @pravb had some concerns about not doing this on unverified RTOs, about the safety of not reducing the cwnd if there was an rtt spike.

> @@ -1040,6 +1040,24 @@ As an example of a well-known and publicly available implementation of a flow
 pacer, implementers are referred to the Fair Queue packet scheduler (fq qdisc)
 in Linux (3.11 onwards).
 
+## Resumption from idle

```suggestion
## Restart after idle
```

> @@ -1040,6 +1040,24 @@ As an example of a well-known and publicly available implementation of a flow
 pacer, implementers are referred to the Fair Queue packet scheduler (fq qdisc)
 in Linux (3.11 onwards).
 
+## Resumption from idle
+
+A connection is idle if bytes in flight is 0 and there is nothing
+retransmittable to send.  This occurs when the connection is application
+limited and after a verified retransmission timeout.  In order to limit the
+size of bursts sent into the network, the behavior when restarting from idle
+depends upon whether pacing is used.
+
+If pacing is used, the connection should limit the initial burst of packets to

"If the sender uses pacing"

> @@ -1040,6 +1040,24 @@ As an example of a well-known and publicly available implementation of a flow
 pacer, implementers are referred to the Fair Queue packet scheduler (fq qdisc)
 in Linux (3.11 onwards).
 
+## Resumption from idle
+
+A connection is idle if bytes in flight is 0 and there is nothing
+retransmittable to send.  This occurs when the connection is application
+limited and after a verified retransmission timeout.  In order to limit the
+size of bursts sent into the network, the behavior when restarting from idle
+depends upon whether pacing is used.
+
+If pacing is used, the connection should limit the initial burst of packets to
+no more than the initial congestion window and subsequent packets SHOULD be
+paced. The congestion window does not change while the connection is idle.
+
+If pacing is not used, the congestion window SHOULD be reset to the minimum of

"If the sender does not use pacing"

> @@ -1040,6 +1040,24 @@ As an example of a well-known and publicly available implementation of a flow
 pacer, implementers are referred to the Fair Queue packet scheduler (fq qdisc)
 in Linux (3.11 onwards).
 
+## Resumption from idle
+
+A connection is idle if bytes in flight is 0 and there is nothing
+retransmittable to send.  This occurs when the connection is application
+limited and after a verified retransmission timeout.  In order to limit the
+size of bursts sent into the network, the behavior when restarting from idle
+depends upon whether pacing is used.
+
+If pacing is used, the connection should limit the initial burst of packets to
+no more than the initial congestion window and subsequent packets SHOULD be
+paced. The congestion window does not change while the connection is idle.

I don't think this initial burst bit is necessary. All you need to say is that if the sender uses pacing, the cwnd does not need to be reduced. How about "A sender that uses pacing can retain its congestion window through an idle period."

> +
+A connection is idle if bytes in flight is 0 and there is nothing
+retransmittable to send.  This occurs when the connection is application
+limited and after a verified retransmission timeout.  In order to limit the
+size of bursts sent into the network, the behavior when restarting from idle
+depends upon whether pacing is used.
+
+If pacing is used, the connection should limit the initial burst of packets to
+no more than the initial congestion window and subsequent packets SHOULD be
+paced. The congestion window does not change while the connection is idle.
+
+If pacing is not used, the congestion window SHOULD be reset to the minimum of
+the current congestion window and the initial congestion window.  If the
+slow start threshold is larger than the congestion window, the congestion window
+will grow back to the congestion window prior to idle via slow start.  This
+recommendation is based on Section 4.1 of {{?RFC5681}}.

Similarly, I would reduce this to a sentence and remove the sentence about slow start. I'm ok with leaving the ref to 5681 in here, but I would like to remove it in a later PR and replace it with more text explaining the rationale directly (instead of pointing to 5681). 

For now, how about "A sender that does not use pacing SHOULD reset its congestion window to the minimum of the current congestion window and the initial congestion window.  This recommendation is based on Section 4.1 of {{?RFC5681}}."

> @@ -1040,6 +1040,21 @@ As an example of a well-known and publicly available implementation of a flow
 pacer, implementers are referred to the Fair Queue packet scheduler (fq qdisc)
 in Linux (3.11 onwards).
 
+## Resumption from idle
+
+A connection is idle if bytes in flight is 0 and there is nothing retransmittable
+to send.  In order to limit the size of bursts sent into the network, the
+behavior when restarting from idle depends upon whether pacing is used.
+
+If pacing is used, the connection should limit the initial burst of packets to
+no more than the initial congestion window and subsequent packets SHOULD be paced.
+The congestion window does not change while the connection is idle.
+
+If pacing is not used, the congestion window SHOULD be reset to the minimum of
+the current congestion window and the initial congestion window.  If the
+slow start threshold is larger than the congestion window, the congestion window
+will grow back to the congestion window prior to idle via slow start.
+
 ## Pseudocode

RFC 2861 describes how to do this exponentially, but that was always considered too aggressive and resulted in folks turning it off in real deployments.  The new one is RFC 7661, which reduces the cwnd once to max(cwnd/2, IW) and ssthresh to max(ssthresh, 3/4 x cwnd).  We could use these reductions here, though 7661 is an experimental RFC, since it has gone through TCPM review.

-- 
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/2023#pullrequestreview-176947468