networkQuality(8) System Manager's Manual networkQuality(8)

networkQualityNetwork quality testing tool

networkQuality [-bcdhksuv] [-B Bonjour name] [-C configuration URL] [-f protocol selection] [-I interface] [-r host] [-S port]

networkQuality allows for measuring the different aspects of Network Quality, including:

Maximal capacity (often described as speed)

The responsiveness of the connection. Responsiveness measures the quality of your network by the number of roundtrips completed per minute (RPM) under working conditions. See https://support.apple.com/kb/HT212313

Other aspects of the connection that affect the quality of experience.

NOTE: This tool will connect to the Internet to perform its tests. This will use data on your Internet service plan.

For more details about the RPM score and the methodology around the testing, see https://datatracker.ietf.org/doc/draft-cpaasch-ippm-responsiveness/

The following options are available:

Show Bonjour advertised networkQuality servers
Bonjour name
Run against specified Bonjour instance
configuration URL/path
Use custom configuration URL or path (with scheme file://). See https://github.com/network-quality/server for server implementation details.
<option[,<option>,...]>
Force usage of a specific protocol selection:
h1: To enforce HTTP/1.1
h2: To enforce HTTP/2
h3: To enforce HTTP/3 (QUIC)
L4S: To force-enable L4S
noL4S: To force-disable L4S
interface
Bind test to interface (e.g., en0, pdp_ip0,...)

If not specified, the default interface will be used.

host
Connect to host or IP, overriding DNS for initial config request
port
Create a networkQuality server-instance running locally on the specified port. It will display the URL of the config-file that can be passed on to a client-instance with option -C. Note that the certificate is self-signed and thus option -k needs to be used on the client-instance.
Produce computer-readable output (JSON).
Do not run a download test (implies -s)
Show help
Disable verification of the server identity via TLS.
Use iCloud Private Relay.
Run tests sequentially instead of parallel upload/download.
Do not run an upload test (implies -s)
Verbose output.

The -c option will produce JSON output with the following fields, depending on the options used and the result of the run.

base_rtt
The calculated idle latency of the test run (in milliseconds).
dl_flows
Number of download flows initiated.
dl_responsiveness
The downlink responsiveness score (in RPM)

(only available when -s is specified).

dl_throughput
The measured downlink throughput (in bytes per second).
end_date
Time when test run was completed (in local time).
il_h2_req_resp
The idle-latency Request/Response times for HTTP/2 (in milliseconds).
il_tcp_handshake_443
The idle-latency TCP-handshake times (in milliseconds).
il_tls_handshake
The idle-latency TLS-handshake times (in milliseconds).
interface_name
Interface name in which the test ran against.
lud_foreign_dl_h2_req_resp
Download latency-under-load request/response times for HTTP/2 (in milliseconds).

(only available when -s is specified).

lud_foreign_dl_tcp_handshake_443
Download latency-under-load for for TCP-handshake times (in milliseconds).

(only available when -s is specified).

lud_foreign_dl_tls_handshake
Download latency-under-load for for TLS-handshake times (in milliseconds).

(only available when -s is specified).

lud_foreign_h2_req_resp
Combined upload/download latency-under-load request/response times for HTTP/2 (in milliseconds).

(only available when -s is not specified).

lud_foreign_tcp_handshake_443
Combined upload/download latency-under-load for for TCP-handshake times (in milliseconds).

(only available when -s is not specified).

lud_foreign_tls_handshake
Combined foreign upload/download latency-under-load for for TLS-handshake times (in milliseconds).

(only available when -s is not specified).

lud_foreign_ul_h2_req_resp
Foreign upload latency-under-load request/response times for HTTP/2 (in milliseconds).

(only available when -s is specified).

lud_foreign_ul_tcp_handshake_443
Foreign upload latency-under-load for for TCP-handshake times (in milliseconds).

(only available when -s is specified).

lud_foreign_ul_tls_handshake
Upload latency-under-load for for TLS-handshake times (in milliseconds).

(only available when -s is specified).

lud_self_dl_h2_req_resp
Self download latency-under-load request/response times for HTTP/2 (in milliseconds).

(only available when -s is specified).

lud_self_h2_req_resp
Combined self upload/download latency-under-load request/response times for HTTP/2 (in milliseconds).

(only available when -s is not specified).

lud_self_ul_h2_req_resp
Self upload latency-under-load request/response times for HTTP/2 (in milliseconds).

(only available when -s is specified).

os_version
The version of the OS the test was run on.
responsiveness
The responsiveness score (in RPM)

(the combined value if -c is not specified).

start_date
Time when test run was started (in local time).
ul_flows
Number of upload flows created.
ul_responsiveness
The uplink responsiveness score (in RPM)

(only available when -s is specified).

ul_throughput
The measured uplink throughput (in bytes per second).
error_code
Error domain specific error code

(only displayed if could not complete its test).

error_domain
Error domain in which an error occurred in

(only displayed if networkQuality could not complete its test).

NOTE: This is not meant to be a comprehensive list of fields.

ping(8), traceroute(8)

9/22/20 Darwin