Comment personnaliser le taux d'interrogation NTP?

17

J'installe Ubuntu sur une machine intégrée qui fonctionne sur une connexion cellulaire, où nous payons par octet. La machine n'a pas non plus de batterie RTC, elle démarre donc à un moment aléatoire à chaque démarrage.

Je voudrais m'assurer que l'heure est synchronisée lorsque la connexion cellulaire est disponible afin que les messages de journal, etc. aient des temps réels, mais je ne veux pas non plus payer un bras et une jambe pour le trafic NTP.

Puis-je personnaliser la vitesse à laquelle NTP met à jour l'heure? J'utilise openntpd actuellement, mais je n'y suis pas attaché.

Internet n'est pas nécessairement opérationnel au démarrage, donc ntupdate et les éléments associés au démarrage ne fonctionneront pas. Et la planification via cron signifie attendre que la tâche planifiée démarre, alors que je veux qu'un démon temporel obtienne une synchronisation horaire dès que possible.

David Pfeffer
la source

Réponses:

5

Certaines de ces réponses pourraient gagner le concours de configuration ntp obscurcie.

Utilisez l'implémentation de référence ntp et utilisez iburst pour définir l'heure rapidement au démarrage. Après cela, vous pouvez utiliser la directive minpoll pour limiter la fréquence à laquelle ntpd interroge les serveurs de temps distants. Cela vous permettra de profiter de la discipline d'horloge de ntpd et de réduire la bande passante.

minpoll minpoll
maxpoll maxpoll
    These options specify the minimum and maximum poll intervals for NTP 
    messages, in seconds as a power of two. The maximum poll interval 
    defaults to 10 (1024 s), but can be increased by the maxpoll option to 
    an upper limit of 17 (36 h). The minimum poll interval defaults to 6 (64 s), 
    but can be decreased by the minpoll option to a lower limit of 3 (8 s).

Chrony est une bonne alternative à l'implémentation de référence ntp. Openntpd ne l'est pas.

dfc
la source
8

Mon expérience est avec ntp plutôt qu'avec openntpd.

Vous devez savoir que le protocole NTP commence généralement par l'envoi de paquets toutes les minutes (64 secondes), mais s'installe généralement en envoyant et en recevant un paquet toutes les 17 minutes pour chaque serveur que vous avez dans votre fichier /etc/ntp.conf. Les pannes de réseau ou une horloge instable dans votre appareil peuvent toutefois augmenter cela. Chaque paquet a une charge utile d'environ 68 octets, ce qui représente probablement un peu plus de 100 octets, dans chaque sens, par interrogation.

La rdate et la ntpdate lors de la mise en service du réseau sont de bonnes idées pour régler l'heure. Et si c'est tout ce dont vous avez besoin devrait bien fonctionner pour vous.

Cependant, si vous devez synchroniser l'heure sur une période prolongée, le protocole ntp a été conçu pour cela. L'horloge de votre appareil fonctionnera un peu vite ou lentement en fonction de la chaleur ou de la fraîcheur, même si elle a probablement une horloge contrôlée par cristal - et le chronométrage continu est censé s'adapter à cela.

Voici quelques suggestions si vous avez besoin d'un chronométrage continu et souhaitez réduire la bande passante utilisée. Ils font référence aux éléments de ntp.conf.

N'utilisez pas iburst. (Mais il faudra plus de temps pour régler l'heure initialement).

Augmentez minpoll vers le haut à partir de 6 (2 ^ 6 secondes est 64 secondes). Cela réduit le trafic lorsque le protocole démarre après le démarrage du réseau.

