Alexandre Alapetite & Brice Andujar 2002-05-27

Network Time Protocol

Introduction

Exposé non-formel et non-technique sur le NTP (Network Time Protocol).
Le NTP est un protocole permettant de synchroniser l’horloge d’un ordinateur avec celle d’un serveur de référence.
NTP est un protocole basé sur UDP/IP:123.
C’est donc un protocole internet basé sur l’adressage IP, en mode non connecté avec User Datagram Protocol sur le port 123.
La synchronisation de l’heure est diffusée depuis des serveurs primaires dans une arborescence en réseau. Plus de 1.8E5 clients et serveurs utilisent NTP sur internet.
NTP a été porté sur la plupart des plateformes dont Windows, Linux, Unix…
Le NTPv3 utilisé depuis 1992 permet une synchronisation de l’ordre de la milliseconde ou mieux sur des réseaux locaux (LAN), et avec des écarts inférieurs à 10 secondes sur des réseaux nationaux (WAN).
L’architecture de NTPv4 permet d’atteindre une précision 10 fois plus grande, de l’ordre de la micro-seconde sur les réseaux rapides modernes.
Voir mon service d’heure en ligne.

Sommaire

Sommaire

Quitter
Quitter

La mesure du temps

Présentation de la mesure du temps

Actuellement tout équipement informatique dispose d’une horloge matérielle ou logicielle à laquelle il est fait référence pour horodater des fichiers, des transactions, des courriers électroniques, etc. Cette horloge, bien que conçue autour d’un oscillateur à quartz, dérive comme toute montre ordinaire. Ceci est d’autant plus gênant lorsque les machines sont en réseau et partagent des ressources communes comme des systèmes de fichiers. Par exemple, certains outils de développement, comme la commande Unix make, basent leur travail sur la comparaison des dates de modification de fichiers. De même, la corrélation de messages de "logs" de plusieurs systèmes devient très difficile si elles ne sont pas à la même heure. C’est encore plus ennuyeux lorsqu’il s’agit de serveurs visibles de tout l’Internet comme les relais de messagerie qui oblitèrent les courriers qu’ils transmettent. A titre d’exemple, début septembre 1995, près de 60% des relais de messagerie du domaine .fr avaient un décalage de plus de 1 minute sur l’heure exacte et 27% de plus de 10mn. Ainsi il n’est pas rare de recevoir des courriers avant qu’ils ne soient émis… Les serveurs DNS ne sont pas plus à l’heure…

Sommaire

Historique de la mesure du temps

Consulter cet autre article.

Sommaire

Les références de temps

Elles sont toutes dérivées plus ou moins directement d’horloges atomiques.
On peut citer :

Sommaire

La transmission du temps

La mesure du temps ne suffit pas pour pouvoir utiliser le temps, car les oscillateurs choisis, naturels ou artificiels, ne sont pas directement utilisables par le commun de mortels. C’est pourquoi on distingue les horloges primaires et les horloges secondaires.
Les horloges primaires, naturelles ou artificielles, servent d’étalon sur lesquels on va se synchroniser.
Les horloges secondaires sont synchronisées sur les horloges primaires et servent à transporter le temps. C’est le cas classique est très utilisé des montres et autres réveils.
Avec l’apparition des télécommunications il est maintenant possible de transporter le temps au moyen de signaux radios. Et l’on sait synchroniser les différents étalons de fréquence entre eux sur la planète pour obtenir un temps moyen coordonné appelé temps universel coordonné (TUC).
Naturellement ce temps est moins précis que celui des horloges atomiques puisqu’il faut tenir compte des délais de transmission des signaux. Il y a à travers le monde plusieurs sites officiels de transmission du temps par des tops radio. En France c’est l’émetteur de TDF qui est chargé de la transmission.
Les différents temps que l’on vient de mettre en évidence, temps solaire moyen, temps universel, temps des éphémérides, temps atomique et temps universel coordonné, sont tous différents et ne sont pas utilisés de la même manière. L’usage du temps qui nous intéresse ici est celui du service de l’heure pour la vie quotidienne, c’est donc le temps universel (TU). Mais comme la seconde est définie à partir des étalons atomiques il faut réajuster l’heure régulièrement afin que le soleil passe toujours au méridien de Greenwich à midi. Ce réajustement a lieu si nécessaire fin juin ou fin décembre, et l’on ajoute ou enlève une seconde à la minute courante. C’est ainsi que de temps en temps il y a des minutes qui font 61 secondes ou parfois 59 secondes.

Sommaire

Présentation, histoire et références

Time Protocol

