$GPGGA,181908.00,3404.7041778,N,07044.3966270,W,4,13,1.00,495.144,M,29.200,M,0.10,0000*40
Где - 181908.00 is the time stamp: UTC time in hours, minutes and seconds.
Это сообщение не привязано к миллисекундам. Может быть в начале или в конце секунды. Может появиться на границы перехода секунды.
Принимая такое сообщение проблема настроить локальные часы сервера. Поэтому придумали такой подход. Устанавливают локальные часы
с точностью до секунд а сигналом 1PPS достраивают до миллисекунд. Этим занимается GPSD. Достраиванием локальных часов в сервере занимается
тоже NTP. Просто для севера сервером времени является GPSD и использует механизм SHM (shared memory) передачи времени. 99% проблем синхронизацией точного времени на сервере. Сервер тоже может быть клиентом. Есть система иерархии источников времени и называется stratum. В данном случае сервер будет клиентом для GPS. С клиентом проблем не должно быть. SNTP касается только клиента. В локальной сети с точностью до секунды хватит вполне главное чтобы сервер был стабильный и имел малый jitter.
Почему так сложно — это целая теория и можно долго описывать :)
Вот пример состояния (где то на просторах интернета)
remote refid st t when poll reach delay offset jitter
==============================================================================
xtime-a.timefreq .ACTS. 1 u 40 64 377 59.228 -8.503 0.516
-bonehed.lcs.mit 18.26.4.106 2 u 44 64 377 84.259 4.194 0.503
+clock.sjc.he.ne .CDMA. 1 u 41 64 377 23.634 -0.518 0.465
+SHM(0) .GPS. 0 l 50 64 377 0.000 6.631 5.331
*SHM(1) .PPS. 0 l 49 64 377 0.000 0.222 0.310
Что это обозначает.
+SHM(0) .GPS. 0 l 50 64 377 0.000 6.631 5.331
*SHM(1) .PPS. 0 l 49 64 377 0.000 0.222 0.310
Это соединение с GPSD и время берется с GPS. Если пропадет сигнал с GPS то пропадет звездочка с *SHM(1) и узел будет синхронизироваться скорей всего с +clock.sjc.he.ne .CDMA.