Name

ntpd – Network Time Protocol (NTP) daemon

Synopsis

ntpd ]

Descrizione

Il programma ntpd è un demone del sistema operativo che imposta e mantiene l’ora del giorno del sistema in sincronia con i server di tempo standard di Internet. È un’implementazione completa del Network Time Protocol (NTP) versione 4, ma mantiene anche la compatibilità con la versione 3, come definito da RFC-1305, e le versioni 1 e 2, come definito da RFC-1059 e RFC-1119, rispettivamente. ntpd esegue la maggior parte dei calcoli in aritmetica in virgola mobile a 64 bit e fa operazioni in virgola fissa a 64 bit relativamente goffe solo quando necessario per preservare la precisione finale, circa 232 picosecondi. Mentre l’ultima precisione non è raggiungibile con le normali workstation e reti di oggi, potrebbe essere richiesta con i futuri clock di CPU da gigahertz e LAN gigabit.

Come funziona Ntp

Il programma ntpd funziona scambiando messaggi con uno o più server configurati a intervalli di polling designati. Quando viene avviato, sia per la prima volta che per le volte successive, il programma richiede diversi scambi dalla maggior parte di questi server in modo che gli algoritmi di elaborazione e mitigazione del segnale possano accumulare e governare i dati e impostare l’orologio. Per proteggere la rete dai burst, l’intervallo di polling iniziale per ogni server è ritardato di un intervallo randomizzato su alcuni secondi. All’intervallo di polling iniziale predefinito di 64s, possono passare diversi minuti prima che l’orologio sia impostato. Il ritardo iniziale per impostare l’orologio può essere ridotto usando la parola chiave iburst con il comando di configurazione del server, come descritto nella pagina Opzioni di configurazione.

La maggior parte dei sistemi operativi e dell’hardware di oggi incorporano un chip dell’ora legale (TOY) per mantenere il tempo durante i periodi in cui l’alimentazione è spenta. Quando la macchina viene avviata, il chip viene usato per inizializzare l’ora del sistema operativo. Dopo che la macchina si è sincronizzata con un server NTP, il sistema operativo corregge il chip di volta in volta. Nel caso in cui non ci sia un chip TOY o per qualche ragione il suo tempo sia più di 1000s dall’ora del server, ntpd assume che qualcosa debba essere terribilmente sbagliato e l’unica azione affidabile è che l’operatore intervenga e regoli l’orologio a mano. Questo causa l’uscita di ntpd con un messaggio di panico nel log di sistema. L’opzione -g annulla questo controllo e l’orologio sarà impostato sull’ora del server indipendentemente dall’ora del chip. Tuttavia, e per proteggersi da rotture dell’hardware, come quando la batteria CMOS si guasta o il contatore dell’orologio diventa difettoso, una volta che l’orologio è stato impostato, un errore maggiore di 1000s causerà comunque l’uscita di ntpd.

In condizioni normali, ntpd regola l’orologio in piccoli passi in modo che la scala dei tempi sia effettivamente continua e senza discontinuità. In condizioni di estrema congestione della rete, il jitter del ritardo di roundtrip può superare i tre secondi e la distanza di sincronizzazione, che è uguale alla metà del ritardo di roundtrip più i termini di budget degli errori, può diventare molto grande. Gli algoritmi ntpd scartano gli offset del campione che superano i 128 ms, a meno che l’intervallo durante il quale nessun offset del campione è inferiore a 128 ms superi i 900s. Il primo campione dopo questo, non importa quale sia l’offset, porta l’orologio al tempo indicato. In pratica questo riduce il tasso di falsi allarmi in cui l’orologio viene fatto scattare per errore a un’incidenza molto bassa.

Come risultato di questo comportamento, una volta che l’orologio è stato impostato, molto raramente si allontana più di 128 ms, anche in casi estremi di congestione del percorso di rete e jitter. A volte, in particolare quando ntpd viene avviato per la prima volta, l’errore potrebbe superare i 128 ms. Questo può occasionalmente causare che l’orologio sia impostato all’indietro se l’ora dell’orologio locale è più di 128 s nel futuro rispetto al server. In alcune applicazioni, questo comportamento può essere inaccettabile. Se l’opzione -x è inclusa nella linea di comando, l’orologio non sarà mai scalato e saranno usate solo le correzioni di slittamento.

