Re: [tcpm] TARR - the two options for R

Carles Gomez Montenegro <carlesgo@entel.upc.edu> Tue, 05 July 2022 14:08 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 9B927C15A740 for <tcpm@ietfa.amsl.com>; Tue, 5 Jul 2022 07:08:24 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.907
X-Spam-Level:
X-Spam-Status: No, score=-1.907 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 7FtG3um4QNRJ for <tcpm@ietfa.amsl.com>; Tue, 5 Jul 2022 07:08:20 -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 9C8E2C15A735 for <tcpm@ietf.org>; Tue, 5 Jul 2022 07:08:20 -0700 (PDT)
Received: from entelserver.upc.edu (entelserver.upc.es [147.83.40.4]) by violet.upc.es (8.14.4/8.14.4/Debian-4.1ubuntu1.1) with ESMTP id 265E8Cxb059742; Tue, 5 Jul 2022 16:08:12 +0200
Received: from webmail.entel.upc.edu (webmail.entel.upc.edu [147.83.40.6]) by entelserver.upc.edu (Postfix) with ESMTP id 049931D53C1; Tue, 5 Jul 2022 16:07:06 +0200 (CEST)
Received: from 10.192.71.246 by webmail.entel.upc.edu with HTTP; Tue, 5 Jul 2022 16:08:20 +0200
Message-ID: <cb162890d51d191b4e40ad407020e8bb.squirrel@webmail.entel.upc.edu>
In-Reply-To: <CACS3ZpBtoqQ0tetcRamp5TmAZMAXn01dqF79X90u_CO4nCA_kw@mail.gmail.com>
References: <8D68AD5E-F8F1-47D9-900C-B15C539D6C25@gmail.com> <CACS3ZpBtoqQ0tetcRamp5TmAZMAXn01dqF79X90u_CO4nCA_kw@mail.gmail.com>
Date: Tue, 05 Jul 2022 16:08:20 +0200
From: Carles Gomez Montenegro <carlesgo@entel.upc.edu>
To: Juhamatti Kuusisaari <juhamatk@gmail.com>
Cc: jon.crowcroft@cl.cam.ac.uk, Jonathan Morton <chromatix99@gmail.com>, tcpm IETF list <tcpm@ietf.org>
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.103.6 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]); Tue, 05 Jul 2022 16:08:12 +0200 (CEST)
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/T1SQmtLYHYnAqp3ZKGnPFNR72uY>
Subject: Re: [tcpm] TARR - the two options for R
X-BeenThere: tcpm@ietf.org
X-Mailman-Version: 2.1.39
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: Tue, 05 Jul 2022 14:08:24 -0000

Dear all,

(Resuming this thread on the two possible encoding options for the 7-bit
field "R", that is, the ACK rate requested by the sender in the TARR draft
[1]...)

First of all, many thanks for the opinions given so far (and special
thanks to Jonathan for starting the thread with detailed feedback).

As a reminder:

  OPTION 1: the R field corresponds to the binary encoding of the
  requested ACK rate. The maximum value of R is 127. A receiver MUST
  ignore an R field with all bits set to zero. (TO-DO: if OPTION 1 is
  selected, see how to handle all bits of R being equal to zero.)

  OPTION 2: the R field is composed of two subfields: the 5 leftmost
  bits represent a mantissa (m) and the 2 rightmost bits represent an
  exponent (e). The value of the requested ACK rate is obtained as R =
  (m+1)*2^(2*e). The maximum value of R is 2048.

In addition to the input below, there are also opinions logged in the IETF
113 TCPM session minutes:

----------------
  Yoshi:
     Option 2 - I don't know the use case for such a large value (1024).

  Bob:
     inaudible -> list

  Gorry:
     I favor option 1, I don't know any value larger than 64 can be
     safe.
----------------

Bob had also written a detailed message motivating the need for what we
are calling Option 2:
https://mailarchive.ietf.org/arch/msg/tcpm/TIStAhSjsYZ8PLHWkbuJ8Bmx8so/

And Michael Scharf had asked "Do we really expect values larger than 63
(or 63) for "R"...?:
https://mailarchive.ietf.org/arch/msg/tcpm/K8_dlkzXYCa6Xi0HxbCpgyPyCT8/

Are there other opinions?

Many thanks,

Carles

[1]
https://datatracker.ietf.org/doc/html/draft-gomez-tcpm-ack-rate-request-04


