Development issues regarding the cerowrt test router project
 help / color / mirror / Atom feed
From: Bob McMahon <bob.mcmahon@broadcom.com>
To: "Bjørn Ivar Teigen" <bjorn@domos.no>
Cc: "Stuart Cheshire" <cheshire@apple.com>,
	starlink@lists.bufferbloat.net,
	"Valdis Klētnieks" <valdis.kletnieks@vt.edu>,
	Make-Wifi-fast <make-wifi-fast@lists.bufferbloat.net>,
	"David P. Reed" <dpreed@deepplum.com>,
	"Cake List" <cake@lists.bufferbloat.net>,
	codel <codel@lists.bufferbloat.net>,
	"Matt Mathis" <mattmathis@google.com>,
	cerowrt-devel <cerowrt-devel@lists.bufferbloat.net>,
	bloat <bloat@lists.bufferbloat.net>,
	"Neal Cardwell" <ncardwell@google.com>
Subject: Re: [Starlink] [Make-wifi-fast] TCP_NOTSENT_LOWAT applied to e2e TCP msg latency
Date: Tue, 26 Oct 2021 10:23:28 -0700	[thread overview]
Message-ID: <CAHb6LvpUBKFGUTnuafGxQAJBfNEO=zS20SvxTJ88e6VJAP54=g@mail.gmail.com> (raw)
In-Reply-To: <CAKf5G6JpeaxRkbwhuNE5zUb7tX3H4eo0HOuX+C0DCSrcg4Byhg@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 8537 bytes --]

Hi Bjørn,

I find, when possible, it's preferred to take telemetry data of actual
traffic (or reads and writes) vs a proxy. We had a case where TCP BE was
outperforming TCP w/VI because BE had the most engineering resources
assigned to it and engineers did a better job with BE. Using a proxy
protocol wouldn't have exercised the same logic paths (in this case it was
in the L2 driver) as TCP did. Hence, measuring actual TCP traffic (or
socket reads and socket writes) was needed to flush out the problem. Note:
I also find that network engineers tend to focus on the stack but it's the
e2e at the application level that impacts user experience. Send side bloat
can drive the OWD while the TCP stack's RTT may look fine. For WiFi test &
measurements, we've decided most testing should be using TCP_NOSENT_LOWAT
because it helps mitigate send side bloat which WiFi engineering doesn't
focus on per lack of ability to impact.

Also, I think OWD is under tested and two way based testing can give
incomplete and inaccurate information, particularly with respect to things
like an e2e transport's control loop.  A most obvious example is assuming
1/2 RTT is the same as OWD to/fro. For WiFi this assumption is most always
false. It also false for many residential internet connections where OWD
asymmetry is designed in.

Bob


On Tue, Oct 26, 2021 at 3:04 AM Bjørn Ivar Teigen <bjorn@domos.no> wrote:

