[tcpm] Re: using SACK info for RTTM?

rs.ietf@gmx.at Wed, 10 July 2024 06:54 UTC

Return-Path: <rs.ietf@gmx.at>
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 F01E4C14CF18 for <tcpm@ietfa.amsl.com>; Tue, 9 Jul 2024 23:54:16 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.106
X-Spam-Level:
X-Spam-Status: No, score=-2.106 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, FREEMAIL_FROM=0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmx.at
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 012PHKIOGfzF for <tcpm@ietfa.amsl.com>; Tue, 9 Jul 2024 23:54:13 -0700 (PDT)
Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id D3C94C14F5F9 for <tcpm@ietf.org>; Tue, 9 Jul 2024 23:54:12 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at; s=s31663417; t=1720594451; x=1721199251; i=rs.ietf@gmx.at; bh=P7bEbqGF+PD3YoOEtZYIDy6W3CRFMEtD4kWArhJlaMY=; h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:From:Reply-To: Subject:To:References:In-Reply-To:Content-Type: Content-Transfer-Encoding:cc:content-transfer-encoding: content-type:date:from:message-id:mime-version:reply-to:subject: to; b=ljJ2g+xHXR8CPjd53/eLMab4SOywmrpEZCNXSd6o73J+gP2RzUc6z6jbh1XbCA9u vCuANFndhAbDMVVmpT2z7dyobdATwGpzmrKLSLJS3MNyLnIBK8u/y6D9DW8ywifZd HeyiYNLkWCig1rEA14xozQBNZdKo+Lzp/FCQZxDDeDGNfw8cNOg1AkoaOPULIFw+F 0x2g8JfMpePnHCUtdwDlPAn/35mUU/ViSlm/eB1dwpfamnQfq5Ig2zLOiPH12qKaJ 6yWaAgIhNmiMqTmGWFg+WzF3SmS+qafJe4MUl+S78e4PrTzlphHjGxgAx0mXxEtM2 Cx/AP34HBXDvyErkXQ==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [172.20.10.13] ([46.125.249.64]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1N5VD8-1sKSFs3PqM-00ydPe for <tcpm@ietf.org>; Wed, 10 Jul 2024 08:54:10 +0200
Message-ID: <fe1abaf5-afed-45d1-a3d1-1647c93b3c45@gmx.at>
Date: Wed, 10 Jul 2024 08:54:09 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: rs.ietf@gmx.at
To: tcpm@ietf.org
References: <CAAK044QOLRucPZBzeTRBj=m83aXVsFq83zJQgmvYuVVwKTHzFA@mail.gmail.com> <CADVnQy=4Lqsbx_cMgK05ydrYNUbg-tiX8r3ZDmTkZVPTyCZJRg@mail.gmail.com> <CAAK044R5eA622EMPFu2p1hmA_tDHrYdCa5S+r6OSWzCKcsQmSw@mail.gmail.com> <CAK6E8=dcDfawq7z9mDTDQS3PjKyjZibUxvEygqZYvgR6_AHCUA@mail.gmail.com> <CAAK044Rj=BQz__SAqjPUqyFP_Q3Td35LKfxzNRMgNsJX0ES-=Q@mail.gmail.com> <CADVnQykv3JNBWX3xkxdyDVpD+ru9i+aGFygtaL9rtdee0H6_8Q@mail.gmail.com> <CAK6E8=e40CBEj2fcTtYR-aLBxNL5+b2a0D4uDUzJX=-qYwBe=Q@mail.gmail.com> <CAAK044Rgu32KVsq4FzqS4dFjL-ZdCt=aeAy3oF9zbLfmPVG28g@mail.gmail.com> <CADVnQymnGAiBeOTu0O_Bm-H0MpTJTcmWyJb_qRi8Lx8srBXNGA@mail.gmail.com>
In-Reply-To: <CADVnQymnGAiBeOTu0O_Bm-H0MpTJTcmWyJb_qRi8Lx8srBXNGA@mail.gmail.com>
Content-Type: text/plain; charset="UTF-8"; format="flowed"
Content-Transfer-Encoding: quoted-printable
X-Provags-ID: V03:K1:ZiAqAe5/rYNP3DrE1bzfdyf32PKSmyRZGNcN7cLdWmyK/bwtddZ 1b78Bmi19cD1NGURItkhSlxHJ+YNHPH3LeKQezEyQjufNFcc4FAK6751tUfBhPVpac9BGUI N4SgtG7c3Xi+FOANhJgJC1xUwruYQiGtaFstmYybw2nsmM/HlTRINH65LiEaxEzQlIcrgDz MJRP8+/l+x4/JWi+Hq1fw==
UI-OutboundReport: notjunk:1;M01:P0:W0e2gKNBRrc=;DuwWhMSFIanG9J/XzjSfHKgjYBy 0XXFNsTGEvuUib05do00OO9PVU3Aebq5C6SZSxOFb60Wp8LVoFcF58WNcElhfAHLzJ8okrGOp VxSM6DEBy7HNaqwa7CAiV0TMhF7xKeHn2J1vrdjJSOSeEGaDnH2dYrhtEWYbLheRoRyMTRaeH KuaFABRKCcpY+yW/5dfsOM5Ycw4ctcrYkLMpAbbNTCfzjZAT+zizy04r6PIZsDjg/iPsWTyR4 B28I8M9fqaPWOdiw68N0Fex63WeX4BL2v6idEACVQorhwfRpv/0Y9fLWAGyKap3zPfNVnS0Uj nA5uQh9OgIRwwUF907FQxZeJHmQd6KCwzHFlLYJKbg4MC27JE44UN1oWk4oP5j/0+9hCLZ4sG uqCSOrqPRPmjR13rn91aj+3xQ450zlhS1NuensQEEY90hQsPEy7aNqk0mkwF0a6TUn3HeM9q6 OdLYzaiyhcMRaNSeJr+qhaphUnKVwQIwVesgSicSjQHdyajGD8jh7wGAyetLgf2gG22g0RIuo t0RTvjwwsv77HKui3nl/ZB1YU5fVSJkB3CHyP8kiF4eieLkRl1AFTHD7Kq7nfqnZz0k/xgU+p Q3plEMR1Dm4IGmLYbAdUlNHZ6r2ECz79WXkLsLnNrGLywZglVVEYOuFwC9x+C4ae2dKg/K3y7 L64VI3zHmtU8miwh6V5bUfyIMlE3pSRm+TDZ7xh1PaipTaq0Yy4+2XSwvGvc/Sz1ifEzlEZ6d y7esxKGDFOf3oJhPhYTtpiqHHdFimikiqzOa0yEFBRr1fwRO15LtpcMTcefNSV7c24gEv6v6X YajMHuqJas2JUPkMxe4+CTzX3EhmdxVnvnlJtIT5ioGUrXd+yN6k2AXsBB4tBVi4og
Message-ID-Hash: Z6A2IBUPNEYN7WHWBRY4CZ6LIMEKMCVL
X-Message-ID-Hash: Z6A2IBUPNEYN7WHWBRY4CZ6LIMEKMCVL
X-MailFrom: rs.ietf@gmx.at
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-tcpm.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
X-Mailman-Version: 3.3.9rc4
Precedence: list
Reply-To: rs.ietf@gmx.at
Subject: [tcpm] Re: using SACK info for RTTM?
List-Id: TCP Maintenance and Minor Extensions Working Group <tcpm.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/qQ8v2MiyapE9JZ5FxbEPQRWMr5A>
List-Archive: <https://mailarchive.ietf.org/arch/browse/tcpm>
List-Help: <mailto:tcpm-request@ietf.org?subject=help>
List-Owner: <mailto:tcpm-owner@ietf.org>
List-Post: <mailto:tcpm@ietf.org>
List-Subscribe: <mailto:tcpm-join@ietf.org>
List-Unsubscribe: <mailto:tcpm-leave@ietf.org>

Just wanted to point out, that a very long time ago, I was also working
on a scheme to have the timestamp option negotiated between the two end
points in such a way to convey additional information.

Just wondering if a separate option, during SYN when option space is
already scarce, is needed, when some of this information could be
encoded in the TSecr/TSval fields of the existing TSopt..

https://datatracker.ietf.org/doc/draft-scheffenegger-tcpm-timestamp-negotiation/

After all, TCP EDO does not work during the initial 3WHS unfortunately,
so saving as much space as possible appears to be a secondary design goal...

Best regards,
   Richard

Am 05.06.2024 um 20:56 schrieb Neal Cardwell:
> On Wed, Jun 5, 2024 at 2:21 PM Yoshifumi Nishida <nsd.ietf@gmail.com
> <mailto:nsd.ietf@gmail.com>> wrote:
>
>     Hi Yuchung, Neal, thank you so much. It’s interesting.
>
>     So, it might be a good time to revive
>     https://datatracker.ietf.org/doc/draft-yang-tcpm-ets/
>     <https://datatracker.ietf.org/doc/draft-yang-tcpm-ets/> ?
>
>
> Yes, reviving the work for some kind of standardization of more precise
> TCP timestamps is something we would like to do when time permits.
>
>     OTOH, I’m thinking why DSACK is not sufficient here.
>
>
> DSACK can work sometimes, however it is not as good as timestamp undo,
> for at least a few reasons:
>
> (1) DSACK undo is slower: DSACK undo takes about two round trips longer
> than timestamp undo. With DSACK undo the data sender has one extra round
> trip to make a full set of spurious retransmissions for apparent holes
> in the sequence space, and then a second round trip to receive all the
> DSACKs for the spurious retransmissions. Only then can the data sender
> undo the congestion control response. With timestamp-based undo, usually
> a data sender will receive an ACK very shortly (say, O(1ms)) after its
> spurious retransmit that covers the spuriously retransmitted sequence
> and has a TS ECR from before the retransmit, allowing the undo to happen
> immediately.
>
> (2) DSACK undo is unreliable: if even a single ACK packet containing a
> DSACK is lost, then the data sender cannot undo the congestion control
> response. For example, if a flow is fully utilizing a 10Gbps * 100ms
> path, and thus (1500B MTU) its cwnd is at least 82,562, then the loss
> rate in the direction of returning ACKs needs to be zero in that round
> trip, or on average less than 1/82,562, or < 0.0012%. Not impossible,
> but a stringent requirement. With timestamp-based undo every incoming
> ACK has a TS ECR value that allows undo, so ACK loss is not a problem.
>
> neal
>
>     Thanks,
>     —
>     Yoshi
>
>     On Wed, Jun 5, 2024 at 10:06 AM Yuchung Cheng <ycheng@google.com
>     <mailto:ycheng@google.com>> wrote:
>
>         Also TCP timestamp needs to really move to usec level for
>         today's data-center networks, which Eric Dumazet finally
>         upstreamed that feature (to opt-in). anything beyond 10us can't
>         be used in Eifel
>
>         On Wed, Jun 5, 2024 at 6:41 AM Neal Cardwell
>         <ncardwell@google.com <mailto:ncardwell@google.com>> wrote:
>
>             IMHO by far the biggest benefit of TCP timestamps is not in
>             RTT measurement or PAWS, but in using them for "Eifel" undo
>             (a la RFC 3522, RFC 4015): quickly detecting spurious loss
>             detection events due to reordering, and quickly undoing the
>             spurious congestion control slow-down response. This is
>             important since reordering is increasingly common due to
>             many increasingly common network mechanisms: link-layer
>             retransmissions for wifi/cellular links, traffic
>             engineering, multipathing and ECMP/WCMP load-balancing,
>             protective load balancing (SIGCOMM 2022), protective reroute
>             (SIGCOMM 2023), multi-queue NICs, etc. Those factors make
>             the 12 bytes of TCP option space overwhelmingly worth it.
>
>             best regards,
>             neal
>
>
>             On Wed, Jun 5, 2024 at 3:03 AM Yoshifumi Nishida
>             <nsd.ietf@gmail.com <mailto:nsd.ietf@gmail.com>> wrote:
>
>                 Hi Yuchung,
>
>                 Thanks for the explanation.
>                 I thought a bit about the trade-off between using 12
>                 bytes options space and giving up measuring RTTs for
>                 retransmitted packets.
>                 But, I am included to prefer measuring RTTs for now.
>
>                 --
>                 Yoshi
>
>                 On Mon, Jun 3, 2024 at 1:57 PM Yuchung Cheng
>                 <ycheng@google.com <mailto:ycheng@google.com>> wrote:
>
>                     hi Yoshifumi,
>
>                     Linux only uses TS-opts if needed to disambiguate on
>                     RTT samples covering sequences that have been
>                     retransmitted. This applies to SACK or non-SACK. In
>                     order words, if an S/ACK covers a sequence range
>                     that has never been retransmitted, Linux does not
>                     use timestamp options.
>
>                     On Mon, Jun 3, 2024 at 1:29 PM Yoshifumi Nishida
>                     <nsd.ietf@gmail.com <mailto:nsd.ietf@gmail.com>> wrote:
>
>                         Hi Neal, thank you so much for the comments.
>
>                         The linux algorithm you've described makes sense
>                         to me and it seems the scheme doesn't require
>                         timestamp options.
>                         However, as far as I've read linux code, it
>                         seems that linux still uses timestamp options
>                         for RTT measurement to some extent.
>                         I'm curious why linux is mixing two schemes for
>                         RTTM.
>                         --
>                         Yoshi
>
>                         On Mon, Jun 3, 2024 at 8:57 AM Neal Cardwell
>                         <ncardwell@google.com
>                         <mailto:ncardwell@google.com>> wrote:
>
>
>
>                             On Mon, Jun 3, 2024 at 11:02 AM Yoshifumi
>                             Nishida <nsd.ietf@gmail.com
>                             <mailto:nsd.ietf@gmail.com>> wrote:
>
>                                 Hi folks,
>
>                                 While I was checking RFC7323, I
>                                 found the following sentence.
>
>                                 RTTM update processing explicitly excludes segments not updating
>                                 SND.UNA.  The original text could be interpreted to allow taking
>                                 RTT samples when SACK acknowledges some new, non-continuous
>                                 data.
>
>                                 I am a bit curious about the rationale
>                                 of this sentence.
>                                 It seems to me that we cannot measure
>                                 RTT when we have a gap in packet
>                                 sequence with this rule.
>
>
>                             Yes, that rule forbids using RFC7323
>                             timestamps for calculating RTT samples for
>                             SACKed sequence ranges.
>
>                             The rationale: AFAIK this rule is a
>                             necessary consequence of the conditions
>                             under which TS.Recent is updated.
>
>                             The rules for updating TS.Recent are in sec
>                             4.3, "Which Timestamp to Echo":
>                             https://datatracker.ietf.org/doc/html/rfc7323#section-4.3 <https://datatracker.ietf.org/doc/html/rfc7323#section-4.3>
>                             Rule (2) in sec 4.3 says:
>                                If:
>                                  SEG.TSval >= TS.Recent and SEG.SEQ <=
>                             Last.ACK.sent
>                                then SEG.TSval is copied to TS.Recent;
>                             otherwise, it is ignored.
>
>                             Since out-of-order sequence ranges that are
>                             SACKed will fail the SEG.SEQ <=
>                             Last.ACK.sent check, SACKed sequence ranges
>                             will not update TS.Recent. So using
>                             TS.Recent to calculate an RTT sample for a
>                             SACKed sequence range could, in general,
>                             give a vastly overestimated RTT sample. So
>                             that's why it's forbidden by the RFC.
>
>                             However, in practice usually this does not
>                             need to be a big deal. For example, Linux
>                             TCP still obtains an RTT sample for every
>                             non-retransmitted SACKed sequence range, by:
>
>                             (a) recording the transmit time of every
>                             sequence range
>                             (b) recording whether that sequence range
>                             was retransmitted, and then
>                             (c) using those two pieces of information
>                             when that sequence range is cumulatively or
>                             selectively ACKed, to calculate an RTT
>                             sample (rtt_sample = now -
>                             transmit_timestamp) if the sequence range
>                             was never retransmitted.
>
>                             So, in Linux TCP, SACKed sequence ranges
>                             fail to generate an RTT sample only when
>                             they were previously retransmitted.
>
>                             best regards,
>                             neal
>
>                                 Thanks,
>                                 --
>                                 Yoshi
>
>                                 _______________________________________________
>                                 tcpm mailing list -- tcpm@ietf.org
>                                 <mailto:tcpm@ietf.org>
>                                 To unsubscribe send an email to
>                                 tcpm-leave@ietf.org
>                                 <mailto:tcpm-leave@ietf.org>
>
>                         _______________________________________________
>                         tcpm mailing list -- tcpm@ietf.org
>                         <mailto:tcpm@ietf.org>
>                         To unsubscribe send an email to
>                         tcpm-leave@ietf.org <mailto:tcpm-leave@ietf.org>
>
>
> _______________________________________________
> tcpm mailing list -- tcpm@ietf.org
> To unsubscribe send an email to tcpm-leave@ietf.org