Augmentez maxpoll vers le haut à partir de 10 (2 ^ 10 secondes est 1024 secondes ou environ toutes les 17 minutes. Vous pouvez aller jusqu'à 17 pour interroger toutes les 36 heures environ. Je n'ai pas essayé cela moi-même.

N'utilisez qu'un nombre minimum de serveurs, si vous en aviez un qui peut être atteint de manière fiable à partir de vos appareils intégrés, cela aurait été formidable. Plus il y a de serveurs, plus le chronométrage peut être fiable, mais le trafic augmente, c'est donc un compromis.

John S Gruber
la source
3

Sur une installation par défaut d'Ubuntu, le démon NTP ne s'exécute pas. Au lieu de cela, l'heure est définie chaque fois qu'une interface réseau est activée par le /etc/network/if-up.d/ntpdatecrochet.

Si vous recherchez une synchronisation ponctuelle plutôt qu'une synchronisation constante, cela peut vous suffire.

Vous pouvez contrôler quels serveurs sont interrogés pour définir l'heure soit via le /etc/ntp.conffichier standard , soit via la NTPSERVERSvariable dans /etc/default/ntpdate.

James Henstridge
la source
2

Avez-vous besoin de la synchronisation exacte et précise fournie par ntp? Sinon, vous pourrez peut-être vous en sortir en utilisant rdateou ntpdateau démarrage, puis périodiquement via cron.

Pridkett
la source
2

Vous avez probablement déjà lu la page de manuel openntpd.

http://www.openbsd.org/cgi-bin/man.cgi?query=ntpd.conf

Vous avez probablement déjà remarqué l'absence d'option d'interrogation pour le temps.

J'ai ces hacks possibles à proposer:

  1. N'utilisez pas de ntpd, appelez simplement ntpdate via cron.
  2. Utilisez cron et / ou vos scripts de connexion cellulaire pour basculer les règles iptables pour supprimer ou autoriser le trafic du port 123 lorsque vous le souhaitez. Cela pourrait être aussi simple que

    0 12 * * * iptables -D OUTPUT -j DROP -p udp --dport 123 # at noon start allowing ntp

    0 13 * * * iptables -A OUTPUT -j DROP -p udp --dport 123 # at 1pm stop allowing ntp

  3. Intégrez un récepteur d'horloge radio dans votre machine embarquée. Je ne sais presque rien à ce sujet, mais des produits comme celui-ci:

faites-moi penser que ce n'est pas difficile si vous pouvez recevoir le signal radio.

Jay _silly_evarlast_ Wren
la source
1
Si vous allez ajouter du matériel, pourquoi recommander un radio-réveil et ne pas ajouter de GPS avec PPS?
dfc
@dfc bon point. OP, pensez au matériel GPS pour obtenir du temps.
Jay _silly_evarlast_ Wren
1
Pour 50 $ (bien sûr, GPS, c'est beaucoup) et quelques soudures, j'ai un serveur de stratum 1 dans la chambre d'amis. J'ai l'antenne GPS Sure assise dans une fenêtre bloquée par un érable géant et une autre maison et cela fonctionne bien.
dfc
@dfc pouvez-vous lier au matériel et aux logiciels que vous utilisez avec le matériel?
Jay _silly_evarlast_ Wren
1
@Jay_silly_everlast_Wren Software: implémentation de référence ntp www.ntp.org Carte: sureelectronics.net/goods.php?id=99 Quelques discussions: satsignal.eu/ntp/Sure-GPS.htm et lists.ntp.org/pipermail/questions /2011-March/028854.html Il y en a beaucoup plus. Ne soyez pas effrayé par la soudure. C'était ma première soudure et c'était facile. La liste de diffusion des questions ntp est remplie de personnes qui ont utilisé le tableau sûr et qui en sont très satisfaites.
dfc
1

Si je me souviens bien, l'intervalle d'interrogation ntp peut être réglé au maximum sur 1024 secondes. La solution la plus simple serait peut-être d'exécuter ntpdate à chaque démarrage et plus tard de temps en temps à partir de crontab.

Si votre horloge démarre avec une heure aléatoire à chaque démarrage, vous ne pourrez probablement pas exécuter ntpd de toute façon et vous devrez d'abord utiliser ntpdate. Ntpd refuse de synchroniser l'heure si la différence est trop grande entre votre horloge et celle des serveurs.

BigWhale
la source
+1 pour l'info sur ntp refusant de se synchroniser si la dérive est trop importante
David Pfeffer
ntpdate est dépréciée en faveur des options ntpdqui se chargera de ce cas d' utilisation mieux que cronpeut eecis.udel.edu/~mills/ntp/html/ntpdate.html
MSW
1

NTP, comme TCP, a une certaine théorie profonde et expérience pratique intégrée au protocole; si vous modifiez ses paramètres fondamentaux, il cesse d'avoir les propriétés de synchronisation pour lesquelles il a été conçu.

Si votre appareil est connecté sporadiquement, peut-être que le bon vieux RDATE vous servira le mieux. Il ne gère pas l'horloge, ni la moyenne des pairs, ni ne peut être protégé contre divers hacks subtils qu'un homme du milieu pourrait jouer si cela en valait la peine. Il obtient simplement une date de référence à partir d'un serveur distant et claque l'horloge locale avec un marteau. Mais, il le fait quand vous le souhaitez, et son comportement est déterministe.

La précision du RDATE est bien pire que celle du NTP, je ne lui ferais pas confiance mieux que ± 1 seconde, mais si vous n'êtes attaché que sporadiquement, un timing plus précis n'est pas pertinent; en effet, selon la relativité, il pourrait même ne pas avoir de sens.

msw
la source
0

Pour que le minpool/ maxpoolsoit pris en compte, vous devez ensuite l'ajouter par serveur dans votre ntp.conf.

Il n'est pas tout à fait recommandé de jouer avec le démon NTP (il a une méthode intégrée pour optimiser la fréquence) mais vous devrez ajouter ces options comme ceci:

server time.google.com iburst minpoll 12 maxppol 17
server ntp.ubuntu.com iburst minpoll 12 maxppol 17
server europe.pool.ntp.org iburst minpoll 12 maxppol 17

Ici, si vous définissez la fréquence minimale sur 2 ^ 12 secondes et la valeur maximale sur 2 ^ 17 secondes.

Par défaut, j'ai découvert que le NTP ferait une demande toutes les minutes environ. C'est beaucoup trop. Ici, j'ai réduit la fréquence d'une fois par heure à une fois par jour (grossièrement).

le hollandais volant
la source