1. 3

In late 2021 and early 2022, researchers at Apple took to heart the internet-wide call for giving users more actionable information about the state of their network connections and proposed a new metric, RPM:

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.

The researchers at Apple, in collaboration with others throughout the internet-measurement community, proposed RPM as an IETF RFC.

It is already implemented on Apple devices - https://support.apple.com/en-gb/HT212313 and there are an opensource client and server implementations written in Go - https://github.com/network-quality/goresponsiveness.

  1. 1

    I wonder if the entire server implementation can be done using just nginx/apache?

    This seems to be the configuration needed:

    {
      "version": 1,
      "urls": {
        "small_https_download_url": 
        "https://networkquality.example.com/api/v1/small",
        "large_https_download_url": 
        "https://networkquality.example.com/api/v1/large",
        "https_upload_url": 
        "https://networkquality.example.com/api/v1/upload"
      }
    }
    

    And then these URLs should just discard any POSTs and return appropriate files for GETs.