Measuring Asymmetric latency via NTP, part 2
See the first part for the math
Let's use a third party (stratum 2) observer to compare the stratum 1 NTP clocks.
Round trip times
First, a graph of the $rtt
times from the third party to various stratum 1 NTP clocks. This is best to be both flat and as low as possible. But flat is more important. You can see that the NTP clock behind the cable modem "sandfish" is not very flat, and has a 4.2ms standard deviation.
NTP Offsets
Next, NTP's recorded clock offsets. The "smq", "lon", and "your" clocks all move in same direction at the same time, and are mostly mirrors of each other. By comparison, the "sandfish" clock moves as mostly noise.
DOCSIS upstream
If we compare the "sandfish" clock's $response_latency
to the other clock's offsets, it doesn't match very well. This is the modem-to-internet direction. The other clocks are shifted by a static 17.235ms and 18.235ms.
DOCSIS downstream
If we compare the "sandfish" clock's $request_latency
to the other clock's offsets, it fits very well. It has more noise (jitter) than the other clocks, but the overall pattern is easy to see. The other clocks are shifted a static 6.175ms and 5.175ms. This is the internet-to-modem direction.
Summary
The round trip time averages 23.4ms. If this third party observer has the proper offset (and it might not), it takes 5.2ms for the request to arrive and 18.2ms for the response to return. The path the request takes is over Hurricane Electric and the response goes over TeliaSonera.