Avant l'heure c'est pas l'heure, après l'heure, c'est plus l'heure.

Comment garder tous les équipements informatiques à l'heure ? Horloges atomiques, collaboration mondial, et NTP.

8 minute de lecture
Par Stéphane
Avant l'heure c'est pas l'heure, après l'heure, c'est plus l'heure.

Internet à besoin d'être à l'heure, comme vous, ou plus précisément vos ordinateurs et smartphones. Mais aussi beaucoup d'autres ordinateurs :

  • Ceux des banques, parce que le cours d'une devise doit être le même partout dans le monde à un instant donné.
  • Ceux des péages d'autoroute, pour vous facturer !
  • Ceux des centres de diffusion radio et télévision
  • La poste, pour prouver que vous avez envoyer votre courrier avant une certaine heure.
  • etc.

L'horodatage est le processus qui assigne une heure à un événement (impression d'un ticket de caisse, passage d'un péage, décollage d'un avion, etc.).

La "norme" concernant la synchronisation horaire entre ordinateurs, le protocol NTP, pour Network Time Protocol (RFC 958), est proposée en septembre 1985, pour sa version 1. Il sera amélioré au cours du temps (RFC1059, RFC1119, RFC1305) pour arriver à la version 4 (RFC5905, juin 2010), ce qui montre bien les préoccupations de la communauté informatique à son égard.

C'est un protocole qui s'est raffiné et compliqué avec le temps (sic), on peut le deviner en regardant le dessin fait à la main représentant les prémisses du réseau Internet en 1985.

L'état de "l'internet" en 1985

Les passerelles Internet et leurs interconnections en 1985.

L'étalon "temps"

Il n'est pas possible de calculer le temps qui passe, on peut juste établir une succession d’événements, comme par exemple le déplacement de l'aiguille des secondes sur une montre, puis les compter, et considérer cela comme le temps qui passe.

Les horloges les plus précises sont atomiques car elles génèrent des impulsions à partir de la désintégration de noyaux d'atomes, le plus souvent de Cesium 133, car la définition de la seconde est basée dessus :

La seconde est la durée de 9 192 631 770 périodes de la radiation correspondant à la transition entre les deux niveaux hyperfins de l’état fondamental de l’atome de césium 133

La vénérable et classique HP5071A (Cesium).

On connait d'autres types d'horloges, moins précises, mais souvent beaucoup plus économiques, comme celle à Rubidium ou à quartz (comme dans nos montres ou smartphones).

La référence UTC

Sans rentrer dans les détails, plusieurs centaines d'horloges atomiques à travers le monde contribuent à en garder une "à la bonne heure" et on va la considérer comme l'horloge maître de toutes les autres. C'est le travail du laboratoire temps-fréquence du Bureau International des Poids et Mesures (BIPM, à Sèvres) de maintenir cette horloge étalon pour le reste du monde.

Cette horloge fourni l'heure UTC : Temps Universel Coordonné.

Les différentes façon d'accéder au temps atomique

Il existe plusieurs manières, dont :

  1. en écoutant les satellites (GPS, Glonass, Galileo, etc.)
  2. en se connectant au réseau de téléphonie mobile CDMA (en Amériques, Asie).
  3. en écoutant la radio (WWV aux USA, DCF77 en Europe, BPM en Chine, etc.)

Le CDMA est bien parce qu'une antenne intérieure suffit là où la téléphonie 3G passe. Par contre il est peu probable que le protocole survive au delà de 2020 (remplacement par la 4G et la 5G).

La radio existe depuis des décennie, ce service risque lui aussi de cesser un jour, mais pour l'instant, il est toujours bel et bien utilisé.

Seul le satellite est fiable, à condition d'avoir une visibilité vers le ciel, ce qui peut être un problème en milieu urbain dense.

NTP : définition des strates

