On 14/05/2023 10:57 am, David Lang wrote:
On Sat, 13 May 2023, Ulrich Speidel via Starlink wrote:
Here's a bit of a question to you all. See what you make of it.
I've been thinking a bit about the latencies we see in the Starlink
network. This is why this list exist (right, Dave?). So what do we know?
1) We know that RTTs can be in the 100's of ms even in what appear to
be bent-pipe scenarios where the physical one-way path should be well
under 3000 km, with physical RTT under 20 ms.
2) We know from plenty of traceroutes that these RTTs accrue in the
Starlink network, not between the Starlink handover point (POP) to
the Internet.
3) We know that they aren't an artifact of the Starlink WiFi router
(our traceroutes were done through their Ethernet adaptor, which
bypasses the router), so they must be delays on the satellites or the
teleports.
the ethernet adapter bypasses the wifi, but not the router, you have
to cut the cable and replace the plug to bypass the router
Good point - but you still don't get the WiFi buffering here. Or at
least we don't seem to, looking at the difference between running with
and without the adapter.
4) We know that processing delay isn't a huge factor because we also
see RTTs well under 30 ms.
5) That leaves queuing delays.
This issue has been known for a while now. Starlink have been
innovating their heart out around pretty much everything here - and
yet, this bufferbloat issue hasn't changed, despite Dave proposing
what appears to be an easy fix compared to a lot of other things they
have done. So what are we possibly missing here?
Going back to first principles: The purpose of a buffer on a network
device is to act as a shock absorber against sudden traffic bursts.
If I want to size that buffer correctly, I need to know at the very
least (paraphrasing queueing theory here) something about my packet
arrival process.
The question is over what timeframe. If you have a huge buffer, you
can buffer 10s of seconds of traffic and eventually send it. That will
make benchmarks look good, but not the user experience. The rapid drop
in RAM prices (beyond merely a free fall) and the benchmark scores
that heavily penalized any dropped packets encouraged buffers to get
larger than is sane.
it's still a good question to define what is sane, the longer the
buffer, the mor of a chance of finding time to catch up, but having
packets in the buffer that have timed out (i.e. DNS queries tend to
time out after 3 seconds, TCP will give up and send replacement
packets, making the initial packets meaningless) is counterproductive.
What is the acceptable delay to your users?
Here at the bufferbloat project, we tend to say that buffers past a
few 10s of ms worth of traffic are probably bad and are aiming to
single-digit ms in many cases.
Taken as read.
If I look at conventional routers, then that arrival process involves
traffic generated by a user population that changes relatively
slowly: WiFi users come and go. One at a time. Computers in a company
get turned on and off and rebooted, but there are no instantaneous
jumps in load - you don't suddenly have a hundred users in the middle
of watching Netflix turning up that weren't there a second ago. Most
of what we know about Internet traffic behaviour is based on this
sort of network, and this is what we've designed our queuing systems
around, right?
not true, for businesses, every hour as meetings start and let out,
and as people arrive in the morning, arrive back from lunch, you have
very sharp changes in the traffic.
And herein lies the crunch: All of these things that you list happen
over much longer timeframes than a switch to a different satellite.
Also, folk coming back from lunch would start with something like
cwnd=10. Users whose TCP connections get switched over to a different
satellite by some underlying tunneling protocol could have much larger
cwnd.
at home you have less changes in users, but you also may have less
bandwidth (although many tech enthusiasts have more bandwidth than
many companies, two of my last 3 jobs have had <400Mb at their main
office with hundreds of employees while many people would consider
that 'slow' for home use). As such a parent arriving home with a
couple of kids will make a drastic change to the network usage in a
very short time.
I think you've missed my point - I'm talking about changes in network
mid-flight, not people coming home and getting started over a period of
a few minutes. The change you see in a handover is sudden and probably
width sub-second ramp-up. And it's something that doesn't just happen
when people come home or return from lunch - it happens every few minutes.
but the active quueing systems that we are designing (cake, fq_codel)
handle these conditions very well because they don't try to guess what
the usage is going to be, they just look at the packets that they have
to process and figure out how to dispatch them out in the best way.
Understood - I've followed your work.
because we have observed that latency tends to be more noticable for
short connections (DNS, checking if cached web pages are up to date,
etc), our algorithms give a slight priority to new-low-traffic
connections over long-running-high-traffic connections rather than
just splitting the bandwidth evenly across all connections, and can
even go further to split bandwith between endpoints, not just
connections (with endpoints being a configurable definition)
without active queue management, the default is FIFO, which allows the
high-user-impact, short connection packets to sit in a queue behind
the low-user-impace, bulk data transfers. For benchmarks,
a-packet-is-a-packet and they all count, so until you have enough
buffering that you start having expired packets in flight, it doesn't
matter, but for the user experience, there can be a huge difference.
All understood - you're preaching to the converted. It's just that I
think Starlink may be a different ballpark.
Put another way: If you have a protocol (TCP) that is designed to
reasonably expect that its current cwnd is OK to use for now is put into
a situation where there are relatively frequent, huge and lasting step
changes in available BDP within subsecond periods, are your underlying
assumptions still valid?
I suspect they're handing over whole cells, not individual users, at a
time.
David Lang
--
****************************************************************
Dr. Ulrich Speidel
School of Computer Science
Room 303S.594 (City Campus)
The University of Auckland
u.spei...@auckland.ac.nz
http://www.cs.auckland.ac.nz/~ulrich/
****************************************************************
_______________________________________________
Starlink mailing list
Starlink@lists.bufferbloat.net
https://lists.bufferbloat.net/listinfo/starlink