Testing Local Network Speed

How fast is your home (or office) network?

It’s pretty easy to test internet speed. Google’s Speed Test, Netflix’s Fast.com and Ookla’s Speedtest.net are well known and can (at least) provide internet download speed and latency metrics. More advanced tools like Waveform’s Bufferbloat and Internet Speed Test and StarTrinity’s Continuous internet speed test tool allow debugging of more specific issues.

These don’t tell us anything about local network (intranet) speed though. But why should we care?

Example Time

Let’s assume you have a simple home network with a fibre router (25Mbps internet speed), a Laptop connected via WiFi and a PC connected via Ethernet cable:

  • You run one of the above tests on your Laptop (Data travels along path ARB) and it shows 25Mbps.
  • You run the same test on your PC (Data travels along path ARC) and it shows 25Mbps.

Great, your ISP is giving you the speed you’re paying for. However this just tells you that Link A is operating at 25Mbps and all we know about Links and C is that they’re at least 25Mbps.

Let’s say the Laptop has a 4K screen and the PC has a legally obtained 4K Blu-ray video on it. Can path CRB support the 70+ Mbps that you’ll need to do stream the video from the PC to the Laptop?

Since this isn’t dependent on your internet speed, none of the above tests can give you the answer! You could try to infer the speed by reading up the specs of your router, PC and Laptop. However those give theoretical maximum speeds or vague terms like “WiFi 5”. Also, and most problematically, WiFi speed decreases with distance from the router.

We need something that can directly test the speed of path CRB.

Enter iperf

iperf (specifically the version iperf3) allows us to directly test the above scenario. We just need to install it on the Laptop and PC in the above example, run it et voilà we’ll get the answer.

Here’s a guide to iperf3 on Windows and Linux:

Links to other platforms here. You’ll need two devices running iperf, a client and a server.

Running iperf3 on macOS + iOS

For the testing of my home network, I’ll be using a MacBook Air (M1, macOS 12.6) and an iPhone (12 Mini, iOS 16.0.2)

Installation Steps:

It’s pretty easy to run a test:

  • First, on macOS open Terminal ( + Space, type “Terminal”, Press Enter)
  • Run “ipconfig getifaddr en0” to get your MacBook’s IP (You’ll need this later)
  • Run “iperf3 -s” to start iperf as a Server.

  • Open “iPerf” on your iPhone
  • Enter the Server address (MacBook IP from above step)
  • Leave the other settings as they are (or tap Help for more info)
  • Tap Start

After the test, you should see this on your phone (cropped screenshot):

My Home Network

I recently added two more Deco E4 mesh access points (Deco 2 & 4) to my home network to get better WiFi coverage. Handily, you don’t need to run any Ethernet cables, just connect them to power and set up via the app. Their “WiFi backhaul” system uses WiFi to connect the nodes to each other. Here’s what the network looks like now:

This only shows the “fixed” devices, mobile devices are free to connect and move between Decos. To see how I got to this stage, see relevant posts here

With my current 25Mbps Fibre connection, devices get full internet speed everywhere in the house. But, I’m running devices that need more local speed than that.

One bandwidth intensive task is streaming the home cameras (HIKVISION DVR) to Scrypted then the Apple TV and then back to the Fibre Router. Also, I’m looking to add a NAS to offload larger files from my rapidly filling 256Gb laptop. This requires fast network performance.

Testing the Network

Both the MacBook Air and iPhone support WiFi 802.11ax up to 1200Mbps (specs Phone/MacBook) and the Decos support 802.11ac up to 867 Mbps (specs). Since the testing devices exceed the speed the Deco’s support, they (presumably) won’t be a bottleneck.

To get a baseline, I turned off all the other devices except for the phone and laptop. Setting the Transmit Mode to Download, Streams to 5 and Test duration 30s on the iOS app, I moved the Laptop and phone around to each Deco to create this table (Mbps):

Within some error explained by positioning, it appears that the speeds are similar in both directions. Overlaid onto the network diagram..

..it’s easier to see why certain paths are significantly slower than others. As more hops are taken between Decos, the speed is reduced significantly. TP-Link’s documentation recommends no more than 3 hops.

Post-Testing Summary

Now that the network has been tested, it’s clear that all devices providing services to the network need to be connected to the Main Deco for best performance. Also, the network should support a 50Mbps internet connection everywhere if needed. One unfortunate finding is that my decision to use the cheaper Deco E4 model with it’s 10/100 Ethernet ports will become future limiting factor. All devices connected via Ethernet are capped at 100Mbps. For now, thankfully, that’s not a problem.

The Future

So much fun can be had now that I have a handle on how the network performs. It’s time to add more fun devices like NAS and turn my Raspberry Pi 3B+ into a “real” home server with more functionality. Time to go full r/homelab..

If you have any questions/would like to share your experience with testing network performance, leave a reply below. To receive an email when I publish a post, subscribe here.

(Featured image remixed from this photo)

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Proudly powered by WordPress | Theme: Baskerville 2 by Anders Noren.

Up ↑