2. Synchronizacja czasu

Synchronizacja czasu ma coraz to większe znaczenie, głównie za sprawą rozwoju Internetu i komputeryzacji życia. Zakupy w sklepach internetowych, operacje na giełdzie, terminy urzędowe i wiele innych wymaga precyzyjnego określania czasu. W takich przypadkach wystarczająca jest dokładność na poziomie milisekund. Okazuje się jednak, że taka dokładność nie jest wystarczająca, szczególnie w niektórych rozwiązaniach telekomunikacyjnych, w których nanosekundowa, a nawet dokładniejsza precyzja określania czasu jest wymagana.  

 

 

Rys. 4.1. Czas referencyjny a czas rzeczywisty

W uproszczeniu można powiedzieć, że czas jest zsynchronizowany, jeżeli zegary w dowolnej lokalizacji pokazują dokładnie to samo, to tak jakby wszystkie zegary na świecie pokazywały idealnie ten sam czas.  Osiągnięcie stanu synchronizacji czasu wymaga najpierw ustawienia wszystkich zegarów na ten sam czas. Zegary mają własne i niezależne wzajemnie układy taktowania, a to oznacza, że odmierzane przez nie czasy stopniowo mniej lub bardziej będą się różnić. Ilustruje to rysunek 4.1, na którym idealnie upływający czas jest reprezentowany przez półprostą oznaczoną jako czas referencyjny (czas odniesienia) Tref , a czas odmierzany przez jakiś przykładowy zegar jest reprezentowany krzywą T. Synchronizacja czasu polega na stałym korygowaniu pracy zegara, tak, by różnica w odniesieniu do zegara referencyjnego  była jak najmniejsza. Jeżeli zegar pracuje z dokładnością, np. 100 μs, to nigdy różnica, ta co do wartości bezwzględnej nie będzie większa od 100 μs. Ponieważ lokalizacja zegara referencyjnego jest inna niż lokalizacje pozostałych zegarów to zsynchronizowanie ich z zegarem referencyjnym wymaga przesyłania w jakiś sposób odpowiednich informacji/sygnałów wykorzystywanych do synchronizacji czasu. Precyzyjna synchronizacja czasu wymaga by przesyłając informacje o czasie z zegara referencyjnego uwzględniać również wpływ opóźnienia wprowadzanego w łączu transmisyjnym.  


Rys. 4.2. Przesyłanie sygnału czasu w sieciach komputerowych – protokół NTP

W sieciach komputerowych do przesyłania informacji o czasie jest stosowany protokół NTP. Informacja o czasie jest zawarta w 64 przesyłanych bitach. 32 z nich niosą informacje o sekundzie (licząc od 1 stycznia 1900 roku), a następne 32 bity o ułamku sekundy (z dokładnością pikosekundową). Źródłem informacji o czasie jest serwer NTP. Serwer NTP pobiera informacje o czasie z jakiegoś źródła czasu. Najlepsze źródła sygnału czasu referencyjnego – czasu UTC – korzystają przede wszystkim z atomowych wzorców czasu (stratum 0), ale nie jest to konieczne. Możliwe jest korzystanie, np. z sygnału wysyłanego przez satelity systemu lokalizacyjnego GPS. Od tych serwerów (stratum 0) sygnał czasu jest przesyłany do kolejnych serwerów NTP (stratum1) itd., aż do najniżej stojących w hierarchii serwerów NTP (stratum15).  Struktura sieci przesyłania sygnału czasu jest typu master-slave (z góry na dół) - rysunek 4.2. Im dalej od serwera NTP pobierającego informację o czasie ze źródła klasy stratum 0, tym dokładność jest coraz to mniejsza. W przypadku serwerów stojących najniżej w hierarchii (stratum 15) jest to dokładność nie lepsza niż kilka milisekund. Pogarszanie dokładności jest konsekwencją opóźnień w wyniku transmisji. Transmisja pakietowa z wykorzystaniem protokołu TCP IP cechuje się nie tylko zmiennym, ale i niekiedy dużym opóźnieniem. Z tego powodu serwery NTP stojące niżej w hierarchii mogą równocześnie korzystać z kilku źródeł sygnału czasu i uśredniać wynik, biorąc pod uwagę informacje docierające z różnych stron z różnym opóźnieniem. W szczególności, gdy opóźnienie to jest duże i przekracza 125 ms stosuje się skokową korektę czasu. Należy podkreślić, że synchronizacja czasu za pomocą protokołu NTP jest realizowana softwarowo.  

Chcąc poprawić dokładność synchronizacji czasu i nie tylko w sieciach komputerowych wprowadza się coraz powszechniej protokół PTP, który daje dokładność nanosekundową i lepszą. Osiągniecie takiej dokładności jest możliwe dzięki zastąpieniu softwarowej synchronizacji, synchronizacją hardwarową. Wprowadzenie protokołu PTP wymaga zatem wymiany urządzeń sieciowych. Osiągnięcie wspomnianej precyzji jest możliwe dzięki uwzględnianiu opóźnienia w torze transmisyjnym. Do zagadnienia tego powrócimy jeszcze omawiając pakietowe sieci transmisyjne, tak zwanego synchronicznego Ethernetu.

