Network asymmetry detection

Network asymmetries arise when packets going from point A to B take more or less time to deliver than they take to get from B to A. This can bias timing data silently - many tools are unable to detect or correct for this kind of behavior, and instead report a great sync when in reality they’re many microseconds or more off.

This commonly happens happens in longer network segments such as leased lines or WAN connections. It can also happen when there’s a speed mismatch in the network path between two points, like when a 100mbit or 1G time source delivers time to a client via a 10G network link. Switches transmitting data between the nodes can handle the speed mismatch by using store and forward techniques in one direction, but cut through the other way.

Similar behaviors can happen in other network designs also, and can silently shift the clock by many microseconds. TimeKeeper is built to detect this issue so that you can correct or account for it in your network.

Configuring to detect asymmetries

When properly configured TimeKeeper is able to detect and measure network route asymmetry. To do this one needs both systems partcipating in the measurement to be using a time source that you consider very accurate. That is because all measurements will be against that time source and any inaccuracy in it will result in errors in the asymmetry measurement. We normally recommend this be done on either a grandmaster with GPS time or a client of a grandmaster (with GPS) that is getting time directly from GPS or a PPS feed or other accurate time source.

This mode cannot be used to measure asymmetry between a client and its server. That is because the client is tracking the server and they do not have an independent source of time to compare against.

This high quality reference time should be SOURCE0. At the other end of the network route that you wish to measure you must have another GPS (or similar) PTP or NTP server. To measure this network route for asymmetry you will configure:

SOURCE1() { NTPSERVER=remote_hostname; ENABLE_DETECT_ASYMMETRY=1; }

Once TimeKeeper has established a good sync for SOURCE0 you will see messages in timekeeper_SOURCE1.asymmetry in /var/log/ showing the average one way time from the remote source to the local system and from the local system to the remote system.

In a network without an asymmetry, the measured delay in one direction will be the same as the other. If there’s an asymmetry though, the degree of it will be shown in these files. From there you can investigate the network link between the sources to identify the source, or use TimeKeeper’s configuration to mitigate the issue. Contact support@fsmlabs.com for details.