[tcpm] A longer follow-up on my comment on draft-gomez-tcpm-delack-suppr-reqs

Gorry Fairhurst <gorry@erg.abdn.ac.uk> Wed, 29 April 2020 17:55 UTC

Return-Path: <gorry@erg.abdn.ac.uk>
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 78B6C3A14F0 for <tcpm@ietfa.amsl.com>; Wed, 29 Apr 2020 10:55:03 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.898
X-Spam-Level:
X-Spam-Status: No, score=-1.898 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_NONE=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 D5EC1G3KSF-V for <tcpm@ietfa.amsl.com>; Wed, 29 Apr 2020 10:55:00 -0700 (PDT)
Received: from pegasus.erg.abdn.ac.uk (pegasus.erg.abdn.ac.uk [IPv6:2001:630:42:150::2]) by ietfa.amsl.com (Postfix) with ESMTP id 776733A14F5 for <tcpm@ietf.org>; Wed, 29 Apr 2020 10:55:00 -0700 (PDT)
Received: from GF-MacBook-Pro.local (fgrpf.plus.com [212.159.18.54]) by pegasus.erg.abdn.ac.uk (Postfix) with ESMTPSA id DEB261B0007A for <tcpm@ietf.org>; Wed, 29 Apr 2020 18:54:56 +0100 (BST)
To: tcpm IETF list <tcpm@ietf.org>
References: <CAK6E8=dpmjf9MDQQVSkURcxnFrB3ZK_zqUDyoKs=MJgeLCeqvQ@mail.gmail.com>
From: Gorry Fairhurst <gorry@erg.abdn.ac.uk>
Message-ID: <8c3aca0d-0ea6-69f6-5ad8-fbdc984de77b@erg.abdn.ac.uk>
Date: Wed, 29 Apr 2020 18:54:56 +0100
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:68.0) Gecko/20100101 Thunderbird/68.7.0
MIME-Version: 1.0
In-Reply-To: <CAK6E8=dpmjf9MDQQVSkURcxnFrB3ZK_zqUDyoKs=MJgeLCeqvQ@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"; format="flowed"
Content-Transfer-Encoding: 8bit
Content-Language: en-GB
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/dcHLjwTZ6ahb_9F77bwXuwgD750>
Subject: [tcpm] A longer follow-up on my comment on draft-gomez-tcpm-delack-suppr-reqs
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, 29 Apr 2020 17:55:04 -0000


First of all thank you for bringing this topic to the WG. I do think it 
is important that we discuss what ACKs are used for, how we expect them 
to be used and what the practical implications are for using ACKs across 
Internet paths.

About the slides, I didn't have much time at the Mic. so maybe I sounded 
rather harsh, but I would suggest we do need to set a relatively high 
bar to adopting a piece of work in this space ... and we do need data 
and real understanding of what we are trying to fix and how we can avoid 
making it worse by accident in other cases.

We went through a rather lengthy discussion in tsvwg on a similar (but 
different) topic regarding immediate negative acknowledgment for SCTP 
(RFC 7053- SACK-IMMEDIATELY Extension for SCTP) and found there were a 
few key places where for that protocol this did make sense.

However, I actually don't believe your list of issues (i). Here is 
why... (I am interested if you think differently or know more).

I've tried to roughly follow your points:

* Slow start
- I agree Delayed ACKs increase slow start, the more you delay the 
bigger the impact. However, the impact is for cases where ACKs are 
delayed on intervals comparable with or more than the Path RTT.
- DAASS is a simple fix, that appears to help a lot when there is data 
waiting for the arrival of the delayed ACK. ABC is important also (well 
what I think people understand by ABC - rather than the RFC on this).
* High bit rate environments and short data segments

If you really don’t want delayed ACKs, the protocol using TCP ought to 
disable nagle. Or you would perhaps use DAASS... I’m not sure which 
problem you speak about?


* Beyond classic ACK transmission behavior
I do agree that Delayed ACKs preclude using sender behaviors intended to 
quickly and non-intrusively probe for available capacity during slow 
start. This is important to me, but I am very wary about the idea of 
sending more ACKs to do this, and we need to be careful to gain 
sufficient information about what the receiver has seen - not just to 
get a bunch of separate (each cumulative) ACKs. This really doesn’t give 
much fidelity to the sender. I’d be happy to talk more about what might 
be better!
* IoT scenarios
I can see the argument of an ACK energy cost for the IoT device. At 
least, I would assume IoT devices can be tuned, and the apps they talk 
to can be tuned. Appropriate guidance helps!

* Bursty Apps
I think you can add varying workloads as something important.  By which 
I mean apps that do transactional stuff, or are controlled by 
applications where the data transmission need varies.When we looked at 
CWV and the ideas that the applications control the traffic patterns in 
one group of applications, we also noted that these applications change 
the way they use the network. That’s important for a timely restart to 
growing the cwnd (etc). Such applications can also be very sensitive to  
network delay.  These are probably also of interest!

So....  the reason for hesitancy overall is I see this as tricky space 
to get correct.

There are many places where fewer ACKs are good - if you have per ACK 
interrupt costs - if the capacity consumed by ACKs is important - the 
cost of sending in the link technology is high - etc. This is 
complicated for TCP (and much less so for QUIC - because QUIC has a 
notion of pacing; QUIC’s loss recovery is different; and QUIC’s ACKs are 
not easily thinned, at least at present). Any TCP method has to live 
with networks that experience pain from more ACKs, but also may deploy 
(various) mitigations.


There are also cases where you’d like more information than a delayed 
ACK provides (e.g. chirping and similar probing methods) and there are 
application pathologies that would love an ACK at the end of a packet 
burst (be that 1 or 100s of packets). Any method has to live with a wide 
variety of paths and applications.

Happy to discuss more. And I suspect other people may also respond on 
list. We have lots of data for QUIC and TCP - but most of our data 
focusses on testbeds or on actual broadband satellite services.

Gorry