> Hi Bob,
>
> My name is Bjørn Ivar Teigen and I'm working on modeling and measuring
> WiFi MAC-layer protocol performance for my PhD.
>
> Is it necessary to measure the latency using the TCP stream itself? I had
> a similar problem in the past, and solved it by doing the latency
> measurements using TWAMP running alongside the TCP traffic. The requirement
> for this to work is that the TWAMP packets are placed in the same queue(s)
> as the TCP traffic, and that the impact of measurement traffic is small
> enough so as not to interfere too much with your TCP results.
> Just my two cents, hope it's helpful.
>
> Bjørn
>
> On Tue, 26 Oct 2021 at 06:32, Bob McMahon <bob.mcmahon@broadcom.com>
> wrote:
>
>> Thanks Stuart this is helpful. I'm measuring the time just before the
>> first write() (of potentially a burst of writes to achieve a burst size)
>> per a socket fd's select event occurring when TCP_NOT_SENT_LOWAT being set
>> to a small value, then sampling the RTT and CWND and providing histograms
>> for all three, all on that event. I'm not sure the correctness of RTT and
>> CWND at this sample point. This is a controlled test over 802.11ax and
>> OFDMA where the TCP acks per the WiFi clients are being scheduled by the AP
>> using 802.11ax trigger frames so the AP is affecting the end/end BDP per
>> scheduling the transmits and the acks. The AP can grow the BDP or shrink it
>> based on these scheduling decisions.  From there we're trying to maximize
>> network power (throughput/delay) for elephant flows and just latency for
>> mouse flows. (We also plan some RF frequency stuff to per OFDMA) Anyway,
>> the AP based scheduling along with aggregation and OFDMA makes WiFi
>> scheduling optimums non-obvious - at least to me - and I'm trying to
>> provide insights into how an AP is affecting end/end performance.
>>
>> The more direct approach for e2e TCP latency and network power has been
>> to measure first write() to final read() and compute the e2e delay. This
>> requires clock sync on the ends. (We're using ptp4l with GPS OCXO
>> atomic references for that but this is typically only available in some
>> labs.)
>>
>> Bob
>>
>>
>> On Mon, Oct 25, 2021 at 8:11 PM Stuart Cheshire <cheshire@apple.com>
>> wrote:
>>
>>> On 21 Oct 2021, at 17:51, Bob McMahon via Make-wifi-fast <
>>> make-wifi-fast@lists.bufferbloat.net> wrote:
>>>
>>> > Hi All,
>>> >
>>> > Sorry for the spam. I'm trying to support a meaningful TCP message
>>> latency w/iperf 2 from the sender side w/o requiring e2e clock
>>> synchronization. I thought I'd try to use the TCP_NOTSENT_LOWAT event to
>>> help with this. It seems that this event goes off when the bytes are in
>>> flight vs have reached the destination network stack. If that's the case,
>>> then iperf 2 client (sender) may be able to produce the message latency by
>>> adding the drain time (write start to TCP_NOTSENT_LOWAT) and the sampled
>>> RTT.
>>> >
>>> > Does this seem reasonable?
>>>
>>> I’m not 100% sure what you’re asking, but I will try to help.
>>>
>>> When you set TCP_NOTSENT_LOWAT, the TCP implementation won’t report your
>>> endpoint as writable (e.g., via kqueue or epoll) until less than that
>>> threshold of data remains unsent. It won’t stop you writing more bytes if
>>> you want to, up to the socket send buffer size, but it won’t *ask* you for
>>> more data until the TCP_NOTSENT_LOWAT threshold is reached. In other words,
>>> the TCP implementation attempts to keep BDP bytes in flight +
>>> TCP_NOTSENT_LOWAT bytes buffered and ready to go. The BDP of bytes in
>>> flight is necessary to fill the network pipe and get good throughput. The
>>> TCP_NOTSENT_LOWAT of bytes buffered and ready to go is provided to give the
>>> source software some advance notice that the TCP implementation will soon
>>> be looking for more bytes to send, so that the buffer doesn’t run dry,
>>> thereby lowering throughput. (The old SO_SNDBUF option conflates both
>>> “bytes in flight” and “bytes buffered and ready to go” into the same
>>> number.)
>>>
>>> If you wait for the TCP_NOTSENT_LOWAT notification, write a chunk of n
>>> bytes of data, and then wait for the next TCP_NOTSENT_LOWAT notification,
>>> that will tell you roughly how long it took n bytes to depart the machine.
>>> You won’t know why, though. The bytes could depart the machine in response
>>> for acks indicating that the same number of bytes have been accepted at the
>>> receiver. But the bytes can also depart the machine because CWND is
>>> growing. Of course, both of those things are usually happening at the same
>>> time.
>>>
>>> How to use TCP_NOTSENT_LOWAT is explained in this video:
>>>
>>> <https://developer.apple.com/videos/play/wwdc2015/719/?time=2199>
>>>
>>> Later in the same video is a two-minute demo (time offset 42:00 to time
>>> offset 44:00) showing a “before and after” demo illustrating the dramatic
>>> difference this makes for screen sharing responsiveness.
>>>
>>> <https://developer.apple.com/videos/play/wwdc2015/719/?time=2520>
>>>
>>> Stuart Cheshire
>>
>>
>> This electronic communication and the information and any files
>> transmitted with it, or attached to it, are confidential and are intended
>> solely for the use of the individual or entity to whom it is addressed and
>> may contain information that is confidential, legally privileged, protected
>> by privacy laws, or otherwise restricted from disclosure to anyone else. If
>> you are not the intended recipient or the person responsible for delivering
>> the e-mail to the intended recipient, you are hereby notified that any use,
>> copying, distributing, dissemination, forwarding, printing, or copying of
>> this e-mail is strictly prohibited. If you received this e-mail in error,
>> please return the e-mail to the sender, delete it from your computer, and
>> destroy any printed copy of it.
>> _______________________________________________
>> Starlink mailing list
>> Starlink@lists.bufferbloat.net
>> https://lists.bufferbloat.net/listinfo/starlink
>>
>
>
> --
> Bjørn Ivar Teigen
> Head of Research
> +47 47335952 | bjorn@domos.no <name@domos.no> | www.domos.no
> WiFi Slicing by Domos
>

