A hálózati idő protokoll (angolul Network Time Protocol, NTP) számítógépes rendszerek óráinak szinkronizálására szolgáló hálózati protokoll. A protokoll csomagkapcsolt hálózaton keresztül működik. Az NTP az egyik legrégebbi internetprotokoll. Az NTP-t David L. Mills (University of Delaware), amerikai számítógépes mérnök fejlesztette ki 1981-ben, és azóta is frissíti rendszeresen.[1]

Áttekintés szerkesztés

Az NTP az egyezményes koordinált világidőt szolgáltatja a szökőmásodperccel kiegészítve. Semmilyen más információt nem szolgáltat. Az NTP a Marzullo-féle algoritmust használja. Az NTP ezredmásodperc pontosságú időjelet szolgáltat az interneten keresztül.[2][3] 2010 óta az RFC 5905 szabvány[4] írja le az NTP jelenlegi 4-es verzióját, mely kiegészíti az NTP és az SNTP (Simple NTP) korábbi verzióit. Az NTP User Datagram Protocolt (UDP) használ a 123-as porton keresztül.[5] A jelenlegi verzióban precíz algoritmusok szűrik a hálózati meghibásodások, szerverhibák és egyéb ellenséges zavarások hatásait. A szerverek és a kliensek úgy vannak konfigurálva, hogy az időértékek az elsődleges szerverektől a kliensek irányában fa struktúrájú köztes szervereken át jutnak el. A protokoll pontossága jobb mint 1 nanomásodperc (1 ns), a szolgáltatott frekvencia pontosság 1ns/s. Gyors LAN hálózatokon levő szerverek és kliensek néhány tíz micromásodpercenként (10 microsecond) kérdezik le a fölöttes szervereket, de ez az idő 36 óra is lehet.

Unix szerkesztés

A modern UNIX rendszereknél az NTP démonként van telepítve, mely folyamatosan fut a háttérben. Az időzítési bizonytalanságok elkerülése céljából egy fáziszárt hurok biztosítja a stabilitást. Az összes jelenlegi verzió ezt a módszert használja (Linux, BSD, macOS, Solaris és AIX).

Microsoft Windows szerkesztés

A Windows 2000 és Windows XP óta az összes Windows verzió rendelkezik egy ’Windows Time Service’ programmal, mely képes szinkronizálni a számítógépet az NTP-hez. Mindemellett a Microsoft nem garantál 2 másodpercnél pontosabb időinformációt.[6] Nagyobb pontosság eléréséhez a Microsoft más NTP implementációt ajánl.[7]

Óra rétegek szerkesztés

 
Óra rétegek

A sárga nyilak közvetlen kapcsolatot jelölnek, a piros nyilak hálózati kapcsolatok.

 
Stratum 0 óraréteg, Colorado, Naval Base

Az NTP hierarchikus módon épül fel. Minden réteg elnevezése: ’stratum’, és 0-nál kezdődik a legfelső réteg. Az aktuális stratum szint meghatározza a távolságot a referencia órától, és csökkenti a függést a hierarchiában. A stratum nem jelent minőséget vagy megbízhatóságot.

  • Stratum 0: Itt (cézium, rubídium) atomórák találhatók. A Stratum 0 közvetlenül nem kapcsolódik az internethez.
  • Stratum 1: Ezek a Stratum 0-hoz kapcsolódó számítógépek. Alapesetben a Stratum 2 kiszolgálói NTP-n keresztül, nevük: idő szerverek.
  • Stratum 2: Itt számítógépek vannak, melyek NTP kéréssel fordulnak a Stratum 1 szerverekhez. Általában ezek a számítógépek több Stratum 1 géppel is kapcsolatban vannak, és gyűjtik, elemzik a mintákat, és eldobják a hibás információkat. A Stratum 2 gépek kapcsolódnak a többi Stratum 2 géphez, melynek eredményeként stabilabb időinformációt szolgáltatnak a csoportnak. A Stratum 2 gépek a Stratum 3 gépek kiszolgálói.
  • Stratum 3: Ezen a szinten hasonlóan működnek a gépek, mint az előző szinten, és a Stratum 4 szint kiszolgálói, és így tovább.