Synchronizacja czasu w obszarze telekomunikacji jest ważna z powodów ekonomiczno-prawnych, ale także z powodów czysto technicznych. W przypadku niektórych rozwiązań systemowych synchronizacja czasu również musi mieć miejsce i nie musi chodzić tu o synchronizację z czasem UTC. Ilustruje to poniższy przykład.

W sieciach dostępowych GPON, aby uniknąć kolizji moment tn, w którym jednostka ONU może nadawać jest precyzyjnie określony przez jednostkę OLT i przekazywany do jednostki ONU. To zegar taktujący jednostki OLT jest w tym przypadku zegarem referencyjnym. Jednostka ONU ma swój własny zegar taktujący, który odmierza czas. Załóżmy, że zegar ten pracuje wolniej (spóźnia się) w stosunku do zegara referencyjnego. Czas tn w jednostce ONU to czas tn – Δ.  Jednostka ONU rozpocznie i zakończy nadawanie z opóźnieniem co może skutkować kolizją z nadawaniem przez inną jednostkę ONU. Aby tego uniknąć zegary w jednostkach ONU są synchronizowane. 
Dalej opisany zostanie jeden z możliwych, a zarazem często stosowany sposób przekazywania sygnału synchronizacji do jednostki ONU. Jest to sygnał o częstotliwości 1 kHz.  Do jego przesyłania są wykorzystywane bajty zawarte w kierowanym do jednostek ONU strumieniu bitów.  W jednostce OLT jest licznik zliczający nadawane bajty, a w jednostce ONU licznik, którego stan jest zwiększany o jeden po czasie odpowiadającym czasowi trwania jednego bajtu według zegara wewnętrznego jednostki ONU.  Na przykład, gdy transmisja odbywa się z szybkością 155,52 Mb/s nadanie każdego bajtu przez jednostkę OLT zwiększa stan licznika o jeden. Odbywa się to co o około 51,4 ns.  Licznik jest zerowany po upływie 1 ms, czyli po nadaniu 19440 kolejnych bajtów. Stan licznika jednostki OLT jest przesyłany do jednostek ONU w specjalnie do tego przeznaczonych bajtach (bajtach synchronizacji). W jednostkach ONU są identyczne liczniki, których stan zwiększa się o jeden po upływie czasu odpowiadającego  nadawaniu ośmiu bitów, ale według zegara znajdującego się w jednostce ONU. W przypadku braku synchronizacji zegarów, nawet jeżeli na początku stan obu liczników był taki sam, to po upływie pewnego czasu tak nie będzie. Aby zsynchronizować licznik jednostki ONU z licznikiem jednostki OLT w bajtach synchronizacji przesyła się stan licznika jednostki OLT. Jeżeli stan licznika jednostki ONU jest inny niż stan przesłany w bajtach synchronizacji, to jest on zmieniany na taki jak w bajtach synchronizacji.  Każde doliczenie do 19440 bajtów powoduje wyzerowanie licznika jednostki ONU i generowanie znacznika czasu. Kolejne znaczniki czasu pojawiają się w odstępach co 1 ms, a więc takich samych jak w jednostce OLT.  Proces ten zilustrowano na rysunku.  Jeżeli jednak stan licznika w którymś momencie dojdzie do 19439, to w następnym kroku stan licznika ustawiony będzie na 0 i będzie wygenerowany impuls znacznika czasu.
Jeżeli zegar w jednostce ONU pracowałby wolniej niż zegar w jednostce OLT, to wówczas stan licznika w jednostce ONU byłby mniejszy niż przesłany w bajtach synchronizacji i nastąpiłaby zmiana stanu licznika jednostki ONU na przesłany w bajtach synchronizacji.  Gdy licznik jednostki ONU pokazuje wartość zero, to tak jak w przypadku jednostki OLT generowany jest znacznik czasu. Dzięki zastosowaniu takiej procedury zegary w jednostkach OLT i ONU będą pracowały synchronicznie, co oznacza, że czas tn, na zegarze w jednostce OLT i jednostce ONU  będzie taki sam w obu jednostkach (dokładniej niemal taki sam).

W przypadku synchronizacji czasu o dokładności decydują dwie rzeczy, a mianowicie dokładność informacji o czasie  jaką dysponuje zegar synchronizowany oraz parametry taktowania zegara wewnętrznego w urządzeniu. W uproszczeniu można powiedzieć, że proces synchronizacji czasu jest podobny do synchronizowania zegarka naręcznego. Wewnętrzny układ taktowania zegarka nie pracuje idealnie i dlatego co pewien czas trzeba przestawić wskazówki takiego zegarka. Informację o czasie, by przestawić wskazówki zegarka możemy uzyskać z różnych źródeł, np. z komunikatów Głównego Urzędu Miar w Warszawie. GUM podaje informacje o czasie i częstotliwości wzorcowej. Gdyby układ taktowania zegarka pracował zgodnie z częstotliwością wzorcową podawaną przez GUM to wystarczyłoby raz ustawić wskazówki zegarka na właściwą odzinę i zawsze pokazywałby on czas zgodny z czasem z GUM – synchronizacja czasu byłaby wtedy niepotrzebna.