Oltre a tcp/ip, ci sono molti modi per sincronizzare l'ora. Alcuni di essi richiedono solo un telefono normale, mentre altri richiedono attrezzature elettroniche costose, rare e sensibili. L'ampia infrastruttura dei sistemi di sincronizzazione dell'ora comprende osservatori, istituti governativi, stazioni radio, gruppi di satelliti e molto altro.
Oggi parlerò di come funziona la sincronizzazione dell'ora senza internet e di come realizzare un server NTP "satellitare" fai-da-te.
Radiodiffusione in onde corte
Negli Stati Uniti, il NIST trasmette l'ora esatta e la frequenza su onde radio da 2.5, 5, 10, 15 e 20 MHz dalla stazione WWVH a Fort Collins, Colorado, e sulle frequenze di 2.5, 5, 10 e 15 MHz dalla stazione WWVH a Kauai, Hawaii. Il codice temporale viene trasmesso ogni 60 secondi a una velocità di 1 b/s, utilizzando la modulazione di ampiezza a impulsi su una portante di 100 Hz.
Il Consiglio Nazionale di Ricerca (NRC) del Canada diffonde informazioni temporali e di frequenza su 3.33, 7.85 e 14.67 MHz dalla stazione CHU a Ottawa, Ontario.

Formato di trasmissione WWVH
La diffusione del segnale dalle stazioni in onde corte avviene solitamente tramite riflessione dagli strati superiori dell'ionosfera. I segnali possono essere ricevuti a lunghe distanze, tuttavia la precisione temporale è dell'ordine di un millisecondo.
Lo standard attuale NTPv4 include driver audio per WWV, WWVH e CHU.
Radiodiffusione in onde lunghe
Il NIST trasmette anche l'ora esatta e la frequenza su onde radio lunghe a 60 kHz da Boulder, Colorado. Ci sono altre stazioni che trasmettono segnali di ora esatta su onde lunghe.
Call sign e posizione
Frequenza (kHz)
Potenza (kW)
WWVB Fort Collins, Colorado, USA
60
50
DCF77 Mainflingen, Germania
77.5
30
MSF Rugby, Regno Unito
60>
50
HBG Prangins, Svizzera
75
20
JJY Fukushima, Giappone
40
50
JJY Saga, Giappone
60
50
Stazioni di Basso Frequenza del Tempo Standard
Il codice temporale viene trasmesso attraverso un intervallo di 60 secondi a una velocità di 1 b/s, proprio come nelle stazioni di onde corte. I formati di trasmissione dei dati sono simili per entrambi gli standard. La diffusione del segnale avviene attraverso gli strati inferiori dell'ionosfera, che sono relativamente stabili e presentano fluttuazioni giornaliere di altezza prevedibili. Grazie a questa prevedibilità dell'ambiente fisico, la precisione aumenta fino a 50 μs.

Formato di trasmissione WWVB
Satellite operativo geostazionario per il monitoraggio ambientale
Negli Stati Uniti, il NIST trasmette anche dati sull'ora esatta e sulla frequenza a circa 468 MHz da satelliti operativi geostazionari per l'ambiente (GOES). Il codice temporale è alternato a messaggi utilizzati per interrogare sensori remoti. Esso consiste in 60 mezzi byte BCD, trasmessi a intervalli di 30 secondi. Le informazioni del codice temporale sono simili a quelle dei servizi terrestri.
Sistemi di posizionamento globale
Il Dipartimento della Difesa degli Stati Uniti utilizza il GPS per una navigazione precisa su terra, mare e aria. Questo sistema fornisce una copertura globale 24 ore su 24 grazie a una costellazione di satelliti su orbite di 12 ore, inclinate di 55°.
Il primo lotto di 24 satelliti è stato ampliato a 31 satelliti in una configurazione non omogenea, in modo che almeno 6 satelliti siano sempre in linea di vista, mentre 8 o più satelliti sono visibili nella maggior parte del mondo.
Servizi simili al GPS sono gestiti o pianificati da altri paesi. Il sistema GLONASS russo è operativo già da un decennio, considerando il 2 settembre 2010, quando il numero totale di satelliti è stato portato a 26 — la costellazione è stata completamente dispiegata per una copertura totale della Terra.

