Engilsh French German Spain Nederland Italiano Russian Polski


NTP (Network Time Protocol)
(opracował Tomasz Widomski)
Większość urządzeń Elpromy obsługuje protokół NTP (Network Time Protocol RFC 1305 i RFC 2030). Jest to specjalny protokół pozwalający na precyzyjną (nawet piko sekundową) synchronizację czasu wszystkich komputerów i routerów pracujących w sieci TCP/IP. Niestety ograniczenia sprzętowe współczesnych komputerów ciągle jeszcze zawężają precyzję NTP do milisekund, a systemy operacyjne (takie jak Microsoft Windows) wręcz obcinają ją do dziesiątek milisekund. Nie zmienia to jednak faktu, że protokół NTP jest już światowym standardem synchronizacji czasu i z pewnością nim pozostanie. Nowopowstający sprzęt i systemy operacyjne są coraz częściej adoptowane do protokołu NTP tak aby wykorzystać w pełni jego możliwości. Przykładem może tu być rejestr TSC w procesorach serii Intel Pentium czy specjalna wersja jądra systemów operacyjnych Linux i FreeBSD - tzw. nanojądro.

NTP jest modelem synchronizacji czasu we współczesnym świecie ...

Współczesny świat bazuje na gigantycznej sieci rozproszonych komputerów, w której miliony niezależnych urządzeń komunikują się między sobą (np. przy pomocy Internetu). Rosnąca popularność rozwiązań mobilnych sprzyja szybkiemu rozwojowi technologii IT, a te narzucają konieczność utrzymania ładu i porządku którego istotnym fundamentem staje się synchronizacja czasu. Problem synchronizacji czasu jest bowiem tak znany jak długo człowiek potrafi odmierzać czas. Era komputerów dostarczyła wiele ciekawych pomysłów i metod synchronizacji czasu. Jednak dotychczas brakowało ogólnoświatowego standardu, który mógłby być zaakceptowany przez wszystkich i który skutecznie potrafiłby sobie radzić z tak wielką liczbą działających w świecie komputerów. Cechy takie jak: stabilność synchronizacji, precyzja, możliwość implementacji w różnorodnych środowiskach systemowych, bezpieczeństwo, czy efektywność rozumiana jako niewielkie obciążenie łącz transmisyjnych to podstawowe stawiane warunki. Założeniom tym jak dotąd sprostał tylko protokół NTP.

Projekt NTP

Opracowanie uniwersalnej a zarazem skutecznej metody synchronizacji komputerów rozproszonych powierzono profesorowi Dawidowi Mills'owi (Uniwersytet w Delaware) który stając na czele projektu NTP od kilkunastu lat prowadzi wraz ze swoim zespołem badania nad NTP i nadzoruje kolejne implementacje protokołu NTP.  Badania sponsorowane są przez wiele firm IT i agencje rządowe USA. 

Założenia synchronizacji NTP

Protokół NTP oparto o założenie, że będzie on synchronizował czas dużej a nawet wielkiej liczby niezależnie pracujących urządzeń (klientów NTP) względem niewielkiej liczby wzorcowych źródeł czasu (serwerów czasu NTP) . Redundancja dostępu do źródeł czasu (ang. Timeservers NTP) jest jednym z fundamentalnych założeń działania protokołu NTP.  Zadbano przy tym aby NTP nie obciążał sieci, był możliwie w pełni automatyczny i inteligentny.  Nie zapomniano również o bezpieczeństwie i ochronie. Całość implementacji umieszczono w środowisku TCP/IP i umiejętnie dopasowano do zastosowań komunikacyjnych związanych z Internetem. Oto niektóre przykłady zastosowań protokołu NTP:

- stempel czasu w podpisie elektronicznym

- zgodność czasu routerów CISCO

- elektroniczna bankowość i e-biznes

- systemy bilingowe (telekomunikacja, energetyka)

- certyfikacja, autoryzacja i ochrona danych

- szyfrowanie transmisji

- cyfrowe przekazy obrazów i dźwięku (telekonferencje)

- sterowanie ruchem naziemnym i lotniczym

- zdalne systemy monitoringu (np. pracy serca) w medycynie

- zdalne systemu ochrony osób i mienia

- automatyka przemysłowa (kontrola automatycznej produkcji)

- systemy czasu rzeczywistego

- środowiska wieloserwerowe