I problemi dovrebbero essere esplorati attentamente prima di decidere di usare l’opzione -x. Il massimo slew rate possibile è limitato a 500 parti per milione (PPM) come conseguenza dei principi di correttezza su cui si basano il protocollo NTP e la progettazione dell’algoritmo. Di conseguenza, l’orologio locale può impiegare molto tempo per convergere verso un offset accettabile, circa 2000 s per ogni secondo in cui l’orologio è fuori dall’intervallo accettabile. Durante questo intervallo l’orologio locale non sarà coerente con nessun altro orologio di rete e il sistema non può essere usato per applicazioni distribuite che richiedono un tempo di rete correttamente sincronizzato.

Nonostante le precauzioni di cui sopra, a volte quando sono presenti grandi errori di frequenza gli offset di tempo risultanti si allontanano dall’intervallo di 128 ms ed è necessaria una correzione di passo o di slew time. Se dopo tale correzione l’errore di frequenza è così grande che il primo campione è fuori dall’intervallo accettabile, ntpd entra nello stesso stato di quando il file ntp.drift non è presente. L’intento di questo comportamento è di correggere rapidamente la frequenza e ripristinare il funzionamento nella modalità di tracciamento normale. Nei casi più estremi (mi viene in mente time.ien.it), ci possono essere occasionali correzioni di passo/slew e successive correzioni di frequenza. Aiuta in questi casi usare la parola chiave burst quando si configura il server.

Disciplina della frequenza

Il comportamento di ntpd all’avvio dipende dall’esistenza o meno del file di frequenza, solitamente ntp.drift. Questo file contiene l’ultima stima dell’errore di clockfrequency. Quando ntpd viene avviato e il file non esiste, ntpd entra in una modalità speciale progettata per adattarsi rapidamente al particolare errore di tempo e frequenza dell’oscillatore di clock del sistema. Questo richiede circa 15 minuti, dopo di che il tempo e la frequenza sono impostati ai valori nominali e ntpd entra in modalità normale, dove il tempo e la frequenza sono continuamente monitorati rispetto al server. Dopo un’ora il file di frequenza viene creato e l’attuale offset di frequenza vi viene scritto. Quando ntpd viene avviato e il file esiste, la frequenza ntpd viene inizializzata dal file ed entra immediatamente in modalità normale. Dopo di che l’offset di frequenza corrente viene scritto nel file a intervalli di un’ora.

Modalità operative

ntpd può operare in una qualsiasi delle diverse modalità, tra cui attiva/passiva simmetrica, client/server broadcast/multicast e manycast, come descritto nella pagina Gestione delle associazioni. Normalmente opera in modo continuo monitorando i piccoli cambiamenti di frequenza e regolando l’orologio per l’ultima precisione. Tuttavia, può funzionare in una modalità una tantum in cui l’ora è impostata da un server esterno e la frequenza è impostata da un file di frequenza precedentemente registrato. Un client broadcast/multicast o manycast può scoprire server remoti, calcolare fattori di correzione del ritardo di propagazione server-client e configurarsi automaticamente. Questo rende possibile distribuire una flotta di stazioni di lavoro senza specificare dettagli di configurazione specifici per l’ambiente locale.

Per impostazione predefinita, ntpd funziona in modalità continua dove ognuno dei possibili diversi server esterni è interrogato a intervalli determinati da una intricata macchina a stati. La macchina di stato misura l’incidentale jitter del ritardo del roundtrip e l’oscillazione della frequenza dell’oscillatore e determina il miglior intervallo di polling usando un algoritmo euristico. Normalmente, e nella maggior parte degli ambienti operativi, la macchina di stato inizierà con intervalli di 64s e alla fine aumenterà a passi di 1024s. Una piccola quantità di variazione casuale è introdotta per evitare il bunching ai server. Inoltre, se un server diventa irraggiungibile per qualche tempo, l’intervallo di polling viene aumentato a passi di 1024s per ridurre il sovraccarico della rete.

