Перейти к содержанию

Протокол точного времени

Материал из Википедии — свободной энциклопедии

PTP (англ.  Precision Time Protocol — «протокол точного времени») — протокол, используемый для синхронизации часов по компьютерной сети. В локальных сетях он достигает точности синхронизации менее микросекунды, что обеспечивает удобство для измерительных систем и систем управления. PTP может использоваться для синхронизации финансовых транзакций[1], передач сотовых вышек[2], подводных акустических массивов[3], а также сетей, требующих точной синхронизации времени в качестве альтернативы использованию меток времени сигналов спутниковой навигации.

PTP был изначально определён как стандарт IEEE 1588—2002 с официальным названием «Стандарт протокола синхронизации точного времени для сетевых измерительных систем и систем управления» и опубликован в 2002 году. В 2008 году была выпущена новая редакция стандарта IEEE 1588—2008. В новой версии, известной как PTP Version 2, повышена точность и устойчивость, но была потеряна обратная совместимость с оригинальной версией 2002—2003 года.

IEEE 1588—2008[4] вводит понятие Transparent Clock (ТС), относящееся к сетевому оборудованию, которое используется для передачи сообщений PTP. TC изменяет содержание сообщения PTP, когда они проходят через устройство. Метки времени в сообщениях корректируются на величину времени, потраченного на прохождение через сетевое оборудование. Эта схема повышает точность раздачи времени потребителям, компенсируя изменчивость времени доставки сообщений по сети.

Согласно Джону Эйдсону, который возглавлял усилия по стандартизации IEEE 1588-2002, «IEEE 1588 разработан для заполнения ниши, недостаточно обслуживаемой двумя доминирующими протоколами, NTP и GPS. IEEE 1588 разработан для локальных систем, требующих точности, превышающей достижимую с использованием NTP. Он также разработан для приложений, которые не могут выдержать стоимость GPS-приёмника на каждом узле, или для которых сигналы GPS недоступны».[5]

PTP был изначально определён в стандарте IEEE 1588-2002, официально озаглавленном «Стандарт протокола синхронизации точного времени для сетевых измерительных систем и систем управления», и опубликован в 2002 году. В 2008 году IEEE 1588-2008 был выпущен как пересмотренный стандарт; также известный как PTP версия 2 (PTPv2), он улучшает точность, прецизионность и надёжность, но не совместим обратно с оригинальной версией 2002 года.[6] IEEE 1588-2019 был опубликован в ноябре 2019 года,[7] неофициально известен как PTPv2.1 и включает обратно совместимые улучшения к публикации 2008 года.[8]

Архитектура

[править | править код]

Стандарты IEEE 1588 описывают иерархическую архитектуру ведущий-ведомый для распределения часов, состоящую из одного или нескольких сегментов сети и одного или нескольких часов. Ordinary clock — это устройство с одним сетевым подключением, которое является либо источником, либо получателем опорного сигнала синхронизации. Источник называется ведущим (альтернативно timeTransmitter[9]), а назначение называется ведомым (альтернативно timeReceiver[9]). Boundary clock имеют несколько сетевых подключений и синхронизируют один сегмент сети с другим. Один лидер синхронизации выбирается, то есть избирается, для каждого сегмента сети. Корневой временной эталон называется grandmaster.[10]

Простейшая архитектура PTP состоит только из ordinary clock в односегментной сети без boundary clock. Grandmaster избирается, и все остальные часы синхронизируются с ним.

IEEE 1588-2008 вводит часы, связанные с сетевым оборудованием, используемым для передачи сообщений PTP. Transparent clock изменяют сообщения PTP по мере их прохождения через устройство.[11] Метки времени в сообщениях корректируются на время, затраченное на прохождение через сетевое оборудование. Эта схема улучшает точность распределения, компенсируя изменчивость времени доставки по сети.