Pour le protocole NTP les serveurs de temps sont divisés en strates :

  • Strate 0 : regroupent les équipement capables de capter les signaux émis par les émetteurs listés au chapitre précédent. Ce ne sont donc pas des serveurs en eux-même, car ils sont toujours reliés à un serveur de strate 1.
  • Strate 1 : se sont des serveurs de temps reliés à un équipement de strate 0.
  • Strate 2 : les serveurs se synchronisant sur un serveur de strate 1
  • Strate 3 : les serveurs se synchronisant sur un serveur de strate 2
  • etc.
Strates 0 - 3.

Plus la strate du serveur de temps est élevée, moins il est précis vis à vis du temps de référence. On peut espérer 10 microsecondes d'écart avec le temps UTC pour un strate 1, et rajouter 0,5 à 100 ms par strate supplémentaire, jusqu'à la seizième.

NTP : calcul du décalage délais d'aller-retour

Puisque chaque équipement sait (par rapport à sa propre échelle de temps) quand il à envoyé une requête et reçu la réponse, on peut estimer le décalage entre les deux horloges et le temps mis pour les informations à faire l'aller-retour entre le client (qui demande l'heure) et le serveur NTP (qui est censé être à l'heure).

Ces données sont sujets à des analyses statistiques et filtrées avant de modifier la cadence de l'horloge dans le but de réduire le décalage au minimum.

NTP : contrôle de l'horloge

Le décalage peut être positif ou négatif : l'heure indiquée par l'horloge du client est soit en avance soit en retard par rapport à l'étalon.

  1. si le client retard, il faut donc avancer son horloge.
  2. si l'horloge du client avance, il faut la retarder.

Le premier cas ne pose pas de problème : il suffit d’accélérer légèrement l'horloge, jusqu'à ce qu'elle rattrape son décalage.

Le second cas est plus délicat, car on a pas le droit de reculer dans le temps, sinon plus rien ne marcherait (par exemple on pourrait avoir la date de modification d'un fichier antérieure à sa date de création !).
Donc on utilise une ruse : on ralenti l'horloge...jusqu'à ce retrouver dans le cas 1 !

Le temps reste donc une fonction continue positive.

Comment installer NTP sur PC ou Linux

Sur Windows 10 je recommande le client de Meinberg : il suffit de cliquer sur l'le programme d' installation automatique. Celui ci va installer NTP comme un service Windows qui sera chargé au démarrage du PC. Le client (du client, sic) ntpdqvous permet de l'interroger :

ntpq> lpeer
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*pi              84.16.73.33      2 u   45  128  377    0.435   -0.894   0.246
+ntp0.dillydally 193.190.230.65   2 u   53  128  377    5.956   -1.341   0.417
+mail.fangfufu.c 193.190.230.66   2 u  112  128  377    5.476   -1.180   0.149
-78.194.78.49 (m 91.121.88.161    3 u  107  128  377    1.696   -4.133   0.241
-ns1.do.steersne 195.66.241.2     2 u   70  128  377    9.642    0.488   0.195
-mail.redwebonli 17.253.52.125    2 u   41  128  377   20.449    3.998   0.536
ntpq>
ntpq> assoc
ind assid status  conf reach auth condition  last_event cnt
===========================================================
  1 11853  961a   yes   yes  none  sys.peer    sys_peer  1
  2 11854  942a   yes   yes  none candidate    sys_peer  2
  3 11855  943a   yes   yes  none candidate    sys_peer  3
  4 11856  931a   yes   yes  none   outlier    sys_peer  1
  5 11857  9324   yes   yes  none   outlier   reachable  2
  6 11858  9324   yes   yes  none   outlier   reachable  2
ntpq>
ntpq> rl
associd=0 status=0618 leap_none, sync_ntp, 1 event, no_sys_peer,
version="ntpd [email protected] Mar 07 16:52:54 (UTC+01:00) 2019  (1)",
processor="x86", system="Windows", leap=00, stratum=3, precision=-22,
rootdelay=11.300, rootdisp=46.991, refid=192.168.0.8,
reftime=e132297c.b14a7741  Sun, Sep 22 2019 19:10:20.692,
clock=e1322c1f.248110f6  Sun, Sep 22 2019 19:21:35.142, peer=11853, tc=7,
mintc=3, offset=-0.802530, frequency=8.140, sys_jitter=0.289849,
clk_jitter=1.369, clk_wander=0.009
ntpq>
ntpq> rl 11853
associd=11853 status=961a conf, reach, sel_sys.peer, 1 event, sys_peer,
srcadr=pi, srcport=123, dstadr=192.168.0.7, dstport=123, leap=00,
stratum=2, precision=-21, rootdelay=10.864, rootdisp=43.152,
refid=84.16.73.33,
reftime=e13224a8.290943aa  Sun, Sep 22 2019 18:49:44.160,
rec=e1322bd3.b2a8489d  Sun, Sep 22 2019 19:20:19.697, reach=377,
unreach=0, hmode=3, pmode=4, hpoll=7, ppoll=7, headway=0, flash=00 ok,
keyid=0, offset=-0.894, delay=0.435, dispersion=8.255, jitter=0.246,
xleave=0.180,
filtdelay=     0.61    0.54    0.58    0.57    0.63    0.44    0.58    0.47,
filtoffset=   -1.35   -1.27   -1.14   -0.99   -0.97   -0.89   -0.89   -0.84,
filtdisp=      0.00    1.95    3.95    5.97    8.00    8.99    9.96   10.97
ntpq>

Lien de téléchargement :  https://www.meinbergglobal.com/english/sw/ntp.htm

Pour Linux, il existe un packet, qu'il suffit d'installer en utilisant votre méthode préférée (apt-get install, etc.).

$ apt-cache search ^ntp
ntp - Network Time Protocol daemon and utility programs
ntp-doc - Network Time Protocol documentation
ntpdate - client for setting system time from NTP servers
ntpstat - show network time protocol (ntp) status

Liste des serveurs NTP
Le plus simple c'est d'utiliser des pools existants, par exemple Raspbian NTP utilise la commande dans ntp.conf :

pool 0.debian.pool.ntp.org iburst
pool 1.debian.pool.ntp.org iburst
pool 2.debian.pool.ntp.org iburst
pool 3.debian.pool.ntp.org iburst

Mais peut être que le mieux c'est de choisir un serveur près de chez soit via https://www.pool.ntp.org/zone/europe. Pour la France, ce sera donc :

server 0.fr.pool.ntp.org
server 1.fr.pool.ntp.org
server 2.fr.pool.ntp.org
server 3.fr.pool.ntp.org

Quelques serveurs NTP matériel

Dans le passé, avant 2000, un des problèmes des serveurs NTP était leur capacité à gérer la charge, c'est à dire de répondre à des milliers de clients simultanément. Aujourd'hui, grâce à des processeurs à la fois puissants et peu chers, ainsi qu'une multiplication par 10 voire 100 de la vitesse de l'interface réseau (de 100 Mbits/s à 1 Gbit/s puis 10 Gbit/s) ces problèmes n'existent plus.

Les serveurs NTP ont une durée de vie assez longue, surtout qu'on peut les mettre à jour en remplaçant le type de leur horloge interne, par exemple en passant du quartz au quartz en enceinte thermostatée ou au Rubidium.

Truetime, racheté par Symmetricon racheté par Microsemi racheté par Microchip

EndRun Technologies
Marque USA que je ne connais pas, mais qui à l'aire de proposer de jolis équipements.

EndRun Technologies Sonoma D12

Meinberg, des Allemands sérieux
Achetez Européen, ces produits sont d’excellente facture. De plus ils peuvent se synchroniser avec beaucoup de sources différentes, WWV, GPS, GLONASS, DCF77, etc.

Et sans doute plein d'autres. Mais parmi eux, cette page, dédiée aux serveurs NTP sur Raspberry Pi.