Re: [tcpm] Possible error in accurate-ecn

Yoshifumi Nishida <nsd.ietf@gmail.com> Wed, 24 February 2021 10:03 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 2F4553A137D for <tcpm@ietfa.amsl.com>; Wed, 24 Feb 2021 02:03:47 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.096
X-Spam-Level:
X-Spam-Status: No, score=-2.096 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_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id jquGULmxlZ-V for <tcpm@ietfa.amsl.com>; Wed, 24 Feb 2021 02:03:44 -0800 (PST)
Received: from mail-qt1-x82c.google.com (mail-qt1-x82c.google.com [IPv6:2607:f8b0:4864:20::82c]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id EA8023A1321 for <tcpm@ietf.org>; Wed, 24 Feb 2021 02:03:43 -0800 (PST)
Received: by mail-qt1-x82c.google.com with SMTP id c1so1012924qtc.1 for <tcpm@ietf.org>; Wed, 24 Feb 2021 02:03:43 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=7OGGpgaOotM/2pyPw8YZkXirksIDXQ9RMBf4KoAn45U=; b=LmIR/ucw4GvQOg5TmwlvFuy7uZhpaOC+OgMakwEHMPFHHMP7w/x+YiXmErYpWdf41X O3M1GfA5EzsDENQaoCr8WXABWbCqj7v3cQ+j/y5zFmhxvqHgC8EZhCQ7JyswYqoBEe3W HyozLk+JXVQRF2fu7i2iT4u1M7W6QscbyeswHC9ytNGfkqT4g1irm5Zo5ZgMjUnADvvm MdtqBg9l7ucVD3cMLqZktc7rJWJECy+G2ndJIit0PhMtK/bSRSga6ZXhL4MCDBUTl/7X /i0fuKbn6r8H73s/3N5Q35TUEN1z03G8R0N33PcclYYc4H+Bpv8t21qyCPqrBXrEfbxl tGkw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=7OGGpgaOotM/2pyPw8YZkXirksIDXQ9RMBf4KoAn45U=; b=tJpdmKY/CPGdQm4rOZBUEYqaIZEs/c2jbFdAoVMtDSTmF7R2BB7xlyRW4dWGFKb6eW M0S1y9C4cSwo/PulQvD3ZlGjYE0H4G1IJFKw7r0Wn9lRot2N1EvmYOZXMtMF6q31I65i hs3EuZ6MwiZ87J8/7Upf7UKzOTzSK93YgT3MW1cf6wrW+2C3igdlyBGsQqvovIqQBLAJ 0Tfys2JZcPVqQ64/jOhqad2QnWkT2U8R32kKEw45TKYYsTzoUVaG0Az59PMwWs+m4ReF 9yi4gmrkTjiy8JSMZ7PFlixKJXkkBUlcS7J46siQ5Bm60J8/JvHwXe74UQJV0pD57erw 0OJA==
X-Gm-Message-State: AOAM531XdGtzPd1cSGgg9hFvrI6OXjlXAY6kdN2a4Ni48DWfCaCYUzTj UOWRSjgMvqZXzyTSx/uuE2fFJKpEMO4Ze0kgOqVz0cEv
X-Google-Smtp-Source: ABdhPJwLLv1oQOrtfOxN0nplF6oaewcHr4yFFyRppoyr/hMv7y89lJriPCey92Oqyow874wiyqxOJLxVhAOXhdrCip8=
X-Received: by 2002:ac8:350c:: with SMTP id y12mr9614465qtb.190.1614161022903; Wed, 24 Feb 2021 02:03:42 -0800 (PST)
MIME-Version: 1.0
References: <47df9b8b-515e-d40d-3473-599b0a3e3876@bobbriscoe.net> <6031BE2B-4D33-426F-BA17-DDF15CF821DE@kuehlewind.net> <060c8bd8-d64b-3e46-7874-742e35e6d114@bobbriscoe.net> <221e58f3-ada0-c880-db72-d98af84fedb8@gmx.at> <bd6ab65d-ccd5-9fa9-58be-6d9fea4af870@bobbriscoe.net>
In-Reply-To: <bd6ab65d-ccd5-9fa9-58be-6d9fea4af870@bobbriscoe.net>
From: Yoshifumi Nishida <nsd.ietf@gmail.com>
Date: Wed, 24 Feb 2021 02:03:31 -0800
Message-ID: <CAAK044QgF4pz5Wamnxkobthou5ac4_LBxh8=nBYWyOxQUtcW-Q@mail.gmail.com>
To: Bob Briscoe <research@bobbriscoe.net>
Cc: "Scheffenegger, Richard" <rs.ietf@gmx.at>, Mirja Kuehlewind <ietf@kuehlewind.net>, Yoshifumi Nishada <nishida@sfc.wide.ad.jp>, tcpm IETF list <tcpm@ietf.org>, Richard Scheffenegger <rscheff@gmx.at>
Content-Type: multipart/alternative; boundary="0000000000006168c205bc12266d"
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/F4msX1SckQw1c1pr0xQCe0AHnfY>
Subject: Re: [tcpm] Possible error in accurate-ecn
X-BeenThere: tcpm@ietf.org
X-Mailman-Version: 2.1.29
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: Wed, 24 Feb 2021 10:03:52 -0000

Hi Bob,


On Mon, Feb 22, 2021 at 4:12 PM Bob Briscoe <research@bobbriscoe.net> wrote:

> Mirja, Richard, Yoshi,
>
> I just posted a new rev of AccECN for a number of other reasons, and
> realized we hadn't converged on an answer to the tricky problem in this old
> thread from Nov'20. For now, the text says the following (which I've
> justified below, but I don't think it's the solution yet), and I've asked
> Richard & Mirja if we (as co-authors) can act as a little design team to
> thrash out this problem in the next few days.
>
> 3.2.2.5.1.  Data Receiver Safety Procedures
>
>    An AccECN Data Receiver:
>
>    o  SHOULD immediately send an ACK whenever a data packet marked CE
>       arrives after the previous packet was not CE.
>
>    o  MUST immediately send an ACK once 'n' CE marks have arrived since
>       the previous ACK, where 'n' SHOULD be 2 and MUST be in the range 2
>       to 6 inclusive.
>
>
> Justification for first bullet: The aim is to trigger an ACK on a
> transition from non-CE to CE, but only when the latest packet is a data
> packet. Cases where the previous packet was a CE-marked pure ACK and
> therefore not ACK'd ought to be picked up by the 2nd bullet, not the first.
> Similarly, if there's CE-marked packets (data or pure ACKs) that haven't
> been ACKd yet, and the next data packet is not CE-marked, I think the first
> bullet is still correct, and the second rule will pick up cases with enough
> CE marks.
>
> The second bullet is more tricky. I've added Richard's suggesting of
> flooring 'n' at 2. But made no other changes. That's deliberate, 'cos I
> think it's sufficient to allow ACK CC to be added, but not to preclude it.
> And I think the danger of being interpreted as DupACKs shouldn't apply if
> there's no outstanding data. I know I'm wrong in those odd cases I
> mentioned when new data might cross the ACKs in the other direction. But I
> don't think that's going to cause too much harm.
>
> This might be too pathological, but I'm thinking about a certain extreme
example..
In my understanding, let's say a node sends 50 ACKs for some reasons and
all ACKs have CE marks, then its peer sends back 25 ACKs.
If these 25 ACKs have CE marks as well, it can generate another 12 ACKs,
and so on.
If this understanding is correct, I'm not sure if this is a good behavior.
I am thinking we had better do something here such as don't send an ACK if
the correspond ACKs carries accecn signals.

