NTP: О точном времени
К сервису синхронизации времени по протоколу 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 мс.
Stratum-2
Это - разница с Stratum-2 серверами: 4 из Российского пулла, 1 из европейского, дефолтный сервер времени убунты (europium.canonical.com), и те же *.nist.gov:
Сразу бросаются в глаза сервера, имеющие постоянную ошибку до 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 синхронизация происходит раз в