Network Time Protocol

fra Wikipedia, den gratis encyklopædi
Spring til navigation Spring til søgning
NTP (netværkstidsprotokol)
Familie: Internet protokol familie
Betjeningsområde: Synkronisering af ure i computersystemer
Havne: 123 / UDP 123 / TCP
NTP i TCP / IP -protokolstakken :
brug NTP
transportere UDP
Internet IP ( IPv4 , IPv6 )
Netværksadgang Ethernet Polet
bus
Polet
ring
FDDI ...
Standarder: RFC 5905

Network Time Protocol ( NTP ) er en standard for synkronisering af ure i computersystemer via pakkebaserede kommunikationsnetværk . NTP bruger den forbindelsesløse transportprotokol UDP eller forbindelsesrelateret TCP . Det blev specielt udviklet til at muliggøre pålidelig tidsinformation via netværk med variabel pakketid.

I almindelig sprogbrug refererer NTP til både protokollen og dens software referenceimplementering. Simple Network Time Protocol ( SNTP ) er en forenklet version af NTP.

Grundlæggende

Arkitektur NTP -etiketter de.svg
Statusmeddelelse fra NTP -dæmonen. Kolonner fra venstre mod højre: Peer -status (+: Er inkluderet; *: Nuværende hoved -peer; -: Tages ikke i betragtning); Servernavn (fjernbetjening); Tidskilde -id, her IP'en på den server, hvorfra peer'en har tiden (refid); Serverlag (st); Servertype (u: unicast ); når den sidste forespørgsel blev foretaget på sekunder (når); med hvilket interval serveren forespørges (meningsmåling, i sekunder); hvor ofte serveren blev nået (rækkevidde; 377 betyder, at de sidste 8 forespørgsler var vellykkede, et skiftregister ); rundturstiden for NTP-pakken (forsinkelse); forskydningen af ​​det lokale ur i forhold til serveren (offset, i millisekunder) og hvor meget den anmodede tid svinger (jitter, millisekunder) [1]

NTP blev udviklet af David L. Mills ved University of Delaware og udgivet som RFC 958 i 1985. Under hans ledelse udvikles protokollen og UNIX -implementeringen konstant. Protokol version 4 [2] er i øjeblikket opdateret. UDP -port 123 er forbeholdt NTP.

NTP implementeres i UNIX-lignende operativsystemer i form af baggrundsprocessen ( daemon ) ntpd, som både kan justere det lokale system og som server give tid til andre systemer. Windows -systemer kan også få det nøjagtige tidspunkt via NTP fra Internettet uden yderligere software ( systemkontrol "Dato og tid" / "Internettid") og efter redigering af en post i registreringsdatabasen også give det via NTP. [3]

UNIX-ntpd synkroniserer det lokale ur ved hjælp af eksterne tidssignaler, som det modtager enten direkte fra et lokalt atomur ( cæsiumur , rubidiumur osv.) Eller en lokal radiomodtager ( f.eks. DCF77 , GPS , LORAN ), eller via NTP fra en NTP -server modtager. Ntpd -processen korrigerer ikke kun fasen, men også frekvensen af ​​den lokale timer ved hjælp af en software PLL og en software FLL, så den lokale tid ikke kun matcher det eksterne signal præcist på de cykliske synkroniseringstider. For at koble den interne timer endnu tættere på en ekstern standardtidsmodtager ved hjælp af et højpræcisions-andet signal har nogle UNIX-varianter (herunder Linux og FreeBSD ) implementeret ovennævnte software PLL i kernen.

Tidsstemplerne i NTP er 64 bit lange. 32 bits koder for sekunderne siden 1. januar, 1900 00:00:00, yderligere 32 bit koder for brøkdelen af ​​et sekund. På denne måde kan en periode på 2 32 sekunder (ca. 136 år) repræsenteres med en opløsning på 2 - 32 sekunder (ca. 0,23 nanosekunder).

NTP bruger et hierarkisk system med forskellige lag (flertal af stratum ). Stratum 0 er tidsstandarden, for eksempel et atomur eller en radio clock (tidssignal modtager via GNSS eller DCF77 ). NTP -serverne, der er direkte knyttet til den, kaldes Stratum 1. Hver yderligere afhængige enhed får et højere nummer i navnet (Stratum 2, Stratum 3 ...). [4] NTP -softwaren på stratum 1, stratum 2, stratum 3 osv. Er på samme tid klienten i stratumet ovenfor og serveren i stratumet nedenfor, hvis der findes en.

Fejl, algoritme og nøjagtighed

Den lokale systemtid for et processormiljø varierer med forskellige typiske fejlkilder. Dette fører til mindst to typiske fejl:

  • kortsigtede udsving i tidsforøgelsen langs den aktuelle tid
  • stabile lokale afvigelser fra en fælles systemtid

Begge timingfejl kompenseres for at bruge forskellige metoder.

