+ Precision Time Protocol Skrót PTP Rodzina standardów IEEE 1588, IEC 61588 Pierwsze wydanie IEEE 1588-2002 Aktualna rewizja bazowa IEEE 1588-2019 / IEC 61588:2021 Transport UDP/IPv4, UDP/IPv6, Ethernet (warstwa 2) Porty UDP 319, 320
Precision Time Protocol (PTP) – protokół precyzyjnej synchronizacji zegarów w sieciach komputerowych, zdefiniowany w rodzinie standardów IEEE 1588. Służy do rozprowadzania czasu tam, gdzie typowa synchronizacja przez NTP nie zapewnia wymaganej dokładności. Stosuje się go m.in. w sieciach lokalnych, systemach pomiarowo-sterujących, automatyce przemysłowej, telekomunikacji, elektroenergetyce i profesjonalnych systemach medialnych.
Standard rozwijany jest od 2002 roku. Aktualną wersją bazową jest IEEE 1588-2019 (nieformalnie PTPv2.1), przyjęta jako międzynarodowa publikacja IEC 61588:2021. W każdej domenie synchronizacji wybierany jest zegar odniesienia (zegar nadrzędny, ), a hierarchia zegarów zwykłych, granicznych i transparentnych jest porządkowana automatycznie algorytmem BMCA. Mechanizm synchronizacji opiera się na wymianie komunikatów z dokładnymi znacznikami czasu i pozwala wyznaczyć opóźnienie ścieżki oraz przesunięcie zegara względem zegara nadrzędnego.
Szczegółowe parametry pracy dla różnych branż określają profile, m.in. SMPTE ST 2059-2 (broadcast), AES67 (profesjonalne audio), IEEE 802.1AS (gPTP w sieciach mostkowanych), IEC/IEEE 61850-9-3 (energetyka), ITU-T G.8275.1 (telekomunikacja) oraz White Rabbit (metrologia). W sieciach ze sprzętowym znacznikowaniem czasu PTP może osiągać dokładność poniżej mikrosekundy, a w odpowiednio zaprojektowanych rozwiązaniach nawet do zakresu subnanosekundowego. Praktyczna dokładność zależy jednak od topologii, profilu, jakości zegara odniesienia, symetrii ścieżek i obsługi PTP przez przełączniki oraz inne urządzenia pośredniczące.
Historia i wersje Pierwsza wersja protokołu została opublikowana jako IEEE 1588-2002 pod tytułem Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control Systems. Jej celem było wypełnienie luki między powszechnym, ale mniej dokładnym NTP a kosztowną lub niedostępną w każdym węźle synchronizacją bezpośrednio z odbiornika GPS.
W 2008 roku opublikowano IEEE 1588-2008, zwykle nazywany PTPv2. Wersja ta rozwinęła mechanizmy wyboru zegara nadrzędnego, wprowadziła profilowanie parametrów pracy oraz zegary transparentne, ale nie jest zgodna wstecznie z PTPv1. Rewizja IEEE 1588-2019, nieformalnie określana jako PTPv2.1, zachowała zgodność z IEEE 1588-2008. Rozszerzono w niej m.in. obsługę profili, korekcję asymetrii ścieżek, raportowanie wydajności, izolację domen i mechanizmy bezpieczeństwa. Po IEEE 1588-2019 opublikowano poprawki 1588a, 1588b, 1588c, 1588d, 1588e i 1588g, dotyczące m.in. doprecyzowania BMCA, mapowania PTP na Optical Transport Network, alternatywnej terminologii ról, zarządzania kluczami GDOI oraz modułów MIB/YANG. Standard IEEE 1588-2019 został następnie przyjęty przez IEC jako IEC 61588:2021.
+ Główne wydania standardu IEEE 1588 Wydanie Rok Najważniejsze zmiany IEEE 1588-2002 2002 pierwsza wersja standardu (PTPv1); podstawowy mechanizm dwukierunkowej wymiany znaczników czasu IEEE 1588-2008 2008 PTPv2: profile, zegary transparentne, rozwinięty BMCA; brak zgodności wstecznej z PTPv1 IEEE 1588-2019 2019 PTPv2.1: poprawki BMCA, mechanizmy bezpieczeństwa, profil wysokiej dokładności, raportowanie wydajności IEC 61588:2021 2021 przyjęcie IEEE 1588-2019 jako międzynarodowego standardu IEC
Architektura zegarów PTP działa w domenach synchronizacji. W każdej domenie wybierany jest zegar odniesienia, nazywany zegarem , a pozostałe urządzenia synchronizują swoje zegary względem niego. W starszej terminologii standardu mówi się o zegarach nadrzędnych i podrzędnych, natomiast w opisach nowszych implementacji często używa się neutralnych określeń nadajnika i odbiornika czasu.
Podstawowym typem urządzenia jest zegar zwykły (), czyli węzeł z pojedynczym portem PTP, który może być źródłem czasu albo odbiorcą synchronizacji. Zegar graniczny ma więcej niż jeden port i przenosi synchronizację między segmentami sieci, działając względem jednego segmentu jako odbiorca czasu, a względem kolejnych jako jego źródło. Zegar transparentny nie staje się osobnym źródłem czasu, lecz mierzy lub uwzględnia czas przebywania komunikatów PTP w urządzeniu pośredniczącym i zapisuje tę korektę w polu korekcyjnym komunikatu. Dzięki temu możliwe jest ograniczenie wpływu przełączników i zmiennych kolejek pakietów na końcową synchronizację.
+ Typy zegarów w PTP Typ Liczba portów Rola w domenie zegar zwykły () 1 pojedynczy węzeł będący źródłem czasu lub odbiorcą synchronizacji zegar graniczny () ≥ 2 pośredniczy między segmentami sieci, dla każdego segmentu działając jako odbiorca lub źródło czasu zegar transparentny () ≥ 2 nie staje się źródłem czasu; mierzy czas przejścia komunikatów PTP i koryguje pole korekcyjne zegar w roli grandmaster ≥ 1 główny zegar odniesienia w domenie, wybrany przez BMCA; rolę tę pełni zegar zwykły lub graniczny
Wybór zegara nadrzędnego Hierarchia PTP może zostać wyznaczona automatycznie. Zegary ogłaszają swoje właściwości w komunikatach Announce, a algorytm wyboru najlepszego zegara nadrzędnego (BMCA, od ) tworzy hierarchię domeny na podstawie priorytetów administracyjnych, klasy zegara, deklarowanej dokładności, stabilności oraz unikalnego identyfikatora urządzenia. W razie pojawienia się lepszego źródła czasu hierarchia może zostać przebudowana bez zatrzymywania całej domeny synchronizacji.
BMCA rozstrzyga przede wszystkim jakość i priorytet samych zegarów, a nie wszystkie cechy sieci między nimi. Z tego powodu w projektowaniu systemu PTP znaczenie mają również rozmieszczenie zegarów granicznych i transparentnych, wybór profilu, separacja ruchu czasowego, symetria opóźnień oraz obsługa sprzętowych znaczników czasu w elementach infrastruktury.
Synchronizacja i opóźnienie ścieżki thumb|360px|Wymiana komunikatów Sync, Follow_Up, Delay_Req i Delay_Resp w PTP. Synchronizacja w PTP opiera się na wymianie komunikatów z dokładnymi znacznikami czasu. Zegar nadrzędny wysyła komunikat Sync, a w trybie dwukrokowym dodatkowy komunikat Follow_Up zawierający dokładny czas nadania. Odbiorca porównuje czas otrzymania komunikatu z własnym zegarem, a następnie bierze udział w wymianie Delay_Req i Delay_Resp, aby oszacować opóźnienie ścieżki między zegarem nadrzędnym a podrzędnym.
W klasycznym opisie wymiana składa się z czterech znaczników czasu:
T1 – moment nadania komunikatu Sync przez zegar nadrzędny; T2 – moment odebrania Sync przez zegar podrzędny; T3 – moment nadania komunikatu Delay_Req przez zegar podrzędny; T4 – moment odebrania Delay_Req przez zegar nadrzędny.
Przy założeniu symetrycznych opóźnień w obu kierunkach średnie opóźnienie ścieżki d oraz przesunięcie zegara podrzędnego względem nadrzędnego o wyznacza się ze wzorów:
Dodatnia wartość o oznacza, że zegar podrzędny wyprzedza zegar nadrzędny i powinien zostać skorygowany w tył; ujemna o – że jest opóźniony i powinien zostać skorygowany w przód. Przykładowo dla T1 = 0 ns, T2 = 120 ns, T3 = 1000 ns i T4 = 1080 ns otrzymuje się d = 100 ns oraz o = 20 ns, co odpowiada zegarowi podrzędnemu wyprzedzającemu nadrzędny o 20 ns. Dokładność wyznaczonego przesunięcia zależy od jakości znacznikowania w obu zegarach oraz od stopnia symetrii ścieżki w czasie trwania całej wymiany.
W trybie end-to-end opóźnienie wyznacza się dla całej ścieżki między zegarem podrzędnym a nadrzędnym. W trybie peer-to-peer opóźnienia mierzy się między sąsiednimi urządzeniami, co ułatwia współpracę z zegarami transparentnymi. W obu przypadkach założenie symetrii opóźnień i małych, przewidywalnych opóźnień lokalnego znacznikowania czasu jest kluczowe. Asymetria łączy, konwersje mediów, przeciążenia sieci i brak sprzętowego znacznikowania czasu mogą zauważalnie pogorszyć dokładność.
PTP zwykle operuje na skali czasu powiązanej z TAI, a zegar nadrzędny przekazuje informację o różnicy między TAI i UTC, aby urządzenia mogły wyznaczać również czas UTC. W praktyce szczegóły obsługi sekund przestępnych i epoki zależą od wersji standardu, profilu oraz implementacji.
Komunikaty i transmisja Komunikaty PTP dzielą się na komunikaty zdarzeniowe i ogólne. Do pierwszej grupy należą komunikaty, których dokładny czas nadania lub odbioru bezpośrednio wpływa na wynik synchronizacji; komunikaty ogólne przenoszą dane sterujące (wybór hierarchii, zarządzanie domeną, znaczniki czasu z trybu dwukrokowego), ale same nie wymagają tak precyzyjnego znacznikowania na granicy medium transmisyjnego.
+ Najważniejsze komunikaty PTP Komunikat Typ Rola Sync zdarzeniowy podstawowy komunikat synchronizujący, wysyłany przez zegar nadrzędny Follow_Up ogólny przenosi dokładny czas nadania Sync w trybie dwukrokowym Delay_Req zdarzeniowy żądanie pomiaru opóźnienia, wysyłane przez zegar podrzędny (tryb end-to-end) Delay_Resp ogólny zawiera czas odebrania Delay_Req przez zegar nadrzędny Pdelay_Req zdarzeniowy żądanie pomiaru opóźnienia między sąsiadami w trybie peer-to-peer Pdelay_Resp zdarzeniowy odpowiedź na Pdelay_Req, znacznikowana czasowo w trybie peer-to-peer Pdelay_Resp_Follow_Up ogólny przenosi dokładny znacznik czasu odpowiedzi Pdelay_Resp w trybie dwukrokowym Announce ogólny ogłaszanie właściwości zegara dla potrzeb BMCA Management ogólny zarządzanie konfiguracją i monitorowanie zegarów PTP Signaling ogólny negocjacja parametrów pracy między zegarami
PTP może być przenoszony przez UDP/IPv4, UDP/IPv6 albo bezpośrednio w warstwie 2 IEEE 802.3 Ethernet. Standard dopuszcza transmisję multicast, unicast oraz konfiguracje mieszane. W typowym mapowaniu UDP komunikaty zdarzeniowe używają portu 319/UDP, a komunikaty ogólne portu 320/UDP. W sieciach Ethernet ruch PTP bywa dodatkowo oznaczany priorytetem w VLAN, aby ograniczać wpływ kolejek i przeciążenia na komunikaty czasu.
Profile i zastosowania Standard IEEE 1588 definiuje mechanizmy ogólne, natomiast szczegółowe parametry pracy często ustalane są przez profile dostosowane do konkretnej branży. Profile określają m.in. tryb opóźnienia, częstotliwość komunikatów, zakres dopuszczalnych opcji, sposób wyboru transportu oraz wymagania wobec dokładności i interoperacyjności. W rewizji z 2019 roku opisano także profil wysokiej dokładności, przeznaczony dla odpowiednio zaprojektowanych sieci, w których możliwy jest transfer czasu z dokładnością lepszą niż 1 ns. Dzięki temu PTP stosuje się m.in. w aparaturze pomiarowo-sterującej, sieciach telekomunikacyjnych, energetyce, automatyce przemysłowej i systemach medialnych.
W elektroenergetyce PTP jest używany m.in. do rozprowadzania czasu w sieciach opartych na rodzinie IEC 61850 oraz do synchronizacji pomiarów synchrofazorowych. W takich zastosowaniach precyzyjny wspólny czas jest potrzebny do porównywania pomiarów wykonywanych w różnych punktach sieci energetycznej.
W profesjonalnych instalacjach audio-wideo PTP jest podstawą profili używanych do synchronizacji urządzeń nadawczych i produkcyjnych. Przykładem jest SMPTE ST 2059-2, czyli profil PTP dla zastosowań broadcastowych, kompatybilny m.in. z profilem AES67 dla sieciowego transferu profesjonalnego dźwięku. Z kolei uogólniony PTP (gPTP) z rodziny IEEE 802.1AS jest elementem sieci czasoczułych używanych w transmisji audio, wideo i sterowaniu w sieciach mostkowanych.