Satelliti GPS attorno al pianeta.
Il sistema di navigazione satellitare dell'Unione Europea si chiama 'Galileo'. Si prevedeva che 'Galileo' iniziasse a funzionare nel 2014-2016, quando sarebbero stati messi in orbita tutti e 30 i satelliti pianificati. Tuttavia, nel 2018, la costellazione di 'Galileo' non aveva ancora raggiunto il numero necessario di apparati.
C'è anche il cinese «Bèidōu», che in traduzione significa «balena». Il gruppo, composto da 16 satelliti, è stato messo in servizio commerciale il 27 dicembre 2012 come sistema regionale di posizionamento. Si prevede che il sistema raggiunga la piena operatività entro il 2020. Proprio oggi, su Habr è stata pubblicata , la notizia del lancio riuscito di un satellite di questo sistema.
Matematica per la determinazione delle coordinate tramite GNSS
Come fa il navigatore GPS/Glonass sul tuo smartphone a determinare la posizione con tale precisione utilizzando il sistema di navigazione radio (GNSS)? Per comprendere il principio dei calcoli è necessario rivedere la stereometria e l'algebra degli ultimi anni della scuola secondaria o della scuola fisico-matematica.
Ogni satellite comunica al ricevitore l'ora esatta. Sul satellite sono installati orologi atomici e quindi ci si può fidare di essi. Conoscendo la velocità della luce, non è difficile determinare il raggio della sfera sulla cui superficie si trova il satellite. Questa stessa sfera, toccando la Terra, forma un cerchio in cui si trova il ricevitore GPS/Glonass.
Quando il segnale arriva da due satelliti, si ha già l'intersezione tra la Terra e le due sfere, il che fornisce solo due punti sul cerchio. La sfera del terzo satellite dovrebbe idealmente intersecarsi in uno di questi due punti, definendo definitivamente le coordinate del ricevitore.
In linea di principio, anche con due satelliti, attraverso indizi indiretti è possibile capire quale delle due posizioni è più vicina alla verità e gli algoritmi moderni del software di navigazione possono affrontare tale compito. Perché allora abbiamo bisogno di un quarto satellite?

Determinazione della posizione tramite una costellazione di satelliti.
Non è difficile notare che in questo quadro idealizzato ci sono molte sfumature che influenzano la precisione dei calcoli. Il tempo sul ricevitore è senza dubbio la fonte più evidente di errori. Affinché tutto funzioni come dovrebbe, l'ora del ricevitore GPS/Glonass deve essere sincronizzata con l'ora del satellite. Senza questo, l'errore sarebbe di ∓ 100.000 km.
Dalla formula della velocità, tempo e distanza S = v*t otteniamo l'equazione di base per la trasmissione del segnale GNSS. La distanza dal satellite è pari al prodotto della velocità della luce per la differenza di tempo tra il satellite e il ricevitore.

Principalmente, ciò avviene a causa del fatto che, anche dopo tutte le sincronizzazioni, il tempo sul ricevitore tпр lo conosciamo con un grado sufficiente di precisione. Tra il tempo reale e tпр ci sarà sempre un Δt, a causa del quale l'errore dei calcoli diventa inaccettabile. Ecco perché è necessario quarto satellite.
Per una giustificazione matematica più chiara della necessità di quattro satelliti, costruiremo un sistema di equazioni.

Per determinare quattro incognite x, y, z e Δt è necessario che il numero di osservazioni sia uguale o superiore al numero di incognite. Questa è una condizione necessaria ma insufficiente. Se la matrice delle equazioni normali risulta degenerata, il sistema di equazioni non avrà soluzione.
Non dobbiamo dimenticare la Teoria della Relatività Speciale e gli effetti relativistici con il rallentamento del tempo sugli orologi atomici dei satelliti rispetto a quelli terrestri.

Se consideriamo che il satellite si muove in orbita a una velocità di 14.000 km/h, otteniamo un rallentamento del tempo di circa 7 μs (microsecondi). D'altra parte, agiscono gli effetti relativistici della Teoria della Relatività Generale.
Il fatto è questo: i satelliti in orbita si trovano a grande distanza dalla Terra, dove la curvatura del continuum spazio-temporale è minore rispetto alla superficie terrestre a causa della massa della Terra. Secondo la GR, il tempo degli orologi posizionati più vicino a un oggetto massiccio apparirà più lento rispetto a quelli che si trovano più lontano.

