Синхронизация времени ГНСС приемниками. Сетевой протокол NTP.
Мы знаем, что ГНСС терминалы имеют функцию синхронизации времени и могут предоставлять информацию о точном времени. Современные общепринятые формы интерфейсов передачи информации о точном времени включают:
• Вывод импульса PPS с временем доставки (PPS+TOD)
• B-код
• Сетевой протокол NTP
• Сетевой протокол PTP
Ранее мы рассматривали первые два способа передачи. В данной статье описывается один из форматов передачи информации о времени: сетевой протокол NTP.
Для чего используется протокол NTP?
Ранее мы рассмотрели два способа синхронизации времени, PPS+TOD и B-код. Сигнал, передаваемый с помощью PPS – это синхроимпульс, в то время как сигнал, передаваемый B-кодом – это сигнал широтно-импульсной модуляции. Оба этих сигнала используются только для передачи на близкие расстояния.
Если нам понадобится передать время:
• Между двумя офисными зонами подразделения;
• Между двумя зданиями;
• Между двумя точками города;
• Между двумя городами страны;
• Между двумя точками на земле,
синхронизация посредством PPS и B-кода очевидно неудобна.
Так как же нам можно передать точное время? Есть иной способ передачи этой информации – сетевой протокол NTP.
Как следует из наименования, синхронизация времени по сети (NTP) использует компьютерные сети для передачи и синхронизации точного времени. В современной жизни, вне зависимости от ситуации – между двумя офисными зонами одного подразделения, между зданиями, между городами или между двумя точками в мире – можно обеспечить сетевую взаимосвязь.
Таким образом, с использованием сетевой синхронизации времени NTP, время может быть передано в любое удаленное место.
Основной принцип синхронизации NTP
На следующем рисунке изображена простейшая диаграмма принципа NTP-синхронизации. Система состоит из двух компонентов: сервер времени и клиент, напрямую соединенные сетевым кабелем.
Сервер и клиент NTP
Как синхронизируется время?
В этой системе время на сервере времени NTP – точное, но время на клиенте – нет. Существует разница между временем клиента и временем сервера.
Цель NTP: клиенту требуется синхронизировать собственное время с временем сервера.
На стороне сервера имеется собственный кварцевый генератор и собственная система часов, формирующие собственную шкалу времени. На стороне клиента также имеется собственный кварцевый генератор и собственная система часов, формирующие собственную шкалу времени.
По аналогии с электронными часами, в один и тот же момент время на двух электронных часах различное.
Допустим, что в один и тот же момент, время на сервере – Ts, а время на клиенте – Tc, тогда разница между Ts и Tc составляет △T.
Как только мы рассчитаем этот △T, мы сможем достичь цели синхронизации времени клиента с временем сервера.
Упрощенно процесс синхронизации выглядит так:
1. Вначале клиент отправляет пакет данных IP с запросом на сервер, маркируя его временем отправки Tc1 в отдельном поле пакета данных. Следует иметь ввиду, что это время отправки является временем по шкале времени клиента.
2. После получения пакета данных, сервер маркирует пакет временем получения Ts1 также в отдельном поле пакета данных. Также следует иметь ввиду, что время получения Ts1 является временем по шкале времени сервера.
3. Сервер возвращает пакет IP клиенту в качестве ответа, маркируя его временем отправки Ts2. Время Ts2 рассчитано по шкале времени сервера.
Пакет данных IP, возвращенный сервером, содержит все три отметки времени в полях пакета:
a. Время отправки пакета данных клиентом Tc1
b. Время получения пакета данных сервером Ts1
c. Время отправки пакета данных сервером Ts2
Три метки времени
4. Клиент получает отправленный сервером пакет данных, и записывает время Tc2, когда пакет данных был получен.
Таким образом, мы имеем четыре отметки времени, Tc1, Ts1, Ts2 и Tc2. При этом отметки времени Tc1 и Tc2 – по шкале времени клиента, а Ts1 и Ts2 – по шкале времени сервера.
△T нельзя рассчитать напрямую.
Ниже следует описание полей пакета данных NTP, в котором выделены три метки времени Tc1, Ts1 и Ts2, о которых было сказано выше.
Ранее мы сделали допущение, что шкала часов сервера отличается от шкалы часов клиента на △T. Предположим, что задержка передачи данных по сети от клиента к серверу – d1, а от сервера к клиенту – d2.
Тогда мы получаем следующие формулы:
Сейчас сделаем ещё одно допущение. Допустим, что задержка передачи по сети от клиента к серверу равна задержке передачи от сервера к клиенту, и двусторонняя передача симметрична, то есть d1=d2.
Решив систему из указанных выше уравнений, можем получить
Далее можно вычислить △T:
Получив значение △T, клиент наконец может синхронизировать время с сервером. Точность синхронизации по NTP Влияние сетевой среды В обсуждении принципов тайминга NTP мы предположили, что d1 = d2, что поднимает вопрос, а равнозначны ли d1 и d2 в действительности? Ответ на этот вопрос зависит от конкретной сетевой среды. В случае простейшей системы тайминга NTP, существуют только один клиент и один сервер, соединенные сетевым кабелем. Можно грубо предположить, что d1 равно d2. И точность синхронизации времени в этом случае также максимальная.
Использование NTP при прямом подключении
Существует другая ситуация, когда сервер подключен к клиентскому оборудованию через коммутатор в локальной сети. Поскольку такая сетевая топология относительно проста, и в ней не используется маршрутизация, можно также предположить, что разница между d1 и d2 очень невелика, то есть точность синхронизации времени также приемлемая.
NTP в локальных сетях
Если клиент и сервер расположены в разных районах одного города, между двумя городами или даже в разных местах планеты, сетевая топология между клиентом и сервером очень сложна и включает множество маршрутизаторов на пути от сервера к клиенту. В случае расположения сервера и клиента в разных местах планеты, пакеты данных проходят в том числе по подводным оптическим линиям связи.
Пути прохождения каждого сетевого пакета от сервера к клиенту могут быть различными, сетевая задержка может очень сильно различаться, и d1 может также сильно отличаться от d2. В таких условиях точность сетевого тайминга действительно очень низка.
NTP передается по глобальным информационным сетям
Влияние процессорной обработки
Есть и другой фактор, который оказывает влияние на точность тайминга NTP – задержка процессорной обработки.
Определенная ранее задержка d1 – это задержка сетевой передачи пакета данных от сетевого порта клиентского устройства к сетевому порту сервера, и d2 – аналогично.
Задержка передачи
Но на самом деле, время Tc1, включенное клиентом в пакет данных IP, не является временем прохождения пакета данных через сетевой порт клиента, а является временем выполнения процессором передачи данных после формирования пакета данных IP.
По аналогии, время Ts1, включенное сервером при получении пакета данных IP, не является временем поступления пакета данных на сетевой порт сервера, а является временем обработки пакета данных процессором сервера.
Вышеприведенная формула расчета тайминга NTP не принимает во внимание такие факторы, как задержка процессорной обработки и время передачи информации между компонентами внутри клиента и сервера. Эти задержки также оказывают влияние на точность тайминга NTP.
Точность тайминга NTP
Принимая во внимание эти два фактора, точность тайминга NTP определенно гораздо хуже точности тайминга PPS и точности тайминга B-кода. В общем:
Если клиент подключен напрямую к серверу сетевым кабелем, путь передачи один и тот же и стабилен, точность синхронизации NTP максимальна и может составлять 1мс.
Если клиент и сервер находятся в одной локальной сети, точность синхронизации NTP может быть менее 10мс.
Если клиент и сервер находятся в глобальной сети, точность сетевой синхронизации обычно порядка от десятков до сотен миллисекунд.
Точность синхронизации времени NTP, определенная в Основных Характеристиках приемников для синхронизации времени спутниковой навигационной системы BeiDou, следующая:
• Точность синхронизации: когда часы находятся в состоянии блокировки отслеживания, точность синхронизации при работе в режиме клиента должна соответствовать следующим критериям:
o LAN: не хуже 10ms;
o Глобальная сеть (WAN): не хуже 500ms;
o Сетевой интерфейс: RJ45;
o Поддержка протоколов: RFC 1305 (NTP) и RFC 2030 (SNTP).
Как обычные пользователи синхронизируют время с помощью NTP?
Сетевое время
Вначале необходимо определить сервер времени NTP. На самом деле, в мире существует множество свободно доступных серверов времени NTP, таких, например, как адрес публичного NTP сервера www.ntppool.org :
Вид страницы публичного сервера времени NTP
Пример: если время на вашем обычном персональном компьютере не является точным, можно также выполнить калибровку локального времени с использованием тайминга NTP.
Настройки синхронизации времени в ОС Windows
В настройках времени ОС Windows в разделе «Время по Интернету» мы можем указать адрес (URL) сервера времени и затем активировать параметр «Синхронизировать время…». Можно выбрать адрес сервера времени Microsoft, time.windows.com, или любого иного сервера времени. После завершения настройки наш компьютер будет синхронизироваться с временем указанного сервера.
Точность времени NTP по глобальным сетям имеет порядок 100 миллисекунд. Для обычных пользователей 100 мс точности времени более, чем достаточно.
А возможно ли в принципе достичь высокоточной временной синхронизации по сетям передачи данных? Например, когда требуется получить точность выше 1 микросекунды, сотен или даже десятков наносекунд? Обсудим это в следующей статье, посвященной протоколу PTP.
Источник: Блог «Коммуникации и Навигация» (通信与导航), 13.05.2025.
Перевод и адаптация: ООО «ГНСС плюс», 2025.