Development issues regarding the cerowrt test router project
 help / color / mirror / Atom feed
From: "Holland, Jake" <jholland@akamai.com>
To: Bob McMahon <bob.mcmahon@broadcom.com>,
	"David P. Reed" <dpreed@deepplum.com>
Cc: Cake List <cake@lists.bufferbloat.net>,
	Make-Wifi-fast <make-wifi-fast@lists.bufferbloat.net>,
	Leonard Kleinrock <lk@cs.ucla.edu>,
	"starlink@lists.bufferbloat.net" <starlink@lists.bufferbloat.net>,
	"codel@lists.bufferbloat.net" <codel@lists.bufferbloat.net>,
	cerowrt-devel <cerowrt-devel@lists.bufferbloat.net>,
	bloat <bloat@lists.bufferbloat.net>,
	Ben Greear <greearb@candelatech.com>
Subject: Re: [Bloat] Little's Law mea culpa, but not invalidating my main point
Date: Thu, 15 Jul 2021 01:27:04 +0000	[thread overview]
Message-ID: <777A6DD8-94E3-46E6-A2E0-760E214E72CA@akamai.com> (raw)
In-Reply-To: <CAHb6LvoMmU5onHBbXCoqvvbgD=z195WvN2vUyazbcfBBhc0Wyg@mail.gmail.com>

From: Bob McMahon via Bloat <bloat@lists.bufferbloat.net>
> Date: Wed,2021-07-14 at 11:38 AM
> One challenge I faced with iperf 2 was around flow control's effects on
> latency. I find if iperf 2 rate limits on writes then the end/end
> latencies, RTT look good because the pipe is basically empty, while rate
> limiting reads to the same value fills the window and drives the RTT up.
> One might conclude, from a network perspective, the write side is
> better.  But in reality, the write rate limiting is just pushing the
> delay into the application's logic, i.e. the relevant bytes may not be
> in the pipe but they aren't at the receiver either, they're stuck
> somewhere in the "tx application space."
>
> It wasn't obvious to me how to address this. We added burst measurements
> (burst xfer time, and bursts/sec) which, I think, helps.
...
>>> I find the assumption that congestion occurs "in network" as not always
>>> true. Taking OWD measurements with read side rate limiting suggests that
>>> equally important to mitigating bufferbloat driven latency using congestion
>>> signals is to make sure apps read "fast enough" whatever that means. I
>>> rarely hear about how important it is for apps to prioritize reads over
>>> open sockets. Not sure why that's overlooked and bufferbloat gets all the
>>> attention. I'm probably missing something.

Hi Bob,

You're right that the sender generally also has to avoid sending
more than the receiver can handle to avoid delays in a message-
reply cycle on the same TCP flow.

In general, I think of failures here as application faults rather
than network faults.  While important for user experience, it's
something that an app developer can solve.  That's importantly
different from network buffering.

It's also somewhat possible to avoid getting excessively backed up
in the network because of your own traffic.  Here bbr usually does
a decent job of keeping the queues decently low.  (And you'll maybe
find that some of the bufferbloat measurement efforts are relying
on the self-congestion you get out of cubic, so if you switch them
to bbr you might not get a good answer on how big the network buffers
are.)

In general, anything along these lines has to give backpressure to
the sender somehow.  What I'm guessing you saw when you did receiver-
side rate limiting was that the backpressure had to fill bytes all
the way back to a full receive kernel buffer (making a 0 rwnd for
TCP) and a full send kernel buffer before the send writes start
failing (I think with ENOBUFS iirc?), and that's the first hint the
sender has that it can't send more data right now.  The assumption
that the receiver can receive as fast as the sender can send is so
common that it often goes unstated.

(If you love to suffer, you can maybe get the backpressure to start
earlier, and with maybe a lower impact to your app-level RTT, if
you try hard enough from the receive side with TCP_WINDOW_CLAMP:
https://man7.org/linux/man-pages/man7/tcp.7.html#:~:text=tcp_window_clamp
But you'll still be living with a full send buffer ahead of the
message-response.)

But usually the right thing to do if you want receiver-driven rate
control is to send back some kind of explicit "slow down, it's too
fast for me" feedback at the app layer that will make the sender send
slower.  For instance most ABR players will shift down their bitrate
if they're failing to render video fast enough just as well as if the
network isn't feeding the video segments fast enough, like if they're
CPU-bound from something else churning on the machine.  (RTP-based
video players are supposed to send feedback with this same kind of
"slow down" capability, and sometimes they do.)

But what you can't fix from the endpoints no matter how hard you
try is the buffers in the network that get filled by other people's
traffic.

Getting other people's traffic to avoid breaking my latency when
we're sharing a bottleneck requires deploying something in the network
and it's not something I can fix myself except inside my own network.

While the app-specific fixes would make for very fine blog posts or
stack overflow questions that could help someone who managed to search
the right terms, there's a lot of different approaches for different
apps that can solve it more or less, and anyone who tries hard enough
will land on something that works well enough for them, and you don't
need a whole movement to get people to make it so their own app works
ok for them and their users.  The problems can be subtle and maybe
there will be some late and frustrating nights involved, but anyone
who gets it reproducible and keeps digging will solve it eventually.

But getting stuff deployed in networks to stop people's traffic
breaking each other's latency is harder, especially when it's a
major challenge for people to even grasp the problem and understand
its causes.  The only possible paths to getting a solution widely
deployed (assuming you have one that works) start with things like
"start an advocacy movement" or "get a controlling interest in Cisco".

Best,
Jake



  reply	other threads:[~2021-07-15  1:27 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 [this message]
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
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=777A6DD8-94E3-46E6-A2E0-760E214E72CA@akamai.com \
    --to=jholland@akamai.com \
    --cc=bloat@lists.bufferbloat.net \
    --cc=bob.mcmahon@broadcom.com \
    --cc=cake@lists.bufferbloat.net \
    --cc=cerowrt-devel@lists.bufferbloat.net \
    --cc=codel@lists.bufferbloat.net \
    --cc=dpreed@deepplum.com \
    --cc=greearb@candelatech.com \
    --cc=lk@cs.ucla.edu \
    --cc=make-wifi-fast@lists.bufferbloat.net \
    --cc=starlink@lists.bufferbloat.net \
    /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