ptp hardware timestamp что это
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 (Precision Time Protocol) высокоточный протокол синхронизации времени + тестовый код режима CS
Precision Time Protocol (PTP)
Что такое PTP
Основное отличие от НТП: PTP реализован на аппаратном уровне, а NTP реализован на прикладном уровне.
PTPv2 использует механизм относительной синхронизации времени. Участник выбран в качестве главного таймера, который будет отправлять информацию о синхронизации ведомым. Мастер отправит сообщение синхронизации в сеть. Все ведомые рассчитывают задержку.
Fig. 39.1 PTP Synchronization Protocol
The PTP synchronization in the sample application works as follows:
Во-вторых, некоторые условия PTP
Узлы в домене PTP называются узлами синхронизации.Протокол PTP определяет следующие три типа основных узлов синхронизации:
OC (Обычные часы): часы только одного порта связи PTP являются обычными часами.
BC (Boundary Clock): часы с более чем одним коммуникационным портом PTP.
TC (Transparentclock): по сравнению с BC / OC BC / OC необходимо синхронизировать время с другими узлами часов, в то время как TC не синхронизирует время с другими узлами часов. TC имеет несколько портов PTP, но он только пересылает пакеты протокола PTP между этими портами и корректирует задержку пересылки, а также не синхронизирует время через какой-либо один порт. ТС включает в себя следующие два типа:
E2ETC (сквозные прозрачные часы): прямая пересылка пакетов протокола не P2P (Peer-to-Peer, точка-точка) в сети, и Участвуйте в расчете задержки всей ссылки.
P2PTC (Peer-to-PeerTransparent Clock): только напрямую пересылает сообщения синхронизации, сообщения Follow_Up и сообщения Announce, а также завершает другие сообщения протокола PTP и Участвуйте в расчете задержки каждой ссылки на всю ссылку.
P2P-сеть общей цепочки выбирает E2E-TC и рассматривает P2P-TC из сети с большим количеством тактовых узлов. В механизме измерения задержки P2P взаимодействие сообщения задержки выполняется между двумя портами каждой линии связи, и главные часы имеют только взаимодействие сообщения задержки с напрямую подключенным сетевым коммутационным оборудованием. Следовательно, в P2P TC, В механизме измерения задержки нет ограничений на количество ведомых часов.
Главные часы: в подсети связи PTP может быть только один главный тактовый генератор.
В-третьих, сообщение PTP
Протокол PTP определяет четыре типа многоадресных сообщений и управляющих сообщений, включая сообщения синхронизации (Sync), последующие сообщения (Follow_up), сообщения запроса на задержку (Delay_Req), сообщения ответа на задержку (Delay_Resp) и управление. сообщение.
Существует два типа сообщений: общее сообщение и сообщение о событии. Последующее сообщение и сообщение с задержкой ответа являются общими сообщениями. Общее тело сообщения не выполняет обработку отметки времени. Оно может содержать точную информацию о времени отправки или получения сообщения о событии. Сообщения синхронизации и сообщения с запросом на задержку являются сообщениями о событиях. Сообщения о событиях чувствительны ко времени и должны иметь отметку с точной отметкой времени.
Сообщение синхронизации отправляется периодически от главных часов (обычно каждые две секунды). Оно содержит атрибуты часов, требуемые алгоритмом главных часов, и содержит метку времени, которая точно описывает ожидаемое время пакета данных, который должен быть отправлен.
Перед отправкой пакета синхронизации оборудование не может отправить время пакета синхронизации напрямую, а после отправки синхронизации оборудование может отправить время синхронизации.
исходный код ptpd [2] Реализация в net.c:
netSendPcapEther-> sendto или pcap_inject
getTxTimestamp Получите точное время отправки
Эксперименты в локальной сети
Пять, код теста режима CS
Используйте режим CS для реализации следующего псевдо-протокола PTP:
Интеллектуальная рекомендация
[MyBatis] О кеше
Уровень 1 кеш (локальный кеш) По умолчанию он всегда включен. Он действителен после запроса из Mapper и помещения в локальный. Он действителен в сеансе. Например, объект 01 отправляет sql, объект 02 т.
Операционные системы Astra Linux
Оперативные обновления и методические указания
Операционные системы Astra Linux предназначены для применения в составе информационных (автоматизированных) систем в целях обработки и защиты 1) информации любой категории доступа 2) : общедоступной информации, а также информации, доступ к которой ограничен федеральными законами (информации ограниченного доступа).
1) от несанкционированного доступа;
2) в соответствии с Федеральным законом от 27.07.2006 № 149-ФЗ «Об информации, информационных технологиях и о защите информации» (статья 5, пункт 2).
Операционные системы Astra Linux Common Edition и Astra Linux Special Edition разработаны коллективом открытого акционерного общества «Научно-производственное объединение Русские базовые информационные технологии» и основаны на свободном программном обеспечении. С 17 декабря 2019 года правообладателем, разработчиком и производителем операционной системы специального назначения «Astra Linux Special Edition» является ООО «РусБИТех-Астра».
На web-сайтах https://astralinux.ru/ и https://wiki.astralinux.ru представлена подробная информация о разработанных операционных системах семейства Astra Linux, а также техническая документация для пользователей операционных систем и разработчиков программного обеспечения.
Мы будем признательны Вам за вопросы и предложения, которые позволят совершенствовать наши изделия в Ваших интересах и адаптировать их под решаемые Вами задачи!
Репозитория открытого доступа в сети Интернет для операционной системы Astra Linux Special Edition нет. Операционная система распространяется посредством DVD-дисков.
Информацию о сетевых репозиториях операционной системы Astra Linux Common Edition Вы можете получить в статье Подключение репозиториев с пакетами в ОС Astra Linux и установка пакетов.
В целях обеспечения соответствия сертифицированных операционных систем Astra Linux Special Edition требованиям, предъявляемым к безопасности информации, ООО «РусБИтех-Астра» осуществляет выпуск очередных и оперативных обновлений.
Очередные обновления (версии) предназначены для:
Оперативные обновления предназначены для оперативного устранения уязвимостей в экземплярах, находящихся в эксплуатации, и представляют собой бюллетень безопасности, который доступен в виде:
Ввиду совершенствования нормативно-правовых документов в области защиты информации и в целях обеспечения соответствия информационных актуальным требованиям безопасности информации, а также обеспечения их долговременной эксплуатации, в том числе работоспособности на современных средствах вычислительной техники, рекомендуется на регулярной основе планировать проведение мероприятий по применению очередных и оперативных обновлений операционной системы.
Семь вопросов о протоколе 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-сетей, которые тоже используются для передачи информации.
Синхронизация точного времени. Стандарт IEEE 1588.
Синхронизация времени в промышленных сетях необходима для согласования работы устройств и приложений, осуществляющих обработку данных в режиме реального времени. Помимо этого, синхронизация требуется в системах мониторинга и управления с целью протоколирования возникающих событий и своевременного реагирования на них.
В зависимости от решаемых задач, могут потребоваться разные уровни точности синхронизации времени. Так одной из наиболее чувствительных к точности времени систем является система автоматизации на энергетических подстанциях. Современная система автоматизации подстанции описана в стандарте МЭК 61850, в котором указано, что точность синхронизации времени на шине процессов должна быть не хуже 1 мкс.
Существует несколько методов синхронизации времени.
1. Односторонний метод
Часы Master отправляют информацию о времени на часы Slave. Последние используют полученные данные, учитывая задержку на передачу информации, для синхронизации времени. Задержка может быть измерена или рассчитана. Данный метод может быть использован только в тех системах, где сеть передачи данных и путь от часов Master к часам Slave не меняются, в противном случае при синхронизации времени будет неверно учтена задержка. При использовании этого метода следует учесть, что в любой системе могут возникнуть какие-либо помехи и шумы, которые повлияют на время передачи информации от мастера, но, так как связь односторонняя, отследить дополнительные задержки невозможно.
2. Двусторонний метод
Данный метод использует двустороннее соединение между часами Master и Slave. Это необходимо, чтобы динамически определять задержку на передачу данных при синхронизации по сети. Master и Slave обмениваются сообщениями с метками времени, после чего рассчитывается задержка, которая учитывается при синхронизации времени на устройствах.
Помимо отличий в методах синхронизации, разделяют еще и типы сетевых инфраструктур.
Выделенная и конвергентная сети
В выделенной сети для синхронизации времени используют выделенную линию передачи данных. В такой сети используют методы синхронизации времени 1PPS и IRIG-B.
В конвергентной сети синхронизация времени происходит по тем же каналам, по которым передается весь остальной трафик системы. Для подобных систем используют протоколы синхронизации времени NTP, SNTP и PTP.
Кроме того, в отдельную группу можно отнести системы синхронизации от орбитальных спутников – например, GPS/ГЛОНАС.