Also, I think it's hard to tell there's no outstanding data from the
receiver side.
Let's say a sender send some data packets after sending 10 acks, and the
receiver sends back 5 acks as the 10 ACKs have CE marks.
In this case, they look like dup acks from the sender's point of view.  I
know this is a rare case, though.

--
Yoshi



> On 17/11/2020 08:48, Scheffenegger, Richard wrote:
>
>
> See my suggestion; The critical requirement for the 2nd bullet point is,
> to have n > 1 for pure, CE-marked ACKs. The exponential decay, after how
> many ACKs triggered by CE-marked ACKs these ACK-for-ACK stop, strongly
> depends on "n", so the recommendation should be to use a higher value of
> n in the case where you only observe a stream of pure ACKs (with or
> without marks; only those marked would account against "n" though).
>
> In the case of data packets mixed in, you don't want to delay
> excessively, thus "n" may be choosen lower...
>
> Richard
>
>
>
> Am 10.11.2020 um 17:38 schrieb Bob Briscoe:
>
>
> Moving on to the second bullet...
>
> The second bullet doesn't consider the possibility that the 'n'th CE
> mark might arrive on a pure ACK. Then, the wording as it stands says
> the Data Receiver MUST immediately ACK a pure ACK. I know TCP never
> ACKs a pure ACK, but I'm not actually sure it does any harm to do so
> in this case (it cannot cause an infinite loop of ACKs). However,
> given it would be unorthodox, we maybe ought to rule it out by
> rewording anyway?
>
> [MK] I think we also can leave this as it is because if that ’n’
> packet is a pure ACK that still means that you have unacked data
> packets with CE marks and you should trigger an ACK for those packet
> now (rather than waiting for the delayed ACK timer to expire). However
> this case is less important. Also we should probably make sure that
> this doesn’t apply if there are only pure ACKs with CE marks, maybe by
> add “if unacknowledged data are outstanding” or something.
>
>
> [BB] By the end of your last para you start to realize that, if the n'th
> CE mark arrives on pure ACK, it doesn't say anything about whether the
> previous (n-1) CE marks were on data or pure ACKs.
>
> Consider another common scenario; a server delivering chunks of video
> over a high BDP path (e.g. 500 packets per RTT), and going idle between
> times (perhaps in response to an "exceeded high watermark" data packet
> from the server). Now consider the possibility that the reverse path
> bottleneck builds a queue during each chunk, and starts CE marking
> towards the end of each chunk. Then, after the server stops sending a
> chunk, it continues to see a couple of hundred CE-marked pure ACKs
> arriving.
>
> However, by your proposed rule, it doesn't send any feedback, 'cos it
> has no data to acknowledge. So the client cannot regulate its ACK
> stream. That's just tough, 'cos the client will stop sending more pure
> ACKs after it has received the last data, which is before any later
> feedback from the server can reach it.
>
> However, if the client later sends a data packet that the server can
> acknowledge (e.g. "a low watermark" message), the server's ACE counter
> will have wrapped dozens of times, and the client won't be able to work
> out how many. That doesn't matter if a few round trips have elapsed -
> the congestion info will have become stale. But it does matter if it's
> fairly soon.
>
> Instead, if we keep the text of the second bullet... if the server's 'n'
> was 2, it would send a pure ACK for every other pure ACK it received.
> But, what if these pure ACKs from the server were also CE-marked? Then
> the client would feed back pure ACKs using its 'n'. This regression
> would eventually die out, but I don't like it.
>
> This conversation about the second bullet presumes AccECN is being used
> for ACK congestion control. I'm not comfortable with writing anything
> specific about ACK congestion control into a draft on the standards
> track. But I don't want to preclude AccECN being used for ACK CC.
>
>
> I believe the second bullet needs something changed to limit the ACKing
> of pure ACKs. However, before we put effort into wordsmithing, I'd like
> to hear whether you agree with the general idea of not defining what to
> do for ACK CC, but not precluding it.
>
> Cheers
>
>
>
>
> Bob
>
>
> Mirja
>
>
>
> Thoughts anyone?
>
>
> Bob
>
> --
> ________________________________________________________________
> Bob Briscoe
> http://bobbriscoe.net/
>
> _______________________________________________
> tcpm mailing list
> tcpm@ietf.org
> https://www.ietf.org/mailman/listinfo/tcpm
>
>
>
> _______________________________________________
> tcpm mailing list
> tcpm@ietf.org
> https://www.ietf.org/mailman/listinfo/tcpm
>
>
> --
> ________________________________________________________________
> Bob Briscoe                               http://bobbriscoe.net/
>
> _______________________________________________
> tcpm mailing list
> tcpm@ietf.org
> https://www.ietf.org/mailman/listinfo/tcpm
>