ntpd

Сервер протокола сетевого времени (Network Time Protocol, NTP)

Синтаксис:

ntpd [-46aAbdgLmnNpqx] [-c конфигурационный_файл] [-D уровень] [-f файл_смещения] [-i каталог_клетки] [-k файл_ключей] [-l журнал] [-p файл_идентификатора_процесса] [-P приоритет] [-r задержка_рассылки] [-s каталог_статистики] [-t ключ] [-u пользователь[:группа] ] [-v переменная] [-V переменная]

Опции:

-4
Принудительно выполнить DNS-преобразование имен хостов в пространство имен IP4.
-6
Принудительно выполнить DNS-преобразование имен хостов в пространство имен IP6.
-a
Выполнять криптографическую аутентификацию для клиентов широковещательной передачи, многоадресной передачи и симметричных пассивных ассоциаций. Используется по умолчанию.
-A
Не выполнять криптографическую аутентификацию для клиента широковещательной передачи, клиента многоадресной передачи и симметричных пассивных ассоциаций.
-b
Разрешить для клиента синхронизацию с широковещательными серверами.
-c конфигурационный_файл
Задать имя и путь конфигурационного файла; значение по умолчанию – /etc/ntp/ntp.conf. Для получения дополнительной информации об этом файле см. раздел в документации по FreeBSD.
-d
Использовать режим отладки. Для вывода более подробной информации эту опцию можно указать несколько раз.
-D уровень
Непосредственно задать уровень отладки.
-f файл_смещения
Задать имя файла смещения частоты и путь к нему; значение по умолчанию определяется конфигурационной командой driftfile файл_смещения, если она присутствует в файле ntp.conf.
-g
Установить в качестве порога тревоги любое значение без ограничений. Если смещение превышает значение по умолчанию (1000 секунд) для данного порога тревоги, то работа утилиты ntpd завершается, и в системный журнал выводится соответствующее сообщение. Эту опцию можно использовать совместно с опциями -q и -x. Описание других опций приведено в описании команды tinker.
-i каталог_клетки
Изменить корневой каталог сервера на каталог_клетки. Эта опция также предполагает, что сервер должен предпринять попытку проигнорировать полномочия пользователя root при запуске (в противном случае изменение корневого каталога лишь незначительно повышает безопасность). Эта опция доступна для использования только в том случае, если ОС поддерживает возможность запуска сервера при отсутствии полных полномочий пользователя root. Также может потребоваться указать опцию -u.
-k файл_ключей
Задать имя файла симметричных ключей и путь к нему; значение по умолчанию – /etc/ntp/ntp.keys. Эта операция аналогична конфигурационной команде keys файл_ключей. Для получения дополнительной информации об этом файле см. в документации по FreeBSD.
-l журнал
Задать имя файла журнала и путь к нему. Значение по умолчанию – файл системного журнала. Эта операция аналогична конфигурационной команде logfile журнал.
-L
Не прослушивать виртуальные IP-адреса. Значение по умолчанию разрешает прослушивание.
-m
Разрешить для клиента синхронизацию серверов групповой передачи по групповому адресу IPv4 224.0.1.1.
-n
Не создавать копию с помощью системного вызова fork().
-N
Выполнить утилиту ntpd с наивысшим приоритетом.
-p файл_идентификатора_процесса
Задать имя и путь к файлу, используемому для записи идентификатора процесса ntpd. Эта операция аналогична конфигурационной команде pidfile файл_идентификатора_процесса.
-P приоритет
Выполнить утилиту ntpd с указанным приоритетом.
-q
Завершить работу утилиты ntpd после первой установки часов. Эту опцию можно использовать совместно с опциями -g и -x.
-r задержка_рассылки
Указать задержку широковещательной/многоадресной передачи от сервера к клиенту. Это необходимо в том случае, если протокол не может автоматически рассчитать задержку.
-s каталог_статистики
Задать путь к каталогу для файлов, созданных с помощью функции статистики. Эта операция аналогична конфигурационной команде statsdir каталог_статистики.
-t ключ
Добавить номер ключа в список надежных ключей. Эту опцию можно указать несколько раз.
-u пользователь[:группа]
Указать пользователя и, при необходимости, группу, на которые надо переключиться.
-v
переменная
-V
переменная Добавить указанную системную переменную.
-x
Установить порог шага 600 секунд. Значение по умолчанию – 128 мс. Если смещение меньше (или больше порога шага, то время корректируется (или увеличивается). Эту опцию можно использовать совместно с опциями -g и -q. См. также описание команды tinker.

Платформы:

ЗОСРВ «Нейтрино»

Целевые архитектуры:

aarch64, arm, armv7, e2k, mips, ppc, x86

Описание:

Утилита ntpd используется для настройки и синхронизации системного времени с серверами стандартного времени в Интернет. Эта утилита является сервисом операционной системы, соответствующим спецификации NTP (протокола сетевого времени) версии 4. Она также совместима с версией 3, в соответствии со стандартом RFC 1305, и с версиями 1 и 2, в соответствии со стандартами RFC 1059 и RFC 1119. С помощью 64-разрядной арифметики с плавающей запятой утилита ntpd обеспечивает поддержание предельной точности на уровне около 232 пикосекунд. Несмотря на то, что современные рабочие станции и сети не позволяют достигать предельной точности, она необходима для новейших тактовых генераторов ЦП с частотой, кратной гигагерцу, и LAN со скоростью передачи, кратной гигабиту.

Обычно утилита ntpd читает конфигурацию из файла ntp.conf. Для получения дополнительной информации об этом файле см. раздел в документации по FreeBSD.

Базовые операции утилиты ntpd

Утилита ntpd обменивается сообщениями с одним или несколькими указанными в конфигурации хостами с определенным интервалом опроса. Это необходимо для подготовки данных и установки часов. Несмотря на то, что начальный интервал опроса по умолчанию составляет 64 секунды, интервал опроса для каждого сервера увеличивается на несколько секунд для предотвращения монопольной передачи пакетов по сети.

Для поддержания значения времени на период отключения питания в современном оборудовании используется микросхема встроенных часов (Time-of-Year, TOY). При загрузке компьютера эта микросхема принимает участие в инициализации системного времени. После синхронизации компьютера с сервером NTP системное время периодически синхронизируется и корректируется.


Note: Установка аппаратных часов при этом не выполняется. Для установки времени на микросхеме используется утилита rtc.

В обычных условиях утилита ntpd корректирует часы постепенно, что обеспечивает непрерывность отсчета времени. При значительной перегрузке сети алгоритмы ntpd отклоняют образцы смещений свыше 128 мс по следующим причинам:

Если микросхема TOY отсутствует и время клиента отличается от времени сервера более чем на 1000 секунд, то потребуется настроить часы вручную. Это приведет к завершению работы утилиты ntpd и выводу сообщения о сбое в системном журнале.

Дисциплина частоты

Поведение утилиты ntpd при запуске зависит от наличия файла смещения частоты ntp.drift. Этот файл содержит последние данные оценки погрешности частоты. Если этот файл отсутствует, то утилита ntpd переходит в особый режим, позволяющий быстро скорректировать время в соответствии с системным тактовым генератором и погрешностью частоты. Примерно через 15 минут, когда время и частота возвращаются к номинальным значениям, утилита ntpd начинает отслеживать время и частоту в соответствии с сервером. Через час текущее смещение частоты записывается в файл смещения частоты ntp.drift. Поскольку на основе этого файла инициализируется частота ntpd, во время запуска утилита ntpd переходит в нормальный режим. В дальнейшем текущее смещение частоты записывается в файл смещения частоты ntp.drift ежечасно.

Режимы работы

Утилита ntpd работает непрерывно, отслеживая незначительные изменения частоты и обеспечивая корректировку часов для достижения предельной точности. Для утилиты предусмотрено несколько режимов:

Утилита ntpd также работает в однократном режиме, когда время устанавливается по данным от внешнего сервера, а частота определяется на основе данных, записанных ранее в файл смещения частоты. Если клиент работает в режиме широковещательной/многоадресной передачи или режиме "manycast", то сначала он обнаруживает удаленный сервер, а затем автоматически осуществляет самонастройку после расчета поправки на задержку распространения "сервер-клиент". После этого можно развернуть рабочие станции без необходимости ввода подробных данных конфигурации, связанных с локальной средой.

Когда утилита ntpd работает в непрерывном режиме, то все внешние серверы опрашиваются с интервалом, который определяется сложным конечным автоматом. Конечный автомат определяет интервал опроса с помощью эвристического алгоритма на основе измеренных случайных флуктуаций (jitter) времени циклической задержки и дрейфа (wander) частоты тактового генератора. В большинстве операционных сред конечный автомат начинает отсчитывать интервалы продолжительностью 64 секунды, которые пошагово увеличиваются до 1024 секунд. Во избежание концентрации запросов на серверах также допускаются незначительные произвольные отклонения.

В некоторых случаях непрерывная работа утилиты ntpd не является целесообразной. Стандартный альтернативный способ – запуск ntpdate посредством задания cron в указанное время. Однако для этой утилиты отсутствуют алгоритмы обработки сигналов, проверки ошибок и смягчения негативных последствий, которые обеспечивает утилита ntpd. Для решения этих задач предназначена опция -q.

В ЗОСРВ «Нейтрино» предусмотрена удобная функция определения дисциплины тактовой частоты. Сначала утилита ntpd работает в непрерывном режиме с выбранными серверами, что позволяет оценить и зафиксировать исходное смещение частоты тактового генератора. Приведение частоты и ее смещения к требуемым значениям может занять несколько часов. Затем утилита ntpd прекращает работу и при необходимости запускается в однократном режиме. При каждом запуске утилита ntpd считывает значение частоты из файла и инициализирует частоту ядра.

Управление интервалом опроса

Конечный автомат для ntpd обеспечивает синхронизацию в соответствии с наблюдаемыми флуктуациями (jitter) и дрейфом (wander). Существует несколько способов тонкой настройки работы утилиты ntpd, например, путем сокращения или увеличения интервала опроса. Однако необходимо учитывать последствия изменения диапазона корректировки для интервалов опроса.


Note: Минимальный интервал опроса по умолчанию составляет 64 секунды; максимальный интервал опроса по умолчанию составляет 1024 секунды.

Минимальный интервал по умолчанию можно изменить с помощью команды tinker minpoll; при этом его значение не может быть меньше 16 секунд. Если это значение не переопределено опцией minpoll конфигурационной команды, то оно используется во всех настроенных ассоциациях. Если интервал опроса меньше 64 секунд, то большинство драйверов устройств могут работать некорректно.

В некоторых случаях для коммутируемых или некоммутируемых служб также можно увеличить минимальный период до десятых долей минуты и увеличить максимальный интервал до суток. В нормальных условиях после стабилизации контура дисциплины часов интервал пошагово увеличивается с минимального значения до максимального. Однако предполагается, что исходная погрешность частоты тактового генератора настолько незначительна, что ее можно компенсировать в пределах контура дисциплины. Полоса захвата контура составляет 500 миллионных долей на интервал 64 секунды, и на каждое удвоение этого интервала уменьшается в два раза. Например, если минимальный интервал составляет 1024 секунды, то полоса захвата составляет всего 31 миллионную долю. Если исходная погрешность больше этого значения, то файл смещения частоты ntp.drift корректируется с целью уменьшения остаточной погрешности в соответствии с указанным пределом. После этого файл смещения частоты ежечасно автоматически обновляется и может использоваться для инициализации частоты при следующем запуске сервиса.

Двунаправленный ("huff-n'-puff") фильтр коррекции смещения времени

В некоторых случаях качество хронометрирования может значительно снизиться – например, при загрузке или выгрузке значительного объема данных с использованием телефонного модема. Причиной этого являются значительные дифференциальные задержки, возникающие во время передачи в двух направлениях. В некоторых случаях погрешность времени даже может превышать пороговое значение шага, что требует корректировки шага во время и после передачи данных.

В этих случаях для корректировки смещения времени используется фильтр huff-n'-puff. Он функционирует на основе данных задержки распространения при отсутствии другого трафика, т.е. в нерабочее время. Этот фильтр обеспечивает обновление данных в сдвиговом регистре, в котором сохраняется значение минимальной задержки, связанное с последним интервалом, измеряемое в часах. В условиях значительной задержки фильтр корректирует очевидное смещение путем изменения знака смещения, а также разницу между очевидной задержкой и минимальной задержкой. Имя фильтра отражает направление корректировки – отрицательное (huff) и положительное (puff), которое определяется знаком смещения. Фильтр можно активировать с помощью команды tinker и ключевого слова huffpuff.

Классификация:

Базовые подсистемы ЗОСРВ «Нейтрино», NetBSD

Тематические ссылки:

ntpdate, ntpdc, ntpq, ntptrace, rtc

Основано на: RFC 1059, RFC 1119, RFC 1305




Предыдущий раздел: Сервисы