16.3. Comprendre NTP
La version de
NTP
utilisée par Red Hat Enterprise Linux est comme celle qui est décrite dans la RFC 1305 Network Time Protocol (Version 3) Specification, Implementation and Analysis et RFC 5905 Network Time Protocol Version 4: Protocol and Algorithms Specification
Cette implémentation de
NTP
permet d'atteindre une précision à la fraction de seconde. Sur Internet, une précision au dixième de seconde est normale. Sur un réseau LAN, une précision au millième de seconde est possible dans des conditions idéales. Ceci est dû au fait que la dérive horaire est désormais prise en charge et corrigée, ce qui n'était pas le cas sur les systèmes de protocoles de temps plus anciens, qui étaient plus simples. Une résolution de 233 picosecondes est offerte avec l'utilisation d'horodatages de 64 bits. Les premiers 32 bits de l'horodatage sont utilisés pour les secondes, et les derniers 32 bits sont utilisés pour les fractions de seconde.
NTP
représente l'heure en tant que total du nombre de secondes depuis 00:00 (minuit) le 1er janvier, 1900 GMT. Comme 32 bits sont utilisés pour compter les secondes, cela signifie que l'heure devra être « basculée » en 2036. Cependant, NTP
fonctionne avec les différences entre horodatages, ceci ne présente donc pas le même niveau de problème que les autres implémentations de protocole de temps ont pu offrir. Si une horloge matérielle se trouvant à 68 ans de l'heure correcte est disponible au moment du démarrage, alors NTP
interprétera correctement la date actuelle. La spécification NTP4
fournit un numéro d'ère (« « Era Number » ») et un décalage d'ère (« « Era Offset » ») qui peuvent être utilisés pour rendre le logiciel plus robuste lorsqu'il doit gérer des durées de plus de 68 ans. Remarque : veuillez ne pas confondre ceci avec le problème Unix de l'an 2038.
Le protocole
NTP
fournit des informations supplémentaires pour améliorere la précision. Quatre horodatages sont utilisés pour permettre le calcul du temps d'un aller-retour et du temps de réponse du serveur. Dans son rôle de client NTP
, pour qu'un système puisse se synchroniser avec un serveur de temps référence, un paquet est envoyé avec un « horodatage d'origine ». Lorsque le paquet arrive, le serveur de temps ajoute un « horodatage de réception ». Après avoir traité la requête d'informations sur l'heure et la date et juste avant de retourner le paquet, un « horodatage de transmission » est ajouté. Lorsque le paquet retourné arrive sur le client NTP
, un « horodatage de réception » est généré. Le client peut désormais calculer le temps d'aller-retour total et dériver le temps de transfert réel en soustrayant le temps de traitement. En supposant que les temps de transfert aller et retour soient égaux, le délai d'un seul transfert lors de la réception des données NTP
est calculé. L'algorithme NTP
est bien plus complexe que ce qui est présenté ici.
Lorsqu'un paquet contenant des informations sur le temps est reçu, il n'est pas immédiatement pris en charge, il est tout d'abord sujet à des vérifications de validation, puis il est traité avec d'autres échantillons de temps pour arriver à une estimation de l'heure. Celle-ci est ensuite comparée à l'horloge système pour déterminer le décalage horaire, la différence entre l'heure de l'horloge système et l'heure que
ntpd
a déterminé. L'horloge système est ajustée lentement, au maximum à une vitesse de 0,5 ms par seconde, afin de réduire ce décalage en changeant la fréquence du compteur utilisé. Ainsi, un minimum de 2000 secondes est nécessaire pour ajuster l'horloge d'une seconde en utilisant cette méthode. Ce lent changement est appelé « Slewing » (changement d'angle d'orientation) et ne peut pas être inversé. Si le décalage de l'horloge est supérieur à 128 ms (paramètre par défaut), ntpd
peut « incrémenter » l'horloge plus haut ou plus bas. Si le décalage est supérieur à 1000 seconde, alors l'utilisateur ou un script d'installation devra effectuer un ajustement manuel. Veuillez consulter le Chapitre 2, Configurer l'heure et la date. Avec l'option -g
ajoutée à commande ntpd
(utilisée par défaut), tout décalage lors du démarrage système sera corrigé, mais pendant une opération normale, seuls les décalages de plus de 1000 secondes seront corrigés.
Certains logiciels peuvent échouer ou produire une erreur si l'heure est modifiée en arrière. Pour les systèmes sensibles aux changements d'heure, la limite peut être changée sur 600 s. au lieu de 128 ms., en utilisant l'option
-x
(qui n'est pas liée à l'option -g
). L'utilisation de l'option -x
pour augmenter la limite de réajustement 0,128 s. à 600 s. présente un inconvénient car une méthode différente de contrôle de l'horloge doit être utilisée. Celle-ci désactive la discipline de l'horloge du noyau et peut avoir un impact négatif sur la précision de l'horloge. L'option -x
peut être ajoutée au fichier de configuration /etc/sysconfig/ntpd
.