Best tool for measuring connection speed

What is the most-accurate way to measure the WAN’s speed? I’ve read a number of threads on this forum, but I admit that I’m still confused.

My ISP (gigabit fiber) recommended that I connect my computer directly to the modem (bypassing the Omnia) and use speedtest.net. The result:

I don’t know why the speed isn’t closer to 1000Mb/s, but that’s a question for my ISP.

Netmetr produces much-lower results:

The Netmetr capped bandwidth? thread suggests that there is a cap.

wget is more consistent w/ netmetr:

# wget -4 --report-speed=bits -O /dev/null http://speedtest.wdc01.softlayer.com/downloads/test1000.zip

--2018-12-09 12:37:18--  http://speedtest.wdc01.softlayer.com/downloads/test1000.zip
Resolving speedtest.wdc01.softlayer.com... 208.43.102.250
Connecting to speedtest.wdc01.softlayer.com|208.43.102.250|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1073741824 (1.0G) [application/zip]
Saving to: '/dev/null'

/dev/null           100%[===================>]   1.00G   410Mb/s    in 23s     

2018-12-09 12:37:41 (380 Mb/s) - '/dev/null' saved [1073741824/1073741824]

I probably need to choose a server that’s closer to me for a more-accurate result.

Not sure what’s happening with wget-ssl:

# wget-ssl -4 --report-speed=bits -O /dev/null http://speedtest.wdc01.softlayer.com/downloads/test100.zip

--2018-12-09 12:39:19--  http://speedtest.wdc01.softlayer.com/downloads/test100.zip
Resolving speedtest.wdc01.softlayer.com... 208.43.102.250
Connecting to speedtest.wdc01.softlayer.com|208.43.102.250|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 104874307 (100M) [application/zip]
Saving to: '/dev/null'

/dev/null                         100%[===========================================================>] 100.02M   107Mb/s    in 9.3s 

iperf3 is closer to netmetr:

# iperf3 -c iperf.scottlinux.com
Connecting to host iperf.scottlinux.com, port 5201
[  4] local 67.220.20.250 port 54652 connected to 45.33.39.39 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  25.7 MBytes   216 Mbits/sec    0   2.84 MBytes       
[  4]   1.00-2.00   sec  55.0 MBytes   461 Mbits/sec    0   3.15 MBytes       
[  4]   2.00-3.00   sec  43.8 MBytes   367 Mbits/sec   65   2.34 MBytes       
[  4]   3.00-4.00   sec  46.2 MBytes   388 Mbits/sec    0   2.54 MBytes       
[  4]   4.00-5.00   sec  48.8 MBytes   409 Mbits/sec    0   2.70 MBytes       
[  4]   5.00-6.00   sec  51.2 MBytes   430 Mbits/sec    0   2.83 MBytes       
[  4]   6.00-7.00   sec  52.5 MBytes   440 Mbits/sec    0   2.93 MBytes       
[  4]   7.00-8.00   sec  53.8 MBytes   451 Mbits/sec    0   3.00 MBytes       
[  4]   8.00-9.00   sec  55.0 MBytes   461 Mbits/sec    0   3.00 MBytes       
[  4]   9.00-10.00  sec  55.0 MBytes   461 Mbits/sec    0   3.00 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   487 MBytes   409 Mbits/sec   65             sender
[  4]   0.00-10.00  sec   487 MBytes   408 Mbits/sec                  receiver

Questions:

  • Why does Netmetr have a cap?
  • It seems like either wget option doesn’t work accurately. Is this correct?
  • Does Netmetr use iperf3 “behind the scenes”?

There has somewhere been a link to a git repository hosting a python script, that is placed on the TO (or any other openWRT- machine) and uses directly the speedtest.net api.
If you don’t succeed within the next 12 hours finding it, I can assist with the link (I have no access to my notebook atm).

My opinion: The resulting speed depends on the capacity and characteristics of the point on the other side of the measurement. Speedtest and router have different endpoints for speed measurement.

If you are in the USA, the router uses a point in the Czech Republic, so the response is 120ms, it goes with a cable under the sea:-)

The lower detected speed is not a router problem but the inability to set a point for measuring in the US.

1 Like

I’ve used http://www.dslreports.com/ that works quite well. They also have US based servers, so should be useful to you.

3 Likes

The cap does not seem to be there anymore on Netmetr. Here are my last results (there is a broad dispersion but they are usually more consistent):

2018-12-10-160500_671x461_scrot

I also use dslreports.com, but i read in another forum (about TC4400 modem) the page http://fast.com . looks quite good, try this and tell us how it works?

I use the betterspeedtest script that is part of the the OpenWRT Scripts package, it is a CLI script run from the command line, you can find it at: OpenWRT Scripts.

You could run this from Luci using the “Custom Commands” if you dislike typing this into the cli interface. Here is the command that I use to kick off the speed test.

/usr/lib/OpenWrtScripts/betterspeedtest.sh -4 -H netperf.bufferbloat.net -p google.com -t 60

-john

Please note that this will run netperf on the router which, while being an interesting test by itself, is not testing the router’s routing performance… (netperf requires CPU cycles to run and these cycles are not available for anything else anymore, so expect less maximum throughput; and this does stress different parts of the network stack than standard routing.) But I agree this is a nice test… (though probably not useful for 1Gbps+ links)

You’ll probably be interested in a new speedtest package that improves upon both betterspeedtest.sh and netperfrunner.sh. In particular, it also measures CPU processor usage/frequency, which provides insight into when your router becomes CPU-limited, and when running the speedtest off-router may be appropriate.

Usage info, package links and discussion can be found on the OpenWrt forum:

1 Like

Sry, for the delay. You can find a link to the speedtest-cli here:
https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py, before using it you would need to have Python installed, do a chmod a+rx /root/speedtest.py ; chown root:root /root/speedtest.py (assuming you’ve put it into /root/).