NTP - Comment les serveurs NTP sont-ils si précis?

52

J'ai remarqué que, sur mes serveurs et autres machines, l'horloge dérive toujours, elle doit donc être synchronisée pour rester précise.

Comment les horloges du serveur NTP ne dérivent pas et restent toujours correctes?

Jason
la source
3
Pour ma part, je serais particulièrement intéressé par un résumé sur la façon dont les protocoles NTP permettent à deux ordinateurs de synchroniser leur temps sur un réseau peu fiable ...
Xavier Nodet
@XavierNodet Même si je suis sûr que vous le feriez, ce n'est pas ce que cette question demande. Je vous suggérerais de poser votre propre question (en supposant qu'elle ne l'ait pas déjà été; assurez-vous de chercher en premier). Cette question demande comment les horloges des serveurs NTP peuvent ne pas dériver, alors que les horloges matérielles contemporaines dérivent.
un CVn
@XavierNodet Idem ici. J'aime apprendre comment et pourquoi les choses fonctionnent comme elles le font! :)
Jason

Réponses:

58

Les serveurs NTP s'appuient sur des horloges de haute précision pour un chronométrage précis. Les horloges atomiques, ou récepteurs GPS, sont une source de temps commune pour les serveurs NTP centraux (rappelez-vous que les satellites GPS sont équipés d'horloges atomiques). Ces horloges sont définies comme précises car elles fournissent une référence temporelle extrêmement exacte. Le GPS ou les horloges atomiques n'ont rien de magique qui leur permette de vous dire exactement quelle heure il est; en raison de la façon dont les horloges atomiques fonctionnent, ils sont tout simplement très bon, étant une fois dit à quelle heure il est, à garder dire l' heure précise (depuis la seconde est définie en termes d'effets atomiques ). En fait, il est intéressant de noter que l' heure GPS est différente de l'heure UTC que nous sommes plus habitués à voir. Ces horloges atomiques sont à leur tour synchronisées avecInternational Atomic Time ou TAI afin non seulement de dire avec précision le passage du temps, mais aussi le temps.

Une fois que vous avez une heure exacte sur un système connecté à un réseau tel qu'Internet, c'est une question d'ingénierie de protocole permettant le transfert d'heures précises entre hôtes sur un réseau peu fiable. À cet égard, un serveur NTP de strate 2 (ou plus éloignée de la source de temps réelle) ne diffère pas de la synchronisation de votre système de bureau avec un ensemble de serveurs NTP.

Au moment où vous avez quelques heures précises (obtenues auprès de serveurs NTP ou ailleurs) et que vous connaissez le taux d'avancement de votre horloge locale (qui est facile à déterminer), vous pouvez calculer le taux de dérive de votre horloge locale par " passage du temps. Une fois verrouillée, cette valeur peut ensuite être utilisée pour ajuster en permanence l’horloge locale afin qu’elle affiche des valeurs très proches du passage précis du temps, même si l’horloge locale en temps réel est très imprécise. tant que votre horloge locale n'est pas très irrégulière, cela devrait permettre de conserver une heure précise même si votre source de temps en amont devient indisponible pour une raison quelconque. Certaines implémentations de clients NTP (probablement la plupart des implémentations de ntpddémons ou de services système) le font, et d’autres (comme le compagnon de ntpdntpdatequi règle simplement l’horloge une fois) ne le fait pas. Ce fichier est généralement appelé fichier de dérive, car il stocke de manière persistante une mesure de la dérive d'horloge, mais à proprement parler, il n'est pas nécessaire de le stocker en tant que fichier spécifique sur disque.

Dans NTP, la strate 0 est par définition une source de temps précise. La strate 1 est un système qui utilise une source de temps de strate 0 comme source de temps (et est donc légèrement moins précise que la source de temps de strate 0). La strate 2 est à nouveau légèrement moins précise que la strate 1 car elle synchronise son temps avec la source de la strate 1. Etc. En pratique, cette perte de précision est si faible qu'elle est totalement négligeable dans tous les cas sauf le plus extrême.

un CVn
la source
1
Respectueusement, "strate haute" ne signifie pas faible nombre de strates, cela devrait être retiré de la réponse. S2 est supérieur à S1. Pour vous en convaincre, consultez l'explication du professeur Mills (alias Prof. NTP) "Le sous-réseau NTP fonctionne avec une hiérarchie de niveaux, un niveau appelé strate étant alors attribué à chaque niveau. Les serveurs de strate 1 (principal) au niveau le plus bas sont directement synchronisés aux services de temps nationaux ... Les serveurs de la strate 2 (secondaire) du niveau immédiatement supérieur sont synchronisés sur les serveurs de la strate 1, etc. " eecis.udel.edu/~mills/ntp/html/warp.html
dfc
2
C’est mieux, mais je ne pense pas que la strate 0 soit «par définition une source de temps précise». La strate 0 signifie simplement que c'est une horloge de référence. Le fait que ce soit une horloge S0 ne signifie pas qu’elle fonctionne correctement. Le niveau de la strate correspond à peu près à la distance des horloges de référence, la précision n'est pas garantie.
dfc
@dfc J'apprécie votre contribution car elle me permet d'améliorer encore la réponse. Cela dit, je ne partage pas votre opinion selon laquelle SO ne signifie pas qu’elle est exacte. C’est peut-être le cas au sens strict du terme, mais si le temps donné par une horloge S0 est inexact, cette horloge est inutile dans la pratique en tant que source S0. Ergo, les horloges S0 sont précises. Autrement dit, si vous avez un ensemble d’hôtes isolé, dont l’un est connecté à une source de temps S0 et que tous les autres sont synchronisés avec celui-ci, l’heure donnée par la source S0 correspond à l’heure correcte en ce qui concerne ces hôtes. Pas besoin de s'inquiéter de TAI alors.
un CVn
10

Dans la mesure du temps réseau, la spécification indiquant comment un serveur obtient sa source de temps s'appelle un niveau de strate. Plus le niveau est bas, meilleure est la conservation du temps de ce serveur.

Les appareils du niveau 0 de la strate ne sont pas directement connectés au réseau. Ils constituent le dispositif de chronométrage réel lui-même et doivent être connectés à un ordinateur pour obtenir le temps réel. Cet ordinateur devient alors un serveur NTP du niveau 1 de la strate.

Un ordinateur connecté à une strate de niveau 1 peut également devenir un serveur de temps, mais ce serait alors une strate de niveau 2. Plus un ordinateur est connecté à un serveur de temps, plus votre niveau de strate est bas, plus votre chronométrage peut être précis.

Les appareils de niveau 0 de strate incluent des horloges atomiques participant au TAI (heure atomique internationale)ou synchronisés avec elle, et les récepteurs du signal horaire envoyés par cette horloge. Le plus souvent, il s'agit de récepteurs de pointage GPS dotés d'une interface appropriée incluant le signal GPS PPS. Le signal PPS, lorsque le GPS dispose d'un bon verrouillage sur plusieurs satellites, envoie une impulsion par seconde, et le bord d'attaque de cette impulsion se situe à quelques nanosecondes du début réel de cette seconde. Selon les spécifications du récepteur GPS, le signal PPS peut être plus ou moins précis. En effet, chaque satellite GPS possède une horloge atomique. Une fois que le récepteur GPS a trouvé sa propre position et la position des satellites GPS qu'il écoute, il peut corriger la propagation RF et vous donner une heure presque aussi précise que celle d'une horloge atomique directement sur le récepteur GPS.

Les serveurs du niveau 1 de la strate se connectent donc à des horloges atomiques ou à des récepteurs GPS, auxquels se connectent des serveurs NTP. Même la connexion à un serveur de niveau 2 ou 3 avec des réglages fréquents donnera à votre ordinateur une précision de chronométrage mesurée en nanosecondes. Mais si vous avez besoin d'un meilleur timing, connectez-vous à un serveur de niveau 1 ou achetez un récepteur GPS de pointage approprié et devenez vous-même une source de niveau 1.

Adam Davis
la source
4
De nombreuses personnes convertissent les ordinateurs Raspberry PI en serveurs NTP de la strate 1 avec l’ajout de récepteurs GPS bon marché. Vous pouvez avoir un serveur de niveau 1 complet sur votre réseau pour moins de 80 $: google.com/search?q=raspberry+pi+ntp+gps+pps
Adam Davis
2
Donc, en théorie, un smartphone avec récepteur GPS (presque tous maintenant) pourrait être un appareil à strate 0/1?
Bob
1
Si le téléphone utilise la sortie pps du récepteur GPS, oui. Notez que les téléphones CDMA doivent également utiliser un minutage précis. Par conséquent, le chipset CDMA pourrait également être une source de niveau 0 pour le processeur du téléphone. Un module GPS et une framboise pi seraient moins chers.
Adam Davis
2
Toutefois, un Raspberry Pi n’est pas un excellent serveur NTP, car il utilise une carte réseau un peu floconneuse et de mauvaise qualité (la puce LAN9512).
Crépuscule
1
@duskwuff Oui, mais c'est mieux que beaucoup de serveurs Stratum de niveau 2 sur Internet, et avec des paramètres NTP correctement configurés sur le serveur et le client, la gigue et le décalage introduits par la puce de réseau local USB de faible qualité peuvent être surmontés. Pour le coût, difficile à battre, mais dépensez un peu plus et vous pourrez résoudre ce problème mineur.
Adam Davis
3

Toutes les horloges dérivent dans une certaine mesure, cela dépend de la source du signal de synchronisation et de la qualité de son suivi. Sur un PC, il s’agit de la HPET de nos jours, mais le PC peut perdre le fil du nombre de ticks passés en cas de surcharge.

Les serveurs NTP auxquels votre machine parle perdent probablement eux aussi du temps, mais ils reviennent à une meilleure source.

En fin de compte, les meilleures sources sont des horloges extrêmement précises, comme les horloges atomiques. Vous pouvez considérer le protocole NTP comme un réseau de machines. Chacune d'elles dispose d'un certain nombre de sources sur lesquelles elle s'appuie pour l'heure et ajuste son propre temps à ce qui est considéré comme plus précis.

Ceci est régi par une source déclarant sa strate. Une horloge atomique ou GPS est la couche 0 et l’autorité sur l’heure. Chaque couche en dehors de celle-ci constitue la strate suivante - la strate 1, et vérifiera un nombre de sources de la strate 0 avec des pairs du même niveau, afin de vérifier l'intégrité des sources de temps.

Vous parlez probablement à une source de strate 2 ou 3.

Paul
la source
1

Ce que les autres ont écrit est vrai: un serveur Stratum 1 tire son heure d’un appareil Stratum 0. Je ne sais pas dans quels intervalles de temps cela se produit, mais je pense qu’ils sont assez précis là-bas.

Un serveur Stratum n avec n> 1 tire son heure via NTP d’un serveur Stratum n-1. Cela signifie qu'il se synchronise à intervalles réguliers. Lors du démarrage du service NTP, la synchronisation se produit à des intervalles assez courts et, progressivement, les intervalles commencent à augmenter. Finalement, l’intervalle peut atteindre 1024 secondes, soit environ 17 minutes.

Ce qui n'a pas été abordé est la question de ce qui se passe entre-temps Eh bien, il existe une installation appelée fichier de dérive . Cela aide NTP à surveiller toute dérive entre l'horloge locale et l'horloge de référence. La fréquence de l'horloge locale est ensuite ajustée en fonction de la dérive détectée, de sorte que l'heure est également précise entre les interrogations du serveur.

D'autres implémentations NTP peuvent utiliser d'autres installations, mais une chose est commune: le besoin et la possibilité d'ajuster la fréquence de l'horloge.

glglgl
la source
Je dirais cependant que le fichier de dérive est un détail de la mise en œuvre d'une implémentation logicielle particulière, et n'est pas lié à la façon dont l'horloge matérielle du serveur NTP peut être si précise.
un CVn