Hlavní navigace

Synchronizácia času - NTP protokol

Ondrej Jombík

V predchádzajúcom dieli sme si povedali čosi o systémových a hardvérových hodinách a možnostiach vyrovnávania ich pravidelných odchýliek v prípade, že nemáme prístup do siete Internet. Ak tento prístup máme, môžeme si situáciu výrazne zjednodušiť synchronizáciou času cez NTP protokol, o ktorom si dnes povieme viac.

NTP protokol

NTP (Network Time Protocol) je sieťový UDP/IP protokol. Slúži na sychronizovanie systémového času medzi servermi Internetu. Vyvinutý bol Davidom Millsom z Univerzity Delaware. Je platným štandartom podľa príslušných RFC dokumentov (STD 12, RFC 1119, RFC 1305, RFC 2030). Používa univerzálny čas UTC (Coordinated Universal Time) na synchronizovanie času s presnosťou na mili až mikrosekundy. Aktuálna verzia NTP protokolu je 4 a má sebou viac ako 20 ročný vývoj. Klasický unixový NTP daemon (ntpd) je možné prevádzkovať na rôznych platformách a architektúrách, počnúc UNIX-based systémami, cez VMS až k MS-Windows.

Tiež je možné používať zjednodušenú verziu NTP protokolu: SNTP (Simple Network Ttime Protocol). Rozdiel je v tom, že klient s podporou iba SNTP nemôže slúžiť zároveň aj ako server pre ďalších klientov.

Synchronizovať čas je pre bežného užívateľa užitočné a navyše veľmi jednoduché. Odpadajú najmä potenciálne problémy, ktoré by mohli vzniknúť nepresnosťou systémových hodín a taktiež rôzne starosti s pravidelným manuálnym nastavovaním času je to teda aj pohodlné.

Sú však aj miesta, kde sú požiadavky na presný čas doslova nevynutné. Tu zastupuje synchronizácia času nenahraditeľnú úlohu. Ide hlavne o relačné databázové systémy využívajúce časovú značku (timestamp); monitorovanie, meranie a kontrola počítačových sietí; správa a najmä kontrola platnosti resp. životnosti šifrovacích kľúčov a certifikátov a mnohé iné. Tieto zložky sa potom následne využívajú v príslušných produkčných sférach a prostrediach, kde tvoria spravidla dôležité a nezanedbateľné elementy svojich výrobných a vývojových reťazcov.

NTP protokol však neslúži len na získavanie presného času. Sú miesta, kde ani tak veľmi nezáleží na presnom čase ako na jeho precíznej synchronizácii medzi serverom a viacerými klientami. Príkladom je napr. autentifikačná služba Kerberos. NTP protokol má teda svoje miesto aj na separovaných lokálnych sieťach alebo podsieťach.

Algoritmus

Samotný NTP algoritmus je pomerne zložitý. Vychádzajúc z predpokladu, že každá strana spojenia má svoj špecifický čas nevieme zistiť presne (iba približne) dobu, ktorou paket putoval od serveru ku klientovi, resp. od klienta k serveru. Táto odchýlka sa však dá minimalizovať na minimum práve vďaka NTP algoritmu.

Pri posielaní požiadavky na NTP server, zapíše klient do paketu aktuálny systémový čas (originate timestamp). Po putovaní sieťou dorazí paket na server a ten na ňom vykoná dva zápisy vlastného systémového času: jeden pri obdržaní (receive timestamp) a ďalší pri spätnom posielaní resp. odpovedaní klientovi (transmit timestamp). Klient potom na základe času obdžania (final timestamp) a uvedených troch zložiek aspoň približne vypočíta svoju časovú vzdialenosť od NTP servera. Tá je rovná polovici celkovej veľkosti putovania paketu mínus čas spracovávania NTP serverom.

Vyjadrené vzorcom:

                (final_ts - originate_ts) - (transmit_ts - receive_ts)
time_distance = ------------------------------------------------------ =
                                          2

                (receive_ts - originate_ts) + (final_ts - transmit_ts)
              = ------------------------------------------------------
                                          2

Pre samotnú časovú synchronizáciu s jedným serverom je nutné vykonať viac prenosov. Pomocou nich je možné zistiť časovú vzdialenosť (time offset) medzi klientom a serverom a takisto najvačšiu možnú odchýlku (dispersion) od tejto vzdialenosti. Výsledný čas konkrétneho servera nie je akceptovaný kým nie je vykonaný potrebný počet prenosov a kým nie sú splnené všetky podmienky definované v špecifikácii NTP protokolu. Inými slovami, čas nemôže byť synchronizovaný pomocou zdroja, ktorý je považovaný za chybný.

Na synchronizovnaie času sa spravidla používa viac ako jeden zdroj (pokiaľ nie sme na lokálnej sieti s jedným time serverom). Vyššieuvedený algoritmus sa aplikuje na všetky zdroje. Pre každý jeden server je vytvorená sada dátových typov a štruktúr, ktorá je za pomoci špecifických konštánt analyzovaná filterom. To by malo mať za následok zlepšenie kvality presnosti výsledného času príslušného servera. Na základe tejto analýzy sú zdroje rozdelené na platné a neplatné. Nakoniec je pomocou časov všetkých platných zdrojov vytvorený čas výsledný a tým sú potom nastavené systémové hodiny klienta.

