Algorithme de Cristian

méthode de synchronisation d'horloges utilisable principalement dans les réseaux intranets à faible latence

L'algorithme de Cristian (introduit par Flaviu Cristian en 1989)[1] est une méthode de synchronisation d'horloges utilisable dans plusieurs domaines de l’informatique, principalement dans les réseaux intranets à faible latence. Cristian a remarqué que cet algorithme très simple est probabiliste, et n’effectue correctement la synchronisation que si le round-trip time (RTT) de la requête est court par rapport à la précision nécessaire. Il est également limité par ses implémentations qui se basent sur un serveur unique, le rendant impropre à une utilisation dans les applications distribuées où la redondance peut s'avérer critique.

L'algorithme modifier

Il fonctionne entre un processus P et un serveur temporel S — connecté à une source de temps UTC.

En résumé :

  1. P demande le temps à S
  2. À la réception de cette requête, S prépare une réponse et y ajoute le tempsT de sa propre horloge
  3. P règle alors son horloge comme T + RTT/2

P doit enregistrer le RTT de la requête qu'il a effectuée à S pour calculer le temps synchronisé. On suppose que la durée d'aller/retour de la requête est identique entre la requête et la réponse, ce qui n'est pas nécessairement le cas mais est une hypothèse raisonnable dans le cas d'un réseau local[réf. souhaitée].

La précision peut être améliorée en effectuant de nombreuses requêtes et en utilisant le RTT minimal pour le calcul. La précision peut alors être estimée de la manière suivante : Soit min la durée minimale pour transporter un message dans un sens. Le temps le plus tôt auquel S aurait pu placer le temps T était min après que P a envoyé sa requête. Par conséquent, le temps de S, quand le message est reçu par P, est dans l'intervalle [(T + min) .. (T + RTT - min)]. Donc la précision qui en découle est (RTT/2) - min.

Références modifier

  1. (en) F. Cristian, « Probabilistic clock synchronization », Distributed Computing, Springer, vol. 3, no 3,‎ , p. 146–158 (DOI 10.1007/BF01784024, lire en ligne)

Voir aussi modifier

Autres algorithmes de synchronisation temporelle :