Re: [tcpm] A description of Linux pacing

"Scharf, Michael" <Michael.Scharf@hs-esslingen.de> Fri, 22 March 2024 20:00 UTC

Return-Path: <Michael.Scharf@hs-esslingen.de>
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 F2B5DC151081 for <tcpm@ietfa.amsl.com>; Fri, 22 Mar 2024 13:00:27 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.404
X-Spam-Level:
X-Spam-Status: No, score=-4.404 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, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=unavailable autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=hs-esslingen.de
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 y6wntui__Abn for <tcpm@ietfa.amsl.com>; Fri, 22 Mar 2024 13:00:23 -0700 (PDT)
Received: from mail.hs-esslingen.de (mail.hs-esslingen.de [134.108.32.78]) (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 46E99C14CE5F for <tcpm@ietf.org>; Fri, 22 Mar 2024 13:00:22 -0700 (PDT)
Received: from localhost (localhost.localdomain [127.0.0.1]) by mail.hs-esslingen.de (Postfix) with ESMTP id A1CA825A1A; Fri, 22 Mar 2024 20:52:04 +0100 (CET)
DKIM-Filter: OpenDKIM Filter v2.9.1 mail.hs-esslingen.de A1CA825A1A
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=hs-esslingen.de; s=20240206; t=1711137124; bh=C8ntQ1fY1HZoQByURxST4vyZqQCCT9LFOQ6Me2q+ZTA=; h=From:To:CC:Subject:Date:References:In-Reply-To:From; b=YVAcLY0uGUVHMV/ZKMWu/pSi0MQx3t3LdgBwCdHVJzzIO/izaJ4unEQ8ZoHTIJPoB Gce50MiCVnFldfmwyM6LR2NY3viwrSMRvoY8YDK6BletOCTx90oNOXzyj8sZaz6xae DBIOCuM5ipN063DbdSpf4oUEH8VPAtcWvCazcNWg4bCPxhiDtT+4XiB85E1mHrX49F rIdcutwaNABCs13uqD6FPw6aXLbzh/BghdXz5C6ppDAYeVcVtrrE2FoUP9/rxGkBju zlq4rhvCnpqBoWQDsYTqUBUjjp6JiO6mILRkHO9sbt0aCL9H9VDbg0jusCgqa+ftM1 OtratVBOrVSKw==
X-Virus-Scanned: by amavisd-new-2.7.1 (20120429) (Debian) at hs-esslingen.de
Received: from mail.hs-esslingen.de ([127.0.0.1]) by localhost (hs-esslingen.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id yREDp7Qf2WXZ; Fri, 22 Mar 2024 20:52:03 +0100 (CET)
Received: from rznt8202.rznt.rzdir.fht-esslingen.de (rznt8202.hs-esslingen.de [134.108.48.165]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.hs-esslingen.de (Postfix) with ESMTPS; Fri, 22 Mar 2024 20:52:03 +0100 (CET)
Received: from rznt8202.rznt.rzdir.fht-esslingen.de (134.108.48.165) by rznt8202.rznt.rzdir.fht-esslingen.de (134.108.48.165) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.37; Fri, 22 Mar 2024 20:52:03 +0100
Received: from rznt8202.rznt.rzdir.fht-esslingen.de ([fe80::aca4:171a:3ee1:57e0]) by rznt8202.rznt.rzdir.fht-esslingen.de ([fe80::aca4:171a:3ee1:57e0%3]) with mapi id 15.01.2507.037; Fri, 22 Mar 2024 20:52:03 +0100
From: "Scharf, Michael" <Michael.Scharf@hs-esslingen.de>
To: Michael Welzl <michawe@ifi.uio.no>, Yuchung Cheng <ycheng=40google.com@dmarc.ietf.org>
CC: Eric Dumazet <edumazet@google.com>, "tcpm@ietf.org" <tcpm@ietf.org>, "iccrg@irtf.org" <iccrg@irtf.org>
Thread-Topic: [tcpm] A description of Linux pacing
Thread-Index: AQHaepoqaunGnOOWckKSSDmXv0Uge7FA6oGAgAJY9ICAAOdEkA==
Date: Fri, 22 Mar 2024 19:52:02 +0000
Message-ID: <3913cc016a774fb5b1f262232ad97a25@hs-esslingen.de>
References: <AE83F8F4-7D71-4034-93E7-365E1CD701F5@ifi.uio.no> <CAM4esxQg=MmBMJ-2dyWLX0HCy9yBCCaVBaWof31MFNBC-37ajQ@mail.gmail.com> <16FCCC7E-7F2E-453D-AD9B-BA6942C7B2F9@ifi.uio.no> <CAK6E8=e8zKtnKKinu3d81Wpk2gYRa8iPMO+Z9ynSd8PSP0Fp0A@mail.gmail.com> <587F9123-886F-49B2-9145-B7BEBD0CDF73@ifi.uio.no>
In-Reply-To: <587F9123-886F-49B2-9145-B7BEBD0CDF73@ifi.uio.no>
Accept-Language: de-DE, en-US
Content-Language: de-DE
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [134.108.140.249]
Content-Type: multipart/alternative; boundary="_000_3913cc016a774fb5b1f262232ad97a25hsesslingende_"
MIME-Version: 1.0
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/M61MicSxVSniBuycyCbgEJHRyiM>
Subject: Re: [tcpm] A description of Linux pacing
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: Fri, 22 Mar 2024 20:00:28 -0000

Hi all,

While this is probably not really useful to understand the current state-of-the-art, here is an old pointer:

Almost 17 years ago there was a TSVAREA presentation about an experiment with pacing in the Linux kernel: https://www.ietf.org/proceedings/69/slides/tsvarea-3.pdf

(More details were published later in https://content.ikr.uni-stuttgart.de/en/Content/Publications/Archive/Sf_QuickStartTCP-LNCS_36636.pdf)

Quick-Start TCP was IMHO one of the first proposals that mandated pacing (only in the first RTT). At least in the Linux kernel we were not aware of much related work on pacing back then.

Well, this is very old stuff. But +1 that documenting the current state-of-the-art could make sense.

Michael

From: tcpm <tcpm-bounces@ietf.org> On Behalf Of Michael Welzl
Sent: Friday, March 22, 2024 7:47 AM
To: Yuchung Cheng <ycheng=40google.com@dmarc.ietf.org>
Cc: Eric Dumazet <edumazet@google.com>; tcpm@ietf.org; iccrg@irtf.org
Subject: Re: [tcpm] A description of Linux pacing

This is useful indeed, many thanks for the pointer!  (*I* knew about it, but still).

This said, I found this reference, and others, to be too "high-level" for  my own purposes. I wanted to understand what I see at a finer detail, and I think that this is the kind of documentation that’s missing IMO.  (e.g., the initial burst limit of 10 (not IW, but hard-coded 10) packets, which took me by surprise, and will probably surprise others who were unaware; how micro bursts are used to implement a rate at a ~ 1ms granularity, with upper and lower bounds; the divergence from this for hosts that are less than 3ms away, …).

Cheers,
Michael




On Mar 20, 2024, at 7:55 PM, Yuchung Cheng <ycheng=40google.com@dmarc.ietf.org<mailto:ycheng=40google.com@dmarc.ietf.org>> wrote:

Neal and I have a short paper on Linux pacing, which integrates TSQ, and TSO autosizing. it has evolved over the years but the core design remains.
https://netdevconf.info/1.2/papers/bbr-netdev-1.2.new.new.pdf

On Wed, Mar 20, 2024 at 12:42 AM Michael Welzl <michawe@ifi.uio.no<mailto:michawe@ifi.uio.no>> wrote:
Hi,

and thanks for your feedback!

I agree; I can write this up in time for the Vancouver IETF. As for documenting other implementations, I don’t know internals of any others… but I’m very willing to involve others in such an I-D - if any expert on a different OS is interested, get in touch!

Else, I could just make a start with this and see where it goes. It’s not much work, I can keep it short and simple.

Cheers,
Michael



On 12 Mar 2024, at 23:08, Martin Duke <martin.h.duke@gmail.com<mailto:martin.h.duke@gmail.com>> wrote:

Speaking as an individual, it's a bummer we don't have a real RFC about pacing, this would be a decent Informational RFC for a way to do pacing, that is also a useful reference for how an important implementation does it.

Even more ambitious, one could document the approaches of several major implementations.

On Mon, Feb 19, 2024 at 6:06 AM Michael Welzl <michawe@ifi.uio.no<mailto:michawe@ifi.uio.no>> wrote:
Dear TCPM and ICCRG (I assume that there’s so much overlap with people in CCWG that it would just be spamming to send it there too?),

Over the last two weeks or so, I have put some effort into trying to understand how Linux pacing *really* works  (I had some descriptions that were somewhat high-level; I wanted to obtain a more precise lower-level understanding).
I wrote a document, just for myself, explaining what goes on in the code, as I can’t even try to follow the Linux kernel without taking notes.

After a first iteration, I shared it with the bufferbloat mailing list, in the hope of getting corrections.
I did!  Most notably (but not only), Neal Cardwell helped me a ton - and now the document should be quite thorough and hopefully correct.

While I only did this for myself and just asked the list for help, several people have in the meantime told me that this document is actually valuable for the community - and so I thought I should share it here, too.
It lives as a Google doc at this URL:
https://docs.google.com/document/d/1-uXnPDcVBKmg5krkG5wYBgaA2yLSFK_kZa7xGDWc7XU/edit?usp=sharing

Comments or fixes are very welcome!
Please feel free to forward this as you want.

I know that Google docs is not the format that we people here normally use  :-)   well, if someone thinks that it would indeed be useful to write this up as an I-D (probably skipping all the code details though), please let me know - I can do that, and I can also present it if there’s interest (but in Vancouver, not Brisbane).

Cheers,
Michael

_______________________________________________
tcpm mailing list
tcpm@ietf.org<mailto:tcpm@ietf.org>
https://www.ietf.org/mailman/listinfo/tcpm

_______________________________________________
tcpm mailing list
tcpm@ietf.org<mailto:tcpm@ietf.org>
https://www.ietf.org/mailman/listinfo/tcpm
_______________________________________________
tcpm mailing list
tcpm@ietf.org<mailto:tcpm@ietf.org>
https://www.ietf.org/mailman/listinfo/tcpm