Введение

Протокол синхронизации сетевого времени

Протокол точного времени (PTP) — это протокол, используемый для синхронизации часов в компьютерной сети. В локальной сети он достигает точности часов в диапазоне долей микросекунды, что делает его подходящим для систем измерений и управления. PTP применяется для синхронизации финансовых транзакций, передач данных с вышек сотовой связи, подводных акустических систем и сетей, требующих точной синхронизации, но не имеющих доступа к сигналам спутниковой навигации. Первая версия PTP, IEEE 1588 2002, была опубликована в 2002 году. IEEE 1588 2008, также известный как PTP версия 2, не обеспечивает обратную совместимость с версией 2002 года. IEEE 1588 2019 был опубликован в ноябре 2019 года и включает в себя улучшения, обратно совместимые с публикацией 2008 года. IEEE 1588 2008 включает в себя концепцию профилей, определяющую параметры и опции работы PTP. Для различных областей применения, включая телекоммуникации, распределение электроэнергии и аудиовизуальные системы, разработано несколько профилей. Является адаптацией PTP для использования с технологиями Audio Video Bridging и Time Sensitive Networking.

История

По словам Джона Эйдсона, возглавлявшего работу по стандартизации IEEE 1588 2002 года, "IEEE 1588 разработан для заполнения ниши, которую недостаточно хорошо обслуживают два доминирующих протокола – NTP и GPS. IEEE 1588 предназначен для локальных систем, которым требуется точность, недостижимая при использовании NTP. Он также разработан для приложений, где стоимость GPS-приемника на каждом узле является непомерной, или где сигналы GPS недоступны". PTP был впервые определен в стандарте IEEE 1588 2002 года, официально озаглавленном "Стандарт протокола прецизионной синхронизации часов для сетевых систем измерений и управления", и опубликованном в 2002 году. В 2008 году был выпущен пересмотренный стандарт IEEE 1588 2008; также известный как PTP версия 2 (PTPv2), он повышает точность, прецизионность и устойчивость, но не обеспечивает обратную совместимость с оригинальной версией 2002 года. IEEE 1588 2019 был опубликован в ноябре 2019 года, его неофициальное название – PTPv2.1, и он включает в себя улучшения, совместимые с публикацией 2008 года.

Архитектура

Стандарты IEEE 1588 описывают иерархическую архитектуру «главный-подчиненный» для распределения времени. В соответствии с этой архитектурой, система распределения времени состоит из одного или нескольких каналов связи (сетевых сегментов) и одного или нескольких часов. Обычный час – это устройство с одним сетевым подключением, которое является источником (главный или лидер) или получателем (подчиненный или ведомый) опорного сигнала синхронизации. Граничный час имеет несколько сетевых подключений и может точно синхронизировать один сегмент сети с другим. Для каждого сегмента сети в системе выбирается главный час синхронизации. Корневой опорный сигнал времени называется главным синхронизатором (grandmaster). Главный синхронизатор передает информацию о синхронизации часам, находящимся в его сегменте сети. Граничные часы, присутствующие в этом сегменте, затем передают точное время другим сегментам, к которым они также подключены. Упрощенная система PTP часто состоит из обычных часов, подключенных к одной сети, и не использует граничные часы. Выбирается главный синхронизатор, и все остальные часы синхронизируются непосредственно с ним. IEEE 1588 2008 вводит часы, связанные с сетевым оборудованием, используемым для передачи PTP-сообщений. Прозрачные часы изменяют PTP-сообщения по мере их прохождения через устройство. Временные метки в сообщениях корректируются с учетом времени, затраченного на прохождение через сетевое оборудование. Эта схема повышает точность распределения, компенсируя вариативность задержки в сети. PTP обычно использует ту же эпоху, что и время Unix (начало 1 января 1970 года). В то время как время Unix основано на Координированном универсальном времени (UTC) и подвержено вставке високосных секунд, PTP основано на Международном атомном времени (TAI). Главный синхронизатор PTP сообщает текущее смещение между UTC и TAI, чтобы можно было вычислить UTC из полученного времени PTP.

Подробности протокола

Синхронизация и управление системой PTP достигаются посредством обмена сообщениями по каналу связи. Для этого PTP использует следующие типы сообщений. Сообщения Sync, Follow Up, Delay Req и Delay Resp используются обычными и граничными часами для передачи информации о времени, необходимой для синхронизации часов в сети. Сообщения Pdelay Req, Pdelay Resp и Pdelay Resp Follow Up используются прозрачными часами для измерения задержек в канале связи, чтобы система могла их компенсировать. Прозрачные часы и связанные с ними сообщения отсутствовали в оригинальном стандарте IEEE 1588 2002 (PTPv1) и были добавлены в PTPv2. Сообщения Announce используются алгоритмом выбора лучшего главного часов (best master clock) в IEEE 1588 2008 для построения иерархии часов и выбора главного часов (grandmaster). Управляющие сообщения используются для мониторинга, настройки и обслуживания системы PTP средствами управления сетью. Сигнальные сообщения используются для некритичной ко времени связи между часами. Сигнальные сообщения были введены в IEEE 1588 2008. Сообщения классифицируются на событийные и общие. Событийные сообщения критичны ко времени, поскольку точность передачи и временные метки приема напрямую влияют на точность распространения времени. Sync, Delay Req, Pdelay Req и Pdelay Resp являются событийными сообщениями. Общие сообщения представляют собой более традиционные протокольные данные, в которых данные важны для PTP, но их временные метки передачи и приема не имеют значения. Сообщения Announce, Follow Up, Delay Resp, Pdelay Resp Follow Up, Management и Signaling относятся к классу общих сообщений. Однако в IEEE 1588 2008 эта поддержка была расширена и включила IPv6. Алгоритм BMC учитывает только заявленное часами качество и не принимает во внимание качество сетевых соединений.