DD-WRT has partnered with Speedchecker to offer wi-fi throughput test feature into DD-WRT routers. This feature is enabled only on higher-end routers which have enough resources, specifically memory to hold all neccessary libraries to perform measurements.
Speedchecker offers this feature free of charge to all DD-WRT users as long as they opt-in to the measurement network.
The feature works on-demand executed by the user by going to Services->Speedchecker in the DD-WRT interface. User can start the test, either running only Wi-fi speed test, or also Internet speed test. Wi-fi test triggers series of downloads that are downloading randomly generated data from the router itself. The downloads happen in paralell using multiple threads to saturate the link and measure maximum throughput over the line that user is connected to the router. The test runs on the active link between user and router, so if user is connected through the ethernet cable to the router, the router will actually not perform wi-fi test but will test speed through the LAN cable.
The Internet test works in similar way but data are not downloaded from the router but from the Speedchecker's servers which are deployed all over the world.
By comparing the results of Internet test and Wi-Fi test you can spot easily whether Wi-fi does not slow down your internet connection.
By enabling the Speedchecker feature, users opt-in to allow 3rd parties to execute measurements on their routers.
Measurements are made available to 3rd parties who have been authorized by Speedchecker team. Third parties can run measurements using Probe API which has series of security checks to ensure testing does not cause problems for DD-WRT users as well as other parties.
Some of the checks that are put in place:
DD-WRT router communicates with Measurement network by keeping open XMPP connection to the Speedchecker Probe API. DD-WRT runs a daemon (which can be observed by running netstat) which keeps the connection active. Under normal scenario that connection does not consume any meaningful amount of bandwidth. Only when there is a request to run a measurement, daemon will check current router bandwidth / CPU utilization and will allow/deny a request to run a measurement.
Probe API allows to run measurements such as ICMP PING, Traceroute or HTTP GETs. After router runs the measurement, the results are sent to Probe API for further processing.