Re: [quicwg/base-drafts] Clarify ACK of ACKs and bundling a PING (#2794)
Jana Iyengar <notifications@github.com> Tue, 02 July 2019 22:56 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 7FFD212012A for <quic-issues@ietfa.amsl.com>; Tue, 2 Jul 2019 15:56:03 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -8
X-Spam-Level:
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: 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 46vkvjTImOk9 for <quic-issues@ietfa.amsl.com>; Tue, 2 Jul 2019 15:55:59 -0700 (PDT)
Received: from out-19.smtp.github.com (out-19.smtp.github.com [192.30.252.202]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 35FD4120106 for <quic-issues@ietf.org>; Tue, 2 Jul 2019 15:55:59 -0700 (PDT)
Date: Tue, 02 Jul 2019 15:55:57 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1562108157; bh=yQcUyKARCO2P3GCEG+VLTcDrTcV85TrpJdp5Rz8zLpw=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=zNELn24EUBpImXHvr0ekX8G9LNANZqnsRUGRsHFifvy23jSFMbJKUSXxo40Vm6KZc 2RA90bBPkKPd0vKTLRJvNI0Mlh9lGlncD/po2P84EbVTY/XqBixRwGqVBWm35FDLdf nJs9Hr0+RVMzzYOi5H2WFY5O6XC7EbW01isBBgGY=
From: Jana Iyengar <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+AFTOJK6RICLY4UJNZF6BUNF3FEJX3EVBNHHBWNLZWA@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/pull/2794/review/257183127@github.com>
In-Reply-To: <quicwg/base-drafts/pull/2794@github.com>
References: <quicwg/base-drafts/pull/2794@github.com>
Subject: Re: [quicwg/base-drafts] Clarify ACK of ACKs and bundling a PING (#2794)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5d1be0fd95568_341a3fe78e8cd95c2847e4"; 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/OQhQzrRhtuw3mCfkKs_UQPuWpfY>
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: Tue, 02 Jul 2019 22:56:04 -0000
janaiyengar commented on this pull request. > @@ -2859,13 +2859,21 @@ valid frames? --> ### Sending ACK Frames -An endpoint MUST NOT send more than one packet containing only an ACK frame per -received packet that contains frames other than ACK and PADDING frames. -An endpoint MUST NOT send a packet containing only an ACK frame in response -to a packet containing only ACK or PADDING frames, even if there are packet -gaps which precede the received packet. This prevents an indefinite feedback -loop of ACKs. The endpoint MUST however acknowledge packets containing only -ACK or PADDING frames when sending ACK frames in response to other packets. +An endpoint sends ACK frames to acknowledge packets it has received and +processed. Sending ACK frames is the primary mechanism for advancing the state +of a connection. This second sentence seems unnecessary. > @@ -2859,13 +2859,21 @@ valid frames? --> ### Sending ACK Frames -An endpoint MUST NOT send more than one packet containing only an ACK frame per -received packet that contains frames other than ACK and PADDING frames. -An endpoint MUST NOT send a packet containing only an ACK frame in response -to a packet containing only ACK or PADDING frames, even if there are packet -gaps which precede the received packet. This prevents an indefinite feedback -loop of ACKs. The endpoint MUST however acknowledge packets containing only -ACK or PADDING frames when sending ACK frames in response to other packets. +An endpoint sends ACK frames to acknowledge packets it has received and +processed. Sending ACK frames is the primary mechanism for advancing the state +of a connection. + +Packets containing only ACK frames are not congestion controlled, so there are +limits on how frequently they can be sent. An endpoint MUST NOT send more than +one packet containing only an ACK frame per received ACK-eliciting packet ```suggestion one ACK-frame-only packet in response to receiving an ACK-eliciting packet ``` > -An endpoint MUST NOT send a packet containing only an ACK frame in response -to a packet containing only ACK or PADDING frames, even if there are packet -gaps which precede the received packet. This prevents an indefinite feedback -loop of ACKs. The endpoint MUST however acknowledge packets containing only -ACK or PADDING frames when sending ACK frames in response to other packets. +An endpoint sends ACK frames to acknowledge packets it has received and +processed. Sending ACK frames is the primary mechanism for advancing the state +of a connection. + +Packets containing only ACK frames are not congestion controlled, so there are +limits on how frequently they can be sent. An endpoint MUST NOT send more than +one packet containing only an ACK frame per received ACK-eliciting packet +(one containing frames other than ACK and/or PADDING). An endpoint MUST NOT +send a packet containing only an ACK frame in response to a non-ACK-eliciting +packet (one containing only ACK and/or PADDING frames), even if there are +packet gaps which precede the received packet. Limiting the sending of ACK ```suggestion packet gaps which precede the received packet. Limiting ACK ``` > -to a packet containing only ACK or PADDING frames, even if there are packet -gaps which precede the received packet. This prevents an indefinite feedback -loop of ACKs. The endpoint MUST however acknowledge packets containing only -ACK or PADDING frames when sending ACK frames in response to other packets. +An endpoint sends ACK frames to acknowledge packets it has received and +processed. Sending ACK frames is the primary mechanism for advancing the state +of a connection. + +Packets containing only ACK frames are not congestion controlled, so there are +limits on how frequently they can be sent. An endpoint MUST NOT send more than +one packet containing only an ACK frame per received ACK-eliciting packet +(one containing frames other than ACK and/or PADDING). An endpoint MUST NOT +send a packet containing only an ACK frame in response to a non-ACK-eliciting +packet (one containing only ACK and/or PADDING frames), even if there are +packet gaps which precede the received packet. Limiting the sending of ACK +frames avoids creating an indefinite feedback loop of acknowledgements, ```suggestion frames avoids an infinite feedback loop of acknowledgements, ``` > -gaps which precede the received packet. This prevents an indefinite feedback -loop of ACKs. The endpoint MUST however acknowledge packets containing only -ACK or PADDING frames when sending ACK frames in response to other packets. +An endpoint sends ACK frames to acknowledge packets it has received and +processed. Sending ACK frames is the primary mechanism for advancing the state +of a connection. + +Packets containing only ACK frames are not congestion controlled, so there are +limits on how frequently they can be sent. An endpoint MUST NOT send more than +one packet containing only an ACK frame per received ACK-eliciting packet +(one containing frames other than ACK and/or PADDING). An endpoint MUST NOT +send a packet containing only an ACK frame in response to a non-ACK-eliciting +packet (one containing only ACK and/or PADDING frames), even if there are +packet gaps which precede the received packet. Limiting the sending of ACK +frames avoids creating an indefinite feedback loop of acknowledgements, +which could prevent the connection from ever becoming idle. The endpoint MUST I don't think you need this MUST here. How about "The endpoint however includes acknowledgements for any non-ACK-eliciting packets as normal when it receives and acknowledges an ACK-eliciting packet." > @@ -2874,6 +2882,18 @@ sender to become limited by the congestion controller (as described in receiver. Therefore, a sender SHOULD ensure that other frames are sent in addition to PADDING frames to elicit acknowledgments from the receiver. +An endpoint that is only sending acknowledgements will not receive ```suggestion An endpoint that is only sending ACK frames will not receive ``` > @@ -2874,6 +2882,18 @@ sender to become limited by the congestion controller (as described in receiver. Therefore, a sender SHOULD ensure that other frames are sent in addition to PADDING frames to elicit acknowledgments from the receiver. +An endpoint that is only sending acknowledgements will not receive +acknowledgments from its peer unless those acknowledgements are included in ```suggestion acknowledgments from its peer. ``` > @@ -2874,6 +2882,18 @@ sender to become limited by the congestion controller (as described in receiver. Therefore, a sender SHOULD ensure that other frames are sent in addition to PADDING frames to elicit acknowledgments from the receiver. +An endpoint that is only sending acknowledgements will not receive +acknowledgments from its peer unless those acknowledgements are included in +packets with ACK-eliciting frames. A sender SHOULD bundle ACK frames with ```suggestion An endpoint SHOULD bundle ACK frames with ``` > @@ -2874,6 +2882,18 @@ sender to become limited by the congestion controller (as described in receiver. Therefore, a sender SHOULD ensure that other frames are sent in addition to PADDING frames to elicit acknowledgments from the receiver. +An endpoint that is only sending acknowledgements will not receive +acknowledgments from its peer unless those acknowledgements are included in +packets with ACK-eliciting frames. A sender SHOULD bundle ACK frames with +other frames when there are new ACK-eliciting packets to acknowledge. +When only non-ACK-eliciting packets need to be acknowledged, the sender MAY ```suggestion When only non-ACK-eliciting packets need to be acknowledged, an endpoint MAY ``` > To limit ACK Ranges (see {{ack-ranges}}) to those that have not yet been received by the sender, the receiver SHOULD track which ACK frames have been acknowledged by its peer. The receiver SHOULD exclude already acknowledged packets from future ACK frames whenever these packets would unnecessarily -contribute to the ACK frame size. - -Because ACK frames are not sent in response to ACK-only packets, a receiver that -is only sending ACK frames will only receive acknowledgements for its packets if -the sender includes them in packets with non-ACK frames. A sender SHOULD bundle -ACK frames with other frames when possible. +contribute to the ACK frame size. When the receiver is only sending +non-ACK-eliciting packets, it can bundle a PING with a fraction of them, such +as one per round trip, to enable dropping unnecessary ACK ranges and any state ```suggestion as once per round trip, to enable dropping unnecessary ACK ranges and any state ``` > To limit ACK Ranges (see {{ack-ranges}}) to those that have not yet been received by the sender, the receiver SHOULD track which ACK frames have been acknowledged by its peer. The receiver SHOULD exclude already acknowledged packets from future ACK frames whenever these packets would unnecessarily -contribute to the ACK frame size. - -Because ACK frames are not sent in response to ACK-only packets, a receiver that -is only sending ACK frames will only receive acknowledgements for its packets if -the sender includes them in packets with non-ACK frames. A sender SHOULD bundle -ACK frames with other frames when possible. +contribute to the ACK frame size. When the receiver is only sending +non-ACK-eliciting packets, it can bundle a PING with a fraction of them, such +as one per round trip, to enable dropping unnecessary ACK ranges and any state +for previously sent packets. The receiver MUST NOT bundle a PING with all +packets that would otherwise not be ACK-eliciting, in order to avoid an +indefinite feedback loop of acknowledgements. ```suggestion infinite feedback loop of acknowledgements. ``` -- 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/2794#pullrequestreview-257183127
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- [quicwg/base-drafts] Clarify ACK of ACKs and bund… ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … Marten Seemann
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … MikkelFJ
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … Martin Thomson
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … MikkelFJ
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … MikkelFJ
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … MikkelFJ
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … Martin Thomson
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … MikkelFJ
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … Kazuho Oku
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … MikkelFJ
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … Kazuho Oku
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … MikkelFJ
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … Nick Banks
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … Eric Kinnear
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … Martin Thomson
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … Igor Lubashev
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … Igor Lubashev
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … Igor Lubashev
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … Igor Lubashev
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … MikkelFJ
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … Igor Lubashev
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … David Schinazi
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … Martin Thomson
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … Martin Thomson
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … Igor Lubashev
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … MikkelFJ
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … MikkelFJ
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … MikkelFJ
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … Jana Iyengar
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … Martin Thomson
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … ianswett
- Re: [quicwg/base-drafts] Clarify ACK of ACKs and … Martin Thomson