De lokale afvigelser på grund af forsinkelsen af de stokastisk bestemte transmissionsveje kompenseres af serveren ( Berkeley -algoritmen ) eller klienten ( Cristians -algoritmen ) ved at måle pakkecyklustiden .

De kortsigtede pseudo-stokastiske afvigelser i det lokale systemur kan kun kompenseres med et bedre systemur (frekvensstandard) og direkte modtagelse af satellitsignaler ( GPS ) eller andre tidsstandarder ( DCF77 ).

NTP bruger Marzullo -algoritmen (udviklet af Keith Marzullo fra University of San Diego i sin afhandling ) til den interne fejlkompensation i processormiljøet og også en algoritme til håndtering af byzantinske fejl . NTP bruges mest med en UTC -tidsskala .

NTP understøtter spring sekunder . Ved at overveje springets sekunder i loggen bruges en ny anden skala med hvert spring sekund (hvilket dog sjældent forekommer). For systemets tidsskala bruges den faktisk forløbne tid siden et bestemt tidspunkt normalt, og springsekunder kommer først i spil, når tiden vises.

NTPv4 kan bevare et systems lokale tid over det offentlige internet med en nøjagtighed på 10 millisekunder, i lokale netværk er endda nøjagtigheder på 200 mikrosekunder og bedre mulige under ideelle forhold. Med en tilstrækkelig stabil lokal frekvens standard som taktgeneratoren (termostatstyret kontrolleret krystal oscillator , rubidium oscillator, etc.), kan fejlen mellem reference timeren og den lokale ur reduceres til størrelsesordenen nogle få mikrosekunder ved hjælp af kerne PLL (se ovenfor) .

SNTP

Simple Network Time Protocol (SNTP) er en forenklet version af NTP. Oprindeligt som en uafhængig standard, der starter med RFC 1361 til RFC 4330 ; det er blevet integreret i NTP Version 4 som et lille underkapitel i RFC 5905 siden juni 2010.

Protokollens struktur er identisk med NTP. SNTP -klienter kan således også hente tiden fra NTP -servere. Hovedforskellen ligger i de algoritmer, der bruges til tidssynkronisering. Mens med NTP tidssynkroniseringen normalt finder sted med flere tidsservere, bruges der kun med SNTP én gangsserver. SNTP undlader også at påvirke fasen og frekvensen af ​​den lokale timer. [5] SNTP kan derfor ikke levere det samme nøjagtighedsniveau som NTP. På grund af de enklere algoritmer kræver SNTP færre computerressourcer. [6]

Ældre Windows -versioner, f.eks. Windows 2000, bruger SNTP til at holde tiden på den lokale computer opdateret. Dette gøres af Windows -tjenesten W32Time. I Windows XP og Windows Server 2003 er det dynamiske linkbibliotek W32Time.dll blevet revideret, så NTP nu bruges til tidssynkronisering.

Siden Microsoft først introducerede metoden til tidssynkronisering med Windows 2000 , har nogle softwareproducenter udviklet uafhængige programmer til tidssynkronisering under Windows. Moderne godkendelsessystemer (f.eks. Kerberos ), der bruges i Windows 2000 og nyere versioner, kræver tidsstempler for at øge sikkerheden, hvorfor NTP også bruges her.

implementering

Ud over reference-NTP-softwaren, som er tilgængelig på NTP-webstedet for forskellige operativsystemer , tilbyder en række producenter færdige selvstændige løsninger, der kan bruges som NTP-tidskilder i computernetværk i alle størrelser.

Flere tusinde NTP -servere har dannet en NTP -pulje .

Alternativer

PTP

Precision Time Protocol ( PTP ) er en netværksprotokol, der synkroniserer tidsindstillingerne for flere enheder i et computernetværk . I modsætning til Network Time Protocol (NTP) stræber PTP efter større nøjagtighed i lokalt begrænsede netværk. Dette muliggør en nøjagtighed af nanosekunder i hardware og mindre end et mikrosekund i software. PTP er defineret i IEEE 1588 og vedtaget i IEC 61588.

ÅbnNTPD

I 2004 præsenterede Henning Brauer NTP -implementeringen OpenNTPD, der fokuserer på sikkerhed. Protokollen er kompatibel med eksisterende NTP -servere. Den blev oprindeligt skrevet til OpenBSD , men er nu også tilgængelig som en bærbar version og som en pakke i Linux -pakkehåndteringssystemet. OpenNTPD er blevet kritiseret for ikke at tilbyde det samme nøjagtighedsniveau som NTP. Afvigelserne kan være 50-200 ms. [7]

Ntimet

NTPD -programmet fungerer som en tidsserver, tidsklient og dækker mange andre funktioner. Da kildekoden for NTP-referenceimplementeringen er meget omfattende med over 300.000 linjer, fremmer Linux Foundation modularisering med Ntimed-projektet af FreeBSD-udvikleren Poul-Henning Kamp. Klientens kildekode omfatter ca. 3700 linjer. Slave servere, refclocks og protokoller som PTP vil blive tilføjet, hvis du er interesseret i projektet. [8.]