-- 
This electronic communication and the information and any files transmitted 
with it, or attached to it, are confidential and are intended solely for 
the use of the individual or entity to whom it is addressed and may contain 
information that is confidential, legally privileged, protected by privacy 
laws, or otherwise restricted from disclosure to anyone else. If you are 
not the intended recipient or the person responsible for delivering the 
e-mail to the intended recipient, you are hereby notified that any use, 
copying, distributing, dissemination, forwarding, printing, or copying of 
this e-mail is strictly prohibited. If you received this e-mail in error, 
please return the e-mail to the sender, delete it from your computer, and 
destroy any printed copy of it.

[-- Attachment #2: Type: text/html, Size: 11833 bytes --]

  reply	other threads:[~2021-10-26 17:23 UTC|newest]

Thread overview: 108+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-01  0:12 [Cerowrt-devel] Due Aug 2: Internet Quality workshop CFP for the internet architecture board Dave Taht
2021-07-02  1:16 ` David P. Reed
2021-07-02  4:04   ` [Make-wifi-fast] " Bob McMahon
2021-07-02 16:11     ` [Cerowrt-devel] [Starlink] [Make-wifi-fast] " Dick Roy
2021-07-02 17:07   ` [Cerowrt-devel] " Dave Taht
2021-07-02 23:28     ` [Make-wifi-fast] " Bob McMahon
2021-07-06 13:46       ` [Cerowrt-devel] [Starlink] [Make-wifi-fast] " Ben Greear
2021-07-06 20:43         ` [Starlink] [Make-wifi-fast] [Cerowrt-devel] " Bob McMahon
2021-07-06 21:24           ` [Cerowrt-devel] [Starlink] [Make-wifi-fast] " Ben Greear
2021-07-06 22:05             ` [Starlink] [Make-wifi-fast] [Cerowrt-devel] " Bob McMahon
2021-07-07 13:34               ` [Cerowrt-devel] [Starlink] [Make-wifi-fast] " Ben Greear
2021-07-07 19:19                 ` [Starlink] [Make-wifi-fast] [Cerowrt-devel] " Bob McMahon
2021-07-08 19:38         ` [Cerowrt-devel] [Starlink] [Make-wifi-fast] " David P. Reed
2021-07-08 22:51           ` [Starlink] [Make-wifi-fast] [Cerowrt-devel] " Bob McMahon
2021-07-09  3:08           ` [Cerowrt-devel] [Starlink] [Make-wifi-fast] " Leonard Kleinrock
2021-07-09 10:05             ` [Cerowrt-devel] [Make-wifi-fast] [Starlink] " Luca Muscariello
2021-07-09 19:31               ` [Cerowrt-devel] Little's Law mea culpa, but not invalidating my main point David P. Reed
2021-07-09 20:24                 ` Bob McMahon
2021-07-09 22:57                 ` [Bloat] " Holland, Jake
2021-07-09 23:37                   ` Toke Høiland-Jørgensen
2021-07-09 23:01                 ` [Cerowrt-devel] " Leonard Kleinrock
2021-07-09 23:56                   ` [Cerowrt-devel] [Bloat] " Jonathan Morton
2021-07-17 23:56                     ` [Cerowrt-devel] [Make-wifi-fast] " Aaron Wood
2021-07-10 19:51                   ` Bob McMahon
2021-07-10 23:24                     ` Bob McMahon
2021-07-12 13:46                 ` [Bloat] " Livingood, Jason
2021-07-12 17:40                   ` [Cerowrt-devel] " David P. Reed
2021-07-12 18:21                     ` Bob McMahon
2021-07-12 18:38                       ` Bob McMahon
2021-07-12 19:07                       ` [Cerowrt-devel] " Ben Greear
2021-07-12 20:04                         ` Bob McMahon
2021-07-12 20:32                           ` [Cerowrt-devel] " Ben Greear
2021-07-12 20:36                             ` [Cerowrt-devel] [Cake] " David Lang
2021-07-12 20:50                               ` Bob McMahon
2021-07-12 20:42                             ` Bob McMahon
2021-07-13  7:14                             ` [Cerowrt-devel] " Amr Rizk
2021-07-13 17:07                               ` Bob McMahon
2021-07-13 17:49                                 ` [Cerowrt-devel] " David P. Reed
2021-07-14 18:37                                   ` Bob McMahon
2021-07-15  1:27                                     ` Holland, Jake
2021-07-16  0:34                                       ` Bob McMahon
     [not found]                                   ` <A5E35F34-A4D5-45B1-8E2D-E2F6DE988A1E@cs.ucla.edu>
2021-07-22 16:30                                     ` Bob McMahon
2021-07-13 17:22                               ` Bob McMahon
2021-07-17 23:29                             ` [Cerowrt-devel] " Aaron Wood
2021-07-18 19:06                               ` Bob McMahon
2021-07-12 21:54                           ` [Cerowrt-devel] [Make-wifi-fast] " Jonathan Morton
2021-09-20  1:21                 ` [Cerowrt-devel] " Dave Taht
2021-09-20  4:00                   ` Valdis Klētnieks
2021-09-20  4:09                     ` David Lang
2021-09-20 21:30                       ` David P. Reed
2021-09-20 21:44                         ` [Cerowrt-devel] [Cake] " David P. Reed
2021-09-20 12:57                     ` [Cerowrt-devel] [Starlink] " Steve Crocker
2021-09-20 16:36                       ` [Cerowrt-devel] [Cake] " John Sager
2021-09-21  2:40                       ` [Starlink] [Cerowrt-devel] " Vint Cerf
2021-09-23 17:46                         ` Bob McMahon
2021-09-26 18:24                           ` [Cerowrt-devel] [Starlink] " David P. Reed
2021-10-22  0:51                             ` TCP_NOTSENT_LOWAT applied to e2e TCP msg latency Bob McMahon
2021-10-26  3:11                               ` [Make-wifi-fast] " Stuart Cheshire
2021-10-26  4:24                                 ` [Cerowrt-devel] [Bloat] " Eric Dumazet
2021-10-26 18:45                                   ` Christoph Paasch
2021-10-26 23:23                                     ` Bob McMahon
2021-10-26 23:38                                       ` Christoph Paasch
2021-10-27  1:12                                         ` [Cerowrt-devel] " Eric Dumazet
2021-10-27  3:45                                           ` Bob McMahon
2021-10-27  5:40                                             ` [Cerowrt-devel] " Eric Dumazet
2021-10-28 16:04                                             ` Christoph Paasch
2021-10-29 21:16                                               ` Bob McMahon
2021-10-26  5:32                                 ` Bob McMahon
2021-10-26 10:04                                   ` [Cerowrt-devel] [Starlink] " Bjørn Ivar Teigen
2021-10-26 17:23                                     ` Bob McMahon [this message]
2021-10-27 14:29                                       ` [Cerowrt-devel] [Make-wifi-fast] [Starlink] " Sebastian Moeller
2021-08-02 22:59               ` [Make-wifi-fast] [Starlink] [Cerowrt-devel] Due Aug 2: Internet Quality workshop CFP for the internet architecture board Bob McMahon
2021-08-02 23:16                 ` [Cerowrt-devel] [Cake] [Make-wifi-fast] [Starlink] " David Lang
2021-08-02 23:50                   ` [Cake] [Make-wifi-fast] [Starlink] [Cerowrt-devel] " Bob McMahon
2021-08-03  3:06                     ` [Cerowrt-devel] [Cake] [Make-wifi-fast] [Starlink] " David Lang
2021-08-02 23:55                   ` Ben Greear
2021-08-03  0:01                     ` [Cake] [Make-wifi-fast] [Starlink] [Cerowrt-devel] " Bob McMahon
2021-08-03  3:12                       ` [Cerowrt-devel] [Cake] [Make-wifi-fast] [Starlink] " David Lang
2021-08-03  3:23                         ` [Cake] [Make-wifi-fast] [Starlink] [Cerowrt-devel] " Bob McMahon
2021-08-03  4:30                           ` [Cerowrt-devel] [Cake] [Make-wifi-fast] [Starlink] " David Lang
2021-08-03  4:38                             ` [Cake] [Make-wifi-fast] [Starlink] [Cerowrt-devel] " Bob McMahon
2021-08-03  4:44                               ` [Cerowrt-devel] [Cake] [Make-wifi-fast] [Starlink] " David Lang
2021-08-03 16:01                                 ` [Cake] [Make-wifi-fast] [Starlink] [Cerowrt-devel] " Bob McMahon
2021-08-08  4:35                             ` [Cerowrt-devel] [Starlink] [Cake] [Make-wifi-fast] " Dick Roy
2021-08-08  5:04                               ` [Starlink] [Cake] [Make-wifi-fast] [Cerowrt-devel] " Bob McMahon
2021-08-08  5:04                           ` [Cerowrt-devel] [Starlink] [Cake] [Make-wifi-fast] " Dick Roy
2021-08-08  5:07                             ` [Starlink] [Cake] [Make-wifi-fast] [Cerowrt-devel] " Bob McMahon
2021-08-10 14:10                           ` [Cerowrt-devel] [Starlink] [Cake] [Make-wifi-fast] " Rodney W. Grimes
2021-08-10 16:13                             ` Dick Roy
2021-08-10 17:06                               ` [Starlink] [Cake] [Make-wifi-fast] [Cerowrt-devel] " Bob McMahon
2021-08-10 17:56                                 ` [Cerowrt-devel] [Starlink] [Cake] [Make-wifi-fast] " Dick Roy
2021-08-10 18:11                                 ` Dick Roy
2021-08-10 19:21                                   ` [Starlink] [Cake] [Make-wifi-fast] [Cerowrt-devel] " Bob McMahon
2021-08-10 20:16                                     ` [Cerowrt-devel] Anhyone have a spare couple a hundred million ... Elon may need to start a go-fund-me page! Dick Roy
2021-08-10 20:33                                       ` [Cerowrt-devel] [Starlink] " Jeremy Austin
2021-08-10 20:44                                         ` David Lang
2021-08-10 22:54                                           ` Bob McMahon
2021-09-02 17:36                                   ` [Cerowrt-devel] [Cake] [Starlink] [Make-wifi-fast] Due Aug 2: Internet Quality workshop CFP for the internet architecture board David P. Reed
2021-09-03 14:35                                     ` [Bloat] [Cake] [Starlink] [Make-wifi-fast] [Cerowrt-devel] " Matt Mathis
2021-09-03 18:33                                       ` [Cerowrt-devel] [Bloat] [Cake] [Starlink] [Make-wifi-fast] " David P. Reed
2021-08-03  0:37                   ` [Cerowrt-devel] [Cake] [Make-wifi-fast] [Starlink] " Leonard Kleinrock
2021-08-03  1:24                     ` [Cake] [Make-wifi-fast] [Starlink] [Cerowrt-devel] " Bob McMahon
2021-08-08  5:07                       ` [Cerowrt-devel] [Starlink] [Cake] [Make-wifi-fast] " Dick Roy
2021-08-08  5:15                         ` [Starlink] [Cake] [Make-wifi-fast] [Cerowrt-devel] " Bob McMahon
2021-08-08 18:36                           ` [Cerowrt-devel] [Make-wifi-fast] [Starlink] [Cake] " Aaron Wood
2021-08-08 18:48                             ` [Cerowrt-devel] [Bloat] " Jonathan Morton
2021-08-08 19:58                               ` [Bloat] [Make-wifi-fast] [Starlink] [Cake] [Cerowrt-devel] " Bob McMahon
2021-08-08  4:20                     ` [Cerowrt-devel] [Starlink] [Cake] [Make-wifi-fast] " Dick Roy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://lists.bufferbloat.net/postorius/lists/cerowrt-devel.lists.bufferbloat.net/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAHb6LvpUBKFGUTnuafGxQAJBfNEO=zS20SvxTJ88e6VJAP54=g@mail.gmail.com' \
    --to=bob.mcmahon@broadcom.com \
    --cc=bjorn@domos.no \
    --cc=bloat@lists.bufferbloat.net \
    --cc=cake@lists.bufferbloat.net \
    --cc=cerowrt-devel@lists.bufferbloat.net \
    --cc=cheshire@apple.com \
    --cc=codel@lists.bufferbloat.net \
    --cc=dpreed@deepplum.com \
    --cc=make-wifi-fast@lists.bufferbloat.net \
    --cc=mattmathis@google.com \
    --cc=ncardwell@google.com \
    --cc=starlink@lists.bufferbloat.net \
    --cc=valdis.kletnieks@vt.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox