NTP (Network Time Protocol)

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 00:24, 4 июня 2016.
NTP
Уровень (по модели OSI): Прикладной
Семейство: стек протоколов TCP/IP
Порт/ID: 123/UDP
Назначение протокола: Синхронизация часов
Спецификация: RFC 5905
Вступил в силу с: 1985

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

NTP использует для своей работы протокол UDP и учитывает время передачи. Система NTP чрезвычайно устойчива к изменениям латентности среды передачи. В версии 4 способен достигать точности 10 мс (1/100 с) при работе через Интернет, и до 0,2 мс (1/5000 с) и лучше внутри локальных сетей.

Более простая реализация этого алгоритма известна как SNTP — простой протокол сетевого времени. Используется во встраиваемых системах и устройствах, не требующих высокой точности, а также в пользовательских программах точного времени.

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

Жёлтые стрелки обозначают аппаратное соединение; красные стрелки обозначают сетевое соединение.

NTP-серверы работают в иерархической сети, каждый уровень иерархии называется ярусом (stratum). Ярус 0 представлен эталонными часами. За эталон берется сигнал GPS (Global Positioning System) или службы ACTS (Automated Computer Time Service). На нулевом ярусе NTP-серверы не работают.

NTP-серверы яруса 1 получают данные о времени от эталонных часов. NTP-серверы яруса 2 синхронизируются с серверами яруса 1. Всего может быть до 15 ярусов.

NTP-серверы и NTP-клиенты получают данные о времени от серверов яруса 1, хотя на практике NTP-клиентам лучше не делать этого, поскольку тысячи индивидуальных клиентских запросов окажутся слишком большой нагрузкой для серверов яруса 1. Лучше настроить локальный NTP-сервер, который ваши клиенты будут использовать для получения информации о времени.

Иерархическая структура протокола NTP является отказоустойчивой и избыточной. Рассмотрим пример его работы. Два NTP-сервера яруса 2 синхронизируются с шестью различными серверами яруса 1, каждый — по независимому каналу. Внутренние узлы синхронизируются с внутренними NTP-серверами. Два NTP-сервера яруса 2 координируют время друг с другом. В случае отказа линии связи с сервером яруса 1 или с одним из серверов уровня 2 избыточный сервер уровня 2 берет на себя процесс синхронизации.

Аналогично узлы и устройства яруса 3 могут использовать любой из серверов яруса 2. Что еще более важно, так это то, что наличие избыточной сети серверов NTP гарантирует постоянную доступность серверов времени. Синхронизируясь с несколькими серверами точного времени, NTP использует данные всех источников, чтобы высчитать наиболее точное время.

Надо отметить, что протокол NTP не устанавливает время в чистом виде. Он корректирует локальные часы с использованием временного смещения, разницы между временем на NTP-сервере и локальных часах. Серверы и клиенты NTP настраивают свои часы, синхронизируясь с текущим временем постепенно либо единовременно.

Заголовок

Заголовок NTP
Отступ Октет 0 1 2 3
|Октет Бит 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0 0 Индикатор коррекции Номер версии Режим Часовой слой Интервал опроса Точность
4 32 Задержка
8 64 Дисперсия
12 96 Идентификатор источника
16 128 Время обновления
20 160
24 192 Начальное время
28 224
32 256 Время приёма
36 288
40 320 Время отправки
44 352

Часовой слой

Целое число, представляющее часовой слой, длина которого 8 бит

При следующих значениях: 0 - Не определено или недопустим 1 - Первичный сервер 2-15 - Вторичный сервер, использующий NTP 16 - Не синхронизировано 17-255 - Зарезервировано

Индикатор коррекции

Целое число, показывающее предупреждение о секунде координации, длина которого 2 бита

При следующих значениях:

00 - Нет предупреждения
01 - Последняя минута дня содержит 61 секунду
10 - Последняя минута дня содержит 59 секунд
11 - Неизвестно (время не синхронизировано)

Номер версии

Целое число, представляющее версию протокола, длина которого 3 бита

Режим

Целое число, представляющее режим, длина которого 3 бита.

При следующих значениях:

