quic-ack-frequency: fewer OK, but not excess

Bob Briscoe <ietf@bobbriscoe.net> Tue, 27 July 2021 22:43 UTC

Return-Path: <ietf@bobbriscoe.net>
X-Original-To: quic@ietfa.amsl.com
Delivered-To: quic@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 461FD3A0CD0 for <quic@ietfa.amsl.com>; Tue, 27 Jul 2021 15:43:07 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.098
X-Spam-Level:
X-Spam-Status: No, score=-2.098 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=bobbriscoe.net
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 Fg8fz1qDKOSE for <quic@ietfa.amsl.com>; Tue, 27 Jul 2021 15:43:02 -0700 (PDT)
Received: from mail-ssdrsserver2.hostinginterface.eu (mail-ssdrsserver2.hostinginterface.eu [185.185.85.90]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 313D43A0CCC for <quic@ietf.org>; Tue, 27 Jul 2021 15:43:02 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=bobbriscoe.net; s=default; h=Content-Type:MIME-Version:Date:Message-ID: Subject:From:Cc:To:Sender:Reply-To:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=S4M8aUM0T0pgJ6Zy4Gf052rPT6iayyR3lcnODMSsWaI=; b=XC92xYY0T5crFsAOl7t6zZiE+C c7raCtPBBSls83PT0wycQ4BwFEnbsJ659e75Sw6NEcmO7lyKZ7j4qMNlYG+IxWEM48BoImlYm65TS f4+VTbk4jn1OiCkgva0kcpFXc/iW4uJmXF8irk7RTMGRDCUd7vO+SxwkKx2hWcnT6QOrPsAMdHUxV 4f6PsCk3iipLNpgwGjkY9giivTyO6BbqBYxVUUgdM1anwlfPKAq2ePpVVww274LJ3oV4rB0FkPV1m tlcRFaqzUJf98q1eJNV2sL1H6lJXAsxnVpofQ+6QBjcrRvdjZrSsCOKXSQVAnUhDudt+il/bps64F Tr3Blwuw==;
Received: from 67.153.238.178.in-addr.arpa ([178.238.153.67]:43056 helo=[192.168.1.11]) by ssdrsserver2.hostinginterface.eu with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from <ietf@bobbriscoe.net>) id 1m8Vmy-0007RB-7x; Tue, 27 Jul 2021 23:42:58 +0100
To: Jana Iyengar <jri.ietf@gmail.com>, Ian Swett <ianswett@google.com>
Cc: QUIC IETF mailing list <quic@ietf.org>
From: Bob Briscoe <ietf@bobbriscoe.net>
Subject: quic-ack-frequency: fewer OK, but not excess
Message-ID: <16303ca7-7a41-7f28-46e9-5d16c007cb00@bobbriscoe.net>
Date: Tue, 27 Jul 2021 23:42:57 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="------------4FDAE29D67ABAB8FBC07D7ED"
Content-Language: en-GB
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - ssdrsserver2.hostinginterface.eu
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - bobbriscoe.net
X-Get-Message-Sender-Via: ssdrsserver2.hostinginterface.eu: authenticated_id: in@bobbriscoe.net
X-Authenticated-Sender: ssdrsserver2.hostinginterface.eu: in@bobbriscoe.net
X-Source:
X-Source-Args:
X-Source-Dir:
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/29hWHlZScp_eGG4jPT5J8X2wk6E>
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Main mailing list of the IETF QUIC working group <quic.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic>, <mailto:quic-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic/>
List-Post: <mailto:quic@ietf.org>
List-Help: <mailto:quic-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic>, <mailto:quic-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 27 Jul 2021 22:43:07 -0000

In 6. Sending Acknowledgments 
<https://datatracker.ietf.org/doc/html/draft-ietf-quic-ack-frequency-00#section-6> 
it says "On receiving an ACK_FREQUENCY frame...endpoint MUST send an 
acknowledgement when..."

What if it doesn't? Why MUST?
The underlying question here is what is the interoperability requirement?
Imagine I'm host A, and I instruct B to set ACK-eliciting threshold = 8 
packets.

 1. What if B ACKs more frequently? e.g. every packet, is it a DoS
    attack? Is this a protocol violation?
 2. The spec allows B to ACK less often (it says greater than or equal
    to "ACK-eliciting threshold"), but it says no longer than
    max_ack_delay. What if A has told B to set max_ack_delay = 960 μs,
    but B has other things taking up its resources, so B sends an ACK
    every 2ms? A's congestion controller might not perform quite so
    well, but is this a protocol violation? What can A do about it, and
    does it really need to expect B to do anything differently?

To propose answers to my own questions, I would suggest that:

 1. A MAY consider B is violating the protocol if B ACKs more frequently
    than ACK-eliciting threshold (after having acknowledged the relevant
    ACK_FREQUENCY frame). Then if A can cope, it just keeps calm and
    carries on. But if it can't it is entitled to panic.
 2. In contrast, A needs no recourse if B sends any or all ACKs more
    infrequently than the max_ack_delay. The connection performance goes
    to pieces, but that's what happens when one machine can't cope.


Changes to the text of §6 that would put all the above into effect:

  * s/"max_ack_delay"/at least "max_ack_delay"/ in second bullet.
  * After the two bullets, add something to the effect of "...MAY
    consider B is violating..." as in the bullet above.
  * §6.3 (Batch Processing of Packets) should not be described as an
    exception. It's just an example of a case when an ACK is sent when
    the number of received ack-eliciting packets is greater than, not
    equal to, the "ACK-eliciting threshold" (as already allowed in the
    first bullet).


------------------------------------------------------------------------
In 6.2. Expediting Congestion Signals 
<https://datatracker.ietf.org/doc/html/draft-ietf-quic-ack-frequency-00#section-6.2> 
there's a similar issue. It says
    "...an endpoint SHOULD immediately acknowledge packets marked with 
the ECN Congestion Experienced (CE)..."

Up to a point this is OK, but during overload in one direction, it 
causes every packet to be ACKd in the other. The forward direction is 
going to have to slow down due to the CE marking, but it might not be 
the best idea to stuff up the queue with ACKs on the reverse path at 
just the same moment.

Also, if QUIC is used in a DC, or with L4S across an ECN AQM that uses a 
simple step marking threshold, it can lead to runs of 100% ECN marking 
lasting for around 1 RTT. But by the quoted rule, the receiver SHOULD 
ACK every packet. I'm aware that this is a quote from RFC9000, but at 
least RFC9000 allows us to "deviate from these requirements after 
careful consideration" because it seems wrong.

There's also the question of whether this is meant to mean that an 
endpoint SHOULD ACK acknowledgement packets marked CE, which could lead 
to an interminable ACK ping-pong.

There has been a long discussion going on about a similar subject in 
tcpm. You might want to refer to the thread:
Seeking WG opinions on ACKing ACKs with good cause 
<https://mailarchive.ietf.org/arch/msg/tcpm/xudSM54FV2HRyzF9fbrj34-0ST8/>

It might be quicker to just read the text resulting from that thread, 
which is now in the Accurate ECN TCP Feedback draft:
https://datatracker.ietf.org/doc/html/draft-ietf-tcpm-accurate-ecn#section-3.2.2.5.1
There's a lot of tricky stuff there.

Cheers



Bob


-- 
________________________________________________________________
Bob Briscoe                               http://bobbriscoe.net/