Initially, CellWatch will support taking FCC-compliant latency and throughput (speed test) measurements via Measurement Lab’s MSAK protocols, as described below. We hope to add more measurement capabilities in the future.
MSAK
MSAK (Measurement Swiss-Army Knife) is a set of network measurement protocols provided by Measurement Lab (M-Lab). More details about the MSAK protocols are available in its design document.
M-Lab hosts measurement servers all over the world. Each measurement run in the CellWatch app begins with a locate request to M-Lab. In response, M-Lab provides a list of available measurement servers close to the device requesting the measurements. CellWatch then runs latency and throughput (download and upload) tests against the server with the lowest latency.
Latency test
The latency test uses UDP packets to measure the time it takes a packet to travel from the CellWatch app to the measurement server. After the app initiates a test, the server sends UDP packets every ~25 milliseconds for 5 seconds. The app echos these packets back to the server as quickly as possible. At the end of the test, the app queries the measurement server for the list of packet round-trip times (RTTs), from which it calculates the mean RTT, jitter (standard deviation of all RTTs), and packet loss rate.
Throughput test
The throughput test uses 3 concurrent TCP streams to measure the available download and upload throughput between the CellWatch app and the measurement server. The tests use WebSockets to transmit as much data as possible over each TCP stream for 10-20 seconds. Throughout each test, the receiving end (CellWatch app for download tests, measurement server for upload tests) sends periodic (~250 milliseconds) update messages to the app indicating the throughput measured up to that point.
Each throughput test begins in a warmup phase designed to reduce the effects of TCP slow start on the measured throughput. The warmup phase lasts for a maximum of 10 seconds but typically ends earlier, when each TCP stream reports an equal or decreasing throughput between subsequent updates.
After the warmup phase, the test continues in the active phase for 10 seconds (or until 1 GB has been transferred). At the end of the active phase, the test is ends. Each TCP stream’s throughput is calculated as the number of bytes sent in the active phase divided by the duration of the active phase. These per-stream throughput measurements are summed to produce an overall throughput measurement.