NTP - In che modo i server NTP sono così precisi


52

Ho notato che sui miei server e su altre macchine l'orologio si sposta sempre, quindi deve sincronizzarsi per rimanere preciso.

In che modo gli orologi del server NTP non vanno alla deriva e rimangono sempre corretti?


3
Io, per esempio, sarei particolarmente interessato a un riassunto su come i protocolli NTP consentono a due computer di sincronizzare il loro tempo su una rete inaffidabile ...
Xavier Nodet

@XavierNodet Anche se sono sicuro che lo faresti, non è questa la domanda. Ti suggerirei di porre una tua domanda (supponendo che non sia già stata posta; assicurati di cercare prima). Questa domanda si pone come gli orologi dei server NTP non siano in grado di andare alla deriva, mentre gli orologi hardware contemporanei vanno alla deriva.
un CVn

@XavierNodet Lo stesso qui. Mi piace imparare come e perché le cose funzionano nel modo in cui funzionano! :)
Jason

Risposte:


58

I server NTP si basano su orologi ad alta precisione per il cronometraggio di precisione. Una fonte di tempo comune per i server NTP centrali sono gli orologi atomici o i ricevitori GPS (ricorda che i satelliti GPS hanno a bordo orologi atomici). Questi orologi sono definiti precisi in quanto forniscono un riferimento temporale esatto. Non c'è nulla di magico nel GPS o negli orologi atomici che ti fanno dire esattamente che ore sono; a causa del modo in cui funzionano gli orologi atomici, sono semplicemente molto bravi, dopo aver detto una volta che ore sono, continuano a dire l'ora esatta (poiché il secondo è definito in termini di effetti atomici ). In effetti, vale la pena notare che il tempo GPS è distinto dall'ora UTC che siamo più abituati a vedere. Questi orologi atomici a loro volta sono sincronizzatiTempo atomico internazionale o TAI per dire non solo con precisione il passare del tempo ma anche il tempo.

Una volta che hai un tempo esatto su un sistema connesso a una rete come Internet, è una questione di ingegneria del protocollo che consente il trasferimento di tempi precisi tra host su una rete inaffidabile. A questo proposito un server NTP stratum 2 (o più lontano dalla sorgente di tempo reale) non è diverso dalla sincronizzazione del sistema desktop con un set di server NTP.

