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

Yoshifumi Nishida <nsd.ietf@gmail.com> Tue, 11 July 2023 18:55 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 14F46C14CF18 for <tcpm@ietfa.amsl.com>; Tue, 11 Jul 2023 11:55:46 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.095
X-Spam-Level:
X-Spam-Status: No, score=-7.095 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_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 Xubi7iYi1byH for <tcpm@ietfa.amsl.com>; Tue, 11 Jul 2023 11:55:41 -0700 (PDT)
Received: from mail-oa1-x32.google.com (mail-oa1-x32.google.com [IPv6:2001:4860:4864:20::32]) (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 83288C137386 for <tcpm@ietf.org>; Tue, 11 Jul 2023 11:54:17 -0700 (PDT)
Received: by mail-oa1-x32.google.com with SMTP id 586e51a60fabf-1b00b0ab0daso4912413fac.0 for <tcpm@ietf.org>; Tue, 11 Jul 2023 11:54:17 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1689101657; x=1691693657; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=6XHmKo+IH3h14DqHynaOc7j7DkIcyP6qlvgr83XMl+g=; b=Pm7bxKsIAmuFJs9IM6JV15+pe5HuP3uJHB9a9wto2G6CCg+Hzh6CQLXPSg6ZsqztrJ VRa+SNOCrdjBYTpma5h4zq5gDTiyhjxzPPRWJ4pQNSt+Hq4+fAPHVeuslyvv71g5a0aB CO/NGhkpKdqy+mtSLSLslNwVTmjzf8a2VKTvjDtKODSdyxgC+4bFM+xBoUUEHuy+Y1Bz 64i35QD0NgHM9WErxVqxouM1sqFI/HcOGzpLhM4knLVF60G7PEUPCOhALlDqKh03I7En 7BCcsXL+3KhOTYcMvMKuKgPND58EwwoS8cG2zv4GAe9xLpYdz24Bxr8TN8nKp8+89WmG JCNg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689101657; x=1691693657; 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=6XHmKo+IH3h14DqHynaOc7j7DkIcyP6qlvgr83XMl+g=; b=eA/h9hOGs8rBOqBrmMT7KKHA4Ajl/dAWci31KgfPkwSY4XeVfG2pclUuXdhYEmQqQ0 PqN1sloBQpUMzAbWdgnMv7SDTkXsr78EjDE9IaDrx13WVi/6OEScSO6n2axUztagvFMg GqyGpOA1yE8fNJnibF93fJEJxsx1nfLZhivRUzt06goRzDR/uwFu6vYwQcvGsNl5HGV2 hBIfBiKzyeVLtCdlhSjos7dVneGI/iRs2ekZzkC42OkjVDSwzSuiuKDDsplN7yHegvkd mRbEFXsISkNRingDmWD5LpVI0k2HiYJZhIqmUAa2c9j5UhAgnC2UIqYEPzuljAT9x2rl 570w==
X-Gm-Message-State: ABy/qLZGtXjR275qLAsW304H/bGqw7nWtLT1ES7UZoY7rqkj16HY2MMw ZF9rHjVUzTlmzmkcmPGQo+dpKpfpXSyh7TRjavU=
X-Google-Smtp-Source: APBJJlHthYSU07hZB7nr3d+MAXrHWVtOy2Qe9hyDfiksab8eCJ8LpvYNM0uiKoFqXn7JJ/9ddueSml9t/h+m5O0pnQ8=
X-Received: by 2002:a05:6870:e38f:b0:19f:45a1:b59d with SMTP id x15-20020a056870e38f00b0019f45a1b59dmr12308342oad.12.1689101656462; Tue, 11 Jul 2023 11:54:16 -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> <CAAK044Q2KhVJ3c2SeTKFN7QfJ-hrKwvZg-+45r+RZDWH3KdjDg@mail.gmail.com> <94cd493-cc82-efbc-b38-d2bf7e9f18a1@cs.helsinki.fi>
In-Reply-To: <94cd493-cc82-efbc-b38-d2bf7e9f18a1@cs.helsinki.fi>
From: Yoshifumi Nishida <nsd.ietf@gmail.com>
Date: Tue, 11 Jul 2023 11:54:05 -0700
Message-ID: <CAAK044Sn2NYVYjUDQgKTr8mc_Wyd=VND2LzHH8JbJjC6JfYs0w@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="000000000000391be406003aa060"
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/tdO-Q4CNwepGyvIhXlicepUYad8>
X-Mailman-Approved-At: Tue, 11 Jul 2023 13:00:27 -0700
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: Tue, 11 Jul 2023 18:55:46 -0000

Hi Markku,

Thanks for the comments. I put my comments in lines.

On Tue, Jul 11, 2023 at 6:40 AM Markku Kojo <kojo@cs.helsinki.fi> wrote:

> Hi Yoshi,
>
> thank you for your comments. Pls see inline.
>
> On Mon, 5 Jun 2023, Yoshifumi Nishida wrote:
>
> > 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.
>
> Keep-alives are very much different in their potential to cause any harm.
> Only a single segment is sent when there is no traffic in flight, by
> default no traffic for the recent two hours (repeated infrequently
> a few times, if no reply). So, quite impossible to cause any harm for
> ongoing data communication.
>
> > 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.
>
> This is also a single pure Ack sent in a very specific situation only:
> immediately after the last Ack of 3whs. Very hard to find any potential
> harm it may cause. Particularly, this pure Ack is not sent "randomly" at
> any point of an ongoing communication nor is it sent possibly multiple
> times per RTT.
>

Right, I just tried to mention that ACK on ACK is not a specific thing for
accecn here.
This is one reason that I would like to have most of the discussions for
ACK on ACK outside of this draft.

>
> > 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.
>
> I pretty much agree. As currently written in -24 that I am commenting what
> happens is that if the other end for whatever reason makes its ACKs
> ECN-capable, it will easily result in automatic generation of these
> excess dupacks, which are MUST NOT in RFC 5681, Sec. 4.2, last para.
> Furthermore, sending Acks for CE-marked pure Acks is also part of
> experiment too. It is not needed otherwise, so it should be specified in
> other docs, not in this PS to be. Thereby, the feature (acking Acks) would
> be in the same doc as the necessary measures to make it safe.
>
> > 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.
>
> No, they are examples of cases where communication is bidirectional but
> not simultaneous. Instead, they are scenarios where the end points send
> data in turns, i.e., the data flow direction alternates. Such
> request-reply app. communication scenarios are very common, if not the
> most common communication pattern over TCP in the Internet (e.g., most
> Web-based apps). Of course, there are scenarios that won't create
> problems, but even if there is just one problematic scenario, it must be
> addressed properly.
>

Sorry. Yes, you're right. The example is not simultaneous.

>
> > For example, I think bulk transfer or request-response type traffic can
> be these examples.
>
> Bulk transfer, yes, request-response type traffic definitely not.
>
> Please see Fig 1 of my scenarios but ignore data 0 from B to A and
> corresponding ACK from A to B. I just added this (data 0 and the
> corrsponding ACK) there to indicate which was the last cumulatively acked
> segment from B to A (I added it as the last thing after drawing other
> stuff, so there was not room to place it earlier, sorry). You may freely
> move that excange to occur before A sends the segment 20(000) which makes
> this typical data exchange of a request-reply app.


> 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.
>
> I am afraid this is incorrect. Please see Fig 1 of my scenarios: when
> dupacks (Acks of Acks, marked red) start to arrive at B, B has sent out
> data 1..100, i.e., all these segments are outstanding and "fake" dupacks
> will trigger false Fast Retransmit and unnucessary retransmissions in the
> current window of outstanding data. All the retransmissions are
> unnecessary excess data segments sent out during the same RTT as their
> original transmissions! Obviously very bad behaviour that must be avoided.
>

Yes, I agree that you are right on Fig 1 example. But, I'm not very sure
this is typical request-response type traffic.

In this example, B starts sending data as soon as it receives data from A.
But, I am guessing B usually needs to process the received data from A on
App level and waits for the next data
from the App. Because of this, I think there are usually some gaps here.

In this case, if the dupacks arrive before B starts sending data, we don't
have any false retransmissions
because there's no outstanding data. In addition, if B is a requester, it
usually doesn't send much data.
So, the number of false retransmissions could be just a few packets even if
it receives dupacks through ACK on ACK.
Hence, I think the chance for false retransmission in request-response type
is not very big although I don't say it won't happen.

>
> > 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.
>
> I would suggest putting anything that concerns Acking ACKs outside of
> AccECN doc, because such behaviour is experimental and AccECN is
> targetted as PS.
>

I agree with this as an individual.
--
Yoshi


>
> > 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/
> >       >
> >       >
> >
> >
> >