Re: [quicwg/base-drafts] Add some MUSTs to congestion control (#3978)

Jana Iyengar <notifications@github.com> Fri, 21 August 2020 00:54 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 E3AA03A14F4 for <quic-issues@ietfa.amsl.com>; Thu, 20 Aug 2020 17:54:58 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.101
X-Spam-Level:
X-Spam-Status: No, score=-3.101 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_H2=-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 Oy4STIbPdusb for <quic-issues@ietfa.amsl.com>; Thu, 20 Aug 2020 17:54:57 -0700 (PDT)
Received: from out-22.smtp.github.com (out-22.smtp.github.com [192.30.252.205]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 80D103A14F3 for <quic-issues@ietf.org>; Thu, 20 Aug 2020 17:54:57 -0700 (PDT)
Received: from github-lowworker-c53a806.ac4-iad.github.net (github-lowworker-c53a806.ac4-iad.github.net [10.52.23.45]) by smtp.github.com (Postfix) with ESMTP id 85E1B56059B for <quic-issues@ietf.org>; Thu, 20 Aug 2020 17:54:56 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1597971296; bh=IXMokFid/ZhbSvZGQFmrL31Lm4B7i2sqnia2gYHxc+g=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=gncrK/k1cjN/kfjD0TBVaPklPKi70rmL/hhR5KZvEb1hxAnZBFNGpzlCviTM0cN82 MSAaPvZGVH2RCsLtcHoIAqVCLqKeV74epmUWFwIj6fNN2E5bPRMbYCvmpfCBqmYY6m xaQl3PmsDLlVBIT2CpsPSf/vCmW4RM9J9h7d/RnE=
Date: Thu, 20 Aug 2020 17:54:56 -0700
From: Jana Iyengar <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+AFTOJK66CWXY4QM46QUINUN5JL6GBEVBNHHCQBGZIM@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/pull/3978/review/472076834@github.com>
In-Reply-To: <quicwg/base-drafts/pull/3978@github.com>
References: <quicwg/base-drafts/pull/3978@github.com>
Subject: Re: [quicwg/base-drafts] Add some MUSTs to congestion control (#3978)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5f3f1b6075f5a_631e196418165b"; 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/RsHtCwvkB80NnXqhPNFwi5Kykxs>
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: Fri, 21 Aug 2020 00:54:59 -0000

@janaiyengar commented on this pull request.



> @@ -767,20 +767,22 @@ While in slow start, QUIC increases the congestion window by the
 number of bytes acknowledged when each acknowledgment is processed, resulting
 in exponential growth of the congestion window.
 
-QUIC exits slow start upon loss or upon increase in the ECN-CE counter.
-When slow start is exited, the congestion window halves and the slow start
-threshold is set to the new congestion window.  QUIC re-enters slow start
-any time the congestion window is less than the slow start threshold,
-which only occurs after persistent congestion is declared.
+QUIC MUST exit slow start and enter congestion avoidance upon loss or upon
+increase in the ECN-CE counter. When slow start is exited, the congestion
+window halves and the slow start threshold is set to the new congestion

That's what TCP does, but that's not necessary in QUIC. Consider what happens in TCP: until the sender leaves recovery, it cannot grow the cwnd, and since the left edge of the cwnd is anchored to the cumulative ack point, the sender cannot send anything new. It can only keep retransmitting. In other words, the cwnd governs how much data to send and also _which data to send_. To allow for a sender to send new data, TCP allows inflating the cwnd which is deflated on leaving recovery, which in the best case is 1 RTT after loss.

QUIC deliberately avoids this problem, and the cwnd is not anchored to a left edge. It's an abstract limit on the bytes in flight, and says nothing about which data can be sent. So, as data gets acked, and as the bytes in flight reduces to 1/2 the value at loss, the sender can start sending again. This would happen 1/2 RTT after loss.

So at the end of the "recovery period", i.e., 1 RTT after loss:
- TCP would have sent nothing if its cwnd were reduced immediately on loss. 
- QUIC would have been sending for 1/2 RTT (it would send as much as is allowed by the new cwnd basically).

This is also why simply referencing 5681 won't do. The semantics of cwnd are different.

-- 
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/3978#discussion_r474349285