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

Carles Gomez Montenegro <> Wed, 06 July 2022 17:16 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 7E516C15A745 for <>; Wed, 6 Jul 2022 10:16:47 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.909
X-Spam-Status: No, score=-1.909 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01] autolearn=ham autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id tRPaSOz1Mtb8 for <>; Wed, 6 Jul 2022 10:16:43 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 20094C14F73F for <>; Wed, 6 Jul 2022 10:16:42 -0700 (PDT)
Received: from ( []) by (8.14.4/8.14.4/Debian-4.1ubuntu1.1) with ESMTP id 266HGTCW050822; Wed, 6 Jul 2022 19:16:30 +0200
Received: from ( []) by (Postfix) with ESMTP id AC7EB1D53C1; Wed, 6 Jul 2022 19:15:22 +0200 (CEST)
Received: from by with HTTP; Wed, 6 Jul 2022 19:16:33 +0200
Message-ID: <>
In-Reply-To: <>
References: <> <> <> <>
Date: Wed, 06 Jul 2022 19:16:33 +0200
From: Carles Gomez Montenegro <>
Cc: tcpm IETF list <>,
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: Delayed for 27:08:18 by milter-greylist-4.3.9 ( []); Wed, 06 Jul 2022 19:16:30 +0200 (CEST)
Archived-At: <>
Subject: Re: [tcpm] TARR - the two options for R
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: TCP Maintenance and Minor Extensions Working Group <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Wed, 06 Jul 2022 17:16:47 -0000

Hi Michael,

Many thanks for your response!

Please find below my inline comments:


>> Are there other opinions?

> Hi Carles,
> I would like to give some feedback as an individual.
> This feedback is based on using your draft in one of my courses
> at university resulting in a prototype implementation for FreeBSD
> and packetdrill.

This is great news!
Your implementation-based feedback is highly appreciated.

> Here are some points:
> 1. You might want to say which kind (253 or 254) is used on the
>    sender side and on the receiver side. The prototype accepts
>    both on the receiver side and uses only one on the sender side.
>    Which one is used on the sender side is compiled into the code.

Yes, there is a TBD currently in the draft (-04). For -05, our current
proposal is to use 254.

> 2. Regarding the encoding of R: I prefer option 1.
>    This allows to use the value of 0 to be used to signal that
>    an ACK for this segment should be sent immediately, but no
>    persistent change of the ACK ratio should be performed.

I see. In this case, R=0 would be a special case (i.e., an exception),
since by default the ACK rate would be the one requested with values of R
different from zero.

> 3. If the range 1 - 127 is considered too small, one might consider
>    using two bytes for the option value. Currently, the length of
>    the option is odd, and therefore TCP implementations might add
>    some padding (NOP) anyway, since other options used after the
>    connection establishment like the timestamp or the sack option
>    have an even length.

If some padding would typically be added by implementations to produce an
even option length, then we can use your suggestion and define a two-byte
field for R (perhaps keeping some reserved bit(s)).

With this approach -let's call it OPTION 3-, we could use a simple binary
encoding for R. Probably, one detail to figure out (and, probably,
discuss) then would be which would be the maximum value for R...

Any further thoughts?

> 4. If SYN cookies are used and one is not willing to not spend another
>    bit for representing TARR support, you might want to specify that the
>    client sends the TARR option on the ACK of the three way handshake.
>    That way a server willing to support the TARR option can "learn"
>    from the client that it is OK to send the TARR option by observing
>    that the client sends it. It can also be learned later...

If I recall correctly, Bob suggested this same idea. In IETF 113, Martin
asked if sending the TARR option in this way (on the ACK), and thus not
reliably, could be a concern.

If there is lack of SYN space, perhaps one approach could be to learn it
later as you suggest, and/or to allow sending the TARR option on the ACK
but explaining the mentioned caveat...

Once again, many thanks for your input and for the prototype
implementation work!



> Best regards
> Michael