El algoritmo de Cristian (introducido por Flaviu Cristian en 1989) [1] es un método para la sincronización de relojes que se puede utilizar en muchos campos de la informática distributiva, pero se utiliza principalmente en intranets de baja latencia . Cristian observó que este algoritmo simple es probabilístico, ya que solo logra la sincronización si el tiempo de ida y vuelta (RTT) de la solicitud es corto en comparación con la precisión requerida. También sufre en implementaciones que utilizan un solo servidor, lo que lo hace inadecuado para muchas aplicaciones distributivas donde la redundancia puede ser crucial.
El algoritmo de Cristian funciona entre un proceso P y un servidor de tiempo S conectado a una fuente de referencia de tiempo. En pocas palabras:
Si el RTT se divide en partes iguales entre la solicitud y la respuesta, la sincronización está libre de errores. Sin embargo, debido a influencias impredecibles, esta suposición no suele ser cierta. Los RTT más largos indican interferencias que, por lo general, son asimétricas. De este modo, se minimizan el desfase y la inestabilidad de la sincronización seleccionando el RTT adecuado de un conjunto de muchos pares de solicitud/respuesta. La aceptación de un RTT en un momento dado depende de la deriva del reloj y de las estadísticas del RTT. Estas cantidades se pueden medir durante el proceso de sincronización, lo que optimiza el método por sí mismo.