Continuing the discussion from AQL and the ath10k is lovely - forum mods hopefully this thread is OK here but please move if not.
Thanks for your feedback @dtaht. Ultimately, per the title, I will run and post comparisons of the kind you are after, namely:
- for stock Unifi drivers vs OpenWRT mt76
- in situations of varying distance from the APs to wireless client
- using both the Apple
networkQuality
andflent rrul
- with ECN on and off at both ends
...but to begin with I was intrigued by your idea of doing a wired baseline to reason against, especially for the Apple test. That should show higher RPMs right?
Well, sort of... I did a few trials where the path was:
- MacBook running
networkQuality
-> - Gigabit USB-C Ethernet adapter ->
- Gigabit switch ->
- Ubuntu 20 PC with gigabit NIC running the
go
version ofnetworkQualityd
(themy.local.server
from previous post.)
As you can see, RPMs in this setup are high - 5647, 6037, 6357, 5217, 4549, 2222, 5052 - but variable and the upload/download flows the test decides to run aren't always the same.
% networkQuality -C https://my.local.server:443/config
==== SUMMARY ====
Upload capacity: 353.619 Mbps
Download capacity: 379.572 Mbps
Upload flows: 12
Download flows: 20
Responsiveness: High (5647 RPM)
% networkQuality -C https://my.local.server:443/config
==== SUMMARY ====
Upload capacity: 316.223 Mbps
Download capacity: 394.247 Mbps
Upload flows: 12
Download flows: 20
Responsiveness: High (6037 RPM)
% networkQuality -C https://my.local.server:443/config -v
==== SUMMARY ====
Upload capacity: 305.368 Mbps
Download capacity: 377.304 Mbps
Upload flows: 12
Download flows: 20
Responsiveness: High (6357 RPM)
Base RTT: 1
Start: 21/12/2021, 21:44:28
End: 21/12/2021, 21:44:42
% networkQuality -C https://my.local.server:443/config -v
==== SUMMARY ====
Upload capacity: 380.640 Mbps
Download capacity: 391.175 Mbps
Upload flows: 12
Download flows: 20
Responsiveness: High (5217 RPM)
Base RTT: 1
Start: 21/12/2021, 21:44:51
End: 21/12/2021, 21:45:05
% networkQuality -C https://my.local.server:443/config -v
==== SUMMARY ====
Upload capacity: 340.259 Mbps
Download capacity: 410.862 Mbps
Upload flows: 12
Download flows: 20
Responsiveness: High (4549 RPM)
Base RTT: 1
Start: 21/12/2021, 21:45:12
End: 21/12/2021, 21:45:26
% networkQuality -C https://my.local.server:443/config -v
==== SUMMARY ====
Upload capacity: 289.643 Mbps
Download capacity: 380.904 Mbps
Upload flows: 12
Download flows: 20
Responsiveness: High (2222 RPM)
Base RTT: 1
Start: 21/12/2021, 21:45:37
End: 21/12/2021, 21:45:51
% networkQuality -C https://my.local.server:443/config -v
==== SUMMARY ====
Upload capacity: 359.702 Mbps
Download capacity: 359.302 Mbps
Upload flows: 12
Download flows: 12
Responsiveness: High (5052 RPM)
Base RTT: 1
Start: 21/12/2021, 21:46:05
End: 21/12/2021, 21:46:14
So then I wondered 'if two machines don't constitute a stable configuration, why not do it all on one'? In other words - have the client (networkQuality
) and server (networkQualityd
) running on the same machine?
It took a bit of mucking about, in particular adding 127.0.0.1 my.local.server.com
to /etc/hosts
to allow the SSL certificate for my.local.server.com
to work, and compiling the Swift version of networkQualityd
, to create (I think) the path:
- MacBook running
networkQuality
-> - 127.0.0.1:443 ->
- Same MacBook running
networkQualityd
bound to loopback
And this path gives results that are perhaps more puzzling!
The download soars into the Gbps region (presumably as it's just going in and out of the network stack without touching actual NIC hardware), but the upload tops out at 100Mbps level which seems odd, and RPMs are middling at 1886, 1771, 1735, 1528.
% networkQuality -C https://my.local.server.com:443/config -v
==== SUMMARY ====
Upload capacity: 103.213 Mbps
Download capacity: 10.131 Gbps
Upload flows: 12
Download flows: 12
Responsiveness: High (1886 RPM)
Base RTT: 1
Start: 21/12/2021, 22:03:21
End: 21/12/2021, 22:03:30
% networkQuality -C https://my.local.server.com:443/config -v
==== SUMMARY ====
Upload capacity: 108.970 Mbps
Download capacity: 10.161 Gbps
Upload flows: 12
Download flows: 12
Responsiveness: High (1771 RPM)
Base RTT: 1
Start: 21/12/2021, 22:24:25
End: 21/12/2021, 22:24:34
% networkQuality -C https://my.local.server.com:443/config -v
==== SUMMARY ====
Upload capacity: 111.286 Mbps
Download capacity: 10.056 Gbps
Upload flows: 12
Download flows: 12
Responsiveness: High (1735 RPM)
Base RTT: 1
Start: 21/12/2021, 22:24:49
End: 21/12/2021, 22:24:58
% networkQuality -C https://my.local.server.com:443/config -v
==== SUMMARY ====
Upload capacity: 94.539 Mbps
Download capacity: 9.442 Gbps
Upload flows: 12
Download flows: 12
Responsiveness: High (1528 RPM)
Base RTT: 1
Start: 21/12/2021, 22:25:08
End: 21/12/2021, 22:25:17
Furthermore, running networkQuality
with the -s
switch to do upload and download separately completes the download portion of the test but then gets a timeout error (presumably from the server process not responding.)
% networkQuality -C https://my.local.server.com:443/config -v -s
==== SUMMARY ====
Upload capacity: 0.000 bps
Download capacity: 10.267 Gbps
Upload flows: 0
Download flows: 12
Upload Responsiveness: Low (0 RPM)
Download Responsiveness: Low (0 RPM)
Base RTT: 1
Start: 21/12/2021, 22:27:01
End: 21/12/2021, 22:27:41
Error: Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={_kCFStreamErrorCodeKey=-2103, _NSURLErrorFailingURLSessionTaskErrorKey=LocalUploadTask <79A2C95A-28F7-44FC-B03D-061148D759B4>.<1>, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalUploadTask <79A2C95A-28F7-44FC-B03D-061148D759B4>.<1>"
), NSLocalizedDescription=The request timed out., NSErrorFailingURLStringKey=https://my.local.server.com:443/slurp, NSErrorFailingURLKey=https://my.local.server.com:443/slurp, _kCFStreamErrorDomainKey=4}
IIRC the networkQuality
client does some probing before it makes decisions about how many streams to set running, and maybe its conclusions are susceptible to variation that early probing? Why does the number of streams chosen jump from 12 to 20? I can't find the networkQuality
client source to investigate further - perhaps that's because it isn't released anywhere?
I'd also like to be able to run an rrul
test on the same topology (i.e. having netserver
and flent
on the same machine), but I'm stuck as I can't seem to compile the earlier version of fping
for MacOS that I need to avoid the error referenced here but even with the test above there's something odd/interesting going on I think.
Anyway, more to come as I mention above but wanted to post this for starters.