Re: [quicwg/base-drafts] Persistent Congestion Time Threshold (#2365)

ianswett <notifications@github.com> Wed, 23 January 2019 20:56 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 EDC4E130ECD for <quic-issues@ietfa.amsl.com>; Wed, 23 Jan 2019 12:56:42 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.553
X-Spam-Level:
X-Spam-Status: No, score=-7.553 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-4.553, 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 q7YQfgnycm2F for <quic-issues@ietfa.amsl.com>; Wed, 23 Jan 2019 12:56:40 -0800 (PST)
Received: from o9.sgmail.github.com (o9.sgmail.github.com [167.89.101.2]) (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 448C5126CC7 for <quic-issues@ietf.org>; Wed, 23 Jan 2019 12:56:40 -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=yGLKMPUiztwJx4KQ5ecBVX32X7s=; b=J4MtENWG/zcbEgOh 3KNCwXxitH0iB8vTD+KrfYd1yrZWs0kueYRlFI9rD+bhfjvY95NifWEFxBpqDFLx yGfxMMjFd0AMuUHYBJnnMRfGMVye1mij0fxBmzaDchmmcpM8gIbn68U6lm1egFBk o2rdnmbu6vw1HcxmiZhItyd9jWk=
Received: by filter0439p1iad2.sendgrid.net with SMTP id filter0439p1iad2-6090-5C48D507-2 2019-01-23 20:56:39.136110584 +0000 UTC m=+18875.551518385
Received: from github-lowworker-e8fa9ff.cp1-iad.github.net (unknown [192.30.252.43]) by ismtpd0001p1iad1.sendgrid.net (SG) with ESMTP id aYxcDCb2SvGo5Knc6ou2Hg for <quic-issues@ietf.org>; Wed, 23 Jan 2019 20:56:39.118 +0000 (UTC)
Received: from github.com (localhost [127.0.0.1]) by github-lowworker-e8fa9ff.cp1-iad.github.net (Postfix) with ESMTP id 1B492420327 for <quic-issues@ietf.org>; Wed, 23 Jan 2019 12:56:39 -0800 (PST)
Date: Wed, 23 Jan 2019 20:56:39 +0000
From: ianswett <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+0166e4ab3b85cbdf9fb115ad1210ee2c623da675d72445b092cf000000011860970792a169ce17fab1f6@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/pull/2365/review/195737638@github.com>
In-Reply-To: <quicwg/base-drafts/pull/2365@github.com>
References: <quicwg/base-drafts/pull/2365@github.com>
Subject: Re: [quicwg/base-drafts] Persistent Congestion Time Threshold (#2365)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5c48d50718fc1_44f93fc2f14d45c44704e6"; 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
X-SG-EID: l64QuQ2uJCcEyUykJbxN122A6QRmEpucztpreh3Pak1rXw2fmqB8Y02JDOPBkRlz/RPm8+Lnp5qF44 jCfeJLv82hTfOWGm5jIOkRwnPrbojGeXSg/Z/u0GTeSUnN0vH1xLHL8cXBTeiZFn9twOa5kEqqOmPx 1Wgo7848oICEWuBwB6rkAi3uoBw1kzxsZYNj2Wc22Bt01Ji2LbfWHSI5tA==
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic-issues/ilXBy4A4w4QPjXl-JdKSucF3WqM>
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, 23 Jan 2019 20:56:43 -0000

ianswett commented on this pull request.

Thanks Nick, a few suggestions.

> @@ -1003,14 +1003,21 @@ packets might cause the sender's bytes in flight to exceed the congestion window
 until an acknowledgement is received that establishes loss or delivery of
 packets.
 
-When an ACK frame is received that establishes loss of all in-flight packets
-sent prior to a threshold number of consecutive PTOs (pto_count is more than
-kPersistentCongestionThreshold, see {{cc-consts-of-interest}}), the network is
-considered to be experiencing persistent congestion, and the sender's congestion
-window MUST be reduced to the minimum congestion window (kMinimumWindow).  This
-response of collapsing the congestion window on persistent congestion is
-functionally similar to a sender's response on a Retransmission Timeout (RTO) in
-TCP {{RFC5681}}.
+## Persistent Congestion
+
+The network is considered to be experiencing persistent congestion when the
+sender goes a period of time without receiving any ACK frames for its in-flight,
+ack-eliciting packets.  Generally, this can be calculated as a number of
+consecutive PTOs (pto_count is more than  kPersistentCongestionThreshold, see
+{{cc-consts-of-interest}}), but since a PTO only occurs if no other

How about "but since the PTO timer is reset when a new ack-eliciting packet is sent,"

> @@ -1132,6 +1144,8 @@ increases bytes_in_flight.
 
 ~~~
    OnPacketSentCC(bytes_sent):
+     if (bytes_in_flight == 0):
+       probe_start_time = Now()

It's important not to start this if the packet isn't ack-eliciting, but I will say that requirement makes this more complex, since you have to track the first ack-eliciting packet to be sent.

> @@ -1147,6 +1161,8 @@ acked_packet from sent_packets.
    OnPacketAckedCC(acked_packet):
      // Remove from bytes_in_flight.
      bytes_in_flight -= acked_packet.size
+     if (bytes_in_flight != 0):
+       probe_start_time = Now()

I don't think it's necessary to check bytes_in_flight != 0 here?

> @@ -1003,14 +1003,21 @@ packets might cause the sender's bytes in flight to exceed the congestion window
 until an acknowledgement is received that establishes loss or delivery of
 packets.
 
-When an ACK frame is received that establishes loss of all in-flight packets
-sent prior to a threshold number of consecutive PTOs (pto_count is more than
-kPersistentCongestionThreshold, see {{cc-consts-of-interest}}), the network is
-considered to be experiencing persistent congestion, and the sender's congestion
-window MUST be reduced to the minimum congestion window (kMinimumWindow).  This
-response of collapsing the congestion window on persistent congestion is
-functionally similar to a sender's response on a Retransmission Timeout (RTO) in
-TCP {{RFC5681}}.
+## Persistent Congestion

I think this should be a sub-section of Probe Timeout?

-- 
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/2365#pullrequestreview-195737638