Starlink has bufferbloat. Bad.
 help / color / mirror / Atom feed
* [Starlink] Fwd: [Bloat] goresponsiveness learned a few tricks...
       [not found] <E4D12B5F-8888-4D87-A71F-9E28CEA35145@gmx.de>
@ 2024-01-08 19:45 ` Dave Taht
  2024-01-08 21:08   ` Dave Collier-Brown
  0 siblings, 1 reply; 3+ messages in thread
From: Dave Taht @ 2024-01-08 19:45 UTC (permalink / raw)
  To: Dave Taht via Starlink, libreqos

---------- Forwarded message ---------
From: Sebastian Moeller via Bloat <bloat@lists.bufferbloat.net>
Date: Mon, Jan 8, 2024 at 2:41 PM
Subject: [Bloat] goresponsiveness learned a few tricks...
To: Dave Taht via Bloat <bloat@lists.bufferbloat.net>


Just a quick shoutout to Will Hawkins goresponsiveness effort
(h++ps://github.com/network-quality/goresponsiveness: open source go
implementation along the lines of the RPM IETF responsiveness draft
(h++ps://github.com/network-quality/draft-ietf-ippm-responsiveness).

The goal I think is a quick latency under working conditions/latency
under load for the rest of us. I think the draft likely will get a
last call soon, so whoever wants to add something to the spec or just
wants to comment, now would be a good time:

goresponsiveness is currently acquiring a few nice features, like the
ability to compare the latency between idle and working conditions,
run both saturating loads concurrently, and to report the sub results
for the "self" probes (measuring latency within the load generating
connection/flow) and the "foreign" probes (measuring latency outside
of the load generating flows)

bash-3.2$ ./networkQuality --relative-rpm --rpm.parallel --config
mensura.cdn-apple.com --port 443 --path /api/v1/gm/config
--rpm.timeout 120 --extended-stats --rpm.mnp 32 --logger-filename
go_networkQuality_20231228_223707 --detailed
01-08-2024 19:37:07 UTC Go Responsiveness to mensura.cdn-apple.com:443...
Baseline RPM:  2813 (P90)
Baseline RPM:  3888 (Single-Sided 5% Trimmed Mean)
Results:
========
Download:
        Throughput: 80.367 Mbps (10.046 MBps), using 13 parallel connections.
        Extended Statistics:
                Maximum Segment Size: 1208
                Total Bytes Retransmitted: 2860
                Retransmission Ratio: 0.25%
                Total Bytes Reordered: 140968234
                Average RTT: 34.30769230769231
        RPM: 264 (P90)
        RPM: 509 (Single-Sided 5% Trimmed Mean)
========
Upload:
        Throughput: 30.124 Mbps (3.766 MBps), using 9 parallel connections.
        Extended Statistics:
                Maximum Segment Size: 1208
                Total Bytes Retransmitted: 466855
                Retransmission Ratio: 0.95%
                Total Bytes Reordered: 700
                Average RTT: 37
        RPM: 676 (P90)
        RPM: 2536 (Single-Sided 5% Trimmed Mean)
========
Final RPM Calculation stats:
        Total Self Probes:            933
        Total Foreign Probes:         2799
        Trimmed Self Probes Count:    46
        Trimmed Foreign Probes Count: 139
        P90 Self RTT:                 0.379444841
        P90 Foreign RTT:              0.031294024999999996
        Trimmed Mean Self RTT:        0.035124
        Trimmed Mean Foreign RTT:     0.017979

Final RPM: 292 (P90)
Final RPM: 2260 (Single-Sided 5% Trimmed Mean)
Final RPM (Self Only): 158 (P90)
Final RPM (Self Only): 1708 (Single-Sided 5% Trimmed Mean)
Final RPM (Foreign Only): 1917 (P90)
Final RPM (Foreign Only): 3337 (Single-Sided 5% Trimmed Mean)
Working Conditions RPM Effect:   162% (P90)
Working Conditions RPM Effect:    53% (Single-Sided 5% Trimmed Mean)


The beauty of the self and foreign reports is that here we can see
that my cake'd upstream does a decent job to preserve foreign
responsiveness while in the self responsiveness we see how TCP
self-congests like there is no tomorrow... Please ignore the download
direction, this is over a 100 Mbps USB ethernet dongle and my true
download shaper is set to 105 Mbps, so this is mostly the bad USB
dongle in action...



_______________________________________________
Bloat mailing list
Bloat@lists.bufferbloat.net
https://lists.bufferbloat.net/listinfo/bloat


-- 
40 years of net history, a couple songs:
https://www.youtube.com/watch?v=D9RGX6QFm5E
Dave Täht CSO, LibreQos

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [Starlink] Fwd: [Bloat] goresponsiveness learned a few tricks...
  2024-01-08 19:45 ` [Starlink] Fwd: [Bloat] goresponsiveness learned a few tricks Dave Taht
@ 2024-01-08 21:08   ` Dave Collier-Brown
  2024-01-09  8:31     ` [Starlink] " Sebastian Moeller
  0 siblings, 1 reply; 3+ messages in thread
From: Dave Collier-Brown @ 2024-01-08 21:08 UTC (permalink / raw)
  To: starlink

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

Cool: I got

01-08-2024 21:04:41 UTC Go Responsiveness to mensura.cdn-apple.com:443...
Results:
========
Download:
        Throughput: 150.234 Mbps (18.779 MBps), using 8 parallel connections.
        RPM: 624 (P90)
        RPM: 1005 (Single-Sided 5% Trimmed Mean)
========
Upload:
        Throughput: 13.124 Mbps (1.641 MBps), using 8 parallel connections.
        RPM: 360 (P90)
        RPM: 1210 (Single-Sided 5% Trimmed Mean)
========
Final RPM: 392 (P90)
Final RPM: 1124 (Single-Sided 5% Trimmed Mean)


Now all I have to do is figure out what it means (;-))

--dave

On 2024-01-08 14:45, Dave Taht via Starlink wrote:

---------- Forwarded message ---------
From: Sebastian Moeller via Bloat <bloat@lists.bufferbloat.net><mailto:bloat@lists.bufferbloat.net>
Date: Mon, Jan 8, 2024 at 2:41 PM
Subject: [Bloat] goresponsiveness learned a few tricks...
To: Dave Taht via Bloat <bloat@lists.bufferbloat.net><mailto:bloat@lists.bufferbloat.net>


Just a quick shoutout to Will Hawkins goresponsiveness effort
(h++ps://github.com/network-quality/goresponsiveness: open source go
implementation along the lines of the RPM IETF responsiveness draft
(h++ps://github.com/network-quality/draft-ietf-ippm-responsiveness).

The goal I think is a quick latency under working conditions/latency
under load for the rest of us. I think the draft likely will get a
last call soon, so whoever wants to add something to the spec or just
wants to comment, now would be a good time:

goresponsiveness is currently acquiring a few nice features, like the
ability to compare the latency between idle and working conditions,
run both saturating loads concurrently, and to report the sub results
for the "self" probes (measuring latency within the load generating
connection/flow) and the "foreign" probes (measuring latency outside
of the load generating flows)

bash-3.2$ ./networkQuality --relative-rpm --rpm.parallel --config
mensura.cdn-apple.com --port 443 --path /api/v1/gm/config
--rpm.timeout 120 --extended-stats --rpm.mnp 32 --logger-filename
go_networkQuality_20231228_223707 --detailed
01-08-2024 19:37:07 UTC Go Responsiveness to mensura.cdn-apple.com:443...
Baseline RPM:  2813 (P90)
Baseline RPM:  3888 (Single-Sided 5% Trimmed Mean)
Results:
========
Download:
        Throughput: 80.367 Mbps (10.046 MBps), using 13 parallel connections.
        Extended Statistics:
                Maximum Segment Size: 1208
                Total Bytes Retransmitted: 2860
                Retransmission Ratio: 0.25%
                Total Bytes Reordered: 140968234
                Average RTT: 34.30769230769231
        RPM: 264 (P90)
        RPM: 509 (Single-Sided 5% Trimmed Mean)
========
Upload:
        Throughput: 30.124 Mbps (3.766 MBps), using 9 parallel connections.
        Extended Statistics:
                Maximum Segment Size: 1208
                Total Bytes Retransmitted: 466855
                Retransmission Ratio: 0.95%
                Total Bytes Reordered: 700
                Average RTT: 37
        RPM: 676 (P90)
        RPM: 2536 (Single-Sided 5% Trimmed Mean)
========
Final RPM Calculation stats:
        Total Self Probes:            933
        Total Foreign Probes:         2799
        Trimmed Self Probes Count:    46
        Trimmed Foreign Probes Count: 139
        P90 Self RTT:                 0.379444841
        P90 Foreign RTT:              0.031294024999999996
        Trimmed Mean Self RTT:        0.035124
        Trimmed Mean Foreign RTT:     0.017979

Final RPM: 292 (P90)
Final RPM: 2260 (Single-Sided 5% Trimmed Mean)
Final RPM (Self Only): 158 (P90)
Final RPM (Self Only): 1708 (Single-Sided 5% Trimmed Mean)
Final RPM (Foreign Only): 1917 (P90)
Final RPM (Foreign Only): 3337 (Single-Sided 5% Trimmed Mean)
Working Conditions RPM Effect:   162% (P90)
Working Conditions RPM Effect:    53% (Single-Sided 5% Trimmed Mean)


The beauty of the self and foreign reports is that here we can see
that my cake'd upstream does a decent job to preserve foreign
responsiveness while in the self responsiveness we see how TCP
self-congests like there is no tomorrow... Please ignore the download
direction, this is over a 100 Mbps USB ethernet dongle and my true
download shaper is set to 105 Mbps, so this is mostly the bad USB
dongle in action...



_______________________________________________
Bloat mailing list
Bloat@lists.bufferbloat.net<mailto:Bloat@lists.bufferbloat.net>
https://lists.bufferbloat.net/listinfo/bloat




--
David Collier-Brown,         | Always do right. This will gratify
System Programmer and Author | some people and astonish the rest
dave.collier-brown@indexexchange.com<mailto:dave.collier-brown@indexexchange.com> |              -- Mark Twain


CONFIDENTIALITY NOTICE AND DISCLAIMER : This telecommunication, including any and all attachments, contains confidential information intended only for the person(s) to whom it is addressed. Any dissemination, distribution, copying or disclosure is strictly prohibited and is not a waiver of confidentiality. If you have received this telecommunication in error, please notify the sender immediately by return electronic mail and delete the message from your inbox and deleted items folders. This telecommunication does not constitute an express or implied agreement to conduct transactions by electronic means, nor does it constitute a contract offer, a contract amendment or an acceptance of a contract offer. Contract terms contained in this telecommunication are subject to legal review and the completion of formal documentation and are not binding until same is confirmed in writing and has been signed by an authorized signatory.

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

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [Starlink] [Bloat] goresponsiveness learned a few tricks...
  2024-01-08 21:08   ` Dave Collier-Brown
@ 2024-01-09  8:31     ` Sebastian Moeller
  0 siblings, 0 replies; 3+ messages in thread
From: Sebastian Moeller @ 2024-01-09  8:31 UTC (permalink / raw)
  To: Dave Collier-Brown; +Cc: starlink

Hi Dave,


> On Jan 8, 2024, at 22:08, Dave Collier-Brown via Starlink <starlink@lists.bufferbloat.net> wrote:
> 
> Cool: I got 
> 
> 01-08-2024 21:04:41 UTC Go Responsiveness to mensura.cdn-apple.com:443...
> Results:
> ========
> Download:
> 	Throughput: 150.234 Mbps (18.779 MBps), using 8 parallel connections.
> 	RPM: 624 (P90)
> 	RPM: 1005 (Single-Sided 5% Trimmed Mean)
> ========
> Upload:
> 	Throughput: 13.124 Mbps (1.641 MBps), using 8 parallel connections.
> 	RPM: 360 (P90)
> 	RPM: 1210 (Single-Sided 5% Trimmed Mean)
> ========
> Final RPM: 392 (P90)
> Final RPM: 1124 (Single-Sided 5% Trimmed Mean)
> 
> 
> Now all I have to do is figure out what it means (;-))

RPM is essentially defined as the inverse of latency averaged over:
download saturation: self latency, foreign latency
upload saturation: self latency, foreign latency

self latency is measuring latency from within the load bearing flows, while foreign latency measures against flows not (deeply) involved in the saturating load.


The actual transformation is 60000/RTT[ms] => RPM or 60000/RPM => RTT[ms].


So your numbers mean:

Download:
	RTT(P90) 60000/624 = 96.15 ms
	RTT(sTR5) 60000/1005 = 59.70 ms
Upload:
	RTT(P90) 60000/360 = 166.67 ms
	RTT(sTR5) 60000/1210 = 49.59 ms
Download:
	RTT(P90) 60000/392 = 153.06 ms
	RTT(sTR5) 60000/1124 = 53.38 ms

As expected the 90 percentile values are considerably lower than the (fancy) averages. Without splitting out self and foreign values it is hard to figure out whether that is mostly caused by inter- or intra-flow congestion, but there is a current branch (final_self_and_foreign_rpms) that helps out there:

bash-3.2$ ./networkQuality --relative-rpm --rpm.parallel --config mensura.cdn-apple.com --port 443 --path /api/v1/gm/config --rpm.timeout 120 --extended-stats --rpm.mnp 32 --logger-filename go_networkQuality_20231228_223707 --detailed
01-09-2024 07:20:11 UTC Go Responsiveness to mensura.cdn-apple.com:443...
Baseline RPM:  4786 (P90)
Baseline RPM:  8385 (Single-Sided 5% Trimmed Mean)
Warning: Could not fetch the extended stats for a probe: OOPS: Could not get the TCP info for the connection (not a TLS connection)
Warning: Could not fetch the extended stats for a probe: OOPS: Could not get the TCP info for the connection (not a TLS connection)
Warning: Could not fetch the extended stats for a probe: OOPS: Could not get the TCP info for the connection (not a TLS connection)
Warning: Could not fetch the extended stats for a probe: OOPS: Could not get the TCP info for the connection (not a TLS connection)
Warning: Could not fetch the extended stats for a probe: OOPS: Could not get the TCP info for the connection (not a TLS connection)
Warning: Could not fetch the extended stats for a probe: OOPS: Could not get the TCP info for the connection (not a TLS connection)
Warning: Could not fetch the extended stats for a probe: OOPS: Could not get the TCP info for the connection (not a TLS connection)
Warning: Could not fetch the extended stats for a probe: OOPS: Could not get the TCP info for the connection (not a TLS connection)
Warning: Could not fetch the extended stats for a probe: OOPS: Could not get the TCP info for the connection (not a TLS connection)
Warning: Could not fetch the extended stats for a probe: OOPS: Could not get the TCP info for the connection (not a TLS connection)
Warning: Could not fetch the extended stats for a probe: OOPS: Could not get the TCP info for the connection (not a TLS connection)
Warning: Could not fetch the extended stats for a probe: OOPS: Could not get the TCP info for the connection (not a TLS connection)
Warning: Could not fetch the extended stats for a probe: OOPS: Could not get the TCP info for the connection (not a TLS connection)
Warning: Could not fetch the extended stats for a probe: OOPS: Could not get the TCP info for the connection (not a TLS connection)
Warning: Could not fetch the extended stats for a probe: OOPS: Could not get the TCP info for the connection (not a TLS connection)
Warning: Could not fetch the extended stats for a probe: OOPS: Could not get the TCP info for the connection (not a TLS connection)
Results:
========
Download:
	Note: Test did not run to stability, these results are estimates.
	Throughput: 15.364 Mbps (1.920 MBps), using 32 parallel connections.
	Extended Statistics:
		Maximum Segment Size: 1368
		Total Bytes Retransmitted: 2811
		Retransmission Ratio: 0.11%
		Total Bytes Reordered: 333592209
		Average RTT: 192.0625
	RPM Calculation stats:
		Total Self Probes:            4944
		Total Foreign Probes:         14832
		Trimmed Self Probes Count:    247
		Trimmed Foreign Probes Count: 741
		P90 Self RTT:                 6.849031s
		P90 Foreign RTT:              0.601590s
		P90 RTT:                      3.725311s
		Trimmed Mean Self RTT:        1.906785s
		Trimmed Mean Foreign RTT:     0.132828s
		Trimmed Mean RTT:             1.019806s
	RPM: 16 (P90)
	RPM: 59 (Single-Sided 5% Trimmed Mean)
========
Upload:
	Throughput: 32.503 Mbps (4.063 MBps), using 29 parallel connections.
	Extended Statistics:
		Maximum Segment Size: 1368
		Total Bytes Retransmitted: 1024727
		Retransmission Ratio: 0.24%
		Total Bytes Reordered: 461083
		Average RTT: 176.17241379310346
	RPM Calculation stats:
		Total Self Probes:            7063
		Total Foreign Probes:         21189
		Trimmed Self Probes Count:    353
		Trimmed Foreign Probes Count: 1059
		P90 Self RTT:                 0.770294s
		P90 Foreign RTT:              0.667592s
		P90 RTT:                      0.718943s
		Trimmed Mean Self RTT:        0.112447s
		Trimmed Mean Foreign RTT:     0.120068s
		Trimmed Mean RTT:             0.116258s
	RPM: 83 (P90)
	RPM: 516 (Single-Sided 5% Trimmed Mean)
========
Final RPM Calculation stats:
	Total Self Probes:            12007
	Total Foreign Probes:         36021
	Trimmed Self Probes Count:    600
	Trimmed Foreign Probes Count: 1801
	P90 Self RTT:                 5.504198s
	P90 Foreign RTT:              0.635901s
	P90 RTT:                      3.070049s
	Trimmed Mean Self RTT:        0.119163s
	Trimmed Mean Foreign RTT:     0.123304s
	Trimmed Mean RTT:             0.121233s

Final RPM: 20 (P90) RTT: 3.070049s
Final RPM: 495 (Single-Sided 5% Trimmed Mean) RTT: 0.121233s
Final RPM (Self Only): 11 (P90) RTT: 5.504198s
Final RPM (Self Only): 504 (Single-Sided 5% Trimmed Mean) RTT: 0.119163s
Final RPM (Foreign Only): 94 (P90) RTT: 0.635901s
Final RPM (Foreign Only): 487 (Single-Sided 5% Trimmed Mean) RTT: 0.123304s
Working Conditions RPM Effect:   198% (P90)
Working Conditions RPM Effect:   178% (Single-Sided 5% Trimmed Mean)






> 
> --dave
> 
> On 2024-01-08 14:45, Dave Taht via Starlink wrote:
>> ---------- Forwarded message ---------
>> From: Sebastian Moeller via Bloat 
>> <bloat@lists.bufferbloat.net>
>> 
>> Date: Mon, Jan 8, 2024 at 2:41 PM
>> Subject: [Bloat] goresponsiveness learned a few tricks...
>> To: Dave Taht via Bloat 
>> <bloat@lists.bufferbloat.net>
>> 
>> 
>> 
>> Just a quick shoutout to Will Hawkins goresponsiveness effort
>> (h++ps://github.com/network-quality/goresponsiveness: open source go
>> implementation along the lines of the RPM IETF responsiveness draft
>> (h++ps://github.com/network-quality/draft-ietf-ippm-responsiveness).
>> 
>> The goal I think is a quick latency under working conditions/latency
>> under load for the rest of us. I think the draft likely will get a
>> last call soon, so whoever wants to add something to the spec or just
>> wants to comment, now would be a good time:
>> 
>> goresponsiveness is currently acquiring a few nice features, like the
>> ability to compare the latency between idle and working conditions,
>> run both saturating loads concurrently, and to report the sub results
>> for the "self" probes (measuring latency within the load generating
>> connection/flow) and the "foreign" probes (measuring latency outside
>> of the load generating flows)
>> 
>> bash-3.2$ ./networkQuality --relative-rpm --rpm.parallel --config
>> mensura.cdn-apple.com --port 443 --path /api/v1/gm/config
>> --rpm.timeout 120 --extended-stats --rpm.mnp 32 --logger-filename
>> go_networkQuality_20231228_223707 --detailed
>> 01-08-2024 19:37:07 UTC Go Responsiveness to mensura.cdn-apple.com:443...
>> Baseline RPM:  2813 (P90)
>> Baseline RPM:  3888 (Single-Sided 5% Trimmed Mean)
>> Results:
>> ========
>> Download:
>>         Throughput: 80.367 Mbps (10.046 MBps), using 13 parallel connections.
>>         Extended Statistics:
>>                 Maximum Segment Size: 1208
>>                 Total Bytes Retransmitted: 2860
>>                 Retransmission Ratio: 0.25%
>>                 Total Bytes Reordered: 140968234
>>                 Average RTT: 34.30769230769231
>>         RPM: 264 (P90)
>>         RPM: 509 (Single-Sided 5% Trimmed Mean)
>> ========
>> Upload:
>>         Throughput: 30.124 Mbps (3.766 MBps), using 9 parallel connections.
>>         Extended Statistics:
>>                 Maximum Segment Size: 1208
>>                 Total Bytes Retransmitted: 466855
>>                 Retransmission Ratio: 0.95%
>>                 Total Bytes Reordered: 700
>>                 Average RTT: 37
>>         RPM: 676 (P90)
>>         RPM: 2536 (Single-Sided 5% Trimmed Mean)
>> ========
>> Final RPM Calculation stats:
>>         Total Self Probes:            933
>>         Total Foreign Probes:         2799
>>         Trimmed Self Probes Count:    46
>>         Trimmed Foreign Probes Count: 139
>>         P90 Self RTT:                 0.379444841
>>         P90 Foreign RTT:              0.031294024999999996
>>         Trimmed Mean Self RTT:        0.035124
>>         Trimmed Mean Foreign RTT:     0.017979
>> 
>> Final RPM: 292 (P90)
>> Final RPM: 2260 (Single-Sided 5% Trimmed Mean)
>> Final RPM (Self Only): 158 (P90)
>> Final RPM (Self Only): 1708 (Single-Sided 5% Trimmed Mean)
>> Final RPM (Foreign Only): 1917 (P90)
>> Final RPM (Foreign Only): 3337 (Single-Sided 5% Trimmed Mean)
>> Working Conditions RPM Effect:   162% (P90)
>> Working Conditions RPM Effect:    53% (Single-Sided 5% Trimmed Mean)
>> 
>> 
>> The beauty of the self and foreign reports is that here we can see
>> that my cake'd upstream does a decent job to preserve foreign
>> responsiveness while in the self responsiveness we see how TCP
>> self-congests like there is no tomorrow... Please ignore the download
>> direction, this is over a 100 Mbps USB ethernet dongle and my true
>> download shaper is set to 105 Mbps, so this is mostly the bad USB
>> dongle in action...
>> 
>> 
>> 
>> _______________________________________________
>> Bloat mailing list
>> 
>> Bloat@lists.bufferbloat.net
>> https://lists.bufferbloat.net/listinfo/bloat
>> 
>> 
>> 
>> 
> -- 
> David Collier-Brown,         | Always do right. This will gratify
> System Programmer and Author | some people and astonish the rest
> 
> dave.collier-brown@indexexchange.com |              -- Mark Twain
> 
> CONFIDENTIALITY NOTICE AND DISCLAIMER : This telecommunication, including any and all attachments, contains confidential information intended only for the person(s) to whom it is addressed. Any dissemination, distribution, copying or disclosure is strictly prohibited and is not a waiver of confidentiality. If you have received this telecommunication in error, please notify the sender immediately by return electronic mail and delete the message from your inbox and deleted items folders. This telecommunication does not constitute an express or implied agreement to conduct transactions by electronic means, nor does it constitute a contract offer, a contract amendment or an acceptance of a contract offer. Contract terms contained in this telecommunication are subject to legal review and the completion of formal documentation and are not binding until same is confirmed in writing and has been signed by an authorized signatory.
> 
> _______________________________________________
> Starlink mailing list
> Starlink@lists.bufferbloat.net
> https://lists.bufferbloat.net/listinfo/starlink


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2024-01-09  8:31 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <E4D12B5F-8888-4D87-A71F-9E28CEA35145@gmx.de>
2024-01-08 19:45 ` [Starlink] Fwd: [Bloat] goresponsiveness learned a few tricks Dave Taht
2024-01-08 21:08   ` Dave Collier-Brown
2024-01-09  8:31     ` [Starlink] " Sebastian Moeller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox