У меня есть встроенное устройство Linux, подключенное непосредственно к моему рабочему столу Windows через интерфейс USB / Net. Он основан на платах Freescale iMX6, поэтому я считаю, что аппаратное обеспечение часов - это SNVS RTC.
На рабочем столе 192.0.0.10
, У меня W32Time работает как NTP-сервер и встроенное устройство 192.0.0.100
(я думаю) правильно настроен для использования в соответствии с ntp.conf
файл:
server 192.0.0.10 iburst minpoll 5 maxpoll 7
driftfile /data/ntp.drift
restrict default nomodify nopeer noquery limited kod
restrict 127.0.0.1
restrict [::1]
Связь не проблема(а) так как я могу на встроенном устройстве выполнить:
ntpdate -uq 192.0.0.10
ntpdate -ub 192.0.0.10
и это успешно запросит и обновит время.
Однако я обнаружил, что часы, которые должны синхронизироваться ntpd
немного дрейфует. Я запустил и синхронизировал ntpd
около 18 часов назад, и смещение постепенно увеличилось примерно до 5 секунд:
remote refid st t when poll reach delay offset jitter
==============================================================================
192.0.0.10 192.168.0.4 4 u 31 32 377 1.452 4941.57 11.927
За последние несколько часов он действительно начал возвращаться, но все еще в 3,2 секунды от того, что должно быть. В любом случае, я не уверен, что это не более чем совпадение по следующим причинам.
Когда я увидел, что он постоянно поднимается, я покопал. Выход ntpq
Команда ассоциаций была (и остается):
# ntpq -c as
ind assid status conf reach auth condition last_event cnt
===========================================================
1 62876 9024 yes yes none reject reachable 2
Это указывает на то, что сервер, хотя и доступен, по какой-то причине фильтруется. Основываясь на статусе 9024
(видеть Вот), это, по-видимому, объясняется «отклонено как недействительное (TEST10-TEST13)».
Итак, я иду и смотрю на ntpq
переменные для этой ассоциации:
# ntpq -c rv 62876
associd=62876 status=9024 conf, reach, sel_reject, 2 events, reachable,
srcadr=192.0.0.10, srcport=123, dstadr=192.0.0.100, dstport=123, leap=00,
stratum=4, precision=-6, rootdelay=129.150, rootdisp=2193.741,
refid=192.168.0.4,
reftime=ddd30907.eff60ee5 Thu, Dec 7 2017 0:25:43.937,
rec=ddd31287.4db24cd8 Thu, Dec 7 2017 1:06:15.303, reach=377,
unreach=0, hmode=3, pmode=4, hpoll=5, ppoll=5, headway=21,
flash=400 peer_dist, keyid=0, offset=3186.569, delay=1.446,
dispersion=16.036, jitter=11.844, xleave=0.093,
filtdelay= 1.45 1.42 1.41 1.47 1.44 1.43 1.44 1.48,
filtoffset= 3186.57 3189.58 3192.08 3194.56 3197.13 3199.58 3202.57 3205.06,
filtdisp= 15.63 16.12 16.60 17.08 17.58 18.06 18.54 19.03
Я вижу что flash
переменная установлена в 400
который на основе той же страницы, указанной выше, показывает 0400/TEST11/peer_dist/peer distance exceeded
.
Теперь я понимаю, что это не физическое расстояние (и клиент, и сервер находятся на моем рабочем столе) или сетевое расстояние (два устройства подключены напрямую). Единственная полезная ссылка, которую мне удалось найти в сети, - это Группы Google где один Дэвид Вулли утверждает:
Превышение расстояния означает, что комбинация ошибки, вызванной временем приема-передачи в наихудшем случае, и предполагаемый дрейф в 15 частей на миллион с момента последнего действительного времени на корневом сервере (плюс несколько второстепенных компонентов) превысил 1 секунду.
Это обычно случается с серверами w32time, которые были синхронизированы один раз, но оставлены на плаву. Это также может произойти, если серверы находятся в сиротском режиме и слишком долго не имеют источника в реальном времени, и вы не используете самый последний код сиротского режима.
К сожалению, я понятия не имею, как рассчитать «ошибку, вызванную временем прохождения туда и обратно в наихудшем случае», поэтому я не знаю, как действовать дальше. Я почти уверен, что мой рабочий стол является синхронизация с корпоративным сервером времени (мой и некоторые другие настольные компьютеры кажутся очень близкими по времени), хотя я также не уверен, как бы я это решительно проверял.
Итак, у меня вопрос, куда я могу пойти дальше? Я не могу получить больше полезной информации из ntpq
и даже бег ntpd -dd
на переднем плане не проясняется Зачем время сервера отклоняется.
Любая помощь будет принята с благодарностью.
(а) Как далее указывается в журналах на стороне Windows, включенных с помощью:
w32tm /debug /enable /file:C:\w32time.log /size:10000000 /entries:0-300
и производство:
152281 02:06:57.1968483s - ListeningThread -- DataAvailEvent set for socket 1 (0.0.0.0:123)
152281 02:06:57.1973483s - ListeningThread -- response heard from 192.0.0.100:123 <- 192.0.0.10:123
152281 02:06:57.1973483s - /-- NTP Packet:
152281 02:06:57.1973483s - | LeapIndicator: 3 - not synchronized; VersionNumber: 4; Mode: 3 - Client; LiVnMode: 0xE3
152281 02:06:57.1973483s - | Stratum: 0 - unspecified or unavailable
152281 02:06:57.1973483s - | Poll Interval: 5 - 32s; Precision: -20 - 953.674ns per tick
152281 02:06:57.1973483s - | RootDelay: 0x0000.0000s - unspecified; RootDispersion: 0x0000.F1A0s - 0.943848s
152281 02:06:57.1973483s - | ReferenceClockIdentifier: 0x494E4954 - source name: "INIT"
152281 02:06:57.1973483s - | ReferenceTimestamp: 0x0000000000000000 - unspecified
152281 02:06:57.1973483s - | OriginateTimestamp: 0xDDD320A033087D7D - 13157085984199348300ns - 152281 02:06:24.1993483s
152281 02:06:57.1973483s - | ReceiveTimestamp: 0xDDD3209D4DB18BA5 - 13157085981303490400ns - 152281 02:06:21.3034904s
152281 02:06:57.1973483s - | TransmitTimestamp: 0xDDD320BE4D535D3F - 13157086014302053300ns - 152281 02:06:54.3020533s
152281 02:06:57.1973483s - >-- Non-packet info:
152281 02:06:57.1973483s - | DestinationTimestamp: 152281 02:06:57.1973483s - 0xDDD320C132856B0E152281 02:06:57.1973483s - - 13157086017197348300ns152281 02:06:57.1973483s - - 152281 02:06:57.1973483s
152281 02:06:57.1973483s - | RoundtripDelay: -562900ns (0s)
152281 02:06:57.1973483s - | LocalClockOffset: -2895576400ns - 0:02.895576400s
152281 02:06:57.1973483s - \--
152281 02:06:57.1973483s - TransmitResponse: sent 0.0.0.0:123(192.0.0.10:123)->192.0.0.100:123
Обновить к комментарию «За последние несколько часов он фактически начал возвращаться»: он фактически снова начал дрейфовать (в настоящее время на 3,7 секунды), поэтому мои мысли о том, что это было совпадением, похоже, поддерживаются.
Ваш клиент отказывается синхронизироваться с сервером, потому что его "корневая дисперсия" (собственная оценка сервером своей ошибки от "истинного" времени и одна из переменных, влияющих на расстояние между узлами) составляет около 2,2 секунды, что больше, чем допуск по умолчанию - одна секунда.
Хотя лучше всего отладить сервер и выяснить, почему он так плохо оценивает свои собственные возможности хронометража, вы все равно можете заставить клиента синхронизироваться с ним, указав большее значение для tos maxdist
опция в ntp.conf.