Re: [quicwg/base-drafts] Why min CWND of 2 instead of 1 (#3586)

Martin Thomson <notifications@github.com> Mon, 20 April 2020 23:33 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 A91773A082F for <quic-issues@ietfa.amsl.com>; Mon, 20 Apr 2020 16:33:19 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.2
X-Spam-Level:
X-Spam-Status: No, score=-1.2 tagged_above=-999 required=5 tests=[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, 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 oAbLxqiHqiqO for <quic-issues@ietfa.amsl.com>; Mon, 20 Apr 2020 16:33:18 -0700 (PDT)
Received: from out-3.smtp.github.com (out-3.smtp.github.com [192.30.252.194]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id DEA943A0821 for <quic-issues@ietf.org>; Mon, 20 Apr 2020 16:33:17 -0700 (PDT)
Received: from github-lowworker-1b8c660.ash1-iad.github.net (github-lowworker-1b8c660.ash1-iad.github.net [10.56.18.59]) by smtp.github.com (Postfix) with ESMTP id F21D42C0F6E for <quic-issues@ietf.org>; Mon, 20 Apr 2020 16:33:16 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1587425596; bh=u89rJ8w+YAreNBXJRwnA/4b/46vnTVzNpzdKGXpsJ3I=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=wKo0YTZH5AtlIpBpTHE7Us8rKLc1+vMk5UC9FPIMU35xFPaIpyarYxpFOthI6Av1t IiT2JZE7rmk4Lq6wDhiL7jITSLCUWV/QFTFzHsWyquDQU4EIXBYHkpMl569edHuq+I bem244Q+YQjVMQ4VQAs+BW2UuGMZLA1IeruUZXtI=
Date: Mon, 20 Apr 2020 16:33:16 -0700
From: Martin Thomson <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+AFTOJK5RYCVYUQTVYDO7YPF4VIJDZEVBNHHCH3TLYY@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/pull/3586/review/396884672@github.com>
In-Reply-To: <quicwg/base-drafts/pull/3586@github.com>
References: <quicwg/base-drafts/pull/3586@github.com>
Subject: Re: [quicwg/base-drafts] Why min CWND of 2 instead of 1 (#3586)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5e9e313ce2e2b_529f3f98ecccd96c1350d5"; charset=UTF-8
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: martinthomson
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/qPkBtAr2rmQJitOZgaOC1ZKm-m8>
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: Mon, 20 Apr 2020 23:33:20 -0000

@martinthomson commented on this pull request.



> @@ -245,6 +245,15 @@ QUIC specifies a time-based definition to ensure one or more packets are sent
 prior to a dramatic decrease in congestion window; see
 {{persistent-congestion}}.
 
+### The Minimum Congestion Window is 2 Packets
+
+QUIC recommends that the minimum congestion window be 2 packets instead
+of the 1 packet minimum in TCP. A minimum of 2 packets avoids waiting for a
+delayed acknowledgement, which can substantially decrease throughput,
+particularly if the max_ack_delay is larger than the round trip time.
+A 2 packet minimum congestion window also avoids waiting for a probe
+timeout(see {{pto}}) every time a single packet is lost.

```suggestion
timeout (see {{pto}}) every time a single packet is lost.
```

> +A 2 packet minimum congestion window also avoids waiting for a probe
+timeout(see {{pto}}) every time a single packet is lost.

I don't think that this is saying exactly what you want to say.

The point here, if I understand it, is that when an endpoint detects persistent congestion and reduces the window to the minimum, having two packets means that there is a far lower chance of BOTH of those packets being lost.  That greatly improves the likelihood that an acknowledgment will be returned and the connection can start to claw itself out of the hole it found itself in.

The point about sending a probe on PTO is only a consequence of the above; I wouldn't bother mentioning PTO.

> +of the 1 packet minimum in TCP. A minimum of 2 packets avoids waiting for a
+delayed acknowledgement, which can substantially decrease throughput,
+particularly if the max_ack_delay is larger than the round trip time.

I'm not sure that this is true.  Hitting the minimum congestion window occurs after persistent congestion, at which point we might assume that any packet getting through will cause an immediate ACK (as there is likely a vast gap).  The only case where that doesn't happen is if only ACKs are being lost, where sending two packets don't help much as only the loss of the first will trigger an immediate ACK.

I think that the point below is stronger.

-- 
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/3586#pullrequestreview-396884672