0 - Зарезервировано
1 - Симметричный активный режим
2 - Симметричный пассивный режим
3 - Клиент
4 - Сервер
5 - Широковещательный режим
6 - Контрольное сообщение NTP
7 - Зарезервировано для частного использования


Интервал опроса

Целое число со знаком, представляющее максимальный интервал между последовательными сообщениями, длина которого 8 бит. Значение равно двоичному логарифму секунд. Предлагаемые по умолчанию пределы на минимальные и максимальные опросы - 6 и 10, соответственно.

Задержка

Общее время распространения сигнала в обе стороны в коротком формате NTP, длина которого 32 бита.

Точность

Целое число со знаком, представляющее точность системных часов. Значение равно двоичному логарифму секунд. Например, значению -18 будет соответствовать точность около 1 мкс, длина которого 8 бит.

Идентификатор источника

Длина — 32 бита.
Код источника синхронизации. Зависит от значения в поле Часовой слой.
Для слоя 0 - это четыре ASCII символа, называемые «kiss code», используются для отладки и мониторинга.
Для слоя 1 - это четыре октета ASCII символов, дополненные слева нулями, назначенные для опорного времени. В таблице ниже представлен список, поддерживаемый Internet Assigned Numbers Authority(Администрация адресного пространства Интернет).
ID Источник
GOES Геостационарный спутник системы экологического мониторинга и наблюдения
GPS Система глобального позиционирования
GAL Система местоопределения «Галилео»
PPS Общий радиосигнал с длительностью импульса, равной 1 секунде
IRIG Группа стандартизации в телеметрии
WWVB Низкочастотный радиопередатчик, 60 кГц (США)
DCF Низкочастотный радиопередатчик, 77.5 кГц (Германия)
HBG Низкочастотный радиопередатчик, 75 кГц (Швейцария)
MSF Низкочастотный радиопередатчик, 60 кГц (Великобритания)
JJY Низкочастотный радиопередатчик, 40 кГц (Япония)
LORC Среднечастотный радиопередатчик, 100 кГц (США)
TDF Среднечастотный радиопередатчик, 162 кГц (Франция)
CHU Высокочастотный радиопередатчик (Канада)
WWV Высокочастотный радиопередатчик (США)
WWVH Высокочастотный радиопередатчик (США)
NIST Телефонный модем Национального института стандартов и технологий США
ACTS Телефонный модем Национального института стандартов и технологий США
USNO Телефонный модем Национальной обсерватории США
PTB Телефонный модем Национального метрологического института Германии
Для слоя 2 и выше - это идентификатор сервера и может быть использован для фиксирования временных петель. Если используется IPv4, то идентификатор представляет из себя четыре октета IP адреса. Если используется IPv6, то это первые четыре октета MD5 хэша адреса. Стоит отметить, что при использовании IPv6 адресов для сервере с NTPv4 и клиента с NTPv3 идентификатор может принимать случайное значение, из-за чего временные петли могут быть не зафиксированы.

Временные характеристики

  • Начальное время
Время клиента, когда запрос отправляется серверу, длина которого 64 бита.
  • Время приема
Время сервера, когда запрос приходит от клиента, длина которого 8 бит.
  • Время отправки
Время сервера, когда запрос отправляется клиенту, длина которого 64 бита.

Формат времени

Время представляется в системе NTP 64-битным числом (8 байт), состоящим из 32-битного счётчика секунд и 32-битного счётчика долей секунды, позволяя передавать время в диапазоне 232 секунд, с теоретической точностью 2−32 секунды. Поскольку шкала времени в NTP повторяется каждые 232 секунды (136 лет), получатель должен хотя бы примерно знать текущее время (с точностью 68 лет). Также следует учитывать, что время отсчитывается с полуночи 1 января 1900 года, а не с 1970, поэтому из времени NTP нужно вычитать почти 70 лет (с учётом високосных годов), чтобы корректно совместить время с Windows или Unix-системами.

Короткий формат времени
Бит 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0 Секунды Доли секунд
Обычный формат времени
Бит 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0 Секунды
4 Доли секунд
Формат даты
Бит 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0 Номер эры
4 Отступ эры
8 Доли
16

См. также

  1. "NTP" материал из Википедии — свободной энциклопедии.
  2. "NTP серверы".