Re: [tcpm] Seeking WG opinions on ACKing ACKs with good cause (was: Possible error in accurate-ecn)

Yoshifumi Nishida <nsd.ietf@gmail.com> Wed, 24 March 2021 08:44 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 6DA643A2772 for <tcpm@ietfa.amsl.com>; Wed, 24 Mar 2021 01:44:40 -0700 (PDT)
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, 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 U5VYMEwYRo9e for <tcpm@ietfa.amsl.com>; Wed, 24 Mar 2021 01:44:35 -0700 (PDT)
Received: from mail-qv1-xf2f.google.com (mail-qv1-xf2f.google.com [IPv6:2607:f8b0:4864:20::f2f]) (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 B7DA43A2770 for <tcpm@ietf.org>; Wed, 24 Mar 2021 01:44:35 -0700 (PDT)
Received: by mail-qv1-xf2f.google.com with SMTP id cx5so11868351qvb.10 for <tcpm@ietf.org>; Wed, 24 Mar 2021 01:44:35 -0700 (PDT)
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=4e6MJOvdFtnOO2pQSUsiwCzV0nmMnUiMimK4Ax0w77c=; b=lol+GSj6Yt52Un2copIStBj64tI6y4wRcugqF2bsgmzxjb5wvVtNi6z6UzKyovdIAE CXWYtlMOrNyCmnBK0a1KtumSqaKEpTxg39VwVS2TZt77/+Avv7splryFkwNEffGMN/jg fL94w7QFQtqpvGq+3lWaBrMIwUvHkxQW/zkcb8Q/SK7FiB7maQGsd4IJW7Cko4yeveIx ejd4I0UIf+zo1L7zolT8K95ExWjq9RNjgQ5x5wfyANqrxcJXcNiqFdhy3TkuBzIYQRW0 ZHLy/3uU8oXA/T9VADbgz9NkTYidRWcoAlkJl879g1lak61CdqxWShz2QwNyOfy7JhFV h+PQ==
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=4e6MJOvdFtnOO2pQSUsiwCzV0nmMnUiMimK4Ax0w77c=; b=lzIgO6QB4DKQ5sgGaSw65t45Z5zstvf7Lnp3Hd41M4k5H//7ueiTmUbGhFsL4xkaSX pv5yLQZXxpd2XtPSw0NH949lbPSm5suPA3Nsq3Ac9X80A1ejJ7NaTSyuu4+9YAOZ0Flt ByrMpqwrwnS6mJB+sxCzocizk1R3B4my8OFS8UJZrFctjcmt/lxS4n7BMVLLdL1ab2eE EJ3JTh9Goc4ECzhI/apYX847uvAU72A6YAGpoWOSYu1iHn8s+cX59vE1HOguSb4HcIPv /kG3DLsGE91bFb0UXb7VPRNcmDcXFGi9nQoZhpJwAfj0S7WC5G6Ylm2q+PFcPHDLVuqF wI/w==
X-Gm-Message-State: AOAM531dfLsZKcUIxyutIM+EpCeDx8fOmsyCWo3Xrqz3RM6pWM+VW5aL UWC2WbywIcJCSQcdVaPWsw0IXX5gJzCRGMAnVts=
X-Google-Smtp-Source: ABdhPJyAF65UDP+LY1Bkl+aeAJegz8059zo1WQzfHOJ8MGTOQO6JczN+UTktCfCgAy1yYn6L/0onhb6/h+pd4PszFKY=
X-Received: by 2002:a0c:e148:: with SMTP id c8mr1990173qvl.56.1616575473803; Wed, 24 Mar 2021 01:44:33 -0700 (PDT)
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> <CAAK044RhdAYexcGRj_XDkdY_o6JqB0DDo1X0H2AeFkRcsb0i4A@mail.gmail.com> <48c5910d-5340-acd6-8fd9-fff1b7758310@bobbriscoe.net> <CAAK044QOdi8DzBbLbwTvdcesFK21i1KU+Sj+4J7_odE5UQfmNg@mail.gmail.com> <dc11cd02-616e-93a7-7bcf-1e5112c2e1e1@bobbriscoe.net> <99B71B9A-EC9B-47FD-A149-FBEF9DEEC8DC@kuehlewind.net>
In-Reply-To: <99B71B9A-EC9B-47FD-A149-FBEF9DEEC8DC@kuehlewind.net>
From: Yoshifumi Nishida <nsd.ietf@gmail.com>
Date: Wed, 24 Mar 2021 01:44:22 -0700
Message-ID: <CAAK044SgdHAiBvDPHYOaq7-fgJTrBBoAqZQ70F5X3Q5HXvTEuw@mail.gmail.com>
To: Mirja Kuehlewind <ietf@kuehlewind.net>
Cc: Bob Briscoe <ietf@bobbriscoe.net>, tcpm IETF list <tcpm@ietf.org>, "Scheffenegger, Richard" <rs.ietf@gmx.at>, Yoshifumi Nishada <nishida@sfc.wide.ad.jp>
Content-Type: multipart/alternative; boundary="000000000000de64c805be444ed9"
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/lZbSzEKhZ3vWvpd0dEWkdDeq_gU>
Subject: Re: [tcpm] Seeking WG opinions on ACKing ACKs with good cause (was: 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 Mar 2021 08:44:41 -0000

Hi Bob, Mirja

On Mon, Mar 22, 2021 at 3:08 AM Mirja Kuehlewind <ietf@kuehlewind.net>
wrote:

> See inline.
>
> > On 19. Mar 2021, at 18:37, Bob Briscoe <ietf@bobbriscoe.net> wrote:
> >
> > Yoshi,
> >
> > On 17/03/2021 07:22, Yoshifumi Nishida wrote:
> >> Hi Bob,
> >>
> >> On Fri, Mar 12, 2021 at 2:54 AM Bob Briscoe <ietf@bobbriscoe.net>
> wrote:
> >> Yoshi, tcpm list,
> >>
> >> As promised we set up a small design team on the single issue of
> occasionally ACKing pure ACKs if they carry new info (ECN marking at the IP
> layer). The design team has two solutions and everyone would be prepared to
> accept either, but preferences differ. So we're seeking wider opinions
> (more opinions obviously won't narrow the choices, but at least the WG can
> then make a decision informed by those who care).
> >>
> >> To understand the question, you can either read the email below. Or the
> 3 slides for the tcpm meeting are briefer, and include pictures:
> >>
> https://datatracker.ietf.org/meeting/110/materials/slides-110-tcpm-draft-ietf-tcpm-accurate-ecn-00#page=6
> >>
> >> Here's the current draft text in question (see here for context
> https://tools.ietf.org/html/draft-ietf-tcpm-accurate-ecn-14#section-3.2.2.5
> ):
> >> 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.
> >>
> >>
> >> Only the second bullet is in question. Here is the proposed diff for
> each alternative, then we explain:
> >>
> >> Alternative A
> >>    o  MUST immediately send an ACK once 'n' CE marks have arrived since
> >> -     the previous ACK,
> >> +     the previous ACK and there is outstanding data to acknowledge,
> >>       where 'n' SHOULD be 2 and MUST be in the range 2 to 6 inclusive.
> >>
> >>
> >> Alternative B
> >>    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
> >> +     the previous ACK, where 'n' SHOULD be 3 and MUST be in the range 3
> >>       to 6 inclusive.
> >>
> >>
> >> Extra guidance text would be required in each case too (see the end).
> >>
> >> Background:
> >> AccECN is a change to the TCP wire protocol that requires the packet
> count of congestion feedback to include any congestion experienced (CE)
> arriving on Pure ACKs (amongst other things). AccECN doesn't require Pure
> ACKs to be ECN-capable, but allows for them to be. Similarly, AccECN
> doesn't require any congestion response to CE on pure ACKs, but having the
> feedback information there allows a response to be added with a one-ended
> update, if desired/necessary. Basically the data receiver is a 'dumb
> reflector'.
> >>
> >> The above two bullets were designed to ensure that an ACK is triggered
> a) on the first sign of congestion, and b) frequently enough for the count
> of CE markings to be fed back using the 3-bit ACE field before it wraps,
> even if an               occasional pure ACK is lost.
> >>
> >> We then realized that the wording could require an ACK to be triggered
> in response to a CE-marked pure ACK. The circumstance when this could occur
> would be when peer X sends a volley of data to Y then stops, and the path
> back from Y to X is congested (probably by other flow(s) so that many of
> the ACKs are CE-marked. The second bullet above under alternative (B) would
> require X to ACK every 'n-th' CE-marked pure ACK. However, if Y immediately
> started sending a volley of data to X, Y could misinterpret those ACKs (of
> ACKs) from X as DupACKs.
> >>
> >> There are two ways to deal with this:
> >> A) Some of us prefer to completely prevent ACKs on pure ACKs, on the
> basis that they do not want to risk sometimes generating more ACKs today
> >> B) Others want to ensure that these rules will cause pure ACKs to be
> ACKed when the amount of CE on the ACKs merits it. But sparingly and
> strongly damping any ACK ping-pong.
> >>
> >> Hmm. This is not easy..
> >> My personal preference is if SACK is negotiated and it 's utilized to
> distinguish dupacks, then (B) is fine for me. Otherwise, I would prefer
> (A).
> >>
> >> BTW, I am wondering if this could leave it to implementations since
> both methods have pros and cons.
> >> I think It's hard to tell one is much better than the order.
> >
> > [BB] The problem is that the decision impacts the complexity of the
> other end, not just the implementer's own code.
> >
> > * If an implementer chooses (A) (doesn't ACK pure ACKs at all), when it
> finally does send some data, it's CE counter could have built up an
> (unlimited) store of unreported CE marks, which it will report all at once.
> So implementations will have to include code that copes with receiving
> potentially multiple wraps of the ACE field (or just ignore the
> possibility).
>
> You always need to cover this case because it is always possible to lose
> ACKs  and then counter may wrap. However, I don’t think you actually need
> to implement any logic to detect this. It only means the counters on both
> ends are off by N x 8 but congestion information is only valid that the
> point when it happens and resyncing on outdated information doesn’t help
> anybody.
>
>
So, in my understanding, there are two types of choices for implementations
on the other end.
1) need to decide whether ignore CE counter wraps or prepare for it  (for
both A and B)
2) need to decide whether identify ACKs on pure ACKs by accecn or accept
possible ack ping-pong  (for only B)

In this case,
For 1)
   Choosing (A) or (B) doesn't matter because both (A) and (B) have this
potential risk.
For 2)
   if we pick A, we don't need this.
   if we pick B, we need this
   if we allow both, we need this

If I think in this way, choosing (B) is not much different from allowing
both?
--
Yoshi