Re: [tcpm] draft-ietf-tcpm-accurate-ecn-24 addressing all WGLC comments

Yoshifumi Nishida <nsd.ietf@gmail.com> Mon, 05 June 2023 08:33 UTC

Return-Path: <nsd.ietf@gmail.com>
X-Original-To: tcpm@ietfa.amsl.com
Delivered-To: tcpm@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 2DFABC14CEFC for <tcpm@ietfa.amsl.com>; Mon, 5 Jun 2023 01:33:49 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.094
X-Spam-Level:
X-Spam-Status: No, score=-7.094 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_HI=-5, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Yae_l9PQzaVG for <tcpm@ietfa.amsl.com>; Mon, 5 Jun 2023 01:33:42 -0700 (PDT)
Received: from mail-ot1-x32c.google.com (mail-ot1-x32c.google.com [IPv6:2607:f8b0:4864:20::32c]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id D9B48C14F748 for <tcpm@ietf.org>; Mon, 5 Jun 2023 01:33:41 -0700 (PDT)
Received: by mail-ot1-x32c.google.com with SMTP id 46e09a7af769-6b162fa87d8so306747a34.3 for <tcpm@ietf.org>; Mon, 05 Jun 2023 01:33:41 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1685954021; x=1688546021; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=nCUkP59fNoP/boUI2rzsBPwETSzWmjQG5RlHyr4+0rM=; b=TN5fv4zhOF6IglYC9dKeXzr0lNxl973eGqwz1IHbN1ZznoFrloB8cKzmfUW3SPvaxm KAvya4bEe55RPJ4VzvHGATdvwxnogoFvN0Lhc6z5mYNWMqLPpTSvyoemffWESxZ7QIqa 3t+dxZnkyF2AZ6cuLqMuDv2LXiB4SmhDy/SRZq+BBmx5cfK1KJVBSUkRPTXwg2jx3PFC PUcG7IYEq3MNLSorJsNqGSVR11jYF7V+mSsufzKCM5B1FQZsk4TtTBpttCOI3m7ohoa1 sVKMq7m1wN61Tungvyy9B3oi5WNRBiC/o+C8y2K2A8ZSQ04mEjUytRrKSx/JcAk+l568 H9Vw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685954021; x=1688546021; 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=nCUkP59fNoP/boUI2rzsBPwETSzWmjQG5RlHyr4+0rM=; b=Ed+E5WErCPsnxKwP2ohjteGF9B978Usa1RfHvXJAMrk3M2pz1YlVuDLfHUC6KvaYTx DA6jx/qeRq5kpmOYVlZVMN/QCLgVJp/iNQdwCT7njs5KbnPreChVKuC/bH4XQgti3HR2 mxtEZAKDFD2jTt7NYAKrKfj4cWMo1l2tYkCPlrhZsYkxlYfP5TydMeuTSu+5zP1NJgVU hu+3duTPSsI9fmJIP0WgykoB2USH+Jo4ig6jRz6b7KOJr5cNVgk4jpjATu+lOMLhPhb9 6MxYMhiSKQzJBYKT8AzAvSTpXGtbxdP13c1onW7PBdk7TqF3gIQ84YDb1zJk3qljxF9V znFw==
X-Gm-Message-State: AC+VfDwS0HmYIPcJNt2eFHbViTdWh7a9V77c/Z5+Oev5jStkcU5aLEJj JTYc0qcvPRh+hVaTSYn3L1skYFZORXOUuGoqgZ/QiD3s
X-Google-Smtp-Source: ACHHUZ6y4XOTcfGmV866OfN6AjEMJpLX5opXK6h0+tdT9PyOpxheJ77RkrVNpzKlDNSO2Bgy8DQwirP+miz7OHpSNRY=
X-Received: by 2002:a05:6870:768f:b0:195:f0bb:959e with SMTP id dx15-20020a056870768f00b00195f0bb959emr3313836oab.50.1685954020400; Mon, 05 Jun 2023 01:33:40 -0700 (PDT)
MIME-Version: 1.0
References: <168018573536.48656.14537661211462843182@ietfa.amsl.com> <adcb4b1d-a8a7-b676-71da-2971ca2db9f2@bobbriscoe.net> <0DC11AC8-17AF-436D-913C-2154F41F4546@fh-muenster.de> <c977a0a-6e16-84-a49-6036224e96e8@cs.helsinki.fi> <6d1c2163-2d3c-3a42-c3af-3e8ab8debea8@bobbriscoe.net> <21ddc110-177e-8147-a11b-20578eff389@cs.helsinki.fi>
In-Reply-To: <21ddc110-177e-8147-a11b-20578eff389@cs.helsinki.fi>
From: Yoshifumi Nishida <nsd.ietf@gmail.com>
Date: Mon, 05 Jun 2023 01:33:29 -0700
Message-ID: <CAAK044Q2KhVJ3c2SeTKFN7QfJ-hrKwvZg-+45r+RZDWH3KdjDg@mail.gmail.com>
To: Markku Kojo <kojo@cs.helsinki.fi>
Cc: Bob Briscoe <ietf@bobbriscoe.net>, tuexen@fh-muenster.de, Ian Swett <ianswett@google.com>, tcpm@ietf.org, "Bob Briscoe [Apple]" <bob_briscoe@apple.com>
Content-Type: multipart/alternative; boundary="0000000000007e622505fd5dc2c7"
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/8da_00U2X0rj2I64TT84lpIqbQg>
Subject: Re: [tcpm] draft-ietf-tcpm-accurate-ecn-24 addressing all WGLC comments
X-BeenThere: tcpm@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: TCP Maintenance and Minor Extensions Working Group <tcpm.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tcpm>, <mailto:tcpm-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/tcpm/>
List-Post: <mailto:tcpm@ietf.org>
List-Help: <mailto:tcpm-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tcpm>, <mailto:tcpm-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 05 Jun 2023 08:33:49 -0000

Hi folks,

I just would like to put my personal views on ack on ack discussions here.
First, I think ack on ack has already has some precedences.
keep-alive logic can sent a pure ack for proving and expect an ack for it.
MPTCP uses 4 WHS and the 4th segment is an ack for the third ACK which is a
pure ACK.
So, I'm not sure if we need to define some rules for ack-on-ack in the doc.

Also, I'm a bit hesitant to define a detailed logic about how to
distinguish an ack that carries ECN signals and a dup ack, such as using TS
or SACK blocks.
I think such things are the part of experiments and should be described in
other docs such as ECN++ or ackcc, etc.
I personally prefer the doc simply describes the possibilities of such
mechanisms and provides general principles and guidelines.

As far as I think, the Markku's examples that triggers false
retransmissions makes sense. I think they are good examples to show how
ack-on-ack can be tricky.
However, these examples are the case where both sides exchanges data
simultaneously and I think there're other cases where we don't have to
worry about it.
For example, I think bulk transfer or request-response type traffic can be
these examples.
In these cases, the endpoint which receives acks for acks doesn't have
outstanding data. Hence, although these acks are duplicate acks, they won't
trigger retransmissions.

So, I am thinking that it would be good to provide a certain guideline
about when to enable this feature and potential risks in some docs.
But, I am also thinking we should do it outside of accecn doc.

Thanks,
--
Yoshi


On Fri, May 26, 2023 at 2:56 PM Markku Kojo <kojo@cs.helsinki.fi> wrote:

> Bob,
>
> My apologies you had to wait for the scenarios as it took much longer
> with my limited cycles than I thought. Anyways, please see my reply to
> Richard, some scenarios are also included there.
>
> To keep things easier, it might be good to try to keep the discussion on
> Acks of Acks (mainly) in the thread with my reply to Richard.
>
> However, see inline tagged [MK].
>
> On Wed, 24 May 2023, Bob Briscoe wrote:
>
> > Markku,
> >
> > Sorry, it's taken a week to build a comprehensive reply to this long
> email. See inline tagged
> > [BB]...
> >
> > On 17/05/2023 12:24, Markku Kojo wrote:
> >       Hi Michael, all,
> >
> >       On Sun, 14 May 2023, tuexen@fh-muenster.de wrote:
> >
> >                   On 30. Mar 2023, at 16:53, Bob Briscoe <
> ietf@bobbriscoe.net>
> >                   wrote:
> >
> >                   Michael, Yoshi, Ian (as tcpm chairs),
> >
> >                   To close off the WGLC, I have just posted a new rev of
> >                   accurate-ecn. Hyperlinks quoted at the end.
> >                   You will see the diff is rather extensive. I won't
> give a
> >                   summary of all the diffs like I usually do. Instead I
> can just
> >                   refer to the summary I gave in the presentation on
> Monday:
> >
> https://datatracker.ietf.org/meeting/116/materials/slides-116-tcpm-draft-ietf-tcpm-accurate-ecn
> >
> >                   Thank you again to the people who reviewed this during
> the WGLC:
> >                   Michael Tüxen, Alex Burr, Gorry Fairhurst and Markku
> Kojo.
> >
> >                   All changes are editorial, apart from removing the
> para about
> >                   not mistaking certain ACKs of ACKs for DupACKs, which
> I will add
> >                   to a rev of the ECN++ draft, hopefully later this week.
> >
> >                   On the list, we have seen agreement from all the
> reviewers to
> >                   these changes, except no response from Markku yet.
> >                   On Monday, I told Markku that I would post the draft
> in a few
> >                   days, so everyone can see the updates and diff.
> >
> >             Anyone having additional comments? In particular Markku
> regarding loss
> >             recovery?
> >
> >
> >       My apologies for being late with my reply to the author's comments
> on my review (I've
> >       been extremly busy with other issues since the wg mtng in
> Yokohama, including the rest
> >       of mtng week).
> >
> >       I don't have much new comments but it seems that my major concern
> regarding the problem
> >       of sending ACKs of ACKs was not fully understood.
> >
> >       The first thing where I think I was not quite clear is that the
> major problem with ACKs
> >       of ACKs is not that a pure Ack is made ECN-capable. Instead, the
> problem is in
> >       generating an Ack of an pure Ack and that is what one should
> prohibit to avoid problems.
> >       I understand that it might be problematic to formulate rules
> whether generating an Ack
> >       of an Ack is allowed (and when), instead of just disabling sending
> ECN-capable ACKs.
> >       I don't have a strong opinion which way the problems with ACKs of
> ACKs is avoided as
> >       long as they are avoided.
> >
> >
> > [BB] See later after your similar point (following your 'Why?'
> heading)...
> >
> >
> >       I am preparing a few scenarios to illustriate the problems ACKs of
> ACks raise and will
> >       send them shortly once I have formulated a more thorough reasoning
> why sending ACKs of
> >       ACKs is not really a good idea and even seems to be unnecessary in
> most if not all
> >       cases, i.e., it just results in sending unnecessary packets with
> not much useful effect
> >       but creates a notable number of problems.
> >
> >
> > [BB] Having waited this long, it's rather disappointing to still hear
> you say "I have an argument,
> > but I'll tell you later."
>
> [MK] I understand. My sincere apologies again.
>
> >       It also seems not have been carefully enough considered in terms
> of the very basic
> >       rubustness principle of "be conservative in what you send ..."
> >
> >
> > [BB] The WG has been careful to ensure that ACKs of ACKs are unambiguous
> (cannot be mistaken for a
> > DupACK), which is what the robustness principle requires. It's just that
> you think we have missed
> > cases where they will be ambiguous. If you think that, we need to hear
> them all.
> >
> > The robustness principle does not advocate sending nothing just in case
> some unknown factor might
> > make it ambiguous. Especially given /not/ feeding back congestion
> notifications has potential to
> > cause harm to others. Also, "no feedback" is much more ambiguous.
>
> [MK] Please see my reply to Richard and let's continue from there. See
> also what I meant with "be conservative in what you send ...", that is,
> in context of CC: avoid sending unnecessary packets or be careful in
> sending packets just because they might be sometimes useful, send the
> monly when they are useful.
>
> >       Given that this draft is intended to become a stds track RFC I am
> concerned of any text
> >       in this document that indicates (or even hints) that TCP could
> acknowledge pure ACKS
> >       (this holds particularly the rules and text in Sec 3.2.2.5.1 for
> the
> >       "Increment-Triggered ACKs"). If it is seen necessary that this doc
> should have such
> >       pieces of rules and text, I am fine if any such text is moved to
> an appendix as long as
> >       the appendix makes it cristal clear that the text is valid only in
> case one is
> >       implementing an experiment as per [I-D.ietf-tcpm-generalized-ecn].
> >
> >
> > [BB] See point below about "Generic (Mechanistic) Reflector".
> >
> >
> >       Why?
> >
> >       1) It is well known that TCP does not acknowledge ACKs and
> Standards track TCP has not
> >       been specified to acknowledge ACKs. This means that a
> reader/implementer of this doc
> >       cannot correctly understand the rule for "Increment-Triggered
> ACKs" unless there is a
> >       normative reference to a spec that specifies ACKs of ACKs (or
> tells that it is even
> >       possible).
> >
> >
> > [BB] ACKs of ACKs can indeed be tricky. But there's no need to consider
> not ACKing ACKs as an
> > architectural principle. Not Acking ACKs on principle certainly avoids
> some tricky problems.
> > However, we have a new situation here where, in limited circumstances,
> ACKs of ACKs are necessary.
> > So the WG has already worked through the tricky problems and they have
> been addressed in the draft
> > (e.g. mistaking ACKs of ACKs for DupACks, infinite ping-pong, etc).
> We'll discuss below whether
> > you've found some more trickiness.
>
> (MK] I did not mean to refer to any principle but, as I said, that a
> reader/implementer cannot correctly understand the rule for
> "Increment-Triggered ACKs" because it is well-known to her/him that TCP
> does not Ack ACKs. This fact is that one can ack ACKs is not specified in
> this doc nor does this doc give a (normative) reference where it is
> specified, including the details on which TSecr value to add or which
> SACK info if any to include when acking a pure Ack. It is easy to
> misinterpret the "Increment-Triggered ACKs", if one doesn't realize that
> pure Acks may be acked.
>
> > What is the new situation?
> >  *  Until ECN was introduced, TCP ACKs only acknowledged data. So there
> was no need to acknowledge
> >     pure ACKs, which contain no data.
> >  *  When ECN was introduced in RFC3168, TCP ACKs also acknowledged ECN
> markings. However, because
> >     RFC3168 precluded pure ACKs from being ECN-capable, there was still
> no need to acknowledge pure
> >     ACKs.
> >  *  RFC5690, and now the ECN++ draft introduce the possibility of
> ECN-capable pure ACKs. So, in the
> >     limited circumstances described in the AccECN draft, ECN-capable
> pure ACKs now need to be
> >     acknowledged, because they contain new information - their ECN field.
> > Similarly, even though the final ACK of TCP's 3WHS is an ACK of an ACK ,
> it is sent because it is
> > needed (to prove that the SYN wasn't from a spoofed address).
>
> [MK] All otherwise clear, but I disagree that the final ACK of TCP's 3WHS
> is an ACK of an ACK. It is required because SYNACK contains control data
> that eats one sequence number, i.e., it advances RCV.NXT at the client
> end and when the ACK arrives at the server it is needed to advance
> SND.UNA. Very different from Acks of Acks in this draft.
>
> > It is true that not ACKing ACKs is well-known. However, whether it's
> well-known as a /principle/, or
> > just as a current /feature/ of TCP is not clear. Anyway, the IETF's job
> is to update RFCs that are
> > "well-known". We don't have to jump through any special procedural hoops
> to do something different
> > from what is "well-known". Even if it were prohibited in a stds track
> RFC, we just have to specify
> > what has to be done instead; in another stds track RFC.
>
> [MK] Again, I didn't mention it as a /principle/ but as a crucial
> piece of information that the reader needs to be noted, that is, the
> things are now different from what is well-known.
>
> Sure IETF's job is to update RFCs, but if one changes what is prohibited
> in a stds track RFC, one needs to understand the consequences and explain
> them as well as give the justification why the change can be done (without
> problems), instead of just specifying the change.
>
> > If there are any tutorials, course notes or text books out there that
> say that not ACKing ACKs is a
> > well-known principle, that's not the IETF's problem. It is the job of
> the tutors, lecturers and text
> > book authors who wrote those materials to update them.
> >
> >
> >       2) ACKs of ACKs tend to trigger duplicate Acks. There are tons of
> algorithms that rely
> >       on the packet conservation principle and the fact that TCP never
> injects a dupAck unless
> >       a *data* packet has arrived and left the network. This is enforced
> with "MUST NOT" in
> >       RFC 5681, Sec 4.2, because not conforming to this rule makes any
> algorithm that rely on
> >       the rule to work incorrectly. These algorithms include
> (triggering) Fast Retransmit,
> >       (controlling packet rate during) Fast Recovery, (detecting
> spurious RTOs in) F-RTO,
> >       (calculating PipeAck in) RFC 7661, (calculating DeliveredData in)
> PRR, etc. Furthermore,
> >       it would make imposible to come up with any new algorihms that
> rely on this important
> >       basic rule. In most cases such extra dupAcks make these algorithms
> too aggressive
> >       because any extra dupAck is likely to inject extra packet(s) to
> the network.
> >
> >       So, it should be cristal clear that without SACK (or Timestamps) a
> TCP *MUST NOT* send
> >       ACKs of ACKs.
> >
> >
> > [BB] Constraining the /Data Receiver/ as you propose would create an
> interop problem.
> > Explanation: Consider host A and B are not using SACK or timestamps.
> Nonetheless, with your
> > approach, host A can still send ECN-capable pure ACKs to host B. Then,
> your rule puts host B in an
> > impossible position, where it gets congestion notifications on
> ECN-capable pure ACKs, but it is not
> > allowed to send any feedback about them.
> >
> > Instead, if neither timestamps nor SACK are in use for the connection,
> we need to constrain the
> > /Data Sender/ of a half connection from sending ECN-capable ACKs in the
> first place. This is the
> > approach the WG has adopted in the AccECN and ECN++ specs.
>
> [MK] I think I said in the beginning that I have no strong opinion which
> way Acks of Acks are disabled. However, I apologize that I didn't explain
> why I phrased MUST NOT send ACKs of ACKs. This is because it might be
> still useful to allow CE-marked pure Acks and take care of Ack CC by some
> other means than Acks of Acks. Currently the draft mandates Acks of Acks
> as the only way to report Ack congestion and I think it is too
> restrictive in a stds track doc, e.g., it rules out reducing Ack rate
> simply by reducing data send rate which would solve the interop problem in
> a very simple way. Moreover, When B gets congestion notifications on
> ECN-capable pure ACKs, not sending Acks of Acks does not prevent sending
> feedback; such feedback need not to be delivered immediately but by the
> time needed. Please see more on this in my reply to Richard.
>
> > Specifically:
> >  *  The WG makes sure that RFCs about the /Data Sender/ of a half
> connection (e.g. the ECN++
> >     experiment or other future RFCs) specify that sending ECN-capable
> pure ACKs is conditional on
> >     having another way to distinguish DupACKs, e.g. negotiating SACK or
> timestamps (and I will
> >     respond to your later points on the details of these).
> >  *  The AccECN spec (which primarily specifies the feedback behaviour of
> a /Data Receiver/ in a
> >     half-connection) then only needs to define the Increment-triggered
> ACK rule.
> > The two together lead to the same outcome you want. But without the
> interop hole of your approach.
> >
> > This is consistent with the "Generic (Mechanistic) Reflector" approach
> of the AccECN spec which
> > says:
> > "AccECN is designed to be a generic reflector of whatever ECN markings
> it sees, whether or not they
> > are compliant with a current standard."
> >
> > These ACKs of ACKs are generically necessary to feed back congestion
> notifications from possible
> > incoming packet patterns, not specifically for ECN++ or AckCC [RFC5690],
> or any other future RFC
> > (forward compatibility). We'll edit the reference to ECN++ to make it
> clearer that it's one example,
> > not the only case.
> >
> > Here's another example of the generic reflector approach, already in the
> draft:
> > "Although RFC 3168 prohibits an ECN-capable SYN, providing feedback of
> ECN marking on the SYN
> > supports future scenarios in which SYNs might be ECN-enabled (without
> prejudging whether they ought
> > to be). ... "
> >
> >
> >       So, it should be cristal clear that without SACK (or Timestamps) a
> TCP *MUST NOT* send
> >       ACKs of ACKs.
> >
> >
> > I understand that you want this but, as just explained, without SACK or
> timestamps, the correct
> > approach is to prevent the Data Sender putting the Data Receiver in the
> position where it would have
> > to ACK ACKs in the first place.
> >
> > In a connection without SACK or timestamps, if the Data Receiver were to
> get lots of congestion
> > notifications on ECN-capable ACKs, it would face a difficult dilemma.
> Which would be more important:
> > Signalling congestion by ACKing ACKs? or ensuring the performance
> improvements like Fast Retransmit,
> > Fast Recovery etc. work well? The former would prevent harm to others,
> the latter would prevent harm
> > to self.
>
> [MK] Please see my reply to Richard to understand why Acks of Acks
> cause Fast Retransmit, Fast Recovery, etc to cause harm to others in the
> first place. And also why most of the Acks of Acks seem to be just
> unnecessary load to the network, that is, they harm others without (much)
> benefits.
>
> > Nonetheless, I will add some text to the AccECN draft that explains why
> it is important for other
> > RFCs not to put a Data Receiver in the position where it has to ACK ACKs
> iff there is no way to
> > distinguish them from DupACKs.
> >
> >
> >       3) Even with SACK or Timestamps enabled it is not clear what an
> >       implementer should do. With SACK the AckECN authors seem to make
> an assumption, which
> >       seems obvious but is not, that an ACK of ACK would would never
> include SACK option and
> >       hence it could be distinguished from a dupAck. However, RFC 2018
> specifies: "If sent at
> >       all, SACK options SHOULD be included in all ACKs which do not ACK
> the highest sequence
> >       number in the data receiver's queue. So, if there is a hole in the
> receiver's queue, the
> >       assumption is incorrect and it is unclear which SACK info to
> include into the SACK
> >       option. Whatever one selects to include, it makes DSACK (RFC 2883]
> void and breaks any
> >       DSACK-based algorithms unless RFC 2018 is updated.
> >
> >
> > [BB]
> > Reading the draft, it is very clear that there is no such assumption.
> The text said solely what it
> > meant:
> >
> >    ... a host in AccECN
> >    mode that is sending ECN-capable pure ACKs SHOULD add one of the
> >    following additional checks when it tests whether an incoming pure
> >    ACK is a duplicate:
> >
> >    o  If SACK has been negotiated for the connection, but there is no
> >       SACK option on the incoming pure ACK, it is not a duplicate;
> > That is, if an incoming ACK were a duplicate, it would have a SACK
> option on it. This /relies/ on
> > the rule in RFC2018 that you quote. So there is no need (nor intention)
> to change SACK behaviour in
> > any way.
>
> [MK] Sorry I don't understand your claim. Assume A sends data pkts
> 0,1,2,3,..,10 in the current window to B and pkt 1 is dropped.
> Simultaneously, B sends data to A such that the data pkts arrive at A
> after A has injected pkt 10 to the network. These pkts trigger pure
> cumulative Acks from A to B that follow A's data pkts 1..10 and enough of
> the Acks get CE-marked due to congestion path A to B. When pkts 2..10
> arrive at B, each of them trigger a valid dupAck with a SACK block
> included. When the CE-marked Acks that follow data pkts 2..10 arrive at
> B, B needs to feedback congestion info on them in Acks of Acks. These
> Acks of Acks cannot cumulatively ACK the highest sequence number in the
> data receiver's queue (pkt 10) since pkt 0 is the highest pkt
> arrived insequence, so the Ack of Ack must include a SACK block as per
> RFC 2018. What is the SACK block info that the implementer, who follows
> carefully advice in RFC 2018 and there is no other advice, should
> include in these Acks unless RFC 2018 is not changed? How does the
> implementer know how to Ack, if it not specified?
>
> > (Note: to check this text, you'll need to refer to the previous AccECN
> draft here:
> >
> https://datatracker.ietf.org/doc/html/draft-ietf-tcpm-accurate-ecn-23#section-3.2.2.5.1
> > It had been there since Jul 2021 (since -15). But, as explained above,
> it is longer in the latest
> > AccECN draft (-24), because it has been moved to the editor's copy of
> the ECN++ draft, which I wrote
> > on 4 Apr, but I've been waiting for your reply before submitting it.)
> >
> >
> >       With Timestamps some algorithms like Eifel detection breaks.
> Moreover, there are other
> >       existing or potentially to-be-created heauristics, including
> various measurement tools,
> >       that rely on the fact that TCP does not echo a later Timestamp in
> a pure Ack than what
> >       arrived with the latest data packet. Any such mechanisms are
> subject to break.
> >
> >
> > [BB] I don't fully understand what you're saying here. Can you be
> clearer please?
> > And can you please bear in mind that we are in the WGLC processing stage
> now. So review comments
> > ought to be suggesting very specific changes to the text under review.
>
> [MK] Again, the same problem as with SACK. It is unspecified which
> TSecr value to put in Acks of Acks. That has not been specified
> anywhere, so how can I or anyone else check what breaks if anything, and
> how can an implementer know which TSecr value to include in Acks of Acks?
>
> It is hard to propose specific changes to text that does not exist or to a
> problem that seems to be a missing piece of design or a design flaw, until
> the text exists or the intended design is known or the potentiel design
> flaw is mutually agreed whether there is a flaw or not.
>
> (Please note also that the Eifel problem seems not to be serious, but
> instead the timestamps rule you proposed to distinguish dupAcks from Acks
> of Acks seems suspicious and calls for clarification).
>
> Please see more details in my reply to Richard.
>
> > Again, this text about extra DupACK checks has now been removed from
> AccECN and will shortly appear
> > in the ECN++ draft instead. I shall post the new ECN++ draft shortly.
> >
> >
> >       It might be good to hold discussing any details on what breaks and
> how/why and what are
> >       the consequences until I have sent my reply with scenarios to
> Richard.
> >
> >
> > [BB] Please try to prioritize any comments about the text that is now
> left in the AccECN draft. The
> > WGLC of AccECN is waiting for no-one else at the moment.
>
> [MK] Unfortunately I was not able to do this, sorry. I got confused
> already earlier when I was reviewing AccECN and ended up checking ECN++
> quickly as I noted that AccECN draft cited it for these issues. When
> reading ECN++ I found Sec 3.3.3 and read:
>
>   "The question of whether and how the receiver of pure ACKs is required to
>    feed back any CE marks on them is outside the scope of the present
>    specification because it is a matter for the relevant feedback
>    specification ([RFC3168] or [I-D.ietf-tcpm-accurate-ecn])."
>
> This got me totally confused together with the later discussion on the mic
> at Yokohama mtng because that was what I had read, and I was not able to
> understand what was intended to go where. And I still not quite know
> but I think I have a better hunch. The above text still reads in
> ECN++ draft, but hopefully not in editor's copy?
>
> Anyways, the major problem is not with any certain text phrases but
> whether DupAck vs. Ack of Ack problem is solvable and whether
> injecting Acks of Acks really is a needed and mature enough feature that
> can be part of a stds track protocol.
>
> > But also bear in mind that the chairs plan to take ECN++ into WGLC once
> AccECN WGLC has been
> > cleared. So we need to hear your actual argument about the DupACK text
> that has been moved to ECN++
> > urgently too. We can't work with "I have an argument, but I'll tell you
> later".
>
> [MK] Apologies for the delay again. Please see my reply to Richard for my
> arguments.
>
> >       One additional comment regarding the "Change-Triggered ACKs" rule
> is that it would be
> >       useful to make it more clear how this plays with delayed Acks and
> how it alters
> >       acknowledgement rate.
> >       I am not sure that what the draft currently says is quite correct:
> >
> >        "The approach can lead to some additional ACKs but it feeds back
> >         the timing and the order in which ECN marks are received with
> minimal
> >         additional complexity. If CE marks are infrequent, as is the
> case for
> >         most AQMs at the time of writing, or there are multiple marks in
> a row,
> >         the additional load will be low.
> >
> >       For example, consider a scenario with bidirectional traffic
> between A and B where B has
> >       a hole in sequence resulting in every data packet in the current
> RTT to become acked
> >       (pure duplicate Acks). This may result in a packet flow from A to
> B where every second
> >       packet is a pure (duplicate) Ack. If there is congestion on the
> path from A to B such
> >       that a significant number of (data) packets get marked, it may
> result in acking every
> >       data packet from A to B. This does not necessarily result in low
> additional load?
> >
> >
> > [BB] I don't quite understand how every second packet from A to B is a
> pure duplicate ACK, but I
> > don't think I need to - I'll assume it's somehow possible.
> >
> > Then I think you've somehow assumed that the data packets get CE-marked,
> but the interspersed pure
> > ACKs don't (perhaps you're assuming that the pure ACKs in this case are
> not ECN-capable? Or perhaps
> > you're assuming size-based packet marking?). Whatever, I agree that, if
> this scenario did occur,
> > then the change-triggered ACK rule would indeed lead to B ACKing every
> data packet that arrives,
> > with no delayed ACKs. {Note 1}
> >
> > Nonetheless, the draft is quite open about the implications of the
> change-triggered ACK rule on ACK
> > rate. In the sentence straight after the ones you quote, it says:
> >     "However, marking patterns with numerous non-contiguous CE marks
> could increase the load
> > significantly."
> > And a little earlier it starts out by saying:
> >     "...the 'Change-Triggered ACKs' rule could sometimes cause the ACK
> rate to be problematic for
> > high performance"
> >
> > I don't think we need to include examples of how non-contiguous CE
> marking could occur. And if we
> > did, I'd prefer to use one that was less complex to explain, e.g. a high
> level of probabilistic AQM
> > marking. But thank you for this point anyway.
>
> [MK] Thanks for pointing these additional sentences. I somehow missed
> them and/or did not manage to relate them to the text I quoted. I think
> this is good enough to address the case I raised, particularly "numerous
> non-contiguous CE marks could increase the load significantly."
>
> > {Note 1}: It's ironic that the existing behaviour "where B has a hole in
> sequence" also results "in
> > every data packet in the current RTT to become acked" (by A). I'm not
> giving this as an excuse for
> > introducing another case with the same bad behaviour. I'm just
> highlighting the irony.
>
> [MK] Maybe ironic but the fact that a hole in sequence results in every
> data packet in RTT to become acked has a very good reason being as it is
> because those dupAcks directly control the data rate per the packet
> conservation principle in various important algos at the data sender,
> such as Fast Recovery, and this behaviour is therefore a crucial part of
> such congestion control algos.
>
> Best regards,
>
> /Markku
>
> >
> > Regards
> >
> >
> > Bob
> >
> >
> >       Best regards,
> >
> >       /Markku
> >
> >
> >             Best regards
> >             Michael
> >
> >                   Cheers
> >
> >
> >                   Bob
> >
> >                   On 30/03/2023 15:15, internet-drafts@ietf.org wrote:
> >                         A New Internet-Draft is available from the
> on-line
> >                         Internet-Drafts
> >                         directories. This Internet-Draft is a work item
> of
> >                         the TCP Maintenance and
> >                         Minor Extensions (TCPM) WG of the IETF.
> >
> >                            Title           : More Accurate Explicit
> >                         Congestion Notification (ECN) Feedback in TCP
> >                            Authors         : Bob Briscoe
> >                                              Mirja Kühlewind
> >                                              Richard Scheffenegger
> >                            Filename        :
> >                         draft-ietf-tcpm-accurate-ecn-24.txt
> >                            Pages           : 64
> >                            Date            : 2023-03-30
> >
> >                         Abstract:
> >                            Explicit Congestion Notification (ECN) is a
> >                         mechanism where network
> >                            nodes can mark IP packets instead of dropping
> >                         them to indicate
> >                            incipient congestion to the endpoints.
> Receivers
> >                         with an ECN-capable
> >                            transport protocol feed back this information
> to
> >                         the sender.  ECN was
> >                            originally specified for TCP in such a way
> that
> >                         only one feedback
> >                            signal can be transmitted per Round-Trip Time
> >                         (RTT).  Recent new TCP
> >                            mechanisms like Congestion Exposure (ConEx),
> Data
> >                         Center TCP (DCTCP)
> >                            or Low Latency, Low Loss, and Scalable
> Throughput
> >                         (L4S) need more
> >                            accurate ECN feedback information whenever
> more
> >                         than one marking is
> >                            received in one RTT.  This document updates
> the
> >                         original ECN
> >                            specification in RFC 3168 to specify a scheme
> >                         that provides more than
> >                            one feedback signal per RTT in the TCP
> header.
> >                         Given TCP header
> >                            space is scarce, it allocates a reserved
> header
> >                         bit previously
> >                            assigned to the ECN-Nonce.  It also overloads
> the
> >                         two existing ECN
> >                            flags in the TCP header.  The resulting extra
> >                         space is exploited to
> >                            feed back the IP-ECN field received during the
> >                         3-way handshake as
> >                            well.  Supplementary feedback information can
> >                         optionally be provided
> >                            in two new TCP option alternatives, which are
> >                         never used on the TCP
> >                            SYN.  The document also specifies the
> treatment
> >                         of this updated TCP
> >                            wire protocol by middleboxes.
> >
> >                         The IETF datatracker status page for this
> >                         Internet-Draft is:
> >
> https://datatracker.ietf.org/doc/draft-ietf-tcpm-accurate-ecn/
> >
> >                         There is also an htmlized version available at:
> >
> https://datatracker.ietf.org/doc/html/draft-ietf-tcpm-accurate-ecn-24
> >
> >                         A diff from the previous version is available at:
> >
> https://author-tools.ietf.org/iddiff?url2=draft-ietf-tcpm-accurate-ecn-24
> >
> >                         Internet-Drafts are also available by rsync at
> >                         rsync.ietf.org::internet-drafts
> >
> >
> >                         _______________________________________________
> >                         tcpm mailing list
> >                         tcpm@ietf.org
> >                         https://www.ietf.org/mailman/listinfo/tcpm
> >
> >
> >                   --
> >
>  ________________________________________________________________
> >                   Bob Briscoe
> http://bobbriscoe.net/
> >
> >
> >
> >
> > --
> > ________________________________________________________________
> > Bob Briscoe                               http://bobbriscoe.net/
> >
> >