Re: [tcpm] [iccrg] A description of Linux pacing

Hiren Panchasara <hiren.panchasara@gmail.com> Fri, 22 March 2024 20:50 UTC

Return-Path: <hiren.panchasara@gmail.com>
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 242E8C1CAF2A for <tcpm@ietfa.amsl.com>; Fri, 22 Mar 2024 13:50:10 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.105
X-Spam-Level:
X-Spam-Status: No, score=-2.105 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, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, 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=unavailable autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
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 2bkbsEZEIGnI for <tcpm@ietfa.amsl.com>; Fri, 22 Mar 2024 13:50:05 -0700 (PDT)
Received: from mail-il1-x12d.google.com (mail-il1-x12d.google.com [IPv6:2607:f8b0:4864:20::12d]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 8F949C1CAF29 for <tcpm@ietf.org>; Fri, 22 Mar 2024 13:50:05 -0700 (PDT)
Received: by mail-il1-x12d.google.com with SMTP id e9e14a558f8ab-366a4bcb2a8so11576245ab.3 for <tcpm@ietf.org>; Fri, 22 Mar 2024 13:50:05 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1711140604; x=1711745404; darn=ietf.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=/GmpiXmvupGuuZHdIJcQJfZ9OHKWf3F14fMNvKyRQKQ=; b=SBTUGmExxmHjUYO3Sx2gJtbHJi0H7oJ61NdNL0gK8Got32xStvxG/9paIMaruhyYbI x7VM2uhXJ8kzM1bUW5WNq8e24p/76ZUCAyL4FGRqvPecmhZRYQMFdCvhBgWRYq1I9DkQ KQUO7/O612cwA9RSf6IInEB0ScevIqk1gmn0RsneWSWH7trAMS9DdIk6T1JkoVqZwvyf OfTdu2EKQCOe3PVKa4Fh0oYBN7oYKot6Ivk9zMY/JUj2oMmcDFAqAbGbapXunssLnBkx KJCADuHNI12CSNKUrTN3VCQi6ZAdPbaPDmT3FLKz+AtWMQm4IZiX8/viu0MGhC+JSs8Z Zc7w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711140604; x=1711745404; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=/GmpiXmvupGuuZHdIJcQJfZ9OHKWf3F14fMNvKyRQKQ=; b=GVqJ6jNkGHkmj1Av4ZI8tUcjZEssJ2ZRQTzGwrRTZg9q/b5I2C/eVecSFgpbpol7Lx bPBB1BHulMelDeWbwIrNTvxtpHo876YA1JrexhqsHuBXzRM+2vGCXeAJAhX2KAIOS+BS iowm8h1dO8ZJQCgK70R+m/po0mpchDKo8g+DSngMccjAZVVVLiYWvenNGCpC6MiHhoec EJ1tEiuAEHMkhpnsgHq3Y6xwSyTsUhL2yQagKSqgF3uYgCec8Qi2IGlRev6VlbpBJAgb ZseURHAVkzWvG2l43KZxGOKPKJsC0+Xq4bAizy6xMqMmsR2vZ2vk9r5BmrKAOq6aARk9 T/Mg==
X-Forwarded-Encrypted: i=1; AJvYcCVe5tXnd6bYj6D8rLz2N6qFY61CcXQ7E76TOr4BWB/Q9H48LqH2j5ubuZrZBUyZEtcAdeaIqDrlKPpjvSMp
X-Gm-Message-State: AOJu0YwnAmpRTr+YuDIZ5Aq173lsy1PUA0cMsRY29udJm1QN/72bhAc3 KOsDJn+jIW3Esaens+niG5sS7cGCwGYn0UDEi22lRmOsH8xz8KAzYbRjM9Jgkd+oMi4auqM7edt tJpCfqaXkSBt7qxTgDxASW74c5w4=
X-Google-Smtp-Source: AGHT+IE0YWNKXTmS9ceJ6VE16PIA+Iuwu9YWIpmQFFRUyWOGRucPsbWJCTBwaPSdD3YSdOzrvWzKXepzp8DMSBDPn7Y=
X-Received: by 2002:a92:c710:0:b0:365:1ea2:2072 with SMTP id a16-20020a92c710000000b003651ea22072mr649380ilp.24.1711140604424; Fri, 22 Mar 2024 13:50:04 -0700 (PDT)
MIME-Version: 1.0
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> <3913cc016a774fb5b1f262232ad97a25@hs-esslingen.de> <CAK6E8=ejDxfWH2Q295mTRPxWO712M2U0fSyWVC5b+0LDvafTjQ@mail.gmail.com>
In-Reply-To: <CAK6E8=ejDxfWH2Q295mTRPxWO712M2U0fSyWVC5b+0LDvafTjQ@mail.gmail.com>
From: Hiren Panchasara <hiren.panchasara@gmail.com>
Date: Fri, 22 Mar 2024 13:49:53 -0700
Message-ID: <CALCpEUH7mGXc+mgvwvBjUYZvxE09OzFYPWLtqzdcgMgqkuxjrQ@mail.gmail.com>
To: Yuchung Cheng <ycheng=40google.com@dmarc.ietf.org>
Cc: "Scharf, Michael" <Michael.Scharf@hs-esslingen.de>, Michael Welzl <michawe@ifi.uio.no>, Eric Dumazet <edumazet@google.com>, "tcpm@ietf.org" <tcpm@ietf.org>, "iccrg@irtf.org" <iccrg@irtf.org>
Content-Type: multipart/alternative; boundary="000000000000e34086061445f787"
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/V1Sdid1otMvAN-RkaTIXrEOoBh0>
X-Mailman-Approved-At: Sat, 23 Mar 2024 08:54:58 -0700
Subject: Re: [tcpm] [iccrg] 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:50:57 -0000

A doc like this would have been very helpful to me when I was trying to do
pacing on a proprietary stack. Specifically considering that we have the
rest of the related things (loss detection, congestion control etc etc)
well documented but pacing is not.
Though I agree code will always be more accurate (which is probably true
for many other things??), it doesn't mean we can't document the current
state. :-) At least it provides a starting point for someone to start
digging into and then can go to code.
FreeBSD has also developed a notion of pacing in the last few years but I
am supportive of formalizing the doc proposed here that documents pacing
for Linux.

My 2c,
Hiren

On Fri, Mar 22, 2024 at 1:08 PM Yuchung Cheng <ycheng=
40google.com@dmarc.ietf.org> wrote:

> my 2c: Linux is open source. nothing is better than the code itself to
> fully understand how it works in the most current form.
>
> A BCP on pacing design could be informational on pros and cons of various
> SW/HW approaches on pacing. But it should not be Linux-specific or
> generally implementation specific. In that regard, TSO/GRO BCP seems more
> critical than pacing, as I continue to see HW or smart-NIC support has bugs.
>
> On Fri, Mar 22, 2024 at 12:52 PM Scharf, Michael <
> Michael.Scharf@hs-esslingen.de> wrote:
>
>> 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> 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>
>> 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> 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> 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
>> https://www.ietf.org/mailman/listinfo/tcpm
>>
>>
>>
>> _______________________________________________
>> 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
>>
>>
>>
> _______________________________________________
> iccrg mailing list
> iccrg@irtf.org
> https://mailman.irtf.org/mailman/listinfo/iccrg
>