ptp протокол что это
IEEE 1588 Precision Time Protocol (PTP)
Введение
«Протокол точного времени» описан стандартом IEEE 1588. Существует 2 версии стандарта. Первая версия вышла в 2002 году, затем стандарт был пересмотрен в 2008 и на свет вышел протокол PTPv2. Обратная совместимость не была сохранена.
Я работаю со второй версией протокола, в ней множество улучшений по сравнению с первой (точность, стабильность, как нам сообщает wiki). Не буду приводить сравнения с NTP, одно только упоминание о точности синхронизации, а точность PTP достигает действительно десятков наносекунд при «железной» поддержке, говорит о преимуществе перед NTP.
«Железная» поддержка протокола в разных устройствах может быть реализована по-разному. На самом деле минимум, требующийся для реализации PTP – умение «железки» проставлять таймштамп момента получения сообщения на порт. Проставленное время будет использовано для вычисления ошибки.
Почему часы расстраиваются?
Ошибки могут появиться отовсюду. Начнем с того, что генераторы частоты в устройствах разные и очень мала вероятность того, что два разных устройства будут работать идеально такт в такт. Тут же можно приписать постоянно меняющиеся условия окружающей среды, влияющие на генерируемую частоту.
Чего мы добиваемся?
Разница чисто программной реализации и реализации с «железной поддержкой»
Чисто программная реализация не позволит добиться обещаемой точности. Время, прошедшее с момента получения сообщения (точнее получения сигнала на прием сообщения в устройстве) до перехода на точку входа в прерывание или на callback не может быть строго определенным. «Умные железки» с поддержкой PTP умеют проставлять эти таймштампы самостоятельно (например, чипы от Micrel, как раз для KSZ8463MLI я пишу драйвер).
Помимо таймштампов к «железной» поддержке также можно отнести умение настраивать кварцевый генератор (чтобы выровнять частоту с мастером), либо возможность подстройки часов (каждый такт увеличивать значение часов на X нс). Об этом ниже.
Перейдём к стандарту IEEE 1588
Стандарт описан аж на 289 страницах. Рассмотрим минимум, необходимый для реализации протокола. PTP является клиент-серверным протоколом синхронизации, т.е. для реализации протокола требуется как минимум 2 устройства. Итак, Master-устройство — атомные часы, а Slave устройство – часы, которые необходимо заставить работать точно.
Язык обмена
Announce message – сообщение анонса, содержит информацию, отправляемую мастером всем Slave устройствам. Slave устройство с помощью этого сообщения может выбрать лучшего мастера (для этого существует BMC (Best Master Clock)) алгоритм. BMC не так интересен. Этот алгоритм можно легко найти в стандарте. Выбор идет по таким полям сообщения как точность, дисперсия, класс, приоритет и т.п. Перейдём к другим сообщениям.
Sync/Follow Up, DelayResp, PDelayResp/PDelayFollowUp – отправляются мастером, ниже рассмотрим их поподробнее.
DelayReq, PDelayReq – запросы Slave устройств.
Как видим, Slave устройство не многословно, Master предоставляет всю практически всю информацию сам. Отправка осуществляется на Multicast (при желании можно использовать Unicast режим) адреса, строго определенные в стандарте. Для PDelay сообщений имеется отдельный адрес (01-80-C2-00-00-0E для Ethernet и 224.0.0.107 для UDP). Остальные сообщения отсылаются на 01-1B-19-00-00-00 или 224.0.1.129. Пакеты отличаются полями ClockIdentity (идентификатор часов) и SequenceId (идентификатор пакета).
Сеанс работы
С помощью такого сеанса обмена, который показан выше, можно добиться успеха только в случае, если кварц генерирует идеально одинаковые частоты для синхронизируемых устройств. На деле же получается что частота часов разная, т.е. на одном устройстве за 1 секунду значение часов увеличится на 1 секунду, а на другом, например, на 1.000001 секунду. Отсюда появляется расхождение часов.
В стандарте описан пример вычисления отношения времени, прошедшего на Master и на Slave за определенный интервал. Это отношение будет являться коэффициентом для частоты Slave устройства. Но при этом есть указание, что подстройка может осуществляться различными способами. Рассмотрим два из них:
Для второго способа требуется вычисление ∆t. ∆t – величина, которая будет складываться со значением времени каждый определенный интервал. На рисунке можно заметить, что в то время как на мастере прошло 22 – 15 = 7 секунд, на Slave прошло 75+(87-75)/2 –(30+ (37-30)/2) = 47.5
Частота – частота процессора, например, 25МГц — цикл процессора длится 1/(25*10 6 ) = 40нс.
В зависимости от возможностей устройства выбирается наиболее подходящий способ.
Чтобы перейти к следующему разделу, выразим смещение немного по-другому:
Режимы работы PTP
Ошибка времени доставки
Стандарт описывает реализацию протокола в различных типах сетей. Я использовал Ethernet сеть, и получал сообщения на Ethernet уровне. В таких сетях время доставки пакета постоянно меняется (особенно заметно, когда работаешь с наносекундной точностью). Для того чтобы отфильтровать эти значения применяются различные фильтры.
Семь вопросов о протоколе PTP, после которых в нём разберётся каждый
Что такое PTP?
PTP, также известный как IEEE 1588v2, является протоколом точной синхронизации времени, функционирующим по сети Ethernet. Высокая точность синхронизации конечных устройств по времени достигается благодаря проставлению меток времени на аппаратном уровне и расчёту временных задержек прохождения сообщений синхронизации времени через устройства сети. Некоторым образом протокол PTP похож на хорошо известный протокол NTP (Network Time Protocol), однако, в отличие от последнего, способен обеспечивать погрешность, не превышающую одной микросекунды.
Как работает PTP?
Как и протокол NTP, протокол PTP использует взаимный информационный обмен между устройствами сети для обеспечения точной временной синхронизации конечных устройств. Согласно рис. 1, в начале процедуры синхронизации ведущие часы отправляют сообщение синхронизации времени (SYNC) в сеть. В зависимости от настроек это сообщение может быть либо одноадресным (unicast, т. е. иметь одного адресата), либо многоадресным (multicast, т. е. иметь группу адресатов). При этом фиксируется метка времени отправки данного сообщения на соответствующем порту ведущих часов. Сообщение синхронизации времени включает в себя точную метку времени в формате TAI (Temps Atomique International, международное атомное время) и метку времени TS1 отправки сообщения синхронизации времени ведущими часами, зафиксированную с погрешностью менее 100 нс.
Рис. 1. Иллюстрация принципа работы протокола PTP.
Ведомое устройство принимает сообщение синхронизации времени и присваивает ему метку времени TS2 (причём ещё до момента его обработки) и отправляет сообщение обратно в адрес ведущих часов, фиксируя метку времени отправки TS3. Это сообщение, отправляемое в адрес ведущих часов, называется сообщением типа Delay Request (запрос задержки передачи сообщения синхронизации времени по сети).
Ведущие часы получают сообщение типа Delay Request, фиксируя метку времени его получения TS4, и отправляют назад сообщение-ответ типа Delay Response, в которое включена метка времени TS4.
Рис. 2. Одно из исполнений сервера времени с поддержкой протокола PTP (производство компании Tekron). На рынке подобные устройства в различных исполнениях (для монтажа и в стойку, и на DIN-рейку) выпускают также Meinberg, «Метроном», RuggedCom — Siemens и другие компании.
Ведомые часы теперь имеют информацию о метках времени TS1-TS4. По этим данным вычисляются время обработки сообщений устройствами и сетевая задержка передачи сообщений между ведущим и ведомым устройством.
Использует ли PTP метки времени UTC?
Протокол PTP использует временной формат TAI.
По сути, TAI является основной для формата UTC (к последнему добавляются високосные секунды через неравные промежутки времени, чтобы компенсировать замедление вращения Земли).
Для многих применений это не имеет никакого значения, поскольку ведомые часы PTP автоматически корректируют свое время в соответствии с форматом UTC (или локального времени). На самом деле, вряд ли вне формата сообщений PTP можно встретить ситуацию, когда конечное устройство представляет время в формате TAI.
Что делает PTP таким точным?
Для обеспечения погрешности синхронизации времени в микросекундном диапазоне PTP опирается на проставление меток времени на аппаратном уровне.
Устройство с поддержкой протокола PTP всегда проставляет метку времени согласно TAI каждому входящему сообщению на соответствующем порту — это делается еще до обработки пакета. За счёт того, что проставление метки времени осуществляется на аппаратном уровне, программные задержки в части обработки сообщений перестают иметь значение.
Для многих устройств с поддержкой протокола PTP погрешность проставления метки времени не превышает 100 нс на уровне порта. При отправке сообщения ему проставляется метка времени физического перенаправления информации портом. Во многих случаях метка времени добавляет к пакету «на лету», т. е. в самый последний момент времени перенаправления кадра.
Обязательным условием для обеспечения высокой точности синхронизации устройств по времени согласно протоколу PTP является использованием специальных коммутаторов в сети. При прохождении сообщений типа Sync через эти коммутаторы последние фиксируют время поступления и перенаправления кадров для обеспечения возможности компенсации задержек на конечном устройстве.
Рис. 3. На фото коммутатор фирмы RuggedCom — Siemens (модель RSG-2488), обладающий поддержкой протокола PTP. Такие устройства есть в линейках MOXA, Hirschmann, Symanitron и других компаний.
За счёт проставления точных меток времени прихода и ухода сообщений с портов устройств измеряется время распространения сообщений по сети. Когда сообщение поступает на конечное устройство, оно имеет информацию о том, когда сообщение было отправлено с ведущих часов и сколько времени потребовалось сообщению, чтобы поступить на ведомое устройство. Затем эти данные используются для вычисления текущего времени с погрешностью 1 мкс и менее.
Что такое профиль PTP?
Профиль PTP — это набор настроек протокола в соответствии с определенной спецификацией.
Например, профиль протокола может специфировать передачу сообщений синхронизации времени в режиме многоадресной рассылки (multicast) и предназначаться для использования в локальных сетях. Телекоммуникационный профиль, наоборот, может потребовать работы в режиме одноадресной рассылки (unicast) и быть предназначенным для распределения сообщений по разветвленным сетям. Каждый профиль может отличаться не только коммуникационной частью, но и структурой сообщений. Для успешной синхронизации по времени ведомые и ведущие часы должны иметь поддержку одного и того же профиля.
Рис. 4. Профиль протокола PTP для использования в системах на основе стандарта МЭК 61850 определён стандартом «Communication networks and systems for power utility automation — Part 9-3: Precision time protocol profile for power utility automation».
Что происходит при наличии в сети нескольких ведущих часов?
В рамках протокола PTP предусмотрено наличие специального алгоритма определения наилучших часов (BMCA — Best Master Clock Algorithm). После ввода в работу системы этот алгоритм функционирует на всех часах сети на постоянной основе. Он определяет, какие из часов готовы наилучшим образом исполнить функцию мастера в данный момент времени.
Алгоритм BMCA анализирует специальные сообщения типа Announce, формируемые, как правило, раз в секунду ведущими часами системы. Используя эти сообщения, ведущие часы сообщают всем другим устройствам сети, что они исправны и предоставляют информацию о текущей погрешности их функционирования. Ведомые часы и другие часы системы обрабатывают эти сообщения. Если погрешность ведущих часов увеличивается, например в связи с потерей сигнала GPS, другие часы системы, понимая, что обладают более высокой точностью, начинают сообщать о своём присутствии, формируя сообщения типа Announce.
После этого все часы системы начинают конкурировать друг с другом за получение статуса ведущих часов. В рамках этой конкуренции они производят сравнение погрешностей, анализируют источники синхронизации и настройки приоритета, заданные пользователем при конфигурировании системы. Если все часы имеют равнозначные характеристики и параметры, ведущими становятся часы со страшим MAC-адресом.
В больших сетях с несколькими часами появляется возможность обеспечить многократное резервирование.
Резервирование обеспечит условие наличия синхронизации времени в системе при отказе ведущих часов. Резервные часы зафиксируют отсутствие сообщений типа Announce и начнут сообщать о своём присутствии. Меньше чем за минуту новые часы примут на себя роль ведущих, минимизируя временной интервал отсутствия сообщений синхронизации времени.
Стоит ли переходить на использование PTP, если требуется высокая точность синхронизации времени?
С увеличением объема применения протокола PTP и со снижением стоимости оборудования, поддерживающего данный протокол, придёт время, когда его реализация станет экономически целесообразней, нежели внедрение альтернативных решений, опирающихся на использование выделенных линий связи (например, IRIG-B).
При этом следует помнить, что протокол PTP не только обеспечивает сверхточную временную синхронизацию, но также позволяет обеспечить резервирование в системе обеспечения единого времени (за счёт наличия резервных часов, возможности использования в сетях PRP/HSR и т. д.) и допускает использование Ethernet-сетей, которые тоже используются для передачи информации.