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

Carles Gomez Montenegro <carlesgo@entel.upc.edu> Sat, 02 May 2020 09:40 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 7653E3A0CAF for <tcpm@ietfa.amsl.com>; Sat, 2 May 2020 02:40:32 -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=ham 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 tWR6-7-7OjbJ for <tcpm@ietfa.amsl.com>; Sat, 2 May 2020 02:40:25 -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 70A913A0CAA for <tcpm@ietf.org>; Sat, 2 May 2020 02:40:24 -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 0429dUto006928; Sat, 2 May 2020 11:39:30 +0200
Received: from webmail.entel.upc.edu (webmail.entel.upc.edu [147.83.39.6]) by entelserver.upc.edu (Postfix) with ESMTP id BBC381D53C1; Sat, 2 May 2020 11:39:29 +0200 (CEST)
Received: from 83.53.208.128 by webmail.entel.upc.edu with HTTP; Sat, 2 May 2020 11:39:30 +0200
Message-ID: <909de4172e46712f543f723d0ae2d638.squirrel@webmail.entel.upc.edu>
In-Reply-To: <c6da08f4-03d7-da46-26b1-168f5953329f@bobbriscoe.net>
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>
Date: Sat, 02 May 2020 11:39:30 +0200
From: Carles Gomez Montenegro <carlesgo@entel.upc.edu>
To: Bob Briscoe <ietf@bobbriscoe.net>
Cc: Neal Cardwell <ncardwell@google.com>, "Scheffenegger, Richard" <rs.ietf@gmx.at>, "tcpm@ietf.org" <tcpm@ietf.org>, Gorry Fairhurst <gorry@erg.abdn.ac.uk>, 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: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.3.9 (violet.upc.es [147.83.2.51]); Sat, 02 May 2020 11:39:31 +0200 (CEST)
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/M38ENBr1jw36t76X_2Rbb-2fpA0>
Subject: Re: [tcpm] 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: Sat, 02 May 2020 09:40:33 -0000

Hi Bob,

(Chiming in...)

> Neal,
>
> On 01/05/2020 13:19, Neal Cardwell wrote:
>> On Fri, May 1, 2020 at 6:23 AM Carles Gomez Montenegro
>> <carlesgo@entel.upc.edu> wrote:
>>> Hi Neil,
>>>
>>> Thanks a lot for your comments!
>>>
>>> Please find below my inline responses:
>>>
>>>> On Wed, Apr 29, 2020 at 1:03 PM Scheffenegger, Richard
>>>> <rs.ietf@gmx.at>
>>>> wrote:
>>>>> Eliciting an ACK under certain circumstances, for a timely
>>>>> continuation
>>>>> of the data transmission / growth of the congestion window is a known
>>>>> method to reduce network delay.
>>>>>
>>>>> E.g. Linux has been using the CWR flag for the purpose of sending out
>>>>> an
>>>>> immediate ACK by the receiver, since there is an increased chance of
>>>>> a
>>>>> very small cwnd when the sender had just reduced it's congestion
>>>>> window.
>>>>>
>>>>> https://lore.kernel.org/patchwork/patch/970486/
>>>>>
>>>>> and we also found latency improvements doing this when running
>>>>> ECN-enabled sessions
>>>>>
>>>>> https://reviews.freebsd.org/D22670
>>>> Yes, agreed.
>>>>
>>>> IMHO an explicit ACK-pull mechanism would be very nice for the cwnd<=1
>>>> case.
>>> (While this question is about the solution space, I'm anyway
>>> curious...)
>>> In the context of datacenter networks, would you have any suggestion or
>>> preference regarding the solutions that have been mentioned so far?
>>>
>>> Or perhaps any particular requirement for a potential solution?
>> Among the solutions outlined in
>>    https://tools.ietf.org/html/draft-gomez-tcpm-delack-suppr-reqs-00
>> my first preference would be the AKP option, since that approach
>> avoids burning a precious flag bit.
>
> [BB] Eh? AKP does burn a flag bit (and you say it does below). Quoting
> the draft:
>
>     TCP ACK Pull defines the AKP flag as bit number 6 of the 13th byte of
>     the TCP header.

[CG] I think that Neal referred to section 5.4 of the requirements draft  
 ("A new 'ACK Pull' TCP option").

> (BTW, Carles, in this quoted sentence, you ought to call it "the TCP ACK
> Pull /proposal/" otherwise sounds like it's an official part of TCP
> already.)

[CG] Well noted, thanks!  (Nevertheless, if that other document went
ahead, I guess that "proposal" would need to be eventually removed.)

>> The AKP option may be stripped by some middleboxes, but (a) as a
>> performance optimization, that should be acceptable, and (b) for the
>> datacenter case (where cwnd=1 is a motivating use case) this should
>> not be a concern.
>>
>> IMHO a flag bit makes sense for a small signal that a sender might
>> want to send frequently or at a high rate, but senders should not be
>> trying to force immediate ACKs frequently.
>
> [BB] For me, the problem with the AKP approach is that it's /only/
> really good in environments where you've got a small window. When you
> have a large window and you can cope with a certain ACK ratio (say
> 1:16), you would have to set AKP on every 16th packet, which doesn't
> really express what the sender wants (and if the receiver had just sent
> an ACK of its own accord just before it got one of these regular AKP
> requests, should it send another?). The sender in this case really wants
> to say "I don't particularly mind which packets you ACK, but there's no
> need to do it more often than 1:16".
>
> I think there's some mileage in a TCP Option that aggregates a few
> behaviours together under one new TCP Option. I reckon 3 bits would be
> enough for a good delayed ACK option, but a whole TCP Option for that
> could be overkill. There was going to be a talk about a low latency TCP
> Option in netdev0x14 before it was postponed (sorry I don't remember who
> by). That might be a good excuse to collect together a few related
> functions. It could also improve the deployment incentives.

[CG] Thanks for the comments!

[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.

Cheers,

Carles


> Bob
>
>
>
>>
>> best,
>> neal
>
> --
> ________________________________________________________________
> Bob Briscoe                               http://bobbriscoe.net/