TP fut le premier protocole permettant de synchroniser des machines. C’est le plus ancien (1983), il fait l’objet du RFC868. S’appuyant sur UDP ou TCP il se résume à l’envoi par les serveurs d’un paquet contenant le temps en secondes écoulé depuis le premier janvier 1900 à 00h00.

Il a été utilisé par le démon Unix timed mais sa faible résolution et l’absence de spécification de mécanismes de compensation de délais de transit ont conduit à l’étude d’un protocole plus sophistiqué.

Sommaire

Naissance du NTP

Le NTP est né d’une initiative de D.L. Mills dans le RFC958 de Septembre 1985. Cet exposé se basera sur le document RFC1305 de Mars 1992 (rendant obsolètes RFC1119, RFC1059, RFC958).
Les évolutions de NTP concernent surtout les algorithmes de mise à jour des horloges locales, pour gagner en stabilité et précision, mais la compatibilité avec des versions plus anciennes est assurée.

Sommaire

Différentes versions, de 1 à 4

NTPv3 a permis d’affiner les algorithmes et de supprimer les ambiguïtés des versions précédentes.
NTPv4 est compatible avec les versions précédentes ; il permet d’accroître par 10 la précision et d’augmenter les délais entre les synchronisations sans trop de perte de précision. Avec NTPv4 est aussi fourni un nouveau modèle de gestion amélioré de l’horloge locale. L’implémentation a été simulée et testée sur différentes architectures machines.

SNTP

Décrit dans le RFC 1361, c’est une version simplifiée de NTP, dépourvue des mécanismes de sélection, destinée à des utilisations où une précision de l’ordre de la seconde est suffisante. Un client SNTP peut aussi se synchroniser sur un serveur NTP.
Bien qu’ayant été conçu pour implémenter des clients simple, SNTP permet aussi la mise en oeuvre de serveurs mais ceux-ci doivent alors être synchronisé directement par une référence temporelle (ex: radio). Les clients SNTP doivent opérer dans une configuration où aucun client SNTP ne dépend d’un autre client SNTP.
La version 3 de SNTP, décrite dans la RFC 2030 supporte IPv6.
SNTP permet une synchronisation allant du dixième de seconde à la seconde, ce qui est suffisant la plupart du temps, mais pas pour les applications temps réel…

Sommaire

Fonctionnement du NTP

Architecture réseau

NTP est basé sur un système de strates.

couches NTP

On peut avoir jusqu’à 15 couches, mais en général, on ne dépasse pas la 5ème. Notons que les simples clients ne sont pas autorisés avant la strate 3.
Il y a plusieurs modes de communication :

Le mode client/serveur :
Le client se synchronise sur l’heure du serveur.
Le mode symétrique :
La priorité est donnée au poste qui a la plus courte distance de synchronisation.
Le mode multicast :
Permet au client d’obtenir une réponse de plusieurs serveurs.
Sommaire

Configuration autonome

NTP propose intègre système d’exploration du réseau pour découvrir automatiquement de nouveaux serveurs NTP, par différentes méthodes.

Multicast :
  1. Les serveurs inondent périodiquement le réseau local par un message multicast.
  2. Les clients utilisent le mode client/serveur lors du premier contact pour mesurer le temps de propagation puis restent en écoute.
Manycast :
Ce mode est plus précis.
  1. Les clients inondent le réseau local par un message multicast.
  2. Les serveurs répondent en multicast.
  3. Les clients communiquent ensuite avec les serveurs comme s’ils avaient été configurés en unicast.

Des contrôles de time-out et de TTL garantissent le bon déroulement de la configuration.

Sommaire

Architecture système

La synchronisation de l’horloge locale ne se fait pas une seule fois, ni en une seule étape. En effet, une horloge locale dévie de manière assez aléatoire.

architecture NTP
Sommaire

Déroulement des échanges NTP

La base de synchronisation de temps décrite par les RFC 1305 est constituée par le format de message NTP (figure ci-dessous), constituée d’un nombre de bits et d’octets utilisés pour l’information de contrôle et de référence et d’une suite de zones d’horodatage pour les informations sur le temps. Chaque zone d’horodatage est constituée d’un nombre de 64 bits.

trame NTP

Les champs horaires sont codés en heure GMT (Greenwich Mean Time) sur 64 bits :

Leap Indicatorprévient de la dérive en fin de journée (00:rien, 01:ajouter une seconde, 10:enlever une seconde, 11:horloge non synchronisée)
Version Numbernuméro de version
Mode
  1. symétrique actif (à l’initiative d’une connexion)
  2. symétrique passif
  3. client
  4. serveur
  5. broadcast (serveur indique à ses clients qu’il peut leur fournir l’heure)
  6. message de contrôle NTP
