Открыть сервис

NTP

NTP (Network Time Protocol, протокол сетевого времени) — это сетевой протокол, предназначенный для синхронизации внутренних часов компьютеров и других устройств в сетях с коммутацией пакетов (включая Интернет) с эталонным источником времени. Обеспечивает точность синхронизации в диапазоне от миллисекунд до десятков микросекунд в зависимости от качества каналов связи и конфигурации сети.

История

Разработка NTP началась в 1981 году в Университете Делавэра (США) под руководством Дэвида Миллса. Первая спецификация протокола была опубликована в 1985 году в виде RFC 958. В 1988 году вышла версия NTPv2 (RFC 1059), в 1992 — NTPv3 (RFC 1305), а в 2010 году — NTPv4 (RFC 5905), которая является текущей стабильной версией. Протокол изначально создавался для обеспечения точного времени в компьютерных сетях и с течением времени стал стандартом де-факто для синхронизации времени в Интернете.

Принцип работы

NTP использует иерархическую архитектуру, основанную на стратах (уровнях). Устройства делятся на серверы и клиенты, при этом серверы могут быть одновременно клиентами для серверов более высокого уровня.

Страты

Страта (stratum) — это число, указывающее расстояние от эталонных часов. Чем меньше число, тем ближе устройство к первичному источнику времени:

  • Страта 0 — эталонные часы (атомные часы, GPS-приёмники, радиосигналы точного времени). Эти устройства не участвуют в сетевом обмене напрямую, а подключаются к серверам страты 1.
  • Страта 1 — серверы, синхронизированные напрямую с эталонными часами. Называются первичными серверами времени.
  • Страта 2 — серверы, синхронизированные с серверами страты 1. И так далее. Максимальная допустимая страта в NTP — 15. Страта 16 означает, что устройство не синхронизировано.

Алгоритмы синхронизации

NTP использует алгоритм Марзулло (Marzullo’s algorithm) и его модификации для выбора наилучшего источника времени из нескольких доступных. Процесс синхронизации включает несколько этапов:

  1. Обмен временными метками: клиент отправляет запрос серверу, указывая время отправки (T1). Сервер фиксирует время получения (T2) и время отправки ответа (T3). Клиент фиксирует время получения ответа (T4).
  2. Вычисление задержки и смещения: на основе четырёх временных меток вычисляются:
  1. Коррекция часов: клиент корректирует свои часы на величину смещения, при этом учитывается задержка распространения для повышения точности.

Для предотвращения резких скачков времени NTP использует метод подстройки (slewing) — плавное изменение частоты системных часов, а не мгновенное переключение. Это важно для приложений, чувствительных к временным разрывам (например, базы данных, системы реального времени).

Архитектура и реализация

Серверы NTP

Серверы NTP могут быть публичными (доступными в Интернете) или частными (внутри корпоративных сетей). Наиболее известные пулы публичных серверов:

  • pool.ntp.org — глобальный пул серверов, распределённых по регионам (например, ru.pool.ntp.org для России).
  • time.windows.com — сервер Microsoft для синхронизации Windows.
  • time.apple.com — сервер Apple для macOS и iOS.

В России существуют национальные серверы точного времени, поддерживаемые Государственной службой времени и частоты (ГСВЧ): ntp1.vniiftri.ru, ntp2.vniiftri.ru, ntp3.vniiftri.ru.

Клиенты NTP

Клиентская часть NTP встроена в большинство операционных систем:

  • Linux/Unix: демон ntpd (классическая реализация), chrony (более современная альтернатива с улучшенной работой в нестабильных сетях), systemd-timesyncd (упрощённый клиент).
  • Windows: служба W32Time, начиная с Windows 2000. В Windows 10 и 11 поддерживается как NTP, так и SNTP.
  • macOS: служба timed, использующая ntpd или chrony.

SNTP (Simple Network Time Protocol)

SNTP — упрощённая версия NTP, описанная в RFC 4330 (ныне устаревшем, заменён на RFC 5905). Отличается отсутствием сложных алгоритмов фильтрации и выбора источников. Используется в устройствах с ограниченными ресурсами (встраиваемые системы, бытовая техника) и в клиентах, которым не требуется высокая точность. SNTP-клиенты обычно синхронизируются с одним сервером без анализа множества источников.

Точность и факторы влияния

Точность синхронизации NTP зависит от нескольких факторов:

  • Качество сети: задержки, джиттер (вариация задержки), потери пакетов. В локальных сетях (Ethernet) точность может достигать 1-10 мс, в глобальных сетях (Интернет) — 10-100 мс.
  • Аппаратное обеспечение: точность системных часов (кварцевые резонаторы, RTC), поддержка аппаратных меток времени (hardware timestamping) в сетевых картах.
  • Настройка сервера: количество источников синхронизации, частота опросов, алгоритмы фильтрации.
  • Нагрузка на систему: высокая загрузка CPU или дисков может увеличить задержки обработки пакетов.

При использовании аппаратных меток времени (например, PTPPrecision Time Protocol) точность может достигать субмикросекундного уровня, но NTP в стандартной реализации на это не рассчитан.

Безопасность

NTP уязвим для ряда атак:

  • Атаки типа «человек посередине» (MITM): злоумышленник может подменить временные метки и сместить время на целевом устройстве.
  • DoS-атаки: перегрузка сервера ложными запросами (amplification attack).
  • NTP-амплификация: использование уязвимости в старых версиях NTP (monlist) для усиления трафика при DDoS-атаках.

Для защиты используется:

  • NTP over HTTPS (NTS, RFC 8915) — шифрование и аутентификация запросов.
  • Аутентификация с помощью симметричных ключей (RFC 5905, опционально).
  • Фильтрация трафика на уровне брандмауэров и ограничение доступа к серверам.

Применение

NTP используется практически во всех сферах, где требуется точное время:

  • Финансовые системы: биржевые торги, банковские транзакции (требования к точности до миллисекунд).
  • Телекоммуникации: синхронизация базовых станций сотовой связи, сетевого оборудования.
  • Научные исследования: астрономия, геофизика, эксперименты с распределёнными вычислениями.
  • IT-инфраструктура: синхронизация серверов, баз данных, систем логирования (например, для корректного анализа событий в SIEM).
  • Промышленность: системы управления технологическими процессами, SCADA.

Интересные факты

  • NTP является одним из старейших сетевых протоколов, всё ещё активно используемых в Интернете (наряду с DNS и HTTP).
  • В 2012 году была обнаружена уязвимость CVE-2013-5211, позволявшая использовать NTP-серверы для DDoS-атак (усиление трафика до 600 раз). После исправления в версиях NTP 4.2.7p26 и новее функция monlist была отключена по умолчанию.
  • В России действует ГОСТ Р 8.567-2014 «Государственная система обеспечения единства измерений. Синхронизация времени в сетях связи», который регламентирует требования к точности и методам синхронизации, включая использование NTP.
  • Существует проект NTPsec (NTP Secure) — форк NTP с улучшенной безопасностью и упрощённой кодовой базой, разрабатываемый с 2015 года.

Источники

  • RFC 5905 — Network Time Protocol Version 4: Protocol and Algorithms Specification
  • RFC 8915 — Network Time Security for the Network Time Protocol
  • Mills, D. L. (2011). Computer Network Time Synchronization: The Network Time Protocol on Earth and in Space. CRC Press.
  • ГОСТ Р 8.567-2014 «Государственная система обеспечения единства измерений. Синхронизация времени в сетях связи»
  • Документация проекта chrony (chrony.tuxfamily.org)
  • Официальный сайт проекта NTP (ntp.org)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →