Come personalizzo il tasso di polling NTP?


17

Sto installando Ubuntu su una macchina integrata che gira su una connessione cellulare, dove paghiamo per byte. Inoltre, la macchina non ha una batteria RTC, quindi parte da un tempo casuale ad ogni avvio.

Vorrei assicurarmi che il tempo venga sincronizzato quando la connessione cellulare sarà disponibile in modo che i messaggi di registro, ecc. Abbiano tempi reali, ma non voglio nemmeno pagare un braccio e una gamba per il traffico NTP.

Posso personalizzare la frequenza con cui NTP aggiorna l'ora? Attualmente sto usando openntpd, ma non sono sposato.

Internet non è necessariamente attivo all'avvio, quindi ntupdate e relativi all'avvio non funzioneranno. E la pianificazione tramite cron significa attendere l'avvio dell'attività pianificata, mentre voglio che un demone temporale ottenga una sincronizzazione temporale al più presto.

Risposte:


5

Alcune di queste risposte potrebbero vincere il contest offuscato della configurazione ntp.

Utilizzare l'implementazione di riferimento ntp e utilizzare iburst per impostare rapidamente l'ora all'avvio. Dopodiché puoi usare la direttiva minpoll per limitare la frequenza con cui ntpd interroga i server del tempo remoto. Questo ti permetterà di trarre vantaggio dalla disciplina dell'orologio di ntpd e mantenere bassa la larghezza di banda.

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 è una buona alternativa all'implementazione di riferimento ntp. Openntpd non lo è.


8

La mia esperienza è con ntp anziché openntpd.

Dovresti sapere che il protocollo NTP di solito inizia con l'invio di pacchetti ogni minuto (64 secondi), ma di solito si risolve inviando e ricevendo un pacchetto ogni 17 minuti per ogni server che hai nel tuo file /etc/ntp.conf. Interruzioni di rete o un orologio instabile nel dispositivo possono tuttavia aumentare questo. Ogni pacchetto ha un payload di circa 68 byte, quindi è probabilmente un po 'più di 100 byte, a tratta, per sondaggio.

Rdate e ntpdate al momento dell'installazione della rete sono buone idee per impostare l'ora. E se questo è tutto ciò che serve, dovrebbe funzionare bene per te.

Se è necessario mantenere il tempo sincronizzato per un tempo prolungato, tuttavia, il protocollo ntp è stato progettato per farlo. L'orologio nel tuo dispositivo funzionerà un po 'veloce o lento a seconda di quanto sia caldo o freddo, anche se probabilmente ha un orologio controllato a cristalli - e il cronometraggio in corso dovrebbe adattarsi a questo.

Ecco alcuni suggerimenti se è necessario un cronometraggio continuo e si desidera ridurre la larghezza di banda utilizzata. Si riferiscono ad elementi in ntp.conf.

Non usare l'iburst. (Ma ci vorrà più tempo per impostare l'ora inizialmente).

Aumenta il minpoll verso l'alto da 6 (2 ^ 6 secondi è 64 secondi). Ciò riduce il traffico all'avvio del protocollo dopo l'attivazione della rete.

Aumenta il numero massimo di giri da 10 (2 ^ 10 secondi è 1024 secondi o circa ogni 17 minuti. Puoi andare fino a 17 sondaggi ogni 36 ore circa. Non ho provato questo da solo.

Usa solo un numero minimo di server, se ne avessi uno che possa essere raggiunto in modo affidabile dai tuoi dispositivi integrati, sarebbe fantastico. Maggiore è il numero di server, più affidabile può essere il cronometraggio, ma il traffico aumenta, quindi è un compromesso.



3

Su un'installazione predefinita di Ubuntu, il demone NTP non viene eseguito. Invece, l'ora viene impostata ogni volta che un'interfaccia di rete viene richiamata /etc/network/if-up.d/ntpdatedall'hook.

Se stai cercando una sincronizzazione temporanea una tantum anziché una sincronizzazione costante, questo potrebbe essere sufficiente per te.

È possibile controllare a quali server viene richiesto di impostare l'ora tramite il /etc/ntp.conffile standard o tramite la NTPSERVERSvariabile in /etc/default/ntpdate.


2

Hai bisogno della sincronizzazione esatta e precisa fornita da ntp? Altrimenti, potresti essere in grado di cavartela usando rdateo ntpdateall'avvio e poi periodicamente tramite cron.


2

Probabilmente hai già letto la pagina man di openntpd.

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

Probabilmente hai già notato la mancanza di un'opzione di polling per il tempo.

Ho questi possibili hack da proporre:

  1. Non usare ntpd, basta chiamare ntpdate tramite cron.
  2. Utilizzare cron e / o gli script di connessione cellulare per attivare o disattivare le regole di iptables per eliminare o consentire il traffico della porta 123 quando si desidera consentirlo. Questo potrebbe essere semplice come

    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. Incorporare un ricevitore per radiosveglia nella macchina incorporata. Non ne so quasi nulla, ma prodotti come questo:

fammi pensare che non è difficile ricevere il segnale radio.


1
Se hai intenzione di aggiungere hardware perché raccomandare un orologio radio e non aggiungere un GPS con PPS?
dfc,

@dfc buon punto. OP, considera l'hardware GPS per avere tempo.
Jay _silly_evarlast_ Wren

1
Per $ 50 (certo GPS è un ottimo affare) e un po 'di saldatura ho un server stratum 1 nella camera da letto di riserva. Ho l'antenna GPS Sicuramente seduta in una finestra bloccata da un acero gigante e un'altra casa e funziona bene.
dfc,

@dfc puoi collegarti all'hardware e quale software usi con l'hardware?
Jay _silly_evarlast_ Wren,

1
@Jay_silly_everlast_Wren Software: implementazione riferimento ntp www.ntp.org Consiglio: sureelectronics.net/goods.php?id=99 Coppia di discussioni: satsignal.eu/ntp/Sure-GPS.htm and lists.ntp.org/pipermail/questions /2011-March/028854.html Ce ne sono molti di più. Non essere spaventato dalla saldatura. Era la mia prima volta a saldare ed era facile. La mailing list delle domande ntp è piena di persone che hanno usato la scheda sicura e ne sono molto soddisfatte.
dfc,

1

Se ricordo bene, l'intervallo di poll ntp può essere impostato su un massimo di 1024 secondi. Forse la soluzione più semplice sarebbe quella di eseguire ntpdate ad ogni avvio e successivamente ogni tanto da crontab.

Se il tuo orologio inizia con un tempo casuale ad ogni avvio, probabilmente non sarai in grado di eseguire ntpd in ogni caso e dovrai prima usare ntpdate. Ntpd rifiuta di sincronizzare l'ora se la differenza è troppo grande tra l'orologio e l'orologio del server.


+1 per le informazioni su ntp che si rifiutano di sincronizzare se la deriva è troppo grande
David Pfeffer,

ntpdate è deprecato a favore delle opzioni ntpdche gestiranno questo caso d'uso meglio di quanto cronpossa eecis.udel.edu/~mills/ntp/html/ntpdate.html
msw,

1

NTP, come TCP, ha alcune profonde teorie ed esperienze pratiche integrate nel protocollo; se si modificano i parametri fondamentali, smette di avere le proprietà di sincronizzazione per cui è stato progettato.

Se il tuo dispositivo è sporadicamente connesso, forse il buon vecchio RDATE ti servirà al meglio. Non gestisce la rotazione dell'orologio, né la media dei pari, né può essere protetto contro vari hack sottili che un uomo nel mezzo potrebbe giocare se valesse la pena. Riceve solo una data di riferimento da un server remoto e batte l'orologio locale con un martello. Ma lo fa quando lo desideri e il suo comportamento è deterministico.

L'accuratezza RDATE è di gran lunga peggiore di quella offerta da NTP, non mi fiderei di meglio di ± 1 secondo, ma se si è collegati solo sporadicamente, i tempi più accurati non sono rilevanti; anzi, secondo la relatività , potrebbe non essere significativo.


0

Per rendere il minpool/ maxpoolda prendere in considerazione, devi aggiungere quindi per server nel tuontp.conf .

Non è del tutto consigliabile scherzare con il deamon NTP (ha un mathod integrato per ottimizzare la frequenza) ma sarà necessario aggiungere queste opzioni in questo modo:

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

Qui, se imposta la frequenza minima su 2 ^ 12 secondi e la massima su 2 ^ 17 secondi.

Per impostazione predefinita, ho scoperto che l'NTP avrebbe fatto una richiesta ogni minuto o giù di lì. È troppo. Qui ho ridotto la frequenza da una volta all'ora a una volta al giorno (roughtly).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.