Quando hai un paio di volte precise (ottenute dai server NTP o altrove) e conosci la velocità di avanzamento dell'orologio locale (che è facile da determinare), puoi calcolare la velocità di deriva dell'orologio locale rispetto a "creduto accurato "passaggio del tempo. Una volta bloccato, questo valore può quindi essere utilizzato per regolare continuamente l'orologio locale in modo da riportare i valori molto vicini al passaggio preciso del tempo, anche se l'orologio locale in tempo reale stesso è altamente impreciso; fintanto che l'orologio locale non è altamente irregolare, ciò dovrebbe consentire di mantenere l'ora esatta per qualche tempo anche se l'origine dell'upstream diventa non disponibile per qualsiasi motivo. Alcune implementazioni client NTP (probabilmente la maggior parte delle implementazioni di ntpddemoni o servizi di sistema) lo fanno, e altre (come il compagno di ntpdntpdateche semplicemente imposta l'orologio una volta) no. Questo è comunemente indicato come un file di deriva perché memorizza in modo persistente una misura della deriva dell'orologio, ma a rigor di termini non deve essere archiviato come file specifico sul disco.

In NTP, lo strato 0 è per definizione una fonte temporale precisa. Lo strato 1 è un sistema che utilizza una sorgente temporale strato 0 come sorgente temporale (ed è quindi leggermente meno preciso della sorgente temporale strato 0). Lo strato 2 è di nuovo leggermente meno preciso dello strato 1 perché sta sincronizzando il suo tempo con la sorgente dello strato 1. E così via. In pratica, questa perdita di precisione è così piccola che è del tutto trascurabile in tutti i casi, tranne il più estremo.


1
Rispettivamente "alto strato" non significa un basso numero di strati che dovrebbe essere rimosso dalla risposta. S2 è superiore a S1. Per prove, guarda la spiegazione del Prof. Mills (alias Prof NTP) "La sottorete NTP opera con una gerarchia di livelli, in cui a ogni livello è assegnato un numero chiamato strato. I server Stratum 1 (primario) al livello più basso sono sincronizzati direttamente ai servizi orari nazionali ... I server Stratum 2 (secondari) al livello superiore successivo sono sincronizzati con i server Strum 1 e così via. " eecis.udel.edu/~mills/ntp/html/warp.html
dfc

2
È meglio, ma non credo che lo strato 0 sia "per definizione una fonte di tempo precisa". Lo strato 0 significa semplicemente che è un orologio di riferimento di qualche tipo. Solo perché è un orologio S0 non significa che funzioni correttamente. Il livello dello strato è circa la distanza dagli orologi di riferimento e la precisione non è garantita.
dfc,

@dfc Apprezzo l'input in quanto mi consente di migliorare ulteriormente la risposta. Detto questo, non sono d'accordo con la tua affermazione che S0 non significa che sia accurata. Forse è così in un senso perfettamente rigoroso, ma se il tempo dato da un orologio S0 è impreciso, quel clock è inutile in pratica come sorgente S0. Ergo, gli orologi S0 sono precisi. O in altri termini, se si dispone di un insieme isolato di host, uno dei quali è collegato a una sorgente temporale S0 e tutti gli altri si sincronizzano con quello, il tempo fornito dalla sorgente S0 è l'ora corretta per quanto riguarda tali host. Allora non devi preoccuparti di TAI.
un CVn

10

Nel cronometraggio della rete la specifica che indica come un server ottiene la sua origine temporale è chiamata Livello di Strato. Più basso è il livello, migliore è il mantenimento del tempo di quel server.

I dispositivi di livello 0 non sono collegati direttamente alla rete. Sono il dispositivo di cronometraggio vero e proprio e devono essere collegati a un computer per ricavare l'ora effettiva. Questo computer diventa quindi un server NTP di livello 1 Stratum.

Un computer che si collega a un livello Stratum 1 può anche diventare un server temporale, ma sarebbe quindi un livello stratum 2. Man mano che i computer si collegano a time server, più basso è il livello dello strato, più accurato può essere il tempo.

I dispositivi di livello 0 includono gli orologi atomici che prendono parte al TAI (tempo atomico internazionale)o sincronizzato ad esso, e ricevitori del segnale orario inviato da tale orologio. Più comunemente si tratta di ricevitori di cronometraggio GPS con un'interfaccia appropriata che include il segnale GPS PPS. Il segnale PPS, quando il GPS ha un buon blocco su diversi satelliti, invia un impulso al secondo e il bordo anteriore di quell'impulso si trova entro nanosecondi dall'inizio effettivo di quel secondo. A seconda delle specifiche del ricevitore GPS, il segnale PPS potrebbe essere più o meno accurato. Questo perché ogni satellite GPS ha un orologio atomico. Una volta che il ricevitore GPS ha trovato la propria posizione e la posizione dei satelliti GPS che sta ascoltando, può correggere la propagazione RF e darti il ​​tempo quasi preciso di avere un orologio atomico proprio sul ricevitore GPS.

Quindi i server di livello 1 Stratum si connettono agli orologi atomici o ai ricevitori GPS e i server NTP si collegano a loro. Anche la connessione a un server di livello 2 o 3 strato con frequenti regolazioni fornirà al tuo computer una precisione di temporizzazione misurata in nanosecondi. Ma se hai bisogno di un tempismo migliore, connettiti a un server di livello uno strato o acquista un ricevitore GPS di cronometraggio appropriato e diventa tu stesso una fonte di livello uno strato.


4
Ci sono molte, molte persone che trasformano i computer Raspberry PI in server NTP Stratum 1 con l'aggiunta di ricevitori GPS economici. Puoi avere un server Stratum livello 1 completo sulla tua rete per meno di $ 80: google.com/search?q=raspberry+pi+ntp+gps+pps
Adam Davis,

2
Quindi in teoria uno smartphone con un ricevitore GPS (praticamente tutti ora) potrebbe essere un dispositivo stratum 0/1?
Bob,

1
Se il telefono utilizzava l'uscita pps del ricevitore GPS, sì. Si noti che anche i telefoni CDMA devono utilizzare un tempismo preciso, quindi il chipset CDMA potrebbe anche essere una sorgente di livello 0 per il processore del telefono. Un modulo GPS OEM e Raspberry Pi sarebbero comunque più economici.
Adam Davis,

2
Un Raspberry Pi non è un ottimo server NTP, poiché utilizza un adattatore di rete un po 'instabile e di bassa qualità (il chip LAN9512).
duskwuff,

1
@duskwuff Sì, ma è meglio di molti server Stratum livello 2 su Internet e con le impostazioni NTP configurate correttamente sia sul server che sul client è possibile superare il jitter e l'offset introdotti dal chip LAN basato su USB di bassa qualità. Per il costo, è difficile da battere, ma spendi un po 'di più e puoi risolvere questo piccolo problema.
Adam Davis,

3

Tutti gli orologi si spostano in una certa misura, dipende dalla fonte del segnale di temporizzazione e dalla sua capacità di tracciamento. In un PC, questo è l'HPET in questi giorni, ma il PC può perdere la traccia di quante zecche sono passate se sovraccaricate.

Anche i server NTP con cui parla la tua macchina stanno probabilmente perdendo tempo, ma tornano indietro a una fonte migliore.

In definitiva, le fonti migliori sono orologi altamente precisi come gli orologi atomici. Puoi pensare a NTP come a una rete di macchine, ognuna avrà una serie di fonti sulle quali fa affidamento per tempo e inclina il proprio tempo a ciò che è considerato più accurato.

Questo è governato da una fonte che dichiara il suo strato. Un orologio atomico o GPS è lo strato 0 e l'autorità su quale sia l'ora. Ciascuno strato da quello è il prossimo strato - strato 1, e controllerà un numero di fonti strato 0 insieme a pari allo stesso livello, al fine di controllare la sanità mentale delle fonti temporali.

Probabilmente stai parlando con una sorgente temporale strato 2 o 3.


1

Ciò che hanno scritto gli altri è vero: un server Stratum 1 ottiene il suo tempo da un dispositivo Stratum 0. Non so in quali intervalli di tempo accade, ma penso che siano abbastanza precisi lì.

Un server Stratum n con n> 1 riceve l'ora tramite NTP da un server Stratum n-1. Ciò significa che si sincronizza ad esso a intervalli regolari. All'avvio del servizio NTP, la sincronizzazione avviene a intervalli piuttosto brevi e, con il passare del tempo, gli intervalli iniziano ad aumentare. Alla fine, l'intervallo è di 1024 secondi, circa 17 minuti.

Ciò che non è stato affrontato è la domanda che cosa succede tra quel momento? Bene, esiste una struttura chiamata file di drift . Aiuta NTP a monitorare qualsiasi deriva tra l'orologio locale e l'orologio di riferimento. La frequenza dell'orologio locale viene quindi regolata in base alla deriva rilevata, in modo che il tempo sia accurato anche tra i sondaggi del server.

Altre implementazioni NTP potrebbero utilizzare altre funzionalità, ma una cosa è comune: la necessità e la capacità di regolare la frequenza dell'orologio.


Direi tuttavia che il file drift è un dettaglio dell'implementazione di una particolare implementazione software e non correlato al modo in cui l'orologio hardware del server NTP può essere così accurato.
un CVn
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.