PTP обычно использует ту же эпоху, что и время Unix (начало 1 января 1970 года; возможность профиля в IEEE 1588-2008 позволяет использовать эпохи, специфичные для приложений[12]:Annex B). В то время как время Unix основано на координированном всемирном времени (UTC) и подвержено секундам координации, PTP основан на международном атомном времени (TAI). Грандмастер PTP передаёт текущее смещение между UTC и TAI, чтобы UTC мог быть вычислен из полученного времени PTP.

Детали протокола

[править | править код]

Синхронизация и управление системой PTP достигается путём обмена сообщениями через среду связи. С этой целью PTP использует следующие типы сообщений.

  • Sync, Follow_Up, Delay_Req и Delay_Resp сообщения используются ordinary и boundary часами и передают информацию, связанную со временем, используемую для синхронизации часов по сети.
  • Pdelay_Req, Pdelay_Resp и Pdelay_Resp_Follow_Up используются transparent часами для измерения задержек по среде связи, чтобы они могли быть скомпенсированы системой. Transparent clock и связанные с ними сообщения недоступны в оригинальном стандарте IEEE 1588-2002 PTPv1 и были добавлены в PTPv2.
  • Announce сообщения используются алгоритмом выбора лучшего мастера в IEEE 1588-2008 для построения иерархии часов и выбора grandmaster (в IEEE 1588-2002 информация, передаваемая сообщениями Announce, передаётся в сообщениях Sync. В IEEE 1588-2008 сообщение Sync было оптимизировано, и эта информация больше не передаётся здесь).
  • Management сообщения используются сетевым управлением для мониторинга, конфигурации и обслуживания системы PTP.
  • Signaling сообщения используются для некритичных по времени коммуникаций между часами. Сообщения Signaling были введены в IEEE 1588-2008.

Сообщения классифицируются как событийные и общие сообщения. Событийные сообщения критичны по времени в том смысле, что точность передачи и точность меток времени получения напрямую влияют на точность распределения часов. Sync, Delay_Req, Pdelay_Req и Pdelay_resp являются событийными сообщениями. Общие сообщения — это более обычные блоки данных протокола в том смысле, что данные в этих сообщениях важны для PTP, но их метки времени передачи и получения не важны. Announce, Follow_Up, Delay_Resp, Pdelay_Resp_Follow_Up, Management и Signaling сообщения являются членами класса общих сообщений.[12]:Clause 6.4

Алгоритм выбора лучшего мастера

[править | править код]

Алгоритм выбора лучшего мастера (BMCA) выполняет распределённый выбор лучших часов для действия в качестве лидера на основе следующих свойств часов:

  • Идентификатор — универсально уникальный числовой идентификатор часов. Обычно он строится на основе MAC-адреса устройства.
  • Качество — обе версии IEEE 1588 пытаются количественно оценить качество часов на основе ожидаемого отклонения времени, технологии, используемой для реализации часов.
  • Приоритет — административно назначенная подсказка приоритета, используемая BMCA для помощи в выборе grandmaster для домена PTP. IEEE 1588-2002 использовал одну булеву переменную для указания приоритета. IEEE 1588-2008 имеет два 8-битных поля приоритета.
  • Дисперсия — оценка часов их стабильности на основе наблюдения их производительности относительно эталона PTP.

IEEE 1588-2008 использует иерархический алгоритм выбора на основе следующих свойств в указанном порядке:[12]:Figure 27

  1. Приоритет 1 — пользователь может назначить конкретный статически определённый приоритет каждым часам, предварительно определяя приоритет среди них. Меньшие числовые значения указывают на более высокий приоритет.
  2. Класс — каждые часы являются членом данного класса, каждый класс получает свой приоритет.
  3. Точность — точность между часами и UTC, в наносекундах (нс)
  4. Дисперсия — изменчивость часов
  5. Приоритет 2 — окончательно определённый приоритет, определяющий порядок резервирования в случае, если другие критерии были недостаточны. Меньшие числовые значения указывают на более высокий приоритет.
  6. Уникальный идентификатор — выбор на основе MAC-адреса используется как тай-брейкер, когда все другие свойства равны.

