Ask HN: How to bandwidth test a gigabit connection?

2 points by tombrossman ↗ HN
I've purchased a gigabit broadband connection at home, marketed as '1Gbit/s'. It is very fast, but I am unable to determine how fast. Is there a way to independently verify a connection like this? Preferably with a neutral third-party.

Mainstream testing services like Speedtest.net give wildly different results, which are rarely more than a couple hundred Mbit/s (many Speedtest.net servers have less than a 1Gbit/s available). I considered iperf but my servers are capped at 100Mbit/s so this is pointless.

Anyone else with gigabit connections out there able to fact-check your ISP's marketing department? If yes, how do you do it? I don't need to see perfect results but I expect to see better than 800Mbit/s consistently.

9 comments

[ 3.1 ms ] story [ 29.2 ms ] thread
What about a p2p (torrent?) app?
Processing overhead on a large number of torrent connections will overwhelm most consumer routers before they get anywhere near their theoretical max connection speed. Unless OP has a very high-end router, the best test would be a 1-to-1 connection. However, even a 1-to-1 connection (like a rented Linode VPS) will still likely be too much for a consumer router. See the rankings at smallnetbuilder for more info. For example, the fastest AC1750 router can only do 850Mbps from WAN to LAN: http://www.smallnetbuilder.com/wireless/wireless-reviews/321...
My router is a Billion 7800DXL, but unfortunately the linked website has zero reviews for that brand. Based on the specs (plus reviews elsewhere and it's higher cost) I expect it will handle a gigabit connection. LAN transfers are crazy fast and torrents hit very high speeds. I'm just looking for something a little more scientific or standardised.
Keep in mind that LAN transfers only have to do switching, not routing. Packet switching is easy; routing is a bit harder. I did some research. It appears the 7800DXL uses a Broadcom 6361 (http://bc.whirlpool.net.au/bc/hardware/?action=h_view&model_...). According to the OpenWRT wiki, this is a 400MHz dual-core chip (http://wiki.openwrt.org/doc/hardware/soc/soc.broadcom.bcm63x...). I would not expect you to get full gigabit WAN-to-LAN. The highest end routers these days are running dual-cores at 800MHz-1GHz and they are barely up to 1Gbps. For example, the Netgear R7000 runs a dual-core CPU at 1GHz and only makes it up to 930Mbps (http://www.smallnetbuilder.com/wireless/wireless-reviews/322...).

Also, maybe an easy way to test this would be to disconnect your router and put another PC on the WAN port. You can then run iperf between the WAN port and another computer on a LAN port. That should show you the theoretical peak performance doing WAN-to-LAN. Doesn't help you prove your actual connection speeds, but it will give you an idea of what the router is actually capable of.

Sorry, I didn't see this comment earlier. That is some very helpful info so thanks for replying. I may switch to that R7000 if only because I can load different firmware.
We have a similar connection at work and a torrent download is a good way to test the bandwidth.
Go and rent a amazon or linode machine for an hour. Then use netcat and dd for a raw tcp speedtest.
I'll give this a try. Still hoping for a neutral third-party test though, since I will find less speed than claimed from my ISP. That means I still have a situation where they say they are delivering gigabit and I say my tests show differently.
Speedtest works by determining your lat/lon position based on your IP address. It then searches for I think around 10 other servers which are within a certain proximity to your lat/lon position and then fires off a bunch of packets to try and determine which one is the fastest. The biggest problem is if the lat/lon coords for any of the servers, or for your own IP address are off in the geoip database, you can end up hitting servers which could potentially be far away.

If you know a server which is close by, you can try using speedtest-cli (https://pypi.python.org/pypi/speedtest-cli/0.2.7) which will allow you to run the test from the CLI. From there you can set the server parameter and get a fairly accurate reading.