In alcuni casi potrebbe non essere pratico per ntpd funzionare continuamente. Una soluzione comune è stata quella di eseguire il programma ntpdate da un cronjob ad orari prestabiliti. Tuttavia, questo programma non ha l’elaborazione dei segnali, il controllo degli errori e gli algoritmi di mitigazione di ntpd L’opzione-q è intesa per questo scopo. Impostando questa opzione, ntpd uscirà subito dopo aver impostato l’orologio per la prima volta con i server configurati. La procedura per impostare inizialmente l’orologio è la stessa della modalità continua; la maggior parte delle applicazioni probabilmente vorrà specificare la parola chiaveiburst con il comando di configurazione del server. Con questa parola chiave viene scambiata una raffica di messaggi per pulire i dati e l’orologio viene impostato in circa 10 s. Se non si sente nulla dopo un paio di minuti, il demone va in timeout ed esce. Dopo un adeguato periodo di lutto, il programma ntpdate può essere ritirato.

Quando è disponibile il supporto del kernel per regolare la frequenza di clock, che è il caso di Solaris, Tru64, Linux e FreeBSD, è disponibile un’utile funzione per regolare la frequenza di clock. In primo luogo, ntpd viene eseguito in modalità continua con i server selezionati al fine di misurare e registrare l’offset della frequenza intrinseca del clock nel file di frequenza. Ci possono volere alcune ore perché la frequenza e l’offset si stabilizzino. Poi ntpd viene fermato ed eseguito in modalità solitaria come richiesto. Ad ogni avvio, la frequenza viene letta dal file e inizializza la frequenza del kernel.

Controllo dell’intervallo di poll

Questa versione di NTP include un’intricata macchina di stato per ridurre il carico della rete mantenendo una qualità di sincronizzazione coerente con il jitter e il wander osservati. Ci sono un certo numero di modi per adattare l’operazione al fine di migliorare la precisione riducendo l’intervallo o per ridurre l’overhead della rete aumentandolo. Tuttavia, si consiglia all’utente di considerare attentamente le conseguenze di cambiare l’intervallo di regolazione del polling dal minimo predefinito di 64 s al massimo predefinito di 1.024 s. Il minimo predefinito può essere modificato con il comando tinker minpoll a un valore non inferiore a 16 s. Questo valore viene utilizzato per tutte le associazioni configurate, a meno che non venga annullato dall’opzione minpoll sul comando di configurazione. Si noti che la maggior parte dei driver dei dispositivi non funzionerà correttamente se l’intervallo di polling è inferiore a 64 s e che anche le associazioni server broadcast e client manycast useranno il valore predefinito, a meno che non venga sovrascritto.

In alcuni casi che coinvolgono servizi dial up o a pagamento, può essere utile aumentare l’intervallo minimo a poche decine di minuti e quello massimo a un giorno o giù di lì. In condizioni di funzionamento normali, una volta che il ciclo di disciplina dell’orologio si è stabilizzato, l’intervallo sarà aumentato a passi dal minimo al massimo. Tuttavia, questo presuppone che l’errore intrinseco della frequenza di clock sia abbastanza piccolo da essere corretto dal loop di disciplina. L’intervallo di cattura del loop è di 500 PPMad un intervallo di 64s che diminuisce di un fattore di due per ogni raddoppio dell’intervallo. Ad un minimo di 1.024 s, per esempio, l’intervallo di cattura è solo 31 PPM. Se l’errore intrinseco è maggiore di questo, il file di deriva ntp.drift dovrà essere appositamente adattato per ridurre l’errore residuo al di sotto di questo limite. Una volta fatto questo, il file di deriva viene automaticamente aggiornato una volta all’ora ed è disponibile per inizializzare la frequenza ai successivi riavvii del demone.

il filtro Huff-n’-puff

In scenari in cui una considerevole quantità di dati deve essere scaricata o caricata su modem telefonici, la qualità del timekeeping può essere seriamente degradata. Questo accade perché i ritardi differenziali sulle due direzioni di trasmissione possono essere abbastanza grandi. In molti casi gli errori di tempo apparenti sono così grandi da superare la soglia del passo e una correzione del passo può verificarsi durante e dopo il trasferimento dei dati è in corso.

