(NTP) ( « protocole de temps réseau »), parfois appelé protocole de synchronisation de réseau. La fiche donne également protocole d'heure réseau et protocole de diffusion du temps en réseau., est un protocole qui permet de synchroniser, via un réseau informatique, l'horloge locale d'ordinateurs sur une référence d'heure.
La première version v.0 de NTP, formalisée dans la RFC 958, date de . Dès le début, ce protocole fut conçu pour offrir une précision de synchronisation meilleure que la seconde. Par rapport au service « » qui offre un service d'heure sans proposer une infrastructure, le projet NTP propose une solution globale et universelle de synchronisation qui est utilisable dans le monde entier.
La version 3 de NTP est la plus répandue à ce jour. Elle est formalisée par la RFC 1305 et a le statut « »Une spécification est élevée à ce statut s'il existe au moins deux réalisations indépendantes et interopérable et pour laquelle une expérience opérationnelle suffisante et satisfaisante a été obtenue. c'est-à-dire « spécification finale », elle spécifie plusieurs aspects : la description du protocole réseau ; les modes de fonctionnement ; les algorithmes à mettre en place dans les machines.
La mise au point de ce protocole et des algorithmes a été menée de pair avec le développement d'un logiciel conforme à ces spécifications. De ce fait, cette réalisation fait office de référence dans le domaine et est appelée « logiciel NTPDisponible sur ce site The Network Time Protocol. » même si d'autres solutions existent. Ces travaux ont été réalisés en grande partie à l'université du Delaware grâce au professeur David L. Mills et à une importante équipe de bénévoles.
La version 4 de NTP est une révision importante publiée dans la RFC 5905 en .
Aussitôt après la parution de la version 3 de NTP, une version simplifiée est apparue, appelée « » (SNTP) qui a également fait l'objet de plusieurs RFC. Par rapport à NTP, cette version est simplifiée dans le sens qu'elle ne spécifie pas les algorithmes à mettre en place dans les machines.
Présentation générale de NTP 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 et utilise le port 123.
Le protocole NTP comprend : une partie architecture, une partie messagerie, et une partie algorithmique.
Partie architecture Architecture du réseau NTP L'architecture NTP prévoit :
thumb|250px|Schéma de l'architecture d'un réseau maître NTP (Network Time Protocol) typique.
Les flèches jaunes indiquent une connexion directe dédiée entre des horloges de hautes précisions (cf. la page dédiée aux horloges atomiques) et entre des serveurs informatiques de diffusions maîtres ; les flèches rouges indiquent une connexion via un réseau informatique.
Ce schéma doit être compris de façon très large et très souple : par exemple un nœud de stratum 2 peut très bien être à son tour le serveur d'une université pour synchroniser les PC (ou ordinateurs personnels) de plusieurs milliers d'étudiants. Dans ce cas, il est peu probable que les étudiants veuillent synchroniser deux à deux leurs PC (ou ordinateurs personnels), sauf peut-être dans des cas particuliers où les étudiants souhaitent pouvoir continuer à échanger des données datées, même si le serveur de l'université vient à tomber en panne, est désactivé ou est inaccessible à l'instant vouluÀ noter : un serveur de temps reconnu comme fiable, pouvant jouir d'une certaine notoriété auprès du public doit avoir un fonctionnement stable et pérenne ; dans les cas contraires, non fiabilité et/ou fonctionnement intermittent, les serveurs de temps (et pas seulement des serveurs de temps) peuvent n'être plus du tout utilisés, voir bannis de tout réseau qui pourrait ou pouvait en faire la promotion..
la diffusion verticale arborescente de proche en proche d'une heure de référence à partir d'une ou plusieurs machines racines garantes d'une grande précisionPour offrir cette très grande précision, ces machines racines peuvent être par exemple couplées avec des horloges atomiques.. Dans cette arborescence, chaque nœud choisit parmi ses nœuds parents, celui qui présente les meilleures garanties de qualité et hérite au passage d'un attribut nommé stratum qu'il transmet à ses descendants. Les machines de stratum 1 sont les machines racines et à chaque traversée d'un nœud ce nombre augmente d'une unité. Ce stratum est une mesure de la distance d'un nœud aux machines racines, il est considéré comme un indicateur de la qualité de synchronisation qu'une machine donnée peut offrir à ses descendants. la diffusion latérale à des machines paires d'une heure commune. Cette diffusion vient en complément de la précédente ; elle permet à ces machines de partager une référence de temps qui leur est commune. Cette diffusion améliore la résilience de cette architecture NTP dans le sens où elle permet de suppléer une déficience locale/temporaire de connectivité vers les machines racines, voire de permettre à un groupe de machines de conserver entre elles une même référence relative en l'absence de machines racines.
Dans la terminologie NTP, les serveurs de stratum 1 sont appelés serveurs primaires, et les autres sont appelés serveurs secondaires.
Chaque nœud de cette architecture doit être configuré en lui indiquant au minimum quels sont ses serveurs parents et/ou collatéraux. C'est à la charge de chaque utilisateur de réaliser localement cette configurationLa version 3 du protocole NTP ne spécifie pas de mécanisme pour une configuration automatique.. C'est cette agrégation de configurations qui, de proche en proche, crée le réseau NTP, il n'est pas préexistant ni même configuré de façon centralisée. Cette architecture est flexibleElle est flexible car elle permet d’ajouter / supprimer facilement un nœud dans cette arborescence moyennant quelques règles simples : s'il s’agit d’ajouter un nœud serveur, il n’y a aucune précaution particulière à respecter ; il pourra être utile de communiquer l’existence de ce nouveau serveur aux utilisateurs potentiels ; généralement cette communication est réalisée par la mise à jour de la liste des serveurs NTP disponibles sur le site www.ntp.org. s'il s’agit d’ajouter un nœud uniquement client, il faudra le configurer avec quelques nœuds serveurs trouvés sur le site www.ntp.org. Ces nœuds serveurs seront choisis aussi proche que possible d’un serveur primaire, c'est-à-dire un serveur ayant un stratum faible, tout en étant proche du client en termes de réseau, c'est-à-dire un nombre de routeurs intermédiaires faible. s'il s’agit de supprimer un nœud serveur, et particulièrement s'il s’agit d’un serveur primaire, il faudrait s’assurer que cela n’entraine pas l’apparition de nœuds orphelins. Dans la pratique, ce sont les utilisateurs de ces nœuds orphelins qui détectent la situation et la corrigent. s'il s’agit de supprimer un nœud uniquement client, il n’y a aucune précaution particulière à respecter.
Ces différents cas de figure montrent que la configuration de chaque nœud est à la charge d’une personne et n’est pas réalisée automatiquement, pour être plus précis cette configuration pourrait être automatisée mais cela n’est pas spécifié dans le protocole NTP actuel., extensibleElle est extensible car elle supporte l’ajout de nœuds aussi bien dans le sens vertical qu’horizontal. et robusteElle est résistante à la défaillance d’un nœud à la condition que les clients de ce nœud ne soient pas monoparentaux. La souplesse de sa configuration le permet. Cependant, il faut bien noter que même si le « protocole NTP » fournit les moyens d’y parvenir, il ne spécifie pas de mécanisme pour une configuration automatique, c’est donc à la charge des utilisateurs d’y contribuer., mais c’est à la charge des utilisateurs d’y contribuer.
Méthodes pour la diffusion de l'heure La diffusion de l'heure est basée : sur un modèle du type « client/serveur » pour la diffusion verticale : un nœud « serveur » répond aux demandes d'heure émises par un nœud « client » ; les parents sont les serveurs, les enfants sont les clients ; en opérant dans le mode « serveur », un nœud annonce son désir de synchroniser ; en opérant dans le mode « client », un nœud annonce son désir d’être synchronisé ; le mode d'adressage « unicast » est utilisé pour transférer les messages de demande et de réponse ; sur un modèle du type « symétrique actif/passif » pour la diffusion latérale : un nœud « symétrique passif » répond aux demandes d'heure émises par un nœud « symétrique actif » ; ce paradigme est proche du précédent avec la différence suivante : une fois la demande initiale émise, « serveur » et « client » échangent leur rôle tour à tour, la réponse de l'un devient une demande pour l'autre ; en opérant dans le mode « symétrique », aussi bien passif qu’actif, un nœud annonce son désir de synchroniser et d’être synchronisé ; comme précédemment le mode d'adressage « unicast » est utilisé pour transférer les messages de demande et de réponse ; sur un modèle du type « broadcast » pour la diffusion locale : un nœud émet spontanément et périodiquement des messages de l'heure courante à destination de voisins d'opportunité proches, un peu à la manière d’une horloge parlante sans se préoccuper de savoir si son information d'heure sera utilisée ; en opérant dans ce mode, un nœud annonce son désir de synchroniser ses voisins ; le mode d'adressage « broadcast » est utilisé pour transférer ces messages horaires ; de par ce fait, et également parce que par défaut les routeurs ne routent pas les messages « broadcast », cette méthode de diffusion de l'heure ne concerne que les machines d'un même réseau local.
Partie messagerie La messagerie NTP prévoit : des messages pour qu'un client interroge un serveur et que celui-ci lui retourne l'heure courante ; des messages de service pour interroger un client donné sur son état interne.
Lors de la parution de nouvelles versions de NTP, la structure des nouveaux messages est formée en agrégeant les informations nouvelles à la suite de celle des messages de version précédente. Cette façon de procéder permet l'interopérabilité des différentes versions ce qui facilite la migration globale du parc de machines d'une version ancienne vers une nouvelle.
Partie algorithmique Le protocole NTP prévoit pour chaque client des algorithmes : pour calculer la période d'interrogation du ou des serveurs ; pour calculer l'écart de son heure locale avec celle d'un serveur donné ; pour calculer la durée de transit des messages sur le réseau ; pour choisir le serveur qui présente les meilleures garanties de qualité, et calculer ainsi son stratum local ; pour filtrer les écarts et calculer les corrections temps/fréquence à appliquer sur son horloge locale ; pour gérer les secondes intercalaires.
Description détaillée du « fonctionnement NTP »
Le message de demande d'heure envoyé par un client vers un serveur et celui pour la réponse ont la même structure. Celle-ci est schématisée ci-dessous, elle correspond à la version 3 de NTP, mais le principe général décrit ci-dessous est conservé au fil des versions; les informations principales utilisées dans ce message pour calculer les écarts d'heure entre client et serveur sont les suivantes : thumb|upright=1|Structure du message NTP extrait de RFC 1305
OT : Originate Timestamp; heure de départ de la requête, RT : Receive Timestamp; heure de réception de la requête, TT : Transmit Timestamp; heure d'émission de la requête et/ou de la réponse.
Les autres informations contenues dans ce message sont utilisées à des fins de gestion ; leur usage n'est pas détaillé dans cet article, on pourra se reporter à la RFC 1305 pour plus de détails. LI : indicateur d'insertion/retrait d'une seconde intercalaire la dernière minute du jour courant, VN : numéro de version, Mode : mode de fonctionnement, Stratum : stratum de l'horloge locale,