Cristian's algorithm (introduced by Flaviu Cristian in 1989)[1] is a method for clock synchronization which can be used in many fields of distributive computer science but is primarily used in low-latency intranets. Cristian observed that this simple algorithm is probabilistic, in that it only achieves synchronization if the round-trip time (RTT) of the request is short compared to required accuracy. It also suffers in implementations using a single server, making it unsuitable for many distributive applications where redundancy may be crucial.
Description
Cristian's algorithm works between a process P, and a time server S connected to a time reference source. Put simply:
- P requests the time from S at time t0.
- After receiving the request from P, S prepares a response and appends the time T from its own clock.
- P receives the response at time t1 then sets its time to be T + RTT/2, where RTT=t1-t0.
If the RTT is actually split equally between request and response, the synchronisation is error-free. But due to unpredictable influences, this assumption is regularly not true. Longer RTTs indicate interference that is generally asymmetrical. Offset and jitter of the synchronisation are thus minimised by selecting suitable RTT from a set of many request/response pairs. Whether an RTT can be accepted at a given time depends on the drift of the clock and on the statistics of the RTT. These quantities can be measured in the course of synchronisation, which optimises the method by itself.
See also
- Allan variance
- Berkeley algorithm
- Clock synchronization
- Daytime Protocol, older time synchronization protocol using TCP or UDP port 13
- ICMP Timestamp and ICMP Timestamp Reply, older time synchronization protocol using ICMP
- International Atomic Time
- NTP pool, a collection of worldwide computers that provide a highly accurate time via the Network Time Protocol
- NTP server misuse and abuse
- ntpd, OpenNTPD and Ntpdate
- Precision Time Protocol
- Synchronization
- Time Protocol, older time synchronization protocol using TCP or UDP port 37
- Time server
References
- ↑ Cristian, Flaviu (1989), "Probabilistic clock synchronization" (PDF), Distributed Computing, Springer, 3 (3): 146–158, doi:10.1007/BF01784024, S2CID 3170166