Quelle heure est-il ?
Depuis que l'horloge parlante n'existe plus, comment ajustez-vous votre montre ? Internet, GPS, heure radiodiffusée, comment toutes ces heures sont-elles synchronisées ?
Avant de parler de l'heure, il a fallu définir ce qu'était une seconde, l'intervalle de temps élémentaire. De nos jours, ce sont des horloges atomiques, et peut-être bientôt nucléaires, qui nous donnent la seconde, avec une précision redoutable, genre une seconde sur l'âge de l'univers.
Si vous voulez en savoir plus sur la dilatation du temps en relativité, restreinte ou générale, peu importe.
Le Temps Atomique International (TAI)
La racine du temps est calculée à partir de quelques centaines d’horloges atomiques distribuées de par le monde, c'est le Temps Atomique International.
C'est le BIPM, le bureau international des poids et mesures, qui est chargé de le calculer.
Cette distribution permet d'éviter les pannes et les attaques qui pourraient mettre à mal notre référence temporelle. Mais bon, il faut bien une source unique à un moment ou à un autre qui est ensuite distribuée, ce qui est forcément un point faible, reste à espérer qu'il existe un plan de secours adéquat.
Synchroniser ces horloges n'est pas si évident à faire. Il faut forcément un réseau (en fibre optique), et compenser les temps de propagation. On aura le même problème quand on parlera du temps distribué sur Internet.
Le zéro se situe vers le 1 janvier 1958.
Le Temps Universel (UT1)
Comme la Terre ne tourne pas rond ça on le savait, un laboratoire, l'IERS, est chargé de calculer s'il faut insérer une seconde supplémentaire de temps à autre.
Cette correction permet de compenser le ralentissement de la rotation terrestre dû à l'attraction entre la Terre et la Lune, et d'autres effets liés au noyau, aux océans et à l'atmosphère. L'IERS le détermine en observant des objets célestes très éloignés (des quasars extra-galactiques) à l'aide d'interféromètres à très longue base.
Le temps universel (à ne pas confondre avec le temps universel coordonné ci-dessous) n'est jamais que l'angle de rotation de la Terre par rapport à ces quasars éloignés supposés suffisamment loin pour être considérés fixes.
Ces secondes intercalaires sont introduites le 30 juin ou le 31 décembre à 23 h 59 m 60 s. La dernière fois, ce fut fin 2016.
IERS : Service International de la Rotation de la Terre et des Systèmes de référence à l’Observatoire de Paris.
Le Temps Universel Coordonné (UTC)
Le temps universel coordonné est simplement déduit du temps atomique international TAI, compensé des secondes intercalaires, de manière que la différence entre UTC et UT1 soit toujours inférieure à une seconde.
Il faut ensuite appliquer le décalage relatif au fuseau horaire où vous vous situez, en ne vous loupant pas sur les horaires d'été ou d'hiver.
(astuce : ouvrez l'image dans une autre fenêtre pour pouvoir agrandir)
Il existe aussi le temps terrestre TT, le temps coordonnée barycentrique TCB, le temps coordonné géocentrique TCG, d'un intérêt relatif pour la plupart des gens sur Terre.
Heure légale française
Le décret n° 2017-292 du 6 mars 2017 définit l'heure légale française.
Vous trouverez dans le décret non seulement la définition de l'heure à partir de l'UTC et qui est en charge de la déterminer, mais aussi les décalages horaires légaux de tous nos départements, avec les règles pour passer d'été à hiver et réciproquement.
L'horloge parlante
Pour les vieux qui s'en souviennent (elle a été arrêtée le 1er juillet 2022), vous trouverez l'historique sur l’horloge parlante de l’Observatoire de Paris. sur le site du LTE, le laboratoire Temps-Espace, fusion du SYRTE (Systèmes de Référence Temps-Espace) et de l'IMCCE en 2025.
Distribution de l'heure
Une fois que le laboratoire désigné produit l'heure UTC, il s'agit de la distribuer. Mais immédiatement les problèmes ardus des délais de transmission et de synchronisation se posent, qui sont variables suivant la technique employée.
Il existe tout un vocabulaire pour désigner les décalages entre la référence et l'horloge locale, ça vous donnera une idée des ennuis :
- L'horloge locale présente une certaine résolution = la plus petite unité de temps mesurable, c'est sa précision.
- Elle présente un écart avec le vrai temps UTC, c'est « l'offset ». Si cet écart est inférieur à une certaine valeur, on dira alors que l'horloge est correcte ou « accurate ».
- Mais la fréquence de l'horloge locale est souvent légèrement différente de la vraie fréquence, on observe un décalage de fréquence, c'est le « skew ». Cela entraine évidemment des écarts, de l'offset.
- Pire, la fréquence peut varier dans le temps (par exemple à cause des écarts de température), la fréquence de l'horloge locale n'est pas toujours la même au cours du temps, c'est la dérive ou « drift ».
Verrouillage de phase
Quelle que soit la méthode, vous aurez un émetteur qui va diffuser des informations horaires, mais surtout un "top" qui indiquera à quel moment appliquer l'heure reçue. Autrement dit, on envoie d'abord les informations, comme pour l'horloge parlante qui disait qu'au quatrième top, il sera exactement telle heure.
Du côté de la réception, il faudra un décodeur pour comprendre les informations horaires (c'est la partie facile), ainsi que l'horloge locale, celle que l'on aimerait synchroniser pour qu'elle soit à l'heure exacte.
Ce n'est pas comme s'il existait cinquante mille procédés : l'émetteur possèdera une certaine fréquence d'émission, supposée exacte puisqu'il s'agit de la référence de temps, et votre horloge locale possèdera aussi une certaine fréquence, pas très éloignée mais pas exactement pareille. L'objectif est d'obtenir non seulement la même fréquence, mais également être en phase, que le "top" de l'émetteur arrive exactement au même moment que votre "top" local. On appelle ça du verrouillage de phase.
Je me suis pelé une boucle à verrouillage de phase numérique sur le signal DCF77 pour ceux que ça intéresse.
Mais au moins, ma pendule est calée sur l'heure atomique UTC au délai de transmission près.
Délai de transmission
Mais même si vous avez verrouillé le signal, il aura fallu "un certain temps" pour que le signal se propage depuis l'émetteur jusqu'au récepteur.
- Un signal électromagnétique voyagera à la vitesse de la lumière. Si la propagation se fait en ligne directe, vous pouvez facilement compenser le délai en connaissant la distance.
- Une fibre optique, ou un câble électrique présentera également une certaine vitesse. Il faudra connaitre la longueur du câble.
- Le pire étant de passer par divers relais entre l'émetteur primaire et le récepteur, et c'est ce qui arrive sur Internet car on ne sait pas trop par où passe les paquets, ni avec quels délais sur chaque serveur traversé...
Propagation des ondes dans le cas de la radiotransmission. On comprendra que le temps de propagation est variable dans la journée, surtout à cause du Soleil.
Dans le pire des cas, bien représenté par Internet, on utilise un pis-aller : une requête pour demander l'heure est faite, on note l'heure locale de départ, puis on notera l'heure locale d'arrivée, en espérant que le temps pour l'aller soit à peu près le même que pour le retour. On divise alors le temps par deux, c'est le délai de transmission. Et oui, vous aurez intérêt à faire des statistiques sur le délai, le "ping" peut être très variable dans la journée.
Pannes ou attaques
Pour ne pas arranger les choses, des pannes peuvent arriver, voire carrément des attaques. Ce n'est pas très critique si vous n'avez pas besoin d'une précision d'enfer car on sait réaliser des horloges locales avec des performances très correctes, voyez nos montres à quartz par exemple. Ces horloges dériveront au pire d'une ou deux secondes dans une journée, et si elles reçoivent l'heure UTC régulièrement, elles pourront même s'étalonner pour compenser cette dérive.
Radiotransmission
Transmettre l'heure par radio se fait depuis des lustres, j'ai d'ailleurs une page spéciale au sujet de l'heure radiodiffusée car j'ai réalisé mon propre récepteur DCF77.
Les principaux émetteurs dans le monde :
- JJY 40 kHz, Japon
- GBZ 60 kHz, Anthorn UK, depuis 1950
- BPC 68.5 kHz Chine
- DCF77 77.5 kHz Mainflingen Allemagne, depuis 1959
- FLE 162 kHz Allouis France depuis juillet 1980
- WWV 2.5 MHz, Fort Collins / Hawaï USA
- CHU 3.33 MHz Canada
- ...
La France émet son propre signal, qui est plus ou moins similaire aux autres. Vous trouverez les détails dans l'article « Mise à disposition du temps légal par le signal ALS162 » sur le site de l'Observatoire de Paris. Il permettrait de synchroniser plus de 200 000 horloges.
GPS / GNSS
Pour fonctionner, le GPS/GNSS a absolument besoin d'horloges atomiques pour pouvoir connaitre la position des satellites avec précision. C'est même pire que ce que vous votre flair pourrait vous dire : il faut apporter des corrections relativistes, c'est à ce point-là !
10 nanosecondes d'erreur, c'est 3 mètres d'écart sur votre position. L'horloge atomique d'un satellite GPS présente une dérive d'une dizaine de nanosecondes par jour, elle est régulièrement synchronisée avec une référence au sol, qui est basée sur l'UTC.
Les informations transmises par les satellites contiennent l'heure, aussi il est possible d'ajuster une horloge locale en captant ces signaux.
Notez les stations de contrôles qui vérifient les signaux provenant des satellites.
(from Understanding Global Navigation Satellite Systems)
Les modules GPS doivent contenir une horloge suffisamment précise pour exploiter correctement les signaux reçus, l'amateur n'a généralement qu'à le connecter et exploiter les trames d'informations sur une sortie série. Dès que le module reçoit suffisamment d'informations de divers satellites (au moins 4), la précision devient démoniaque, et un signal dit PPS (Pulse Per Second) donne exactement le top.
Toutes sortes de modules existent, avec/sans antenne...
Voici un exemple de réalisation pour Arduino :
Vous aurez un aperçu des signaux reçus, et comment les exploiter. C'est plutôt simple car les informations sont explicites sur la sortie série.
Il faudra que je fasse une pendule avec un récepteur GPS, un jour.
Le principal défaut du GPS, que tout le monde connait, c'est la difficulté de recevoir les signaux dès lors que l'on n'est plus en vue des satellites. Mais lorsque vous recevez les signaux (de 4 satellites), alors vous pouvez synchroniser vos horloges, en atteignant quelques nanosecondes de précision si votre horloge locale est suffisamment performante.
Internet
Internet, mais aussi les réseaux d'une manière générale, où on traverse des serveurs reliés par des liens de télécommunication.
Le protocole NTP est la norme admise par tous actuellement, mais ne fut pas la première, avant il y a eu daytime (RFC 867), time (RFC 868), des options d'ICMP (Internet Control Message Protocol, utilisé par ping) comme celle du RFC 781.
Protocole NTP
Le Network Time Protocol NTP existe depuis des lustres, car il a bien fallu synchroniser les ordinateurs sur un réseau. Cette norme est très stable, et voici les évolutions :
- [1985] RFC 958, obsolète
- [1989] RFC 1119, obsolète
- [1992] RFC 1305, version standard
- [2010] RFC 5905, améliorations sécurité et précision
La norme de 1992 est très détaillée (plus de cent pages), c'est vraiment un document de référence. Je ne la commenterai pas ici, je me contenterai de donner les principales informations pour savoir superficiellement comment ça marche.
Il existe également une version simplifiée (mémorandum, pas une norme) :
- Explications par l'Observatoire de Paris : Diffusion de l’heure par internet - NTP : Network Time Protocol
- home of the Network Time Protocol (NTP) Project
- Des explications trop? détaillées de la RFC1305 : blog de Stéphane Bortzmeyer
Les strates
Même si un port spécifique, UDP 123, est utilisé pour communiquer l'heure, on se doute bien que traverser divers serveurs introduira immanquablement des délais. Et on ne va pas ouvrir au monde entier un accès direct aux horloges atomiques de référence. Le concept de strate a été introduit pour gérer la précision.
- Stratum 0 : horloge atomique, GPS, radiodiffusion… Ne parlent jamais directement au réseau.
- Stratum 1 : les références/serveurs primaires.
- Stratum 2-15 : plus le chiffre est élevé, moins la précision est garantie.
- Stratum 16 : considéré comme non synchronisé.
Normalement, vous devriez vous dire que vous allez vous connecter à un serveur de strate 1, tant qu'à faire. Voici quelques bonnes adresses pour trouver :
- Une liste des serveurs de temps NTP français de strate 2. qui donne aussi une liste des serveurs français de strate 1.
- L'initiative France — fr.pool.ntp.org qui observe quelques centaines de serveurs.
- L'Observatoire de Paris propose des serveurs publics,
Mais il faudra montrer patte blanche pour accéder à un serveur de strate 1, forcément, pour ne pas le surcharger.
L'utilisation
Deux modes d'utilisation sont envisageables :
- Démon : c'est le terme employé pour un programme qui boucle en permanence, ici pour demander l'heure.
- Au coup par coup : la machine demande de temps en temps une mise à l'heure, utile surtout quand la connexion n'est pas permanente.
On se doute bien que le premier est coûteux en bande passante et en ressources.
Dans pratiquement tous les cas, les routines d'utilisation de NTP sont incluses dans votre système d'exploitation, il faudra au pire devoir programmer quel serveur NTP vous voulez, probablement dans un fichier de configuration. Cherchez des termes comme chrony, xntpd, ntpdate, W32Time dans la documentation de votre système que vous ne lisez jamais ou carrément le "package NTP" à installer.
Sécurité
Les gens soucieux de la sécurité voudront un service particulier, ce que certaines compagnies proposent, par exemple Easy-IC avec SCPTime (je n'ai rien à voir avec eux, c'est juste un exemple).
Du point de vue sécurité, vu que je suis paranoïaque, je me suis méfié des serveurs quand j'ai abordé le problème du coffre-fort temporel, résolu avec une puce électronique spécifique. Le fond du problème étant qu'il est possible d'imiter un serveur NTP pour tromper sa cible. Comment prouver que vous êtes un vrai serveur, délivrant l'heure véritable ?
Voilà pour la base à connaitre en matière de diffusion de l'heure. Regardez votre montre à présent. La mienne reçoit le DCF77.