Apple just released an interesting command-line utility for macOS to evaluate the quality of a network. We previously discussed the “Teams Network Assessment Tool” developed by Microsoft, which serves the purpose of evaluating the quality of your network connectivity. As Microsoft offers a range of productivity tools such as Teams, SharePoint, and Office 365, their assessment tools are primarily designed to evaluate performance specifically for Microsoft’s services and infrastructure. However, it is worth noting that utilizing these tools can provide a reliable assessment of your network connectivity performance to the broader Internet as well.
This type of tool was absent from macOS until the release of Monterey, when Apple introduced the “networkQuality” utility. On macOS, this utility is exclusively run through the Terminal, which can pose a challenge for inexperienced users. In fact, Apple explicitly states in their documentation:
However, I believe with some guidance anyone could use this utility.
In its simplest form all you need to do is:
- Open the macOS Terminal
- Type “networkQuality”
If you want to see the available options type:
panos% networkQuality -h
USAGE: networkQuality [-C <configuration_url>] [-c] [-h] [-I <interfaceName>] [-s] [-v]
-C: override Configuration URL
-c: Produce computer-readable output
-h: Show help (this message)
-I: Bind test to interface (e.g., en0, pdp_ip0,...)
-s: Run tests sequentially instead of parallel upload/download
-v: Verbose output
If you don’t give any options, the utility uses Apple’s CDN to make the measurements, and the measurements. However, if you want to set up your own endpoint server you use the ‘-C’ option to specify the URL or IP address. The rest of the options are pretty self explanatory.
Here is how the output looks:
==== SUMMARY ====
Upload capacity: 163.034 Mbps
Download capacity: 322.687 Mbps
Upload flows: 20
Download flows: 12
Responsiveness: High (1646 RPM)
The upload and download figures look familiar. But what are the “flows” and the “responsiveness”?
Apple researchers were not satisfied by the current way “network quality” was measured, and they introduced a few more metrics to capture a more realistic user experience, which led to a new IETF RFC. They say:
“This document specifies the “RPM Test” for measuring responsiveness. It uses common protocols and mechanisms to measure user experience especially when the network is under working conditions. The measurement is expressed as “Round-trips Per Minute” (RPM) and should be included with throughput (up and down) and idle latency as critical indicators of network quality.”
Apple provides the following categories for RPM:
- Low: If any device on the same network is, for example, downloading a movie or backing up photos to iCloud, the connection in some apps or services might be unreliable, like during FaceTime video calls or gaming.
- Medium: When multiple devices or apps are sharing the network, you might see momentary pauses or freezes, like during FaceTime audio or video calls.
- High: Regardless of the number of devices and apps sharing the network, apps and services should maintain good connection.
Apart from giving pure upload and download figures in Mbps, they also wanted to introduce a way to measure the user experience when the network is actually under stress, which is the “Round-trips Per Minute” or RPM. That aspires to replace latency which might be confusing to the novice user, since a value of 25 ms doesn’t say much. What is a millisecond and what does 25 of them mean? RPM (according to them) is an integer, with higher values representing better network quality.
Towards that direction, the download and upload measures are done concurrently by default, which is more realistic since when you are on a videoconferencing you transmit and receive at the same time. Similar tools, like the Ookla or Fast.com run the download and upload sequentially. networkQuality can do that by using the options ‘-s’.
The upload and download flows show how many parallel connections the utility had to use to get an accurate measurement as soon as possible. Even if just one flow is sufficient to make the same measurement, it might take much longer to complete. Multiple flows make the test finish faster and also give the ability to stress test large pipes.
If you want to learn more about it, I would encourage you to read through the RFC draft.
Apple’s “networkQuality” utility fills the gap in network assessment on macOS, though its Terminal-based usage may be challenging for inexperienced users.