Bár az NTP (a használt NTP protokoll verziószámától függően) legfeljebb 256 szintet támogat, csak az első 16 van kihasználva, és a Stratum 16 szinten nincsenek szinkronizálva a gépek.

NTP időbélyeg szerkesztés

Az NTP által használt 64 bites időbélyeg két részből áll. Az első 32 bit a másodperceket, másik 32 bit a másodperc törtrészét adja meg. Az NTP idő így 136 évenként átfordul, és az elméleti felbontás 2−32 másodperc (233 pikomásodperc). Az NTP az 1900. évet használja kiinduló pontnak, és 2036-ban lesz az első átfordulás, még a UNIX-féle 2038-probléma előtt.

Az NTPv4-gyel bevezetésre került a 128 bites időformátum: 64 bit az egész másodpercre és 64 bit a másodperc törtrészére.[8][9] Mills szerint „a 64 bit a törtrészre elég, hogy felírjuk azt az időmennyiséget, ami alatt egy foton fénysebességgel áthalad egy elektronon, a 64 bit az egész másodpercekre elég, hogy egyértelmű időfelírást adjon, míg az univerzum el nem sötétül.”[10][a]

Óra szinkronizációs algoritmus szerkesztés

Egy tipikus NTP kliens rendszeresen három vagy több, egymástól eltérő hálózaton levő szervert kérdez le. Annak érdekében, hogy a kliens a saját óráját a távoli szerverhez tudja szinkronizálni, a kliensnek ki kell számítania az RTT és az offszet értékét. Az RTT a Round Trip Time rövidítése, ami az az idő, ami alatt a csomagot elküldjük, és visszaérkezik rá a nyugta.

Az RTT δ értéke a következő módon számítható ki:

 

, ahol

t0 a kliens időbélyege a csomag elküldésekor,
t1 a szerver időbélyege a csomag beérkezésekor,
t2 a szerver időbélyege a válasz elküldésekor és
t3 a kliens időbélyege a válasz beérkezésekor.

Következésképp:

t3 − t0 a kliens oldalon eltelt idő, a kérés csomag elküldése és a válaszüzenet beérkezése között.
t2 − t1 a szerver oldali késleltetés a kérés megérkezése és a válasz elküldése között.

A θ offszet kiszámítható:

 

A számított δ és θ értékek szűrését követően statisztikai analízis következik. A nagy eltérést mutató értékek kiesnek és a megmaradó három legjobb értékből az idő eltérés (offszet) számítódik. Az óra frekvenciája ezt követően fokozatosan az offszethez lesz igazítva, mely egy visszacsatolási hurkot alkot. A szinkronizáció helyes, amikor mind a beérkező és a kimenő útvonalakon a nominális eltérés szimmetrikus az idő szerver és a kliens között. Amennyiben az útvonalakon nincs szimmetrikus nominális eltérés, akkor egy szisztematikus eltérés számítódik, ami a kimenő és a beérkező RTT útvonali idő különbségének a fele.[11]

Szökőmásodpercek szerkesztés

Az NTP az UTC időt szolgáltatja. Az UTC figyelembe veszi azt a tényt, hogy a Föld forgásán alapuló idő ettől kis mértékben eltér. A korrekció esetén, amikor egy szökőmásodperc hozzáadódik, az NTP ilyenkor 1 másodpercre felfüggesztődik. Mivel az NTP-nek semmilyen mechanizmusa sincs a szökőmásodpercek történetéről, az egész NTP időskála 1 másodperccel eltolódik.[12]

Biztonsági meggondolások szerkesztés

Az elmúlt 25 évben jelentős biztonsági probléma nem adódott.[13][14] A biztonsági auditok során nem tapasztaltak magas kockázati tényezőket.[15]

Más időszinkronizációs protokollok szerkesztés

Irodalom szerkesztés

  • Mills, David L: Computer Network Time Synchronization: The Network Time Protocol. (hely nélkül): CRC Press. ISBN 0-8493-5805-1  

Kapcsolódó szócikkek szerkesztés

Megjegyzések szerkesztés

  1. 2−64 másodperc körülbelül 54 zeptoszekundum (a fény 16,26 pikométert tesz meg ennyi idő alatt, vagyis 0,31 Bohr-sugarat), és 264 másodperc körülbelül 585 milliárd év.

Hivatkozások szerkesztés