Re: [quicwg/base-drafts] Persistent congestion pseudocode to match text (#4010)

Kazu Yamamoto <> Fri, 21 August 2020 20:06 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 5D2B23A1187 for <>; Fri, 21 Aug 2020 13:06:43 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -3.1
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: (amavisd-new); dkim=pass (1024-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id xm-NU4THmHOf for <>; Fri, 21 Aug 2020 13:06:42 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id DA06F3A1186 for <>; Fri, 21 Aug 2020 13:06:41 -0700 (PDT)
Received: from ( []) by (Postfix) with ESMTP id 21F48E0DD4 for <>; Fri, 21 Aug 2020 13:06:41 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=pf2014; t=1598040401; bh=Rrtyb+QOWC3zXJhMWYLGsSC2ckdPBMpAs52eupKbuPk=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=A6/qkzScRrny3DRnEM2RUUy1s0RWGw/VIJX49dLLvwVhWttzhApp7AEdYdTKw3PcF 8w/AZsVnaBaVP0qSA+camXmL9UVruahqh031KTbfEbtmYtUCYy98d4FxwklxJpo8Sw JmPIX6MfCVSzo3Rp2XjCs6IBwotJ6XU06Jmk3Htw=
Date: Fri, 21 Aug 2020 13:06:41 -0700
From: Kazu Yamamoto <>
Reply-To: quicwg/base-drafts <>
To: quicwg/base-drafts <>
Cc: Subscribed <>
Message-ID: <quicwg/base-drafts/pull/4010/>
In-Reply-To: <quicwg/base-drafts/pull/>
References: <quicwg/base-drafts/pull/>
Subject: Re: [quicwg/base-drafts] Persistent congestion pseudocode to match text (#4010)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5f40295112d91_77251964150623"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: kazu-yamamoto
X-GitHub-Recipient: quic-issues
X-GitHub-Reason: subscribed
X-Auto-Response-Suppress: All
Archived-At: <>
X-Mailman-Version: 2.1.29
List-Id: Notification list for GitHub issues related to the QUIC WG <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Fri, 21 Aug 2020 20:06:43 -0000

@martinthomson I have implemented this in Haskell quic.

1) With this pseudocode, *global* sequence number (unique and contiguous across the packet number space) is necessary to find the largest contiguity. In Haskell implementation, no additional field is necessary because packet numbers are unique globally.

2) It seems to me that `pc_lost` is over engineering if it is used only to detect persistent congestion. However, this structure can be also used to prevent spurious retransmission due to reordering, pointed out @kazuho. For example, if an endpoint receives ACK 1,3 and then ACK 2, the current pseudo code interprets that packet 2 is lost. If we use `pc_lost` as lost packet candicates and delay the decision, this issue can be resolved. So, we can justify the introduction of `pc_lost`. :-)

3) `pc_lost` consumes much resource because it is cleared only when persistent congestion happens. But, if we use `pc_lost` as lost packet candidates, it should be reduced when retransmission. Since the pseudocode does not describe how retransmission is implemented, we can left how to reduce `pc_lost` as implementation dependent and need not to implement it in this pseudocode.

You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub: