NTP (Network Time Protocol) est un protocole permettant de synchroniser, via un réseau, l’horloge locale d’ordinateurs.
Protocole 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 algorithmique
- une partie architecture
- une partie messagerie
Algorithme
Le protocole NTP prévoit (pour chaque client) des algorithmes pour :
- calculer la période d’interrogation du ou des serveurs
- calculer l’écart de son heure locale avec celle d’un serveur donné
- calculer la durée de transit des messages sur le réseau
- choisir le serveur qui présente les meilleures garanties de qualité
- et calculer ainsi son stratum local
- filtrer les écarts
- et calculer les corrections temps/fréquence à appliquer sur son horloge locale
- gérer les secondes intercalaires
Secondes intercalaires : (seconde additionnelle, saut de seconde) procédé employé pour ajuster UTC (coordinated universal time)
Stratum : Qualité d’une horloge utilisée pour la synchronisation en télécommunications ou pour décrire les niveaux dans la hiérarchie des horloges définie par NTP. Le 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.
Architecture
Schéma d’architecture
Schéma (très global) de l’architecture d’un réseau maître NTP typique.
Flèches jaunes :
- connexion directe dédiée entre des :
- horloges de hautes précisions
- serveurs informatiques maîtres
Flèches rouges :
- connexion via un réseau informatique
Strates :
- 0 : horloges de hautes précisions qui servent de références (atomiques, GPS, radio, …)
- 1 : serveurs primaires synchronisés aux horloges
- 2 : clients interrogeant les serveurs de strate 1
- 3 : clients interrogeant les serveurs de strate 2
Architecture
Les serveurs de stratum 1 sont les serveurs primaires/racines et les autres sont les secondaires.
L’architecture NTP prévoit 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écision).
- Chaque nœud choisit un nœud parent qui a les meilleures garanties qualité et hérite de l’attribut stratum qu’il transmetra à ses descendants
- Chaque traversée d’un nœud incrémente le stratum de 1
- Latérale à des machines paires d’une heure commune. Cette diffusion :
- Vient en complément et permet aux machines de partager une référence de temps commune
- Améliore la résilience de l’architecture en cas de panne racine :
- suppléer une déficience locale/temporaire de connectivité
- conserver une même référence
Diffusion de l’heure
La diffusion de l’heure est basée sur un modèle :
Client/Serveur pour la diffusion verticale :
- un nœud serveur parent répond aux demandes d’heure émises par un nœud client enfant
- mode serveur : synchroniser
- mode client : être synchronisé
- l’adressage unicast est utilisé pour transférer les messages de demande et de réponse
Actif/Passif symétrique 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
- une fois la demande initiale émise, serveur et client échangent leur rôle tour à tour :
- un nœud synchronise ou est synchronisé
- l’adressage unicast est utilisé pour transférer les messages de demande et de réponse
Messagerie
La messagerie NTP prévoit des messages pour :
- interroger un serveur afin d’obtenir l’heure courante
- interroger un client donné sur son état interne
Documentation
https://services.renater.fr/ntp/serveurs_francais
https://fr.wikipedia.org/wiki/Network_Time_Protocol
https://fr.wikipedia.org/wiki/Stratum
https://www.malekal.com/le-protocole-ntp-et-les-serveurs-de-temps/