Il filtro huff-n’-puff è progettato per correggere l’offset di tempo apparente in questi casi. Dipende dalla conoscenza del ritardo di propagazione quando non c’è altro traffico. In scenari comuni questo si verifica durante le ore non lavorative. Il filtro mantiene un registro a scorrimento che ricorda il ritardo minimo nell’intervallo più recente misurato di solito in ore. In condizioni di forte ritardo, il filtro corregge l’offset apparente usando il segno dell’offset e la differenza tra il ritardo apparente e il ritardo minimo. Il nome del filtro riflette la correzione negativa (huff) e positiva (puff), che dipende dal segno dell’offset.

Il filtro è attivato dal comando tinker e dalla parola chiave huffpuff, come descritto nella pagina Opzioni Varie.

Note

Se il supporto NetInfo è integrato in ntpd, allora ntpd tenterà di leggere la sua configurazione da NetInfo se il file predefinito ntp.conf non può essere letto e nessun file è specificato dall’opzione -c.

In contesti in cui è previsto un nome host, un qualificatore -4 che precede il nome host forza la risoluzione DNS allo spazio dei nomi IPv4, mentre un qualificatore -6 forza la risoluzione DNS allo spazio dei nomi IPv6.

Varie variabili interne di ntpd possono essere visualizzate e le opzioni di configurazione modificate mentre ntpd è in esecuzione usando i programmi di utilità ntpq entpdc.

Quando ntpd si avvia guarda il valore di umask, e se è zero ntpd imposta umask a 022

A meno che non venga usata l’opzione -n, -d o -D, ntpd cambia la directory di lavoro corrente nella directory root, quindi qualsiasi opzione o comando che specifichi un percorso deve usare un percorso assoluto o un percorso relativo alla root.

Opzioni della linea di comando

-4 Forza la risoluzione DNS dei nomi degli host allo spazio dei nomi IPv4. -6 Forzare la risoluzione DNS dei nomi degli host allo spazio dei nomi IPv6. -a Richiedi l’autenticazione crittografica per il client broadcast, il client multicast e le associazioni passive simmetriche. Questo è il valore predefinito. -A Non richiedere l’autenticazione crittografica per le associazioni client broadcast, client multicast e passive simmetriche. Questa non è quasi mai una buona idea. -b Abilita il client a sincronizzarsi con i server broadcast. -c conffile Specifica il nome e il percorso del file di configurazione, di default /etc/ntp.conf -d Specifica la modalità di debug. Questa opzione può essere usata più di una volta, e ogni volta indica un maggiore dettaglio di visualizzazione. -D level Specifica direttamente il livello di debug. -f driftfile Specifica il nome e il percorso del file di frequenza. Questa è la stessa operazione del comando di configurazione driftfile driftfile. -g Normalmente, ntpd esce con un messaggio al log di sistema se l’offset supera la soglia di panico, che è 1000 s per impostazione predefinita. Questa opzione permette di impostare iltime a qualsiasi valore senza restrizioni; tuttavia, questo può accadere solo una volta. Se la soglia viene superata in seguito, ntpd uscirà con un messaggio nel log di sistema. Questa opzione può essere usata con le opzioni -q e -x. Vedere il comando tinker per altre opzioni. -i jaildir Chroot il server nella directory jaildir Questa opzione implica anche che il server tenti di rinunciare ai privilegi di root all’avvio (altrimenti, chroot dà poca sicurezza aggiuntiva), ed è disponibile solo se il sistema operativo supporta l’esecuzione del server senza i privilegi di root completi. Potrebbe essere necessario specificare anche l’opzione -u. -I iface Ascolta sull’interfaccia. Questa opzione può apparire un numero illimitato di volte. -k keyfile Specifica il nome e il percorso del file della chiave simmetrica. Questa è la stessa operazione del comando di configurazione keyfile keys. -l logfile Specifica il nome e il percorso del file di log. L’impostazione predefinita è il file di log di sistema. Questa è la stessa operazione del comando logfile logfileconfiguration. -L Non ascoltare gli IP virtuali. Il default è ascoltare. -m Blocca la memoria. -n Non fare il fork. -N Nella misura consentita dal sistema operativo, eseguire ntpd alla massima priorità. -p pidfile Specifica il nome e il percorso del file usato per registrare l’ID del processo ntpd. Questa è la stessa operazione del comando pidfile pidfileconfiguration. -P priority Nella misura consentita dal sistema operativo, eseguire ntpd alla priorità specificata. -q Esci da ntpd subito dopo la prima impostazione dell’orologio. Questo comportamento imita quello del programma ntpdate, che deve essere ritirato. Le opzioni -g e -x possono essere usate con questa opzione. Nota: la disciplina temporale del kernel è disabilitata con questa opzione. -r broadcastdelay Specifica il ritardo di propagazione predefinito dal server broadcast/multicast a questo client. Questo è necessario solo se il ritardo non può essere calcolato automaticamente dal protocollo. -Specifica il percorso della directory per i file creati dalla struttura delle statistiche. Questa è la stessa operazione del comando di configurazione statsdir statsdir. -t key Aggiungere un numero di chiave alla lista delle chiavi fidate. Questa opzione può essere usata più di una volta. -u user Specifica un utente, e opzionalmente un gruppo, a cui passare. Questa opzione è disponibile solo se il sistema operativo supporta l’esecuzione del server senza privilegi completi di root; attualmente, questa opzione è supportata sotto NetBSD (configura con –enable-clockctl) e Linux (configura con –enable-linuxcaps). -U interface update interval Numero di secondi da attendere tra le scansioni dell’elenco delle interfacce per raccogliere nuove interfacce di rete e cancellarle. Impostare a 0 per disabilitare l’aggiornamento dinamico dell’elenco delle interfacce; il valore predefinito è una scansione ogni 5 minuti. -v variabile-V variabile Aggiungi una variabile di sistema elencata di default. -x Normalmente, il tempo è slittato se l’offset è inferiore alla soglia di passo, che è 128 ms per impostazione predefinita, e a gradini se superiore alla soglia. Questa opzione imposta la soglia a 600 s, che è ben all’interno della finestra di precisione per impostare l’orologio manualmente. Nota: poiché lo slew rate dei tipici kernel Unix è limitato a 0.5 ms/s, ogni secondo di regolazione richiede un intervallo di ammortamento di 2000 s. Così, una regolazione di 600 s richiederà quasi 14 giorni per essere completata.Questa opzione può essere usata con le opzioni -g e -q. Vedere il comando tinker per altre opzioni. Nota: la disciplina temporale del kernel è disabilitata con questa opzione.