NTPsec

NTPsec er en gaffel i det originale NTPD -projekt med det formål at gøre programmet mere sikkert gennem forskellige foranstaltninger. Kodebasen blev tilpasset de nuværende standarder og kunne blandt andet reduceres fra 253k til 62k LOC . [9] [10] Den første stabile 1.0 -version blev offentliggjort den 10. oktober 2017. [11]

tlsdate

Beskyttelsen af ​​HTTP Strict Transport Security Protocol ( HSTS ) kan omgås af HTTPS med forfalskede NTP -svar. Derudover bliver NTP -servere undertiden misbrugt til refleksionsangreb, da NTP bruger forbindelsesløs UDP . Hvis angribere sender pakker med en forfalsket afsenderadresse til en NTP -server, ender svaret med offeret. Hvis svaret er større end anmodningen, kan det bruges til at intensivere denial-of-service- angreb. TLS -protokollen, der dukkede op senere, omgår disse og andre problemer, da den også overfører tidsinformation. Med tlsdate -programmet udviklet af Jacob Appelbaum overtager TLS -protokollen også funktionen af ​​NTP -protokollen. [12] En ulempe ved tlsdate er dens ret store unøjagtighed på maksimalt +/- ét sekund plus netværksforsinkelsen. Den relativt store unøjagtighed skyldes primært tidsstempelopløsningen på et sekund, der findes med TLS 1.2. [13] Fra TLS version 1.3 er den tid, der tidligere blev sendt via TLS, ikke længere gældende. tlsdate er derfor ikke en permanent løsning på problemet i den aktuelle version. [13]

kronisk

Chrony er en enkeltstående implementering af NTP og NTS og udgives under GPLv2 [14] .

Se også

Normer og standarder

NTP er standardiseret som en anmodning om kommentarer (RFC):

  • RFC 958 - Network Time Protocol (NTP) (1985, forældet)
  • RFC 1059 - Network Time Protocol (Version 1) (1988, forældet)
  • RFC 1119 - Network Time Protocol (Version 2) (1989, forældet)
  • RFC 1305 - Network Time Protocol (Version 3) (1992, forældet)
  • RFC 5905 - Network Time Protocol (Version 4) (2010) - bagudkompatibel med RFC 1305 til Version 3
    • Tilføjelse RFC 7822 - Network Time Protocol Version 4 (NTPv4) Extension Fields (2016)
    • Tilføjelse RFC 8573 - Godkendelseskode til meddelelse til netværkstidsprotokollen (2019)


Tilføjelser:

  • RFC 5906 - Network Time Protocol Version 4: Autokey Specification (2010)
  • RFC 5907 - Definitioner af Managed Objects for Network Time Protocol Version 4 (NTPv4) (2010)
  • RFC 5908 - Network Time Protocol (NTP) Server Option for DHCPv6 (2010)
  • RFC 8915 - Network Time Security for Network Time Protocol (2020)


Specifik applikation RFC:

  • RFC 2783 - PPS API (tidssynkronisering med høj præcision med Unix -kerner) (2000)

litteratur

  • David L. Mills: Computer Network Time Synchronization: Network Time Protocol . CRC Taylor & Francis, Boca Raton 2006, ISBN 0-8493-5805-1 .
  • Benjamin Pfister: Kort forklaret: Sikring af NTP via Network Time Security . I: iX . Ingen.   2 , 2021, s.   114 ( heise.de [adgang 27. januar 2021] Inklusiv kommentar til RFC 8915 ).

Weblinks

Individuelle beviser

  1. ntpq - standard NTP -forespørgselsprogram. Adgang 1. december 2019 .
  2. NTP Version 4 Release Notes. Adgang 1. december 2019 .
  3. SIOS. Adgang 1. december 2019 .
  4. Hvad er stratum 1? | EndRun Technologies. Adgang 1. december 2019 .
  5. eecis.udel.edu ( PostScript )
  6. ^ Spectracom (red.): Hvad er forskellen mellem NTP og SNTP? New York 21. juli 2004 (amerikansk engelsk, spectracomcorp.com [PDF; 32   kB ; tilgået den 29. maj 2009]).
  7. ^ OpenBSD FAQ: Netværk. Hentet 1. september 2018 .
  8. Sebastian Grüner: Linux Foundation sponsorerer ntpd alternativ. golem.de
  9. Less Is More: Fjernelse af NTP. Adgang 1. december 2019 .
  10. Hvad vi har opnået. Adgang 1. december 2019 .
  11. version 1.0.0. Hentet 7. december 2020 .
  12. ^ Hanno Böck: Sikkerhedsgab i NTP . golem.de
  13. a b Opdater ikke NTP - stop med at bruge det - Hannos blog. Hentet 12. september 2018 .
  14. Chrony - Introduktion. Adgang til 16. februar 2021 .