- klastry i macierze komputerowe

- systemy wieloprocesorowe

- systemy rozproszone

- badania naukowe oparte o symulacje

- obliczenia astronomiczne

 

 

Na czym polega odmienność NTP ?

NTP jest protokołem komunikacyjnym przeznaczonym do synchronizacji czasu. Jest protokołem znacznie różniącym się od typowych protokołów komunikacyjnych. Upraszczając rozumowanie, protokół NTP nie transportuje czasu, ale przekazuje jedynie precyzyjne statystyki o czasie UTC (Uniwersalny Czas Koordynujący).

Co to jest czas UTC ?

W odróżnieniu od czasu lokalnego czas UTC jest czasem pozbawionym wszelkich zmian związanych z lokalizacją geograficzną państwa czy kontynentu. Jest to czas odmierzany w taki sam sposób na całym świecie bez przesunięć zimowo-letnich itd. Dla ułatwienia przyjmuje się, że czas UTC jest zgodny z czasem GMT (Greenweth) chociaż w woli ścisłości jest różnica między obydwoma czasami.

Jak działa NTP ?

Protokół NTP tworzy i przekazuje każdemu ze swoich klientów statystykę dostępu do wybranego źródła czasu UTC jakim są np. serwery czasu (ang. Timeservers NTP) podłączone do zegarów atomowych (ang. atomic clocks). Podmiotowa statystyka zawiera między innymi informacje o bieżącej precyzji wzorcowego zegara UTC oraz lokalnego zegara systemowego (ang. jitter). Protokół NTP zawiera też informację o istniejących opóźnieniach sieciowych LAN/WAN, gromadzi statystykę dostępu do źródła UTC i szacuje bezwzględne różnice czasu między lokalnym zegarem a rzeczywistym czasem UTC. Znając bieżące opóźnienie panujące w sieci TCP/IP oraz dysponując bogatą statystyką NTP pozwala każdemu z klientów NTP samemu indywidualnie skalibrować czas swojego lokalnego zegara systemowego. Kalibracja polega na przyspieszaniu lub ewentualnym spowalnianiu pracy zegara. Jest to możliwe dla różnic czasu mniejszych od 128ms. Przy większych rozbieżnościach protokół NTP dopuszcza synchronizację "skokową". Synchronizacja taka powinna mieć jednak miejsce jedynie w początkowej fazie procesu synchronizacji ponieważ prawidłowa konfiguracja NTP zasadniczo gwarantuje  ciągłą synchronizację płynną z precyzją większą od 100mS.

NTP - im dłużej pracuje tym większa jest precyzja synchronizacji ....

Z pewnością NTP wymaga od administratora dużej cierpliwości. Proces synchronizacji NTP jest bowiem bardzo powolny. Pierwsze rezultaty są widoczne dopiero po kilkunastu minutach, a precyzja nie jest bynajmniej zadowalająca. Pierwsze chwile procesu synchronizacji to "skokowe"  dosynchronizowanie wstępne. Klient NTP uzyskuje w ten sposób czas źródła UTC odbiegający nie więcej niż o wartość 128mS. Wartość ta jest niezbędną granicą do rozpoczęcia dalszej już płynnej  kalibracji czasowej. Dopiero płynne przyspieszanie/spowalnianie interfejsu lokalnego zegara pozwala na zwiększenie stopnia precyzji. Proces synchronizacji może trwać od kilku minut to kilkunastu godzin.  Dlatego Timeserwery NTP (ang. Time servers NTP) powinny pracować nieustannie, a liczba ich włączeń/wyłączeń ograniczona do niezbędnego minimum. Dobrym zwyczajem jest stosowanie wiele źródeł synchronizacji jednocześnie tak aby awaria jednego nie wstrzymywała całego procesu synchronizacji. 

NTP - nie obciąża sieci

Do wymiany statystyk NTP wykorzystuje kilkudziesięciobajtowe ciągi (pakiety UDP) wymieniane okresowo w przedziale od  4 sekund do kilku godzin. Standardową wartość interwału wymiany pakietów NTP ustala na 64 sekundy. Początkowa faza synchronizacji odbywa się właśnie przy wymianie pakietów z  taką częstotliwością. Im dłużej NTP pracuje tym okres próbkowania NTP wydłuża się. Pozwala to na istotne  zmniejszenie częstotliwości wymiany statystyk a zarazem zmniejsza obciążenie sieci. 