IEEE 1588-2002 использует алгоритм выбора на основе аналогичных свойств.

Свойства часов рекламируются в сообщениях Sync IEEE 1588-2002 и в сообщениях Announce IEEE 1588-2008. Текущий лидер передаёт эту информацию через регулярные интервалы. Часы, которые считают себя лучшим лидером, будут передавать эту информацию, чтобы вызвать смену лидера. Как только текущий лидер распознаёт лучшие часы, текущий лидер прекращает передачу сообщений Sync и связанных свойств часов (сообщений Announce в случае IEEE 1588-2008), и лучшие часы берут на себя роль лидера.[13] BMCA учитывает только самообъявленное качество часов и не принимает во внимание качество сетевых ссылок.[14]

Примечания

[править | править код]
  1. ↑ Oehler, Erik. The Significance of Accurate Timekeeping and Synchronization in Trading Systems (амер. англ.). Safran - Navigation & Timing (19 июля 2023). Дата обращения: 3 декабря 2025. Архивировано 3 декабря 2025 года.
  2. ↑ Celona PTP Guidelines and Best Practices | Celona Help Center (англ.). docs.celona.io. Дата обращения: 3 декабря 2025. Архивировано 3 декабря 2025 года.
  3. ↑ Wei, Zhengrong; Pei, Yanliang; Zhu, Xiangqian; Liu, Kai; Zhang, Xiaobo; Zong, Le; Li, Xinyu (29 июля 2024). A high-precision positioning method for deep-towed multichannel seismic arrays. Frontiers in Marine Science (англ.). 11 1351327. Bibcode:2024FrMaS..1151327W. doi:10.3389/fmars.2024.1351327. ISSN 2296-7745.
  4. ↑ IEEE 1588 (англ.). NIST (24 июня 2010). Дата обращения: 20 сентября 2021. Архивировано 30 сентября 2020 года.
  5. ↑ Eidson, John C. Measurement, Control and Communication Using IEEE 1588. — Springer, April 2006. — ISBN 978-1-84628-250-8.
  6. ↑ Eidson, John. IEEE 1588 Standard Version 2 - A Tutorial (2 октября 2006). Дата обращения: 12 июня 2008. Архивировано из оригинала 31 марта 2010 года.
  7. ↑ 1588-2019 - IEEE Approved Draft Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control Systems. IEEE. Дата обращения: 15 февраля 2020. Архивировано 31 января 2022 года.
  8. ↑ Douglas Arnold. What's coming In the Next Edition of IEEE 1588? (24 сентября 2017). Дата обращения: 15 февраля 2020. Архивировано 8 марта 2021 года.
  9. 1 2 IEEE 1588g-2022 Amendment 2: Master-Slave Optional Alternative Terminology, IEEE, 3 декабря 2022
  10. ↑ Meanings of common terms used in IEEE 1588. National Institute of Standards and Technology. Дата обращения: 19 мая 2006. Архивировано из оригинала 27 мая 2010 года.
  11. ↑ AN-1838 IEEE 1588 Boundary Clock and Transparent Clock Implementation Using the DP83640. ti.com. Texas Instruments. Дата обращения: 17 июля 2019. Архивировано 16 мая 2018 года.
  12. 1 2 3 IEEE Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control Systems, IEEE, 24 июля 2008, doi:10.1109/IEEESTD.2008.4579760, ISBN 978-0-7381-5400-8
  13. ↑ Watt, Steve T.; Achanta, Shankar; Abubakari, Hamza; Sagen, Eric (Март 2014), Understanding and Applying Precision Time Protocol (PDF), Дата обращения: 9 сентября 2017
  14. ↑ FSMLabs Technical Staff (Сентябрь 2015), Smart and Dumb PTP Client and the "so-called" Best Master Clock Algorithm, Архивировано 18 мая 2018, Дата обращения: 17 мая 2018