Re: [tcpm] [EXTERNAL] Re: On Sender Control of Delayed Acks in TCP

Carles Gomez Montenegro <carlesgo@entel.upc.edu> Wed, 13 May 2020 12:00 UTC

Return-Path: <carlesgo@entel.upc.edu>
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 CCC793A10B3 for <tcpm@ietfa.amsl.com>; Wed, 13 May 2020 05:00:51 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.897
X-Spam-Level:
X-Spam-Status: No, score=-1.897 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_NONE=0.001, URIBL_BLOCKED=0.001] autolearn=unavailable autolearn_force=no
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 b50iiveuVWJi for <tcpm@ietfa.amsl.com>; Wed, 13 May 2020 05:00:50 -0700 (PDT)
Received: from violet.upc.es (violet.upc.es [147.83.2.51]) (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 196873A10AE for <tcpm@ietf.org>; Wed, 13 May 2020 05:00:49 -0700 (PDT)
Received: from entelserver.upc.edu (entelserver.upc.es [147.83.39.4]) by violet.upc.es (8.14.4/8.14.4/Debian-4.1ubuntu1) with ESMTP id 04DC0c90048228; Wed, 13 May 2020 14:00:38 +0200
Received: from webmail.entel.upc.edu (webmail.entel.upc.edu [147.83.39.6]) by entelserver.upc.edu (Postfix) with ESMTP id 10C121D53C1; Wed, 13 May 2020 14:00:37 +0200 (CEST)
Received: from 81.39.156.175 by webmail.entel.upc.edu with HTTP; Wed, 13 May 2020 14:00:37 +0200
Message-ID: <92538abd26cf9394cfc3e4b8f08a1f7e.squirrel@webmail.entel.upc.edu>
In-Reply-To: <BN3PR00MB01169B7713BDF863903AC6C8B6BE0@BN3PR00MB0116.namprd00.prod.outlook.com>
References: <683902e8-a2af-cfb7-ffd0-c5c5742e5bd5@gmx.at> <CADVnQykY3OqXy=RcEfa-OpfK2x=W5_FTrdrx7PvKuqgEt92uNw@mail.gmail.com> <7d145f1203f6344b92f6f8aa11a78239.squirrel@webmail.entel.upc.edu> <CADVnQy=wPUx62y7VNqjSPP+snKX4vVvK5q=qqYb1j+0nGrtezQ@mail.gmail.com> <c6da08f4-03d7-da46-26b1-168f5953329f@bobbriscoe.net> <909de4172e46712f543f723d0ae2d638.squirrel@webmail.entel.upc.edu> <CADVnQynE3EMh-9qX7TkxifNvaKke7=PpWW2nB3Z6t1q7CYQXbg@mail.gmail.com> <9B5D12AC-248F-4E61-B6C5-1DA9529C7A42@lurchi.franken.de> <CADVnQy=gGzsvG2F935bM7wqGbbSZi+A5E=vxkpz=Bwc+ab2rkg@mail.gmail.com> <CAH56bmBNxknNvgOFajYJ-FuVXNU=Ra43UKyp-AEgD4m_p070pQ@mail.gmail.com> <BN3PR00MB01169B7713BDF863903AC6C8B6BE0@BN3PR00MB0116.namprd00.prod.outlook.com>
Date: Wed, 13 May 2020 14:00:37 +0200
From: Carles Gomez Montenegro <carlesgo@entel.upc.edu>
To: Praveen Balasubramanian <pravb=40microsoft.com@dmarc.ietf.org>
Cc: Matt Mathis <mattmathis=40google.com@dmarc.ietf.org>, Neal Cardwell <ncardwell=40google.com@dmarc.ietf.org>, Michael Tuexen <michael.tuexen@lurchi.franken.de>, "tcpm@ietf.org" <tcpm@ietf.org>, Jon Crowcroft <jon.crowcroft@cl.cam.ac.uk>
User-Agent: SquirrelMail/1.4.21-1.fc14
MIME-Version: 1.0
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: 8bit
X-Priority: 3 (Normal)
Importance: Normal
X-Virus-Scanned: clamav-milter 0.100.3 at violet
X-Virus-Status: Clean
X-Greylist: ACL matched, not delayed by milter-greylist-4.3.9 (violet.upc.es [147.83.2.51]); Wed, 13 May 2020 14:00:39 +0200 (CEST)
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/fnJNW1qigrvqj4Yb8gO-TCF5rDk>
Subject: Re: [tcpm] [EXTERNAL] Re: On Sender Control of Delayed Acks in TCP
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, 13 May 2020 12:00:52 -0000

Hi Praveen,

Thanks for your comments.

Please find below some inline responses and comments:

> I agree with the two use-case taxonomy. While it'd be quite nice to have a
> single mechanism like a TCP option that addresses both use cases, there
> are problems with a new option that's used in data packets:
>
> 1. middlebox traversal
>
> 2. hardware offloads like TSO and LRO might need updates?

Indeed, our analysis in draft-gomez-tcpm-delack-suppr-reqs-01 shows that
all potential solutions considered so far, including new TCP options,
appear to have pros and cons.

In order to evaluate solutions, I think the most critical part is
determining what could be an acceptable trade-off among different goals or
requirements.

In this thread, several WG participants expressed a positive opinion about
defining a new TCP option. (Although, as you mentioned, this approach also
has drawbacks.)

> If we go down the path of a new option for data packets that is broadly
> deployed, should we aim for a list of key-value pairs so that it is
> extensible?

Capturing what Neal and Michael outlined, we might consider a new TCP
option with the following format and intended functionality:


       Kind: TBD

       Length: 3 bytes

       Format:

              +---------+---------+---------+
              |Kind=TBD |Length=3 |    N    |
              +---------+---------+---------+
                   1         1         1

       N=0 --> "Please, ACK now (but don't change the ACK rate)"
       N>0 --> "Change the ACK rate to 1 every N received data segments"

Would the above (where the "N" field has a size of 1 byte) suffice, or
would you still envision the need for a list of key-value pairs (or did
you have a different approach in mind)?

> Also, I recall there was some discussion about usage of PSH bit for ACK
> pull. It’s already used for signaling message boundary, so an immediate
> ACK upon end of message might also help lower latency.

A problem that has been reported is that, when the PSH bit is set, it is
not always desirable to trigger an ACK immediately:
https://mailarchive.ietf.org/arch/msg/tcpm/seVEB4XAPjixXOPqfPea7zZAVmU/

Thanks,

Carles



> Thanks
>
> From: tcpm <tcpm-bounces@ietf.org> On Behalf Of Matt Mathis
> Sent: Saturday, May 2, 2020 7:55 AM
> To: Neal Cardwell <ncardwell=40google.com@dmarc.ietf.org>
> Cc: Michael Tuexen <michael.tuexen@lurchi.franken.de>; tcpm@ietf.org; Jon
> Crowcroft <jon.crowcroft@cl.cam.ac.uk>
> Subject: [EXTERNAL] Re: [tcpm] On Sender Control of Delayed Acks in TCP
>
> Another probably small opportunity would be to make the RTT estimators
> less noisy, by having the receiver always ACK the first (or last) TSO
> segment.   The RTT is currently fuzzed by both del ACK and TCP strides.
>
> Thanks,
> --MM--
> The best way to predict the future is to create it.  - Alan Kay
>
> We must not tolerate intolerance;
>        however our response must be carefully measured:
>             too strong would be hypocritical and risks spiraling out of
> control;
>             too weak risks being mistaken for tacit approval.
>
>
> On Sat, May 2, 2020 at 7:35 AM Neal Cardwell
> <ncardwell=40google.com@dmarc.ietf.org<mailto:40google.com@dmarc.ietf.org>>
> wrote:
> On Sat, May 2, 2020 at 10:26 AM Michael Tuexen
> <michael.tuexen@lurchi.franken.de<mailto:michael.tuexen@lurchi.franken.de>>
> wrote:
>>
>> > On 2. May 2020, at 16:10, Neal Cardwell
>> <ncardwell=40google.com@dmarc.ietf.org<mailto:40google.com@dmarc.ietf.org>>
>> wrote:
>> >
>> > On Sat, May 2, 2020 at 5:40 AM Carles Gomez Montenegro
> .....
>> >> [CG] It seems that there are two different areas where avoiding the
>> >> typical Delayed ACKs approach may be of particular interest: i)
>> scenarios
>> >> where very small window sizes are used (cwnd=1), and ii) scenarios
>> where
>> >> large window sizes, and high ACK ratios, can be used. We will
>> reflect
>> >> these considerations in the next draft update.
>> >
>> > Yes, I wholeheartedly agree with Bob's point that it's also extremely
>> > useful for TCP senders to be able to say things like: "I don't
>> > particularly mind which packets you ACK, but there's no need to do it
>> > more often than 1:16". QUIC has a mechanism like this, and it seems
>> to
>> > allow significant CPU savings, even allowing QUIC to run faster than
>> > TCP in some cases, AFAICT due to the reduced overhead for handling
>> > ACKs:
>> >  https://www.fastly.com/blog/measuring-quic-vs-tcp-computational-efficiency<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.fastly.com%2Fblog%2Fmeasuring-quic-vs-tcp-computational-efficiency&data=02%7C01%7Cpravb%40microsoft.com%7C38ff3d1d88b245d19a2b08d7eea8ebea%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637240282206886368&sdata=Uv%2B%2FgUOkvXss66hcGohqnt3tRHK4g3imDt0I0mu5xRw%3D&reserved=0>
>> >  https://tools.ietf.org/html/draft-iyengar-quic-delayed-ack-00<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Ftools.ietf.org%2Fhtml%2Fdraft-iyengar-quic-delayed-ack-00&data=02%7C01%7Cpravb%40microsoft.com%7C38ff3d1d88b245d19a2b08d7eea8ebea%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637240282206886368&sdata=9vw3sjqTAPLPCNAQPCFza3RJSLY%2B25T8Odqq0PCec%2BE%3D&reserved=0>
>> >
>> > So I agree with the usefulness of the two-use-case taxonomy Carles has
>> outlined:
>> >
>> > 1: "please ACK now"; because sender's cwnd is low
>> >
>> > 2: "ACK at frequency K"; because sender's cwnd is high
>> >
>> > It seems those could both be addressed cleanly with one or two TCP
>> > option kinds. A single TCP option kind might suffice if the ACK
>> > frequency of 0 or 1 is taken to mean "please ACK now".
>> I might be useful if the sender can trigger an ACK for this particular
>> packet,
>> but leave the rate unchanged. And change the rate from now on.
>> If using an option, you could encode "send an ack for this packet, but
>> don't
>> change the ack rate" by using 0, and encode "change the ack rate to 1
>> for n"
>> by using n, n > 0.
>
> Yes, that sounds like a very nice idea.
>
> best,
> neal