NTP - synchronizacja względem ASCII (BCD)  czy PPS ?

Większość zegarów radiowych (DCF77/GS) dostarcza czas w formacie ASCII/BSD. Format ten pozwala na synchronizację z precyzją co najwyżej 100mS. Do płynnej kalibracji czasowej niezbędne jest wzorcowy sygnał PPS (puls na sekundę). Sygnał taki zatrzaskuje się w tzw. zamkniętej  pętli  fazowej i częstotliwościowej PLL/FLL. Zaburzenia stabilności częstotliwości wycina się specjalnym filtrem dolnoprzepustowym.

Ogólnie o synchronizacji PLL/FLL z wykorzystaniem sygnału PPS

Stosuje się ją w systemach NTP gdzie pożądany jest efekt uzyskiwania wyjątkowo precyzyjnej synchronizacji. Najczęściej technikę tę wykorzystuje się przy bezpośrednim włączeniu  rubidowego lub cezowego rezonatora do komputera. W ostatnich latach synchronizację PLL/FLL stosuje się także do synchronizacji czasu komputerów z wykorzystaniem satelitarnego systemu GPS a dokładnie mówiąc do synchronizacji z wykorzystaniem wzorcowego sygnału o częstotliwości PPS (Puls Per Second).

Koncepcja synchronizacji z wykorzystaniem układów: zamkniętej pętli fazowej (PLL - ang. Phase Locked Loop) i zamkniętej pętli częstotliwości (FLL - Frequency Locked Loop) powstała już w 1932 roku przy okazji badań nad synchronicznym odbiorem sygnałów radiowych jakie prowadził de Bellescize. 

Ogólna struktura układu synchronizacji jest zgodna ze strukturą układów automatycznej regulacji, w których zarejestrowany błąd (powstający przez porównanie informacji wejściowej z wyjściową) po stosownej modyfikacji koryguje informację wyjściową (w pętli sprzężenia zwrotnego) dając efekt auto-korekcji. Działanie układu polega na wykrywaniu i korygowaniu niewielkich różnic wartości przesunięcia fazowego (i częstotliwości) sygnału wejściowego i wyjściowego. W skład układu wchodzi detektor fazy, filtr dolnoprzepustowy i generator o częstotliwości sterowanej wyjściem filtra. Detektor fazy porównuje sygnał wejściowy fi z sygnałem z wyjścia generatora fo. Detektor jest zazwyczaj układem mnożącym (łatwo implementowanym numerycznie), który wytwarza sygnał zwierający składowe (fi + fo) oraz (fi - fo). Składowa o większej częstotliwości jest odcinana w filtrze dolnoprzepustowym, a składowa częstotliwościowa  służy do sterowania generatorem VFO. Jeżeli częstotliwości fi i fo są zsynchronizowane, to na wyjściu filtru otrzymuje się wartość proporcjonalną do różnicy faz. Wywołuje on korekcję fazy, a więc również korekcję częstotliwości sygnału generatora (w taki sposób aby utrzymać synchronizm częstotliwości).

Numeryczna implementacja pętli PLL/FLL pozwala obliczyć błąd - poślizg zegara systemowego (jitter) i dzięki autokorekcji wprowadza tzw. dyscyplinę czasową. Poprawia to stabilność zegara komputerowego nawet gdy nie jest on synchronizowany względem zewnętrznego źródła.

Zastosowanie specjalnego nanojądra dostarcza precyzję czasu niezbędną do  próbkowania sygnału PPS. Wiele implementacji pozwala na obsługę PPS przy pomocy mechanizmu przerwań sprzętowych. Odbierając regularnie przerwania PPS można odliczać i synchronizować czas w systemie komputerowym.

Istnieje możliwość dalszego zwiększanie precyzji synchronizacji czasu.  Wymaga to jednak wprowadzenia nowych konstrukcji sprzętowych. Obecny sprzęt stanowi "wąskie gardło" dalszego rozwoju systemów teleinformatycznych zdyscyplinowanych czasowo i osiągających precyzję poniżej mikrosekund (uS). Większe precyzje stosuje się w przypadku gdy zastosowania NTP wkraczają np. w dziedzinę astronomii czy symulacji zjawisk fizyki jądrowej.

Link do strony producentów oprogramowania NTP: http://www.boulder.nist.gov/timefreq/general/softwarelist.htm