From: "Mark Handley" <mark@handley.org.uk>
To: "Ulrich Speidel" <u.speidel@auckland.ac.nz>
Cc: "starlink@lists.bufferbloat.net" <starlink@lists.bufferbloat.net>
Subject: Re: [Starlink] Starlink hidden buffers
Date: Wed, 24 May 2023 16:18:50 +0100 [thread overview]
Message-ID: <624969fc-29ee-4fcf-963a-34afa95b6bc2@app.fastmail.com> (raw)
In-Reply-To: <1c9df33b-e964-f531-7326-1a11b159e6a7@auckland.ac.nz>
[-- Attachment #1: Type: text/plain, Size: 3499 bytes --]
On Wed, 24 May 2023, at 1:55 PM, Ulrich Speidel via Starlink wrote:
>
> Dishy tracks most satellites for significantly less than 15 minutes, and for a relatively small part of their orbit. Let me explain:
>
>
>
>
> This is an obstruction map obtained with starlink-grpc-tools (https://github.com/sparky8512/starlink-grpc-tools). The way to read this is in polar coordinates: The centre of the image is the dishy boresight (direction of surface normal), distance from the centre is elevation measured as an angle from the surface normal, and direction from the centre is essentially the azimuth - top is north, left is west, bottom is south, and right is east. The white tracks are the satellites dishy uses, and a graph like this gets built up over time, one track at a time. Notice how short the tracks are - they don't follow the satellite for long - typically under a minute. The red bits are satellites getting obscured by the edge of our roof.
>
> I've also attached a time lapse movie of how one of these graphs builds up - if I correctly remember (the script is on another machine), one frame in the video corresponds to 5 seconds.
>
> Conclusion: latency change from tracking one satellite is smaller than the latency difference as you jump between satellites. You could be looking at several 100 km of path difference here. In an instant. Even that, at 300,000 km/s of propagation speed, is only in the order of maybe 1 ms or so - peanuts compared to the RTTs in the dozens of ms that we're seeing. But if you get thrown from one queue onto another as you get handed over - what does that do to the remote TCP stack that's serving you?
>
Interesting video. From eyeballing it, it seems that when it changes satellite, it's most often changing between satellites that are a similar distance from boresight. When it does this, the difference in propogation delay from dishy to satellite will be minimal. It's possible it's even switching when the latency matches - I can't really tell from the video.
Of course you can't tell from just one end of the connection whether starlink is switching satellite just when overall ground-to-ground path latency of the current path drops below the path latency of the next path. For that we'd need to see what happened at the groundstation too. But if you were trying to optimize things to minimize reordering, you might try something like this. As you point out, you've still got variable uplink queue sizes to handle as you switch, but there's no fundamental reason why path switches *always* need to result in latency discontinuities.
If you did decide to switch when the underlying path latency matches, and thinking more about those uplink queues: when you switch a path from a smaller uplink queue (at a groundstation) to a larger one, there's no reordering, so TCP should be happy(ish). When switching from a larger uplink queue to a smaller one, you can cause reordering, but it's easy enough to hide by adding an earliest release time to any new packets (based on the last time a packet from that flow was (or will be) last sent on the old path), and not release the packets from the new queue to send to the satellite before that time. I've no idea if anyone cares enough to implement such a scheme though.
Not saying any of this is what Starlink does - just idle speculation as to how you might minimize reordering if it was enough of a problem. And of course I'm ignoring any queues in satellites...
Cheers,
Mark
[-- Attachment #2.1: Type: text/html, Size: 4365 bytes --]
[-- Attachment #2.2: obstructions_pos2_762.png --]
[-- Type: image/png, Size: 1289 bytes --]
next prev parent reply other threads:[~2023-05-24 15:19 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-13 10:10 Ulrich Speidel
2023-05-13 11:20 ` Sebastian Moeller
2023-05-13 12:16 ` Ulrich Speidel
2023-05-13 23:00 ` David Lang
2023-05-13 22:57 ` David Lang
2023-05-14 6:06 ` Ulrich Speidel
2023-05-14 6:55 ` David Lang
2023-05-14 8:43 ` Ulrich Speidel
2023-05-14 9:00 ` David Lang
2023-05-15 2:41 ` Ulrich Speidel
2023-05-15 3:33 ` David Lang
2023-05-15 6:36 ` Sebastian Moeller
2023-05-15 11:07 ` David Lang
2023-05-24 12:55 ` Ulrich Speidel
2023-05-24 13:44 ` Dave Taht
2023-05-24 14:05 ` David Lang
2023-05-24 14:49 ` Michael Richardson
2023-05-24 15:09 ` Dave Collier-Brown
2023-05-24 15:31 ` Dave Taht
2023-05-24 18:30 ` Michael Richardson
2023-05-24 18:45 ` Sebastian Moeller
2023-05-24 13:59 ` David Lang
2023-05-24 22:39 ` Ulrich Speidel
2023-05-25 0:06 ` David Lang
2023-07-27 20:37 ` Ulrich Speidel
2023-05-24 15:18 ` Mark Handley [this message]
2023-05-24 21:50 ` Ulrich Speidel
2023-05-25 0:17 ` David Lang
2023-05-14 9:06 ` Sebastian Moeller
2023-05-14 9:13 ` David Lang
2023-05-14 9:57 ` Oleg Kutkov
2023-05-14 9:59 ` Oleg Kutkov
2023-05-24 15:26 ` Bjørn Ivar Teigen
2023-05-24 21:53 ` Ulrich Speidel
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/starlink.lists.bufferbloat.net/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=624969fc-29ee-4fcf-963a-34afa95b6bc2@app.fastmail.com \
--to=mark@handley.org.uk \
--cc=starlink@lists.bufferbloat.net \
--cc=u.speidel@auckland.ac.nz \
/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