Назад | Перейти на главную страницу

Казалось бы, плохое качество синхронизации времени NTP с использованием часов GPS

У меня есть сервер Linux, время которого синхронизировано с устройством NTP на основе GPS, расположенным поблизости. Время пинга от сервера до устройства составляет около 1 мс, с очень низким джиттером:

--- x.x.x.x ping statistics ---
100 packets transmitted, 100 received, 0% packet loss, time 99001ms
rtt min/avg/max/mdev = 0.874/0.957/1.052/0.051 ms

Однако клиент NTP оценивает точность синхронизации времени примерно в 5-6 мсек, что кажется очень высоким с учетом настройки:

synchronised to NTP server (x.x.x.x) at stratum 2
   time correct to within 5 мс
   polling server every 16 s

ntpq -p дает следующее:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*x.x.x.x         .PPS.            1 u   10   16  377    0.964   -0.019   0.036

Два вопроса:

  1. Что может быть причиной такой низкой уверенности клиента NTP в точности синхронизации?
  2. Есть ли способ измерить реальную точность синхронизации, скажем, с точностью до миллисекунды?

Значение, которое ntpstat отображается после «времени, точного с точностью до», это корневая дисперсия + корневая задержка / 2. ntpq -p не показывает прогон "корневой дисперсии" ntpq -c rl вместо.

Тем не менее очевидно, что основным источником неточности является дисперсия, а не задержка (которая составляет всего 0,964).

Дисперсия - это «номинальная ошибка относительно первичного эталонного источника». Я кратко просмотрел NTPv4 RFC, и вот что в нем говорится:

Дисперсия (эпсилон) представляет собой максимальную погрешность измерения. Он увеличивается со скоростью, равной максимальному допустимому отклонению тактовой частоты системы (PHI), обычно 15 PPM. 1 PPM равен 10 ^ (- 6) секундам в секунду.

Если использовать терминологию rrdtool, дисперсия - это не показатель, а скорее счетчик. Большое значение может не означать, что что-то не так.

Увы, я не смог достаточно хорошо понять алгоритм ntp, чтобы увидеть, как уменьшить это число. Я заметил, что это значение иногда сбрасывается. Не знаю почему.

Причина, по которой я спросил об оборудовании выше, заключается в том, что многие устройства GPS (слой 0, «корневой» источник) подключаются к компьютеру, который затем действует как сервер NTP через последовательный канал.

Последовательные соединения часто имеют джиттер 1-5 мс на линии из-за служебных данных / ожидания прерывания. Следовательно, я предполагаю, что ваш источник NTP читает из последовательного источника.

Вы можете внести некоторые изменения в последовательное соединение, чтобы уменьшить джиттер. В первую очередь, отключение FIFO может дать вам достойные результаты.

http://support.ntp.org/bin/view/Support/KnownHardwareIssues#Section_9.1.5. http://www.febo.com/time-freq/ntp/jitter/index.html

Время правильное в пределах 5 мс - БОЛЬШОЕ !!! 5 мс - это 5/1000 секунды. Все, что меньше 100 мс, легко приемлемо для чего угодно, кроме небольшого количества ситуаций, в этом случае вы будете использовать не GPS, а локальные атомные часы и два внешних эталонных генератора. С пулом ntp мы получаем в течение 10 мс.