> Hello,
>
> +1 for Option 2 with a larger max value. We already have 800 Gbps
> links available off-the-shelf and speeds won't go down in the future.
>
> --
>   Juhamatti
>
> On Wed, 30 Mar 2022 at 22:18, Jonathan Morton <chromatix99@gmail.com>
> wrote:
>>
>> During IETF-113, it was asked which of the two encoding options for the
>> R value should be chosen, and I suggested that there were arguments in
>> favour of both, with discussion to follow here.  The text in -04 is as
>> follows:
>>
>> > R: The size of this field is 7 bits. The field carries the ACK rate
>> requested by the sender. The minimum value of R is 1.
>> >
>> > Note: there are currently two options being considered regarding the
>> semantics of the R field:
>> >
>> > OPTION 1: the R field corresponds to the binary encoding of the
>> requested ACK rate. The maximum value of R is 127. A receiver MUST
>> ignore an R field with all bits set to zero. (TO-DO: if OPTION 1 is
>> selected, see how to handle all bits of R being equal to zero.)
>> >
>> > OPTION 2: the R field is composed of two subfields: the 5 leftmost
>> bits represent a mantissa (m) and the 2 rightmost bits represent an
>> exponent (e). The value of the requested ACK rate is obtained as R =
>> (m+1)*2^(2*e). The maximum value of R is 2048.
>>
>> It was further suggested that in Option 1, the value could be encoded as
>> offset-1, so that (for the 7-bit field described) a range of 1-128
>> inclusive was available, and an encoding of all-zeroes would be
>> interpreted as R=1.  I'll assume this suggestion is adopted for this
>> discussion.
>>
>> The main argument in favour of Option 1 is that it is very easy for the
>> sender to encode and the receiver to decode, reducing the likelihood of
>> implementation errors.  The maximum R value of 128 already represents a
>> 64-fold improvement in the status quo, with respect to the number of
>> acknowledgement packets generated by a conforming receiver.  It also
>> allows for the opposite case of disabling Delayed Acks, for those
>> situations where it's needed or desirable, in the simplest reasonable
>> manner.
>>
>> Option 2 is slightly more complex to encode and decode, but allows for a
>> wider range of R values to be represented, still as low as 1, but now as
>> high as 2048, with granularity decreasing as R increases beyond 32.  A
>> question was raised as to whether an R value this high was reasonable,
>> or whether the lower cap of Option 1 would be sufficient for current and
>> future needs.
>>
>> In today's Internet, link speeds of 1Gbps are commonplace (especially on
>> LAN but also increasingly on WAN), and under suitable conditions even a
>> single TCP flow could use it all - with current research going into
>> ensuring that these "suitable conditions" are also normally encountered.
>>  I will therefore use this speed as my benchmark for illustrative
>> purposes, with the understanding that many links are slower today, and
>> conversely will probably be faster still in the future.  For the latter
>> case, I will also consider the theoretical limits of a TCP connection.
>>
>> The standard Ethernet frame size limits an IP packet to 1500 bytes on
>> most networks.  At 1Gbps (and neglecting various overheads), this allows
>> for 83333 data packets per second at the maximum frame size.  Under
>> standard Delayed Ack rules (ie. R=2), this results in 41667 ack packets
>> per second travelling the other way, or almost one every 25
>> microseconds.  This imposes a significant load on the network's ability
>> to handle individual packets, and also imposes a significant processing
>> burden on both of the TCP endpoints.
>>
>> On a shared-medium link, many of these ack packets will be enqueued
>> awaiting access to the medium, which could take several milliseconds.
>> This could result in as many as a thousand ack packets being released in
>> a line-rate burst.  Assuming ack decimation does not occur, this burst
>> will tend to persist all the way back to the sender.  Typically, all but
>> the final ack in the burst yields only redundant information, which will
>> be superseded before the next data segment can be prepared and sent.
>> Ultimately, it is a waste of energy to even emit those redundant acks in
>> the first place.
>>
>> With R=128, the density of ack packets under the same conditions reduces
>> to 651 per second, or about one every millisecond and a half.  This is
>> clearly a major and worthwhile improvement in efficiency.  If we limited
>> the discussion to Ethernet LANs, an R value even this high would not be
>> required at 1Gbps, since the RTT is typically below 1ms in such
>> conditions.  However, Internet paths are typically much longer, and
>> R=128 is clearly justified as soon as a 1Gbps TCP flow goes beyond the
>> LAN, with the RTT exceeding 6ms (using the rule of thumb that at least 4
>> acks per RTT are needed to assure smooth delivery).
>>
>> But the question is whether R values *exceeding* 128 are justifiable.
>> At a "typical" Internet RTT of 100ms, we would like to have an ack every
>> 25ms due to the rule of thumb, and this is achieved by R in the vicinity
>> of 1000.  Longer RTTs (eg. Eastern Europe to US Pacific Coast) might
>> sometimes justify even higher R values.  Since TARR's option 2 has a
>> maximum representable R of 2048, it is a good match for this scenario.
>>
>> We can also sanity-check R=2048 by comparing it to an extreme case in
>> the IP and TCP specifications.  IP packets (and thus TCP segments) can
>> be as large as 64KB (2^16), and the TCP receive window can be as large
>> as 1GB (2^30).  In this case, the window is approximately 2^14 (16K)
>> segments.  Assuming the congestion window actually grows to fill the
>> receive window (which would imply an LFN par excellence), R=2048 would
>> produce 8 acks per RTT, which is a reasonable correspondence to the rule
>> of thumb.  In these extreme conditions, that would be one ack per 128MB
>> of data.
>>
>> The LFN in the room is that stretch-acks are known to promote burstiness
>> in TCP senders, and *either* option - R=128 or R=2048 - would make
>> stretch-acks the norm rather than the exception.  Hence TARR should
>> RECOMMEND that conforming senders use a burst mitigation mechanism such
>> as TCP Pacing, commensurate with the R values emitted.
>>
>>  - Jonathan Morton
>> _______________________________________________
>> 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
>