il file di configurazione

Ordinariamente, ntpd legge il file di configurazione ntp.conf all’avvio per determinare le fonti di sincronizzazione e le modalità operative.È anche possibile specificare una configurazione funzionante, sebbene limitata, interamente sulla linea di comando, ovviando alla necessità di un file di configurazione. Questo può essere particolarmente utile quando l’host locale deve essere configurato come un client broadcast/multicast, con tutti i peer determinati dall’ascolto dei broadcast al momento dell’esecuzione.

Di solito, il file di configurazione è installato nella directory /etc, ma potrebbe essere installato altrove (vedi l’opzione -c conffile della linea di comando). Il formato del file è simile ad altri file di configurazione Unix – i commenti iniziano con un carattere # e si estendono fino alla fine della linea; le linee vuote vengono ignorate.

I comandi di configurazione consistono in una parola chiave iniziale seguita da una lista di argomenti, alcuni dei quali possono essere opzionali, separati da spazi bianchi. I comandi non possono essere continuati su più righe. Gli argomenti possono essere nomi di host, indirizzi di host scritti in forma numerica, a quadretti punteggiati, numeri interi, numeri in virgola mobile (quando si specificano tempi in secondi) e stringhe di testo. Gli argomenti opzionali sono delimitati da nelle seguenti descrizioni, mentre gli alternativi sono separati da | La notazione indica una ripetizione opzionale e indefinita dell’ultimo elemento prima del

Codici di uscita

Un codice di uscita non nullo indica un errore. Qualsiasi messaggio di errore viene registrato nel log di sistema per impostazione predefinita.

Il codice di uscita è 0 solo quando ntpd viene terminato da un segnale, o quando viene usata l’opzione -q e ntpd imposta con successo l’orologio di sistema.

Vedi anche

ntp.conf(5), ntpq(8), ntpdc(8)

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.