- G — costante gravitazionale;
- M — massa dell'oggetto, in questo caso della Terra;
- r — distanza dal centro della Terra al satellite;
- c — velocità della luce.
Il calcolo secondo questa formula dà un rallentamento del tempo di 45 μs sul satellite. In totale: -7μs + 45μs = 38μs, bilancio degli effetti della RS e della RG.
Nelle applicazioni di localizzazione tramite GNSS è necessario considerare anche i ritardi ionosferici e troposferici. Inoltre, le correzioni di 46 ns sono correlate all'eccentricità di 0,02 dell'orbita dei satelliti GPS.
La possibilità di ricevere segnali contemporaneamente da più di quattro satelliti GPS / GLONASS consente di aumentare ulteriormente la precisione della determinazione delle coordinate del ricevitore. Questo viene raggiunto perché il navigatore risolve il sistema delle loro quattro equazioni con quattro incognite.
il numero di volte e prende la media, aumentando la precisione della valutazione finale secondo le leggi della statistica matematica.
Come configurare un server NTP Stratum 1 tramite collegamento satellitare
Per configurare un server temporale di alta qualità è sufficiente avere GPSD, NTP e un ricevitore GPS con uscita 1PPS (un impulso al secondo).
1. Installare gpsd e ntpd, o gpsd e chronyd. La versione di gpsd deve essere ≥ 3.20
(1:1109)$ sudo emerge -av gpsd chrony
La copia locale dell'indice remoto è aggiornata e sarà utilizzata.
Calcolo delle dipendenze... fatto!
[binary N ] net-misc/pps-tools-0.0.20120407::gentoo 31 KiB
[binary N ] net-misc/chrony-3.5-r2::gentoo USE="adns caps cmdmon ipv6 ntp phc readline refclock rtc seccomp (-html) -libedit -pps (-selinux)" 246 KiB
[binary N ] sci-geosciences/gpsd-3.17-r3:0/23::gentoo USE="X bluetooth cxx dbus ipv6 ncurses python shm sockets udev usb -debug -latency-timing -ntp -qt5 -static -test" GPSD_PROTOCOLS="aivdm ashtech earthmate evermore fv18 garmin garmintxt gpsclock isync itrax mtk3301 navcom ntrip oceanserver oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 tnt tripmate tsip ublox -fury -geostar -nmea0183 -nmea2000 -passthrough" PYTHON_TARGETS="python2_7" 999 KiB
Totale: 3 pacchetti (3 nuovi, 3 binari), Dimensione dei download: 1275 KiB
Vuoi unire questi pacchetti? [Sì/No]2. Collega il ricevitore GPS con supporto PPS a una porta seriale RS232 o USB.
Un normale ricevitore GPS economico non funziona; potrebbe essere necessario cercare un po' per trovarne uno adatto.
3. Assicurati che il dispositivo stia effettivamente fornendo PPS, controllando la porta con l'utility gpsmon.
4. Apri il file /etc/conf.d/gpsd e modifica la seguente riga.
Sostituisci
GPSD_OPTIONS=""con
GPSD_OPTIONS="-n"Questa modifica è necessaria affinché gpsd inizi immediatamente a cercare fonti GNSS all'avvio.
5. Avvia o riavvia gpsd.
(1:110)$ sudo /etc/init.d/gpsd start
(1:111)$ sudo /etc/init.d/gpsd restart
Per le distribuzioni con systemd, utilizza il comando systemctl appropriato.
6. Controlla l'output della console del comando cgps.
Devi assicurarti che i dati vengano ricevuti correttamente dai satelliti. In console dovrebbe apparire qualcosa di simile all'illustrazione.

Output della console del comando cgps.
7. È ora di modificare il file /etc/ntp.conf.
# GPS Serial data reference (NTP0)
server 127.127.28.0
fudge 127.127.28.0 time1 0.9999 refid GPS
# GPS PPS reference (NTP1)
server 127.127.28.1 prefer
fudge 127.127.28.1 refid PPS
La registrazione superiore NTP0 indica una fonte temporale universale disponibile su quasi tutti i dispositivi GPS. La registrazione inferiore NTP1 definisce una fonte PPS molto più precisa.
8. Riavvia ntpd.
(1:112)$ sudo /etc/init.d/ntpd restart Per le distribuzioni con systemd, utilizza il comando systemctl.
$ sudo systemctl restart ntp
Materiali utilizzati
- David L Mills, Il protocollo di rete per il tempo sulla Terra e nello spazio, Seconda edizione.
Fonte: habr.com