Zdroje času na Internete

NTP servery v sieti Internet sa delia na primárne a sekundárne. Primárne (stratum-1) synchronizujú svoj čas voči reálnym zdrojom presného času a to obvykle pomocou rádiových, modemových alebo satelitných systémov, ako je napríklad GPS (Global Positioning Service). Sekundárne (stratum-2) zase synchronizujú presný čas voči serverom primárnym. Z uvedeného vyplýva, že sekundárne servery musia vystupovať aj v úlohe klienta. Okrem klasického symetrického klient/server módu sa môže použiť aj multicast mód (server vysiela dáta a vybraný konečný počet klientov prijíma). To všetko s možnosťou použitia kryptovanej autentifikácie.

Stratum vyjadruje mieru odchýlky časového zdroja od univerzálneho času. Rádiové hodiny, ktoré získavajú čas zo špecializovaných vysielačov alebo satelitného navigačného systému sú stratum-0. Primárny NTP server, ktorý je s týmito hodinami priamo spojený je stratum-1. Sekundárne servery, ktoré synchronizujú čas voči primárnym pomocou NTP protokolu sú stratum-2. Ďalšie sú stratum-3, a pod.

Čo sa týka štatistiky, v roku 1999 sa nachádzalo v sieti Internet už viac ako 230 primárnych a viac ako 100000 sekundárnych time serverov. Toto číslo neustále narastá a v dnešnej dobe už dosahuje pravdepodobne aj dvojnásobných rozmerov.

V sieti sa samozrejme nachádzajú aj verejné primárne alebo sekundárne time servery. Pretože zaťaženie primárnych serverov býva vysoké, doporučuje sa používať radšej servery sekundárne, ktorých odchýlka je oproti primárnym serverom zanedbateľná. Tu sa nachádza ich zoznam. Mnohé z nich majú uvedené svoje vlastné špecifické podmienky používania. Niekedy je to obmedzenie na príslušný región, niekedy stačí len poslať e-mail so žiadosťou. Prosím, dodržujte tieto podmienky.

Doporučuje sa taktiež používať DNS, pretože IP adresy sa zvyknú čas od času zmeniť. Ak máte chuť, vyberte si za príslušných podmienok konkrétne NTP servery zo zonamu, pretože v ďalšom dieli seriálu nainštalujeme a nakonfigurujeme aplikáciu chrony, pomocou ktorej budeme synchronizovať čas oproti vybraným zdrojom z Internetu, zároveň globálne synchronizovať čas na našej lokálnej sieti a vyrovnávať odchýlky od presného času po vypnutí počítača (serveru).

Zdroje

RFC dokumenty a štandarty: STD 12, RFC 867, RFC 868, RFC 958, RFC 1059, RFC 1119, RFC 1128, RFC 1129, RFC 1165, RFC 1305 (PDF), RFC 1361, RFC 1708, RFC 1769, RFC 2030
NTP homepage: http://www.ee­cis.udel.edu/~ntp/
NTP FAQ: http://www.ee­cis.udel.edu/~ntp/ntpf­aq/NTP-a-faq.htm
Public NTP Time Servers: http://www.ee­cis.udel.edu/~mi­lls/ntp/server­s.htm

Našli jste v článku chybu?

3. 3. 2002 18:41

Ondrej Jombík (neregistrovaný)

Budem popisovat aplikaciu chrony, ktora moze sluzit aj ako NTP klient alebo NTP server. Co sa tyka nastavenia klasickeho ntp softveru, klient bol popisany v jednom so suvisiacich clankov. Konfiguraciu a nastavenie servera by som potencialne mohol opisat po ziskani urcitych relevantnych praktickych skusenosti.

3. 3. 2002 18:28

Ondrej Jombík (neregistrovaný)

Tento clanok bol teoreticky. Kedze ale NTP protokol povazujem za zaujimavy, rozhodol som sa mu venovat samostatny diel. V nadchadzajucom dieli bude kompletne opisana aplikacia chrony. Ci to vsak bude dostatocne prakticke musite uz posudit sam.

Vitalia.cz: Nestlé vyvinulo nový typ „netloustnoucího“ cukru

Nestlé vyvinulo nový typ „netloustnoucího“ cukru

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Lupa.cz: Kdo pochopí vtip, může jít do ČT vyvíjet weby

Kdo pochopí vtip, může jít do ČT vyvíjet weby

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Podnikatel.cz: 1. den EET? Problémy s pokladnami

1. den EET? Problémy s pokladnami

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Podnikatel.cz: Zavře krám u #EET Malá pokladna a Teeta?

Zavře krám u #EET Malá pokladna a Teeta?

Podnikatel.cz: Chtějte údaje k dani z nemovitostí do mailu

Chtějte údaje k dani z nemovitostí do mailu

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Vitalia.cz: Proč vás každý zubař posílá na dentální hygienu

Proč vás každý zubař posílá na dentální hygienu

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

Vitalia.cz: „Připluly“ z Německa a možná obsahují jed

„Připluly“ z Německa a možná obsahují jed

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR

Vitalia.cz: 9 největších mýtů o mase

9 největších mýtů o mase

DigiZone.cz: Rádio Šlágr má licenci pro digi vysílání

Rádio Šlágr má licenci pro digi vysílání