Re: Old packets in draft-ietf-quic-ack-frequency-11

Martin Duke <martin.h.duke@gmail.com> Thu, 15 May 2025 17:43 UTC

Return-Path: <martin.h.duke@gmail.com>
X-Original-To: quic@mail2.ietf.org
Delivered-To: quic@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id 976A828F81E1 for <quic@mail2.ietf.org>; Thu, 15 May 2025 10:43:37 -0700 (PDT)
X-Virus-Scanned: amavisd-new at ietf.org
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, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 0Dy3tpjtfv0l for <quic@mail2.ietf.org>; Thu, 15 May 2025 10:43:36 -0700 (PDT)
Received: from mail-vk1-xa33.google.com (mail-vk1-xa33.google.com [IPv6:2607:f8b0:4864:20::a33]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id BACF828F81D3 for <quic@ietf.org>; Thu, 15 May 2025 10:43:36 -0700 (PDT)
Received: by mail-vk1-xa33.google.com with SMTP id 71dfb90a1353d-5242f137a1eso412717e0c.1 for <quic@ietf.org>; Thu, 15 May 2025 10:43:36 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747331016; x=1747935816; darn=ietf.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Tlj0GP7B9lKXQSwqelPH4S+Xe4sUWSCql6okD3oSe9A=; b=hXfFDKSChUlP6Agx22GcLaGFVCzSK9pt0GLsPjn8kUva8jRvWT/uI8QZ50vTTlHpDo dfvyUDTjf67SEm4xs3YTW6lDObEUc1GMTXooUKS/vyWCnRgjXfnuSlZlElTDCgHDYt+w VdFW3T7qjgNT3/IuYmdadHctxT5r5hSLclBGlDuu2Z68JNFXKcVZhAMh+fUBS3a80sxh 2jXXYLMtLXb3Xu+p8gg9XFtRFqB9rkho+OZD5ryN7sXByN1XvgXvRKKEry6duZhJVx6H rhEDOBG60sX9SCYV2++SjNP6ajIOwXwDzxWByIzBalZO8Ny3/42/44ReOCIBiOsmmijR tn8w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747331016; x=1747935816; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=Tlj0GP7B9lKXQSwqelPH4S+Xe4sUWSCql6okD3oSe9A=; b=RsLeBVSn+b4/vZHQkFy+NLqC8yOz5pnWD9JovR4NDajWgs5iCBAgfoPRzhIyV71L0m 80KQH145aBH6zAfAkMEo6a4gdq4Qh/yocNE1F5taNBLtLW3BgS5tluawknVmZZXLAQ5n D758CswFcsSdAMqTh+SyFj271dOebp2zXvct3UKvZgK1koQvXkTO5p7R++XUsZzQpATh j8d6eVtDYyhIpqg/k3URlc0jPNh+hjTULoXnX5bA30C4oIsm3zGDAGQXH0f3OqUsQUHu l4+6aJ4+WUNnevUdpsJ5dbTkcC8ZS6122pQdQidjD21Z7gnXU+Kzsb6QINQY4HtqXgZ9 gapw==
X-Forwarded-Encrypted: i=1; AJvYcCWed47jxvdZlebLc1wRRKi629fDwRF8G43824LlwWubC51jYdA7Eb96pAb+Qq7R/PVVs6iy@ietf.org
X-Gm-Message-State: AOJu0YyhIXQ1Xq8D+/UpFGjMFzIXx91v6wDA6mx8wW6TM9VbTwrZCAmY ifMwYUPN73STjEMCwc4FrsVnK53pYQ29wypZQ/WaH3KvSGqTTnvHUfL9KC0imxzNb6j8HikSFc2 kgrVAlN72llAJNekDQ4+V7j8Lky3xGBA=
X-Gm-Gg: ASbGnctgowqCvfdzhctXvAMZUCcnNx7IaDjaV9qopbkMaBInakp1V9AM9e21zqQjp7v C/4lZGV7lbQDeVm4deh3HHZWkWG+SdCdbCcTH+uJZT5RYqSt9rzf0Tqnz2dDSkoFQ3FhO2hJu0P BtaMtuUukdXMkd/+gZ31WWWY/BCxcBGeiMS/aSMnIZVpUSsZfucWZ8nX3YzGYKqVE=
X-Google-Smtp-Source: AGHT+IGDPtiRZiwYbJbLgonVY7pBIeT12V2L1kbfsytTXSVRQYgr5fzMN9dWbzAdEgzSlYAunO1ispiqT+lYbhffv1U=
X-Received: by 2002:a05:6122:88c:b0:526:1ddd:7603 with SMTP id 71dfb90a1353d-52dba613255mr986457e0c.0.1747331016062; Thu, 15 May 2025 10:43:36 -0700 (PDT)
MIME-Version: 1.0
References: <CAM4esxQZcPCHHX2z=iS0gJS=U77XrUe7xOXHnAvt2oTki91DQQ@mail.gmail.com> <CAKcm_gM0ZYOXqZVuHF_19UobYfDw1z-QmDAeSnpRyw2RidvpCw@mail.gmail.com> <4DAC0DBA-DD77-4994-B591-C816F66618E8@ericsson.com> <CAM4esxS8EDVwoNXnopuTWUkCXmPUeK7ZLWL6diVuRkSdibRMjg@mail.gmail.com> <4E2759E2-C29B-4C69-ACC1-8B90546F1AEB@ericsson.com>
In-Reply-To: <4E2759E2-C29B-4C69-ACC1-8B90546F1AEB@ericsson.com>
From: Martin Duke <martin.h.duke@gmail.com>
Date: Thu, 15 May 2025 10:43:24 -0700
X-Gm-Features: AX0GCFu5MtRQelcb9yii6bApeCYogYnmRsuvc0ERL2WMCFhtCZ829ShY10RNaPg
Message-ID: <CAM4esxR=GVPExe43R_J-W9p2HG8mRWCpX2xwMxcSF+nX2y+meA@mail.gmail.com>
Subject: Re: Old packets in draft-ietf-quic-ack-frequency-11
To: Mirja Kuehlewind <mirja.kuehlewind@ericsson.com>
Content-Type: multipart/alternative; boundary="000000000000847f5b0635303455"
Message-ID-Hash: A6Q2UZPA253UGFZAQQ7IN7GNI4KHMVOC
X-Message-ID-Hash: A6Q2UZPA253UGFZAQQ7IN7GNI4KHMVOC
X-MailFrom: martin.h.duke@gmail.com
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-quic.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: Ian Swett <ianswett=40google.com@dmarc.ietf.org>, IETF QUIC WG <quic@ietf.org>
X-Mailman-Version: 3.3.9rc6
Precedence: list
List-Id: Main mailing list of the IETF QUIC working group <quic.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/R9_duyCdImw_p42eibQvLkGl5f0>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic>
List-Help: <mailto:quic-request@ietf.org?subject=help>
List-Owner: <mailto:quic-owner@ietf.org>
List-Post: <mailto:quic@ietf.org>
List-Subscribe: <mailto:quic-join@ietf.org>
List-Unsubscribe: <mailto:quic-leave@ietf.org>

Compared to acking packets occasionally in accordance with
ack_eliciting_threshold.

On Thu, May 15, 2025 at 10:27 AM Mirja Kuehlewind <
mirja.kuehlewind@ericsson.com> wrote:

> „accomplishes very little“ compared to what? Not acking is not an option
> and as such we simply apply the rule that is already in RFC9000 without
> further optimization. In other words we simply didn’t consider
> changing/optimizating the “gap filling” logic in the draft. I guess you
> could so something like only sending an ACK for the first packet in a gap
> and if the gap is filled completely but that sounds all complicated.
>
>
>
>
>
> *From: *Martin Duke <martin.h.duke@gmail.com>
> *Date: *Thursday, 15. May 2025 at 18:06
> *To: *Mirja Kuehlewind <mirja.kuehlewind@ericsson.com>
> *Cc: *Ian Swett <ianswett=40google.com@dmarc.ietf.org>, IETF QUIC WG <
> quic@ietf.org>
> *Subject: *Re: Old packets in draft-ietf-quic-ack-frequency-11
>
>
>
> I agree that not sending acks at all would be a problem.
>
>
>
> I don't have any data. But my contention is that the current rule
> accomplishes very little while making this "not super likely" case
> considerably worse.
>
>
>
> On Thu, May 15, 2025 at 9:01 AM Mirja Kuehlewind <
> mirja.kuehlewind@ericsson.com> wrote:
>
> Note that issue #306 was also related to this:
> https://github.com/quicwg/ack-frequency/issues/306
>
>
>
> As I said there, you could probably further optimize this but it would be
> a mistake if you don’t send ACK for packets that arrive late at all (which
> wasn’t clearly explicitly covered in the draft before).
>
>
>
> However, I think your example below is also not the super likely case. In
> your examples it’s basically that packets 10 and 11 arrive earlier, while a
> whole range of packets would get delayed. So not sure how important it is
> to optimize for that case. I would expect it is more likely to see single
> packets re-ordered. Do you happen to have any data on re-ordering patterns?
>
>
>
> Mirja
>
>
>
>
>
>
>
> *From: *Ian Swett <ianswett=40google.com@dmarc.ietf.org>
> *Date: *Thursday, 15. May 2025 at 17:34
> *To: *Martin Duke <martin.h.duke@gmail.com>
> *Cc: *IETF QUIC WG <quic@ietf.org>, Ian Swett <ianswett=
> 40google.com@dmarc.ietf.org>
> *Subject: *Re: Old packets in draft-ietf-quic-ack-frequency-11
>
>
>
> These are some excellent observations and please file an issue.  I'm not
> sure we want to make substantial changes, but we might want to at least
> call this out.
>
>
>
> If the peer is accurately communicating their packet threshold in the
> ACK_FREQUENCY frame, then I believe you're correct that this requirement to
> immediately send an ACK is useless, at least for the purposes of packet
> threshold loss detection.  Time threshold is much more difficult to
> reason about, particularly because transmission delays are variable and
> timers aren't perfect.  Currently the peer's ack delay is included in PTO
> timer, but not time threshold loss detection, because this immediate ACK
> behavior is assumed.
>
>
>
> There are some potential interactions with congestion control,
> particularly when first entering recovery when the CWND might have
> decreased substantially and/or you're doing packet conservation.  You might
> be able to declare a number of packets lost, but only send one or two, so
> getting an ACK earlier could prevent some spurious retransmissions.  Or it
> might not because the ACKs you're getting might be exactly the packets
> you've already spuriously retransmitted.
>
>
>
> Thanks, Ian
>
>
>
> On Thu, May 15, 2025 at 10:37 AM Martin Duke <martin.h.duke@gmail.com>
> wrote:
>
> I'm finally turning my attention to updating our ack-frequency
> implementation from draft-iyengar-quic-delayed-ack-01 (!!!) to the current
> draft.
>
>
>
> *TL;DR **The ack-frequency draft defers to RFC 9000 by saying that any
> packet < largest_acked is acked immediately regardless of any of the
> ACK_FREQUENCY frame fields. Maybe that's suboptimal?*
>
> I stumbled across issue 304
> <https://github.com/quicwg/ack-frequency/issues/304>,  which clarifies
> that RFC 9000 rules about ACKing packets < largest_acked still apply:
>
> When an ack-eliciting packet is received with a packet number less than
> Largest Acked, this still triggers an immediate acknowledgement in an
> effort to avoid the packet being spuriously declared lost.
>
>
>
> To be clear: this totally works, and in no case makes things worse than
> the baseline. In the "normal" case when packet gaps are loss, not
> reordering, it has no effect at all.
>
>
>
> However, I wonder if this rule is far less than optimal in cases with a
> lot of reordering, and may add little to no value in more common cases.
> Loss and reordering both manifest as a sudden jump in sequence number; if a
> reordering case, the gap packets will arrive later. The reordering_thresh
> field can suppress the ack of this first jump, but not the followon packets
> with lower numbers.
>
>
>
> For example, Say that ack_eliciting_threshold is 1 (the default) but
> reordering_threshold is zero (meaning, ignore reordering). If the pattern
> of packet arrival is 10, 11, 1, 2, 3, 4, 5, 6, 7, 8, 9, then there will be
> 10 ACKs: one for 11, as the second packet to arrive, and then one for each
> of 1:9 because they are all less than largest_acked. In this case, network
> reordering has caused the ack rate to be roughly double what the receiver
> requested. Without the text in question, one would expect an ack for 11, 2,
> 4, 6, and 8.
>
>
>
> In the issue, the stipulation is that acking these packets will prevent
> spurious retransmits. If true, that would be valuable. However:
>
>
>
> - If the sender is using RFC 9002 time-based recovery, the important thing
> is that the ack arrives before the timeout. IIUC, this is best ensured via
> requested_max_ack_delay rather than through this mechanism.
>
>
>
> - If the sender is using packet-based recovery, the additional acks don't
> really help. If ack_eliciting_threshold is set correctly, there won't be a
> retransmission until another ACK arrives. If the ACK is delayed till
> another packet arrives, the sender's state for the early packet won't
> change in the meantime.
>
>
>
> I find this hard to reason about, and am happy to be told I'm holding it
> wrong. There are second-order considerations about lost acks, etc. But if
> others think the text is suboptimal, I'm happy to file an issue.
>
>
>
> Martin
>
>