Stratumstrate (1:serveur primaire(horloge radio, atomique, etc.))
Pollindique le nombre maximal de secondes qui peuvent s’écouler entre deux messages (exprimé en puissance de deux).
Les deux parties doivent donc entretenir une communication dont la période de mise à jour doit être inférieure à Poll.
Precisionprécision de l’horloge en secondes (exprimé en puissance de deux : -10 signifie 2-10, soit 1/1024=0.97ms)
Synchronizing Distancetemps d’aller-retour jusqu’au serveur primaire en secondes (les bits 15 et 16 représentent les fractions)
Synchronizing Dispersiondispersion estimée jusqu’au serveur primaire (les bits 15 et 16 représentent les fractions)
Reference Clock Identifieridentifiant d’une horloge :
  • pour un serveur primaire (ascii de 4 lettres maxi): WWVB, GOES, WWV, etc.
  • pour les autres serveurs : adresse IP
Reference Timestampheure de la dernière mise à jour de l’horloge.
Originate Timestampheure de départ de la requête.
Receive Timestampheure d’arrivée de la requête.
Transmit Timestampheure de départ de la réponse à la requête.
Authenticatorcomporte la signature DES de ce paquet émis.

Pour utiliser le format de message NTP afin de synchroniser les horloges d’ordinateurs, un programme client définit d’abord la zone Mode dans le format de message, pour indiquer qu’une demande est effectuée (mode client).
Eventuellement, le client place l’heure courante de la machine cliente dans la zone d’horodatage. La zone Transmit pourra servir, lors du retour du message depuis le serveur NTP, à calculer le délai aller-retour de l’échange.
Après avoir défini ces zones, le client envoie le message au programme serveur NTP, en utilisant l’interface sockets et le port réservé à l’utilisation NTP, port numéro 123.

Le programme serveur NTP reçoit le message sur le port 123 puis règle la zone d’horodatage Receive d’après l’heure de réception de la requête.
Ensuite, la valeur d’horodatage Transmit envoyée par le client est copiée dans la zone d’horodatage Originate d’où elle sera renvoyée au client et utilisée pour calculer le délai d’aller-retour. Certaines zones de contrôle dans la première partie du message sont définies de manière à identifier le mode de fonctionnement du serveur.
Enfin, le serveur place l’heure courante dans le tampon horodateur Transmit et renvoie le message au client.

Dès réception, le client vérifie la validité du message, calcule le délai d’aller-retour et la différence entre les heures de l’horloge serveur et de l’horloge client (cette différence est appelée décalage d’horloge locale).
Le client applique alors sa politique de mise à l’heure.

Sommaire

Mise à l’heure

Une fois connu le décalage entre l’heure locale et l’heure de référence, il faut mettre à jour l’heure locale. Changer l’heure système est un problème pour les services utilisant l’heure, comme les bases de données, ou simplement les comparaisons de fichiers grâce à la date. Aussi il existe deux méthodes de mise à l’heure.

  1. Le changement brutal de l’heure. Cela est fait lorsque les écarts sont gros. Cela a des conséquences néfastes sur les applications utilisant l’heure.
  2. L’ajustement de la fréquence de l’horloge qui corrige progressivement le décallage de l’horloge, et permet de maintenir une heure plus précise. Cette méthode a l’avantage de ne pas interférer avec les applications utilisant l’heure.

Les seuils d’écart pour utiliser l’une ou l’autre des méthodes peuvent être configurés.
Au niveau de l’implémentation des algorithmes en machine, il est important de réduire les délais entre la couche physique réseau, et le traitement des champs NTP.

Sommaire

Conclusion

NTP, et en particulier les nouvelles versions, est testé sur un réseau de test "DCnet Research Network". Il évolue pour gagner en fiabilité, tenir compte des évolutions (IPv6) et des besoins futurs ; par exemple pour fonctionner sur IPIN (InterPlanetary Internet).
NTP est reconnu pour être un protocole de synchronisation efficace, en revanche la complexité des algorithmes mis en oeuvres limite son déploiement. En effet, une grande précision horaire fait appel a des notions scientifiques spécifiques, tant pour les mises à l’heure dues aux variations du mouvement terrestre, que pour la résolution du problème du transfert de l’heure avec des délais variables.
Aussi, il est recommandé d’utiliser SNTP à l’extrémité des sous réseaux de synchronisation.

Sommaire
https://alexandre.alapetite.fr

Retour