Cristian's algorithm
# Cristian's algorithm

Cristian's algorithm (introduced by Flaviu Cristian in 1989) 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 $t_0.$
* 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 $t_1$ then sets its time to be T + RTT/2, where $RTT=t_1-t_0.$

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.

