Re: [quicwg/base-drafts] MUST ACK each ack-eliciting packet once (#3092)

Mike Bishop <> Thu, 24 October 2019 19:34 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id D4192120025 for <>; Thu, 24 Oct 2019 12:34:14 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -8
X-Spam-Status: No, score=-8 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, HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, RCVD_IN_DNSWL_HI=-5, 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 eMn3BKE5onAM for <>; Thu, 24 Oct 2019 12:34:13 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 203ED120020 for <>; Thu, 24 Oct 2019 12:34:13 -0700 (PDT)
Date: Thu, 24 Oct 2019 12:34:12 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=pf2014; t=1571945652; bh=kRfOORERhv14owXgHErKYd8JOAJT0rP09BqXyxPoU6E=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=gal3JyYjfvsCi+o2WXZhgTS0g4tmC81b0HmKGEDUf2W57BieDzwoRENRRzP5BBtIq hnKIxhEpiFHlvmVU8aS5Qjgcjt0j/dkKpsPOEjnx1vTH/hoI4ktbuDIIzVXf4ZK2hV 9fqL9W5xDBOMsBPMYV8I9kuKJF4OPOIu4h/0H1f4=
From: Mike Bishop <>
Reply-To: quicwg/base-drafts <>
To: quicwg/base-drafts <>
Cc: Subscribed <>
Message-ID: <quicwg/base-drafts/pull/3092/review/>
In-Reply-To: <quicwg/base-drafts/pull/>
References: <quicwg/base-drafts/pull/>
Subject: Re: [quicwg/base-drafts] MUST ACK each ack-eliciting packet once (#3092)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5db1fcb430645_5173fd0764cd96c951e9"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: MikeBishop
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: Thu, 24 Oct 2019 19:34:15 -0000

MikeBishop commented on this pull request.

> +Every packet SHOULD be acknowledged at least once, and ack-eliciting packets
+MUST be acknowledged at least once within the maximum ack delay. An endpoint

No, it doesn't, because you have no guarantee that you received every ACK the peer sent.  This requires the peer to put every packet into an ACK frame sent in at least one packet; there's no requirement to ensure that it's delivered reliably to the peer.  Thus, if you haven't received an ACK, that doesn't mean the peer didn't received the packet anyway.  It could be delayed and still in transit, or the ACK might have been lost.

That said, there's no actual difference between "MUST ack every packet, but not reliably" and "SHOULD ack every packet" from the other side's point of view.  This is something that could be bench-tested on an implementation, but can't be ascertained about the peer over a lossy network.

> @@ -3007,25 +3007,26 @@ guidance offered below seeks to strike this balance.
 ### Sending ACK Frames {#sending-acknowledgements}
+Every packet SHOULD be acknowledged at least once, and ack-eliciting packets
+MUST be acknowledged at least once within the maximum ack delay. An endpoint
+communicates its maximum delay using the max_ack_delay transport parameter;
+see {{transport-parameter-definitions}}.  max_ack_delay declares an explicit

It's probably correct to start the sentence with a lower-case letter, since this is a literal name of a protocol element, but it looks weird.  Consider rephrasing to avoid the question.

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