NTP: О точном времени

imageК сервису синхронизации времени по протоколу NTP все уже привыкли - оно включено по умолчанию или легко включается для большинства популярных операционных систем. Однако какая точность при этом достигается? Какие бывают сервера точного времени, и с какими можно работать простым смертным? Какие есть подводные камни, и как выбрать "правильные" сервера времени?

Типы серверов

Сервера бывают Stratum 1 и 2, 3(выше редко).

Stratum 1 - получают точное время непосредственно от источника точного времени : атомных часов (например time-a.nist.gov, точность - трилионные доли секунды) или GPS приемника (ntpx.imvp.ru точность - миллиардные доли секунды). Есть сервера получающие точное время через сотовую сеть CDMA (миллионные доли секунды). При работе с ntpd узнать тип сервера можно командой ntpq -np : "PPS" значит GPS, "ACTS" значит прямое соединение с атомными часами (там же и другая ценная статистика - пинг, "дрожжание" пинга(jitter), ранг сервера(1,2...) ).

"Простым" смертным обращаться к Stratum-1 серверам строго запрещено, т.к. нагрузка на них и так очень большая (а на многие Stratum-1 сервера вообще нет публичного доступа). Считается что вы можете подключаться к Stratum-1 серверам или просить доступ к ним, если вы держите NTP сервер, обслуживающий не менее 100 клиентов. Полный список серверов можно увидеть тут : http://support.ntp.org/bin/view/Servers/StratumOneTimeServers . Естественно, желательно подключатся к серверам в своей стране.

Stratum 2 - получают точное время от Stratum-1 серверов. При правильной настройке и выборе серверов-источников точного времени имеют погрешность менее 1мс. Подключатся обычно можно всем, но многие сервера регулярно умирают от нагрузки (например time.windows.com). http://www.pool.ntp.org/ поддерживает round-robin списки публичных Stratum-2 NTP серверов. Таким образом обеспечивается балансировка нагрузки, и они практически всегда доступны. Подключиться к этим серверам можно по адресам 0.ru.pool.ntp.org 1.ru.pool.ntp.org 2.ru.pool.ntp.org и 3.ru.pool.ntp.org (это для России, выбираются случайно из списка ~50 серверов).

Stratum 3 - получают время от Stratum-2 серверов, и т.д.

Практическая точность

Stratum-1
Это график разницы системного времени с временем полученным со Stratum-1 серверов (canonical.com - Stratum-2 сервер, для сравнения).
*.nist.gov - расположены в США, из-за "большого" пинга иногда случаются жуткие "выбросы". Ошибка с Российских Stratum-1 серверов обычно укладыватся в +- 1 мс.
image

Stratum-2
Это - разница с Stratum-2 серверами: 4 из Российского пулла, 1 из европейского, дефолтный сервер времени убунты (europium.canonical.com), и те же *.nist.gov:
image
Сразу бросаются в глаза сервера, имеющие постоянную ошибку до 20 мс.


Резюме

  • Время на серверах и рабочих станциях нельзя пускать на "самотёк", иначе отклонение времени может достичь минут.
  • Если точность +-0.05 секунды вас устраивает, можно не заморачиваться с выбором серверов, и синхронизироваться с сервером по умолчанию
  • Если необходима точность до +-0.01 секунды, нужно найти Stratum-2 NTP в вашей стране, построить с них графики отклонения (Munin+плагин ntp_peers), и отбросить "кривые". Под windows это конечно будет затруднительно сделать. Затем в linux установить демон ntpd, и дать ему 3-6 серверов для синхронизации (он сам будет выбирать наиболее "качественные").
  • Если нужна точность до +-0.001 секунды И вы будете предоставлять сервис точного времени в вашей организации - подключайтесь к Stratum-1 серверам в вашей стране. Ваш сервис крайне желательно делать публичным.
  • Если нужно точнее 0.001 секунды - остается только настраивать свой Stratum-1 сервер от GPS или CDMA. В обоих случаях нужно либо антенну с улицы вести, или чтобы сигнал "добивал" (в случае с GPS - малореально). Атомные часы объемом менее кубометра пока не делают, так что этот вариант отпадает

PS. Кстати, по умолчанию в Ubuntu синхронизация времени происходит один раз при загрузке системы. Если аптайм под полгода - время может сильно уехать. Устанавливаете ntpd - он корректирует время постоянно и "плавно" (без резких рывков, "размазывая" замедление/ускорение времени). В Windows синхронизация происходит раз в сутки неделю одним "скачком", что может вызвать сложности при обработке логов, если набежала большая разница.

Товарищи!

Даешь большое публичных NTP серверов в России! Особенно Stratum-1 (с ними вообще у нас напряженка, 2-3 штуки на весь exUSSR). Кстати, точное время можно брать и с Глонасс, кто возьмётся запустить первый Глонасс-powered сервер?
27 Декабря 2009

RSS@BarsMonster3@14.by