Re: [tcpm] Possible error in accurate-ecn

Yoshifumi Nishida <nsd.ietf@gmail.com> Mon, 01 March 2021 21:07 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 303673A22EE for <tcpm@ietfa.amsl.com>; Mon, 1 Mar 2021 13:07:56 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level:
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, 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 xl9Dh7kSWkif for <tcpm@ietfa.amsl.com>; Mon, 1 Mar 2021 13:07:53 -0800 (PST)
Received: from mail-qk1-x72d.google.com (mail-qk1-x72d.google.com [IPv6:2607:f8b0:4864:20::72d]) (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 93B293A22EC for <tcpm@ietf.org>; Mon, 1 Mar 2021 13:07:53 -0800 (PST)
Received: by mail-qk1-x72d.google.com with SMTP id z128so18091519qkc.12 for <tcpm@ietf.org>; Mon, 01 Mar 2021 13:07:53 -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=vOVq+l8dHmA1fyIX8ogGuTxI1/2UJpryjJ1HYUg67XY=; b=DssOMdq2TmpVIpgtHG6vomEVdUvYUA0GC2Nu8Ue2cQaYMhjPdAS2DaqnLxpHC7GPPq V2kt+yoccO3eNFsk6hLeeXHerdJohpSu1fvmvkEypiXgwc7ZHWjwQ3ZzDDwENgNB4pIM M0oWk9LxGhIxJzJ6NVf6pPx6TwUPMRPUz6DsXPCKKfuJUqur4AnOD7eBdmA+rq8Nhme/ F/p4KOYTiY04awbhELK3cTpzqj7jpHkjttH0CEBnG4QxKTt6340yxWSzBA0TnyM7mbBk YCE1h9pklcvbYQB7ovXcekZxNBHFGAavLjtFMsOzEXeXyME8xEhLXSh4WoxE7vGIlDh2 bcqA==
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=vOVq+l8dHmA1fyIX8ogGuTxI1/2UJpryjJ1HYUg67XY=; b=FHOk6sQRrIxuUPkSjA0q0yTm13+LV3+mBHvDjbtUwUpSrd7D1ElYqbWB90ajYB3GMX Tn0HnKafZaE/SrJAn7kAD0uIWDXAOU32crAkQl69zkEq89Fp6j5tvXIMh8ugh/gfXYr3 Y8xfIJdC2jlcOjH1iDw6WXX1M/3OCkL9efFfP97+siCKuV7MzRziW8YVSvUc/7ioqkT0 9Azsja43TDQgFfuasye1XYBTGhJOqUlm1tO7l1F4/C+ok/oihx8GQyFbPP0krYxgmE0g tNdQl0Em7bubledT6GlPq2wakC8NFc5LcvBpUZJae5OB/UhXnH+NGeOoa3aghc6FrySQ tHKg==
X-Gm-Message-State: AOAM530AIlCAUQkK7hssd7iaiMUI1W/AU9OFefK3F9Ddi1Orztdixg+1 cu70aJibn9u5o6yY8EvoUW+7K/e4U4i06sSWAng=
X-Google-Smtp-Source: ABdhPJyCp9jvArG/Tto41zbp1Vzte8qlYOpBegO8AccQx6+RD8rYGzz3083KuDzSAbB3m68MuMqIVN8FOgnF2wjPm4E=
X-Received: by 2002:a05:620a:941:: with SMTP id w1mr16374503qkw.484.1614632871868; Mon, 01 Mar 2021 13:07:51 -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> <CAAK044QgF4pz5Wamnxkobthou5ac4_LBxh8=nBYWyOxQUtcW-Q@mail.gmail.com> <8151fdef-ae78-80f3-adfc-d40db878ac8e@gmx.at>
In-Reply-To: <8151fdef-ae78-80f3-adfc-d40db878ac8e@gmx.at>
From: Yoshifumi Nishida <nsd.ietf@gmail.com>
Date: Mon, 01 Mar 2021 13:07:40 -0800
Message-ID: <CAAK044RhdAYexcGRj_XDkdY_o6JqB0DDo1X0H2AeFkRcsb0i4A@mail.gmail.com>
To: "Scheffenegger, Richard" <rs.ietf@gmx.at>
Cc: Bob Briscoe <research@bobbriscoe.net>, 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="000000000000c53bb205bc800219"
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/EGnNEv88oVjPJ_t6QqXeLXOGeJk>
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: Mon, 01 Mar 2021 21:07:56 -0000

Hi Richard,

Thanks for the comments. I also think both a) and b) can mitigate the
concerns I mentioned.
Although I'm not sure if this is the best solution or not yet, it looks
certainly better to me than the previous ones.
--
Yoshi

On Wed, Feb 24, 2021 at 10:33 AM Scheffenegger, Richard <rs.ietf@gmx.at>
wrote:

>
> Hi Yoshi,
>
> A valid concern. Two ways to remediate these at least to some extent:
>
> a) used a "n" higher than 2 (e.g. 6)
> b) refrain from sending the ACK for n CE immediately, but hold off for
> either the delayed ack timeout, or the n+1'th receipt of CE, or a valid
> data segment by that time.
>
> While this would not fully rule out any possibilty of an inadvertend
> DupAck, it significantly reduces the time window when this may happen.
>
> Also, if an implementation uses other clues (e.g. TS opt, SACK
> negotiated but not present in the ACKs incrementing the CE.P ),
> ambiguity can be further reduced.
>
> However, I feel that these optimizations may overburden the definition
> of the mechanism.
>
> Best regards,
>     Richard
>
>
>
> Am 24.02.2021 um 11:03 schrieb Yoshifumi Nishida:
> > Hi Bob,
> >
> >
> > On Mon, Feb 22, 2021 at 4:12 PM Bob Briscoe <research@bobbriscoe.net
> > <mailto: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/ <http://bobbriscoe.net/>
> >>>>     _______________________________________________
> >>>>     tcpm mailing list
> >>>>     tcpm@ietf.org <mailto:tcpm@ietf.org>
> >>>>     https://www.ietf.org/mailman/listinfo/tcpm
> >>>>     <https://www.ietf.org/mailman/listinfo/tcpm>
> >>>
> >>
> >>     _______________________________________________
> >>     tcpm mailing list
> >>     tcpm@ietf.org <mailto:tcpm@ietf.org>
> >>     https://www.ietf.org/mailman/listinfo/tcpm
> >>     <https://www.ietf.org/mailman/listinfo/tcpm>
> >
> >     --
> >     ________________________________________________________________
> >     Bob Briscoehttp://bobbriscoe.net/  <http://bobbriscoe.net/>
> >
> >     _______________________________________________
> >     tcpm mailing list
> >     tcpm@ietf.org <mailto:tcpm@ietf.org>
> >     https://www.ietf.org/mailman/listinfo/tcpm
> >     <https://www.ietf.org/mailman/listinfo/tcpm>
> >
>