ntpd
ntpd, sigle de Network Time Protocol Daemon, est un daemon qui définit et maintient l'heure sur un système d'exploitation par synchronisation avec les serveurs dédiés à donner cette information.
Description
Ce programme est un daemon qui gère l'heure système en synchronisation avec des serveurs de temps Internet. Il implémente de manière exhaustive la version 4 du protocole NTP, mais reste aussi compatible avec la version 3, définie par le RFC 1305[1], et les versions 1 et 2, définies par les RFC 1059[2] et RFC 1119[3]. ntpd
effectue la plupart de ses calculs en arithmétique virgule flottante 64 bits et ne fait des opérations sur les entiers 64 bits seulement pour garder une précision ultime, environ 232 picosecondes. Bien que cette précision ne soit pas atteinte avec les stations de travail et les réseaux d'aujourd'hui, elle pourra devenir utile pour de futurs processeurs et réseaux encore plus rapides. En pratique, sur un ordinateur de bureau ou serveur quelconque, la précision peut raisonnablement atteindre 1 milliseconde voire moins en fonction surtout de la qualité de la connexion réseau.
ntpd
n'utilise qu'un seul fichier de configuration en mode daemon et en mode client. Celui-ci s'appelle en principe ntp.conf
et se trouve dans le répertoire /etc
. Un autre fichier important s'appelle driftfile
(fichier de dérive), et sert à corriger les dérives de l'horloge système (en) en l'absence de connexion réseau à un serveur plus précis. La version Solaris de ntpd
s'appelle xntpd
.
DĂ©bogage
Si ntpd
ne se lance pas, en supposant une implémentation du programme qui respecte les RFC, l'horloge est peut-être affectée d'un décalage horaire trop important. En regardant le fichier journal, on voit alors une ligne comme :
18 Aug 21:04:40 ntpd[7220]: time correction of 1738 seconds exceeds sanity limit (1000); set clock manually to the correct UTC time.
Ce contrôle peut être annulé en passant le paramètre -g
Ă ntpd
au démarrage :
ntpd -g
Pour forcer la synchronisation des horloges, utiliser :
ntpd -q
ou sur des systèmes plus anciens[4] :
ntpdate un.serveur-de-temps.example
Il faut noter que de larges décalages horaires provoqués par cette action peuvent entraîner des effets de bord dans des processus complexes ou qui tournent depuis longtemps, et ce n'est pas conseillé pour des serveurs. En particulier, des programmes qui sont dépendants de l'horloge comme cron
ou make
peuvent se lancer deux fois de suite ou pas du tout.
La commande ntpq
permet de se connecter au daemon du serveur de temps et de lui demander des informations sur les serveurs auxquels il est connecté. Par exemple, avec la commande :
ntpq -p localhost
qui produit une sortie du type :
remote refid st t when poll reach delay offset jitter
==============================================================================
*wtf.roflcopter. 195.83.222.27 2 u 1566 2048 377 29.021 -0.820 0.514
+ns2.admincmd.co 128.233.219.228 2 u 1273 2048 377 33.850 -0.204 0.725
+server.gigelf.f 193.52.137.213 3 u 1056 2048 377 29.022 0.394 0.565
On peut ainsi connaître pour chaque serveur distant, dit pair de la machine hôte[5] :
remote
: son adresse (nom de domaine, tronqué à 15 caractères) ;refid
: l'adresse IP du serveur qui lui sert de référence (les serveurs de strate 1 indiqueront par exemple «.GPS.
») ;st
: son stratum (soit 1 – par exemple pour une source GPS –, 2 pour les clients des strates 1, etc. jusqu'à 5 – rarement plus, au maximum 15 – pour les plus éloignés d'une source fiable) ;t
: son type (u
= unicast,m
= multicast,l
= local,-
= inconnu) ;when
: le temps écoulé, en secondes, depuis la dernière réponse reçue ;poll
: l'intervalle de temps en secondes entre deux requêtes (intervalle adapté suivant un algorithme interne) ;reach
: son accessibilité (état du registre en octal) ;delay
: la durée en millisecondes, due aux délais réseau, d'une requête complète (similaire au ping) ;offset
: le décalage temporel apparent, en millisecondes, entre son horloge et celle de l'hôte ;jitter
: la « gigue » du décalage temporel apparent (moyenne quadratique)[6].
Note : Au-delà de 211 (2048) secondes, les durées when
et poll
sont exprimées en minutes (34m
, 68m
, 137m
, etc.)
Annexes
Implémentations de ntp/ntpd
- (en) Home of the Network Time Protocol – L'implémentation de référence du projet NTP à l'Université du Delaware.
- (en) OpenNTPD – Un daemon NTP simple et portable, l'implémentation d'OpenBSD.
- (en) dntpd – Un simple client NTP, l'implémentation de DragonFly BSD.
- (en) Meinberg Windows Installer for NTP – Une implémentation Windows simple à installer.
Ressources relatives Ă ntp/ntpd
- (en) Official NTP Documentation
- (en) Community Supported Documentation
- (en) NTP Developers Web
- (en) Mailing Lists (lists.ntp.org)
- (en) HTTP archive
- (en) NTP Documentation Archive
- (en) OpenNTPD Manual Pages
- (en) Gentoo Wiki (ntp)
- (en) Craig's Linux Notes: Clock ()
Bibliographie
- (en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « ntpd » (voir la liste des auteurs).
- (en) David L. Mills, ntpd - Network Time Protocol (NTP) daemon, University of Delaware, 2014.
Notes et références
- (en) « Network Time Protocol (Version 3) Specification, Implementation and Analysis », Request for comments no 1305, .
- (en) « Network Time Protocol (Version 1) Specification and Implementation », Request for comments no 1059, .
- (en) « Network Time Protocol (Version 2) Specification and Implementation », Request for comments no 1119, .
- (fr) « Configuration des clients », sur L'internet rapide et permanent, 6 juillet 2011 (consulté le 29 février 2016)
- (en) « ntpq - standard NTP query program », sur The Network Time Protocol (NTP) Distribution, 31 janvier 2014 (consulté le 24 février 2016)
- (en) « Network Time Protocol Version 4: Definitions », sur IETF Tools, juin 2010 (consulté le 27 février 2016)