Ugrás a tartalomhoz

Hálózati idő protokoll

Ellenőrzött
A Wikipédiából, a szabad enciklopédiából

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.

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]
  1. http://www.eecis.udel.edu/~mills/bio.html
  2. http://www.eecis.udel.edu/~mills/exec.html
  3. http://www.ntp.org/ntpfaq/NTP-s-algo.htm#Q-ACCURATE-CLOCK
  4. http://tools.ietf.org/html/rfc5905
  5. http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml
  6. http://support.microsoft.com/kb/939322
  7. http://blogs.technet.com/b/askds/archive/2007/10/23/high-accuracy-w32time-requirements.aspx?Redirected=true
  8. How NTP Represents the Time (Computer Network Time Synchronization). [2017. június 15-i dátummal az eredetiből archiválva]. (Hozzáférés: 2018. július 20.)
  9. A look at the Year 2036/2038 problems and time proofness in various systems, 2017. március 14. [2018. július 21-i dátummal az eredetiből archiválva]. (Hozzáférés: 2018. július 20.)
  10. University of Delaware Digital Systems Seminar presentation by David Mills, 2006-04-26
  11. https://en.wikipedia.org/wiki/Network_Time_Protocol
  12. http://www.eecis.udel.edu/~mills/leap.html
  13. Archivált másolat. [2014. február 19-i dátummal az eredetiből archiválva]. (Hozzáférés: 2013. január 17.)
  14. http://www.eecis.udel.edu/~mills/database/reports/ntp4/ntp4.pdf
  15. http://support.ntp.org/bin/view/Main/CodeAudit