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?
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?
Risposte:
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 ntpd
demoni o servizi di sistema) lo fanno, e altre (come il compagno di ntpdntpdate
che 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.
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.
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.
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.