Re: [quicwg/base-drafts] Attempt to define slow start/congestion avoidance (#4005)

mirjak <notifications@github.com> Mon, 17 August 2020 09:36 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 043613A1461 for <quic-issues@ietfa.amsl.com>; Mon, 17 Aug 2020 02:36:30 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.1
X-Spam-Level:
X-Spam-Status: No, score=-3.1 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_IMAGE_ONLY_32=0.001, 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 3GTMCMXzhKOY for <quic-issues@ietfa.amsl.com>; Mon, 17 Aug 2020 02:36:28 -0700 (PDT)
Received: from out-27.smtp.github.com (out-27.smtp.github.com [192.30.252.210]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id AAE6A3A145F for <quic-issues@ietf.org>; Mon, 17 Aug 2020 02:36:28 -0700 (PDT)
Received: from github-lowworker-f62aa54.va3-iad.github.net (github-lowworker-f62aa54.va3-iad.github.net [10.48.17.68]) by smtp.github.com (Postfix) with ESMTP id DBFDC900D16 for <quic-issues@ietf.org>; Mon, 17 Aug 2020 02:36:27 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1597656987; bh=bT0n9ACXQ74glrpDgVPj/pU/bypv1v2tjhxMe9boQk0=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=S2sDuW8HkgtYxIg656YJQ7a1Y3zNxr+hKajHrAhhjSSQv06v9OYLyz/HjCBLqkavg Fz05W3VjOxzBgAfOomiOhzfht3C1Vsu6wjsQIkffE/v6t5DHHflYgoWA44fWyoLn3S 5LOyh4+Ra4ZUdMWUr+NUWrHrwAFBW5j5u2fnZryY=
Date: Mon, 17 Aug 2020 02:36:27 -0700
From: mirjak <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+AFTOJK4M24NGCRB4VOTO4RF5IYYJXEVBNHHCRBYB7A@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/pull/4005/review/468312505@github.com>
In-Reply-To: <quicwg/base-drafts/pull/4005@github.com>
References: <quicwg/base-drafts/pull/4005@github.com>
Subject: Re: [quicwg/base-drafts] Attempt to define slow start/congestion avoidance (#4005)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5f3a4f9bcc820_21ef19647278ef"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: mirjak
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/Li1yupBIyITqUIjPC2Swz0aNLnA>
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, 17 Aug 2020 09:36:30 -0000

@mirjak commented on this pull request.



> -Additive Increase Multiplicative Decrease (AIMD) approach that increases
-the congestion window by one maximum packet size per congestion window
-acknowledged.  When a loss or ECN-CE marking is detected, NewReno halves
-the congestion window, sets the slow start threshold to the new
-congestion window, and then enters the recovery period.
+The congestion controller is in congestion avoidance any time the congestion
+window is at or above the slow start threshold.
+
+Congestion avoidance uses an Additive Increase Multiplicative Decrease (AIMD)
+approach that increases the congestion window by one maximum packet size per
+congestion window acknowledged.
+
+When first entering congestion avoidance, when a packet is declared lost, or
+when the ECN-CE count is detected, the congestion controller halves the
+congestion window, reduces the slow start threshold to the resulting size, and
+enters the recovery period.

I'm just realising this now but this is actually not how TCP works. When you enter recovery you halve the ssthresh (basically to remember the right value for later). Then what TCP does is that is keeps sending one new packet for each ACK received (conservation principle: not know which or how many packets have been ACKed but know there must be at least one successful received and leaving the network) and then when all losses are repaired it sets the cwnd to ssthresh and leaves recovery. If you halve cwnd immediately when entering recovery, you can't send data for half an RTT until you received enough ACKs to be below the cwnd. This is usually not what you want.

-- 
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/4005#pullrequestreview-468312505