Re: [tcpm] some comments on draft-gomez-tcpm-ack-rate-request-02.

Bob Briscoe <ietf@bobbriscoe.net> Sun, 14 March 2021 21:20 UTC

Return-Path: <ietf@bobbriscoe.net>
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 2F7C43A15BB for <tcpm@ietfa.amsl.com>; Sun, 14 Mar 2021 14:20:49 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.433
X-Spam-Level:
X-Spam-Status: No, score=-1.433 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, HTML_MESSAGE=0.001, NICE_REPLY_A=-0.001, SPF_HELO_NONE=0.001, SPF_SOFTFAIL=0.665, URIBL_BLOCKED=0.001] autolearn=no autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=bobbriscoe.net
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 P4RhYp6N-1MS for <tcpm@ietfa.amsl.com>; Sun, 14 Mar 2021 14:20:46 -0700 (PDT)
Received: from mail-ssdrsserver2.hosting.co.uk (mail-ssdrsserver2.hosting.co.uk [185.185.84.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 55A603A1556 for <tcpm@ietf.org>; Sun, 14 Mar 2021 14:20:46 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=bobbriscoe.net; s=default; h=Content-Type:In-Reply-To:MIME-Version:Date: Message-ID:From:References:Cc:To:Subject:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=apDvvja4uqjOjR6zpeyHFp1RlmlCi+QWUPp/imH2fHE=; b=Hf/0EIg/zYyQ1Kup7I4DaMpHH nPh1wAKbvdfx5PdSFMuh/VV4BEB9RKrF/h8KNlhmIxtbFpD4XsrFWP4ML1cSSjw3Qae/PNdGEbiYd fysURTOqI2AjUvLtk9hdsSGiiGBkxokF72zJGiUKofmFy/6wqAxnpo2jFB9wjKoiJM/GOw9BoinLC 1+LK8A/feTNenhHPu3WLbEyHsPzcYSzIZgMRtlVU8hY8/eLVIN+Lly4GsEBbO1MbzKDcwsnmWfLw6 ropMmKT3S6nK2tE01w/OC2ZHvc4Shy0ts4oj87peMNXNbvcS3ROxpoBnd/KZm2B5N5z+LDZTyAuq6 Q/Sm6InOQ==;
Received: from 67.153.238.178.in-addr.arpa ([178.238.153.67]:33904 helo=[192.168.1.11]) by ssdrsserver2.hosting.co.uk with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.93) (envelope-from <ietf@bobbriscoe.net>) id 1lLYAG-0004GC-6k; Sun, 14 Mar 2021 21:20:44 +0000
To: Carles Gomez Montenegro <carlesgo@entel.upc.edu>, Yoshifumi Nishida <nsd.ietf@gmail.com>
Cc: "tcpm@ietf.org Extensions" <tcpm@ietf.org>, jon.crowcroft@cl.cam.ac.uk
References: <CAAK044TYfw=N0JwSRv5xMBqfR9BeDF6LqPRNXFCvd-Hxq+oDDw@mail.gmail.com> <47ab7d08978d2cc4f040de300d806212.squirrel@webmail.entel.upc.edu>
From: Bob Briscoe <ietf@bobbriscoe.net>
Message-ID: <b921d4cb-c8e2-aaa2-2e4f-6bcc70246c98@bobbriscoe.net>
Date: Sun, 14 Mar 2021 21:20:42 +0000
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1
MIME-Version: 1.0
In-Reply-To: <47ab7d08978d2cc4f040de300d806212.squirrel@webmail.entel.upc.edu>
Content-Type: multipart/alternative; boundary="------------8B81096D2519B833DA1FC518"
Content-Language: en-GB
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - ssdrsserver2.hosting.co.uk
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - bobbriscoe.net
X-Get-Message-Sender-Via: ssdrsserver2.hosting.co.uk: authenticated_id: in@bobbriscoe.net
X-Authenticated-Sender: ssdrsserver2.hosting.co.uk: in@bobbriscoe.net
X-Source:
X-Source-Args:
X-Source-Dir:
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/rrC_5YRH6gQSJVm07534cW8ZdOo>
Subject: Re: [tcpm] some comments on draft-gomez-tcpm-ack-rate-request-02.
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: Sun, 14 Mar 2021 21:20:49 -0000

Carles,

On 05/03/2021 12:34, Carles Gomez Montenegro wrote:
> Hi Yoshi,
>
> Thanks a lot for your insightful comments!
>
> Also, sorry for the late response.
>
> Please find inline responses to your comments below:
>
>> Hi,
>> I've read the draft. I like the basic concept of the draft and think it's
>> useful in some ways. I put some comments belows.
>>
>> 1: In general, I would like to see some more example usages or guidances
>> of
>> the features described in the draft.
>>      For example, one of my naive questions is how often we want to change
>> the frequency of ACKs.
>>      In 'small' or 'large' scenarios in the draft, it seems to me that it
>> might be sufficient to use the same ACK frequency during the connection.
>>      It would be good if the draft describes the needs of changing
>> frequency.
> Agreed, we will add some guidance in this regard.
>
> Yes, in many scenarios it may make sense to just set the ACK frequency
> once during the connection.
>
> We'll think further about whether there could be particular scenarios
> where the ACK frequency might need to be changed during the connection
> lifetime.

[BB] Here's a couple of reasons why the DelACK ratio would change during 
the lifetime of a flow.

1/ I am interested in being able to use a facility like TARR to suppress 
delACKs in order to measure the RTT of each packet, particularly during 
flow start-up, but then release that constraint once the flow has started.

A Linux receiver has a heuristic to detect slow start and suppress 
DelACKs just for that period.  But variants of slow-start at the sender 
such as hystart, hystart++ etc. alter the ending of slow-start, so they 
can confuse the heuristics at the receiver. Similarly we've been working 
with a technique called paced chirping, which confuses the heuristics. 
Or put another way, if someone invents a better approach than slow 
start, but it confuses the heuristics at the receiver, it means that the 
receiver's heuristics have ossified the existing slow-start behaviour at 
the sender. In contrast, an explicit signal between the peers like TARR 
allows for evolution.

2/ In the high cwnd scenarios, the sender wants the DelACK ratio to 
still ensure a minimum number of ACKs per RTT. Obviously cwnd is not 
instantly large - it grows from the start of the flow onwards, and when 
the flow starts, the sender doesn't know what it will reach. Also, the 
window changes as other traffic comes and goes or the link capacity 
changes. So clearly the sender will need to keep updating the DelACK ratio.

==Units==

This last example raises the question of whether the number of packets 
between ACKs is the correct unit to use for the DelACK ratio. If the 
sender is trying to ensure there are say 4 ACKs per RTT, you might 
naively think it would be better to tell the receiver that. I worked 
through this question of units here:
https://github.com/quicwg/base-drafts/issues/1978#issuecomment-436553339
pasted below

>>> Packets? bytes? time? fraction of RTT?
>>>
>>> Think of this question in two stages:
>>> Q1. what units the sender starts from
>>> Q2. what units the message is in, which the sender has to derive from Q1
>>>
>>> If the message was a fraction of 1 RTT, the receiver would have to 
>>> calulate the sender's RTT. It can do that, using ACKs of ACKs, but 
>>> that implies work and delay.
>>>
>>> In all cases that I could see in #1428 
>>> <https://github.com/quicwg/base-drafts/issues/1428>, the sender had 
>>> all the info to translate from one unit to another (it knows its own 
>>> SMSS, its window, its RTT). This leaves Q2, to which a good enough 
>>> answer is packets (which also compresses the message size).
>>>

more...

>
>> 2:  "a TARR-option-capable receiving TCP MUST modify its ACK rate to one
>> ACK every R full-sized received data segments from the sender, as long as
>> packet reordering does not occur"
>>      -> Do this mean if recorder happens, TARR option will be ignored?
>>          Let's say if you send packet 1 with TARR and packet 2 without
>> TARR,
>> if packet 2 arrives earlier than packet1, the TARR option in packet1 will
>> be ignored?
>>          How about storing the highest seqno that carries TARR and compare
>> it when you receive packets with TARR?
> Well, yes, the phrase "as long as packet reordering does not occur" might
> not be clear enough here. The intent was to say that one ACK will be sent
> every R full-sized received data segments, but if there is reordering,
> then a different amount/rate of ACKs may be sent for a while.
>
> Anyway, your suggestion is very useful, since the behavior in a scenario
> like the one in your example needs to be clear as well.
>
> Therefore, we take two action points from this comment: clarifying the
> text, and also incorporating your suggestion.
>
>> 3:  "If all bits of this field are set to 0, the field indicates a request
>> by the sender for the receiver to trigger one or more ACKs immediately. "
>>      -> For me, this might be read as if it can request to send back
>> multiple ACKs immediately. How about changing it 'without delay' or
>> something?
> Agreed, we will edit the text.
>
>> 4:  "Otherwise, the field carries the binary encoding of the number of
>> full-sized segments"
>>      -> I'm not sure about the meaning of binary encoding here. does it
>> mean storing 1-255 values or else?
> Yes, that is the intended meaning (well, for 1-127 values with the new
> field size).
>
> The original intent was to be clear on how to represent the value, but is
> perhaps "binary encoding" misleading?
>
>> 5: I have some concerns on ignoring reorder.
>>      In case of QUIC, even if reorder is ignored, timer-based loss
>> detection
>> scheme can still find packet losses.
>>      However, in TCP, RACK might not be always supported, so it might take
>> significant amount of time to find losses if this feature is enabled.
>>      I think the doc needs to discuss this point and it would be good to
>> have some guidelines here.
> Agreed!

[BB] It wasn't clear to me what problem was intended to be addressed by 
the 'ignore reordering' flag.
If it was that the sender is using time-based detection, so it tells the 
receiver it doesn't need ACKs of out of order packets, that would make 
sense. But perhaps you had a different use-case in mind?

>
>> 6: Similar to 1:, I am a bit wondering about the use case of N field in
>> TARR option.
>>     I can imagine this would be useful if an endpoint uses Hystart++ or
>> similar approach.
>>     However, is it still useful for other cases such as plain slow-start
>> algorithm?
>>     I think it would be better to have some usage guidelines for N as well.
> Agreed. We will add this guidance.

[BB] It seemed to me that the ability to suppress ACKs for N packets 
would be redundant. Because the sender can send a different TARR option 
after N packets to ask the receiver to change the DelACK ratio. This 
would seem more useful in 2 respects:
1) It doesn't consume any option space
2) Typically the sender doesn't know exactly when its need for quick 
ACKs will end, until it does end.

>
>>     Also, since N looks finite number, I'm wondering how to set R=0 for the
>> entire connection. Or, we shouldn't do such a thing?
> Good point!
>
> Perhaps we can define a special value for N meaning "infinity".
>
> There are also considerations similar to the earlier question on whether
> the expected behavior would be the same for the whole connection lifetime.
> Perhaps, in some cases, setting N to "infinity" might represent an
> improvement (since the option would only be sent once). However, if this
> can represent any potential issue, a different setting should be chosen
> for N.
>
> Let's provide guidance on this.

[BB] I have some other comments on the draft, but I'll send a separate 
review email for those that don't relate directly to Yoshi's thread.

Cheers



Bob

>
> We will incorporate your comments in our next draft update.
>
> Thanks!
>
> Cheers,
>
> Carles
>
>
>
>> Thanks,
>> --
>> Yoshi
>> _______________________________________________
>> tcpm mailing list
>> tcpm@ietf.org
>> https://www.ietf.org/mailman/listinfo/tcpm
> _______________________________________________
> tcpm mailing list
> tcpm@ietf.org
> https://www.ietf.org/mailman/listinfo/tcpm

-- 
________________________________________________________________
Bob Briscoe                               http://bobbriscoe.net/