Navn

ntpd – Network Time Protocol (NTP) daemon

Synopsis

ntpd ]

Beskrivelse

Programmet ntpd er en operativsystemdæmon, som indstiller og vedligeholder systemets klokkeslæt i synkronisering med internetstandardtidsservere. Det er en komplet implementering af Network Time Protocol (NTP) version 4, men bevarer også kompatibilitet med version 3, som defineret i RFC-1305, og version 1og 2, som defineret i henholdsvis RFC-1059 og RFC-1119. ntpd udfører de fleste beregninger i 64-bit-flydepunktsaritmetik og udfører kun relativt klodsede 64-bit-operationer med fast komma, når det er nødvendigt for at bevare den ultimative præcision, ca. 232 picosekunder. Selv om den ultimative præcision ikke kan opnås med almindelige arbejdsstationer og netværk i dag, kan det blive nødvendigt med fremtidige gigahertz CPU-klokker og gigabit LAN’er.

Sådan fungerer Ntp

Det fungerer ved at udveksle meddelelser med en eller flere konfigurerede servere med bestemte poll-intervaller. Når programmet startes, hvad enten det er første gang eller efterfølgende gange, kræver det flere udvekslinger fra de fleste af disse servere, så signalbehandlings- og afbødningsalgoritmerne kan akkumulere og behandle dataene og indstille uret. For at beskytte netværket mod bursts er det indledende afstemningsinterval for hver server forsinket med et interval, der er tilfældigt udvalgt over nogle få sekunder. Med standardintervallet på 64 sekunder kan der gå flere minutter, før uret er indstillet. Den indledende forsinkelse til at indstille uret kan reduceres ved hjælp af nøgleordet iburst med kommandoen til serverkonfiguration, som beskrevet på siden Konfigurationsindstillinger.

De fleste operativsystemer og hardware i dag indeholder en TOY-chip (Time-of-Year) til at opretholde tiden i perioder, hvor strømmen er slukket. Når maskinen startes op, bruges chippen til at initialisere styresystemets tid. Når maskinen er blevet synkroniseret med en NTP-server, korrigerer operativsystemet chippen fra tid til anden. Hvis der ikke er nogen TOY-chip, eller hvis dens tid af en eller anden grund er mere end 1000 sekunder fra serverens tid, antager ntpd, at der må være noget helt galt, og den eneste pålidelige handling er, at operatøren skal gribe ind og indstille uret manuelt. Dette får ntpd til at afslutte med en panikmeddelelse til systemloggen. Indstillingen -g tilsidesætter denne kontrol, og uret vil blive indstillet til servertiden uanset chip-tiden. Men for at beskytte mod ødelagt hardware, f.eks. når CMOS-batteriet svigter eller urtælleren bliver defekt, vil en fejl større end 1000s, når uret er blevet indstillet, få ntpd til at afslutte alligevel.

Under almindelige forhold justerer ntpd uret i små trin, så tidsskalaen faktisk er kontinuerlig og uden afbrydelser. Underbetingelser med ekstrem overbelastning af netværket kan jitteret for roundtrip delay overstige tre sekunder, og synkroniseringsafstanden, som er lig med halvdelen af roundtrip delay plus fejlbudgettermer, kan blive meget stor. ntpd-algoritmerne kasserer sampleoffsets, der overstiger 128 ms, medmindre det interval, hvor ingen sampleoffset er mindre end 128 ms, overstiger 900 sekunder. Den første prøve herefter, uanset forskydningen, sætter uret til det angivne tidspunkt. I praksis reducerer dette falske alarmer, hvor uret er fejlstillet, til en forsvindende lav forekomst.

Som følge af denne adfærd, når uret først er blevet indstillet, afviger det meget sjældent mere end 128 ms, selv i ekstreme tilfælde af overbelastning og jitter på netværksstien. Nogle gange, især når ntpd startes første gang, kan fejlen overstige 128 ms. Dette kan lejlighedsvis medføre, at uret indstilles baglæns, hvis det lokale klokkeslæt ligger mere end 128 s i fremtiden i forhold til serveren. I nogle applikationer kan denne adfærd være uacceptabel. Hvis indstillingen -x er medtaget på kommandolinjen, vil uret aldrig blive steppet, og der vil kun blive anvendt svingkorrektioner.

Disse problemer bør undersøges nøje, før man beslutter sig for at bruge indstillingen -x. Den maksimalt mulige slew rate er begrænset til 500 parts-per-million (PPM) som følge af de korrekthedsprincipper, som NTP-protokollen og algoritmedesignet er baseret på. Som følge heraf kan det tage lang tid for det lokale ur at konvergere til en acceptabel forskydning, ca. 2.000 s for hvert sekund, uret er uden for det acceptable område. I dette interval vil det lokale ur ikke være konsistent med noget andet netværksur, og systemet kan ikke anvendes til distribuerede applikationer, der kræver korrekt synkroniseret netværkstid.

På trods af ovenstående forholdsregler kan det forekomme, at når der er store frekvensfejl, at de resulterende tidsforskydninger afviger uden for 128 ms-området, og at det er nødvendigt med en eventuel trin- eller svingtidskorrektion. Hvis frekvensfejlen efter en sådan korrektion er så stor, at den første prøve ligger uden for det acceptable område, går ntpd ind i den samme tilstand, som når ntp.drift-filen ikke er til stede. Hensigten med denne adfærd er hurtigt at korrigere frekvensen og genoprette driften til den normale sporingstilstand. I de mest ekstreme tilfælde (jeg tænker på time.ien.it) kan der lejlighedsvis forekomme step/slew-korrektioner og efterfølgende frekvenskorrektioner. Det hjælper i disse tilfælde at bruge nøgleordet burst, når serveren konfigureres.

Frekvensdisciplin

Ntpd’s opførsel ved opstart afhænger af, om frekvensfilen, normalt ntp.drift, findes. Denne fil indeholder det seneste skøn over urfrekvensfejl. Når ntpd startes, og filen ikke findes, går ntpd ind i en særlig tilstand, der er designet til hurtigt at tilpasse sig den partikulære tids- og frekvensfejl i systemets uroscillator. Dette tager ca. 15 minutter, hvorefter tiden og frekvensen indstilles til de nominelle værdier, og thentpd går over i normal tilstand, hvor tiden og frekvensen løbende følges i forhold til serveren. Efter en time oprettes frekvensfilen, og den aktuelle frekvensforskydning skrives til den. Når ntpd startes, og filen findes, initialiseres ntpd-frekvensen fra filen, og ntpd går straks over i normal tilstand. Derefter skrives den aktuelle frekvensforskydning til filen med timers mellemrum.

Operationsmodes

ntpd kan fungere i en af flere tilstande, herunder symmetrisk aktiv/passiv, klient/server broadcast/multicast og manycast, som beskrevet på sidenAssociation Management (Foreningsstyring). Den opererer normalt kontinuerligt, mens den overvåger små ændringer i frekvensen og trimmer uret for den ultimative præcision. Den kan dog fungere i en engangstilstand, hvor tiden indstilles fra en ekstern server, og frekvensen indstilles fra en tidligere registreret frekvensfil. En broadcast/multicast- eller manycast-klient kan finde fjernservere, beregne korrektionsfaktorer for udbredelsesforsinkelse mellem server og klient og konfigurere sig selvfautomatisk. Dette gør det muligt at implementere en flåde af arbejdsstationer uden at angive konfigurationsdetaljer, der er specifikke for det lokale miljø.

Som standard kører ntpd i kontinuerlig tilstand, hvor hver af eventuelt flere eksterne servere bliver pollet med intervaller, der er bestemt af en indviklet statemaskine. Statemaskinen måler den tilfældige roundtrip delay jitter og oscillatorfrekvensens vandring og bestemmer det bedste poll-interval ved hjælp af en heuristisk algoritme. Normalt, og i de fleste driftsmiljøer, vil tilstandsmaskinen starte med intervaller på 64 sekunder og til sidst øges i trin til 1024 sekunder.Der indføres en lille mængde tilfældig variation for at undgå at der opstår en masse af fejl på serverne. Hvis en server bliver utilgængelig i et stykke tid, øgespoll-intervallet desuden i trin til 1024s for at reducere netværksoverhead.

I nogle tilfælde kan det ikke være praktisk for ntpd at køre kontinuerligt. En almindelig løsning har været at køre ntpdate-programmet fra et cronjob på bestemte tidspunkter. Dette program har dog ikke ntpd’s udformede signalbehandling, fejlkontrol og algoritmer til afhjælpning af fejl som ntpd Indstillingen-q er beregnet til dette formål. Indstilling af denne indstilling vil få ntpd til at afslutte lige efter at have sat uret for første gang med dekonfigurerede servere. Proceduren for den første indstilling af uret er den samme som i kontinuerlig tilstand; de fleste programmer vil sandsynligvis ønske at angive nøgleordetiburst med kommandoen til serverkonfiguration. Med dette nøgleord udveksles en række beskeder for at groome dataene, og uret indstilles i ca. 10 s. Hvis der ikke høres noget efter et par minutter, går dæmonen i stå og afsluttes. Efter en passende periode med sorg kan ntpdate-programmet pensioneres.

Når der er kerneunderstøttelse til rådighed til at disciplinere clockfrekvensen, hvilket er tilfældet for stock Solaris, Tru64, Linux og FreeBSD, er der en nyttig funktion til rådighed til at disciplinere clockfrekvensen. Først køres ntpd i kontinuerlig tilstand med udvalgte servere for at måle og registrere den intrinsiske clockfrekvensforskydning i frekvensfilen. Det kan tage nogle timer, før frekvensen og forskydningen er faldet til ro. Derefter stoppes ntpd og køres i engangstilstand efter behov. Ved hver opstart læses frekvensen fra filen og initialiserer kernefrekvensen.

Poll Interval Control

Denne version af NTP indeholder en indviklet tilstandsmaskine til at reducere netværksbelastningen og samtidig opretholde en synkroniseringskvalitet, der er i overensstemmelse med den observerede jitter og vandring. Der er en række måder at skræddersy driften på for at forbedre nøjagtigheden ved at reducere intervallet eller for at reducere netværksoverbelastningen ved at øge det. Brugeren anbefales dog at overveje konsekvenserne af at ændre polljusteringsområdet fra standardminimum på 64 s til standardmaksimum på 1.024 s. Standardminimum kan ændres med kommandoen tinker minpoll til en værdi, der ikke er mindre end 16 s. Denne værdi anvendes for alle konfigurerede foreninger, medmindre den overskrives af minpoll-indstillingen i konfigurationskommandoen. Bemærk, at de fleste enhedsdrivere ikke fungerer korrekt, hvis poll-intervallet er mindre end 64 s, og at broadcast-server- og manycast-klientforeningerne også vil bruge standardværdien, medmindre den overskrives.

I nogle tilfælde, hvor der er tale om opkalds- eller betalingstjenester, kan det være nyttigt at øge minimumsintervallet til nogle få tiendedele af minutter og maksimumsintervallet til en dag eller lignende. Under normale driftsbetingelser vil intervallet blive øget i trin fra minimum til maksimum, når urets disciplineringssløjfe har stabiliseret sig, når intervallet er øget i trin fra minimum til maksimum. Dette forudsætter imidlertid, at den iboende urfrekvensfejl er lille nok til, at disciplineringssløjfen kan korrigere den. Løkkens opfangningsområde er 500 PPM ved et interval på 64 s, der falder med en faktor to for hver fordobling af intervallet. Ved et minimum på 1 024 s er f.eks. opfangningsområdet kun 31 PPM. Hvis den iboende fejl er større end dette, skal driftfilen ntp.drift tilpasses specielt for at reducere restfejlen til under denne grænse. når dette er gjort, opdateres driftfilen automatisk en gang i timen og er tilgængelig til at initialisere frekvensen ved efterfølgende genstart af dæmonen.

The Huff-n’-puff Filter

I scenarier, hvor en betydelig mængde data skal downloades eller uploades via telefonmodemmer, kan kvaliteten af tidsregistreringen blive alvorligt forringet. Dette skyldes, at de differentielle forsinkelser i de to transmissionsretninger kan være ret store. I mange tilfælde er de tilsyneladende tidsfejl så store, at de overskrider tringrænsen, og der kan forekomme en trinkorrektion under og efter dataoverførslen.

Det huff-n’-puff-filter er konstrueret til at korrigere den tilsyneladende tidsforskydning i disse tilfælde. Det afhænger af viden om udbredelsesforsinkelsen, når der ikke er anden trafik til stede. I almindelige scenarier forekommer dette i andre tidsrum end arbejdstid. Filteret har et skiftregister, der husker den mindste forsinkelse i det seneste interval, som normalt er målt i timer. Under forhold med stor forsinkelse korrigerer filteret den tilsyneladende forskydning ved hjælp af forskydningens fortegn og forskellen mellem den tilsyneladende forsinkelse og den mindste forsinkelse. Filtrets navn afspejler den negative (huff) og positive (puff) korrektion, som afhænger af forskydningens fortegn.

Filtret aktiveres af tinker-kommandoen og nøgleordet huffpuff, som beskrevet på siden Diverse indstillinger.

Notes

Hvis NetInfo-understøttelse er indbygget i ntpd, så vil ntpd forsøge at læse sin konfiguration fra NetInfo, hvis standard ntp.conf-filen ikke kan læses, og der ikke er angivet nogen fil med indstillingen -c.

I sammenhænge, hvor der forventes et værtsnavn, tvinger en -4-kvalifikator foran værtsnavnet DNS-opløsning til IPv4-navneområdet, mens en -6-kvalifikator tvinger DNS-opløsning til IPv6-navneområdet.

Flere interne ntpd-variabler kan vises, og konfigurationsindstillingerne kan ændres, mens ntpd kører, ved hjælp af hjælpeprogrammerne ntpq ogntpdc.

Når ntpd starter, ser den på værdien af umask, og hvis den er nul, sætter ntpd umask til 022

Medmindre indstillingen -n, -d eller -D anvendes, ændrer ntpd den aktuelle arbejdsmappe til rodmappen, så alle indstillinger ellerkommandoer, der angiver stier, skal bruge en absolut sti eller en sti relativ til roden.

Kommandolinjeindstillinger

-4 Tvinger DNS-opløsning af værtsnavne til IPv4-navneområdet. -6 Tvinger DNS-opløsning af værtsnavne til IPv6-navneområdet. -a Kræver kryptografisk autentificering for broadcast-klient, multicast-klient og symmetriske passive forbindelser. Dette er standardindstillingen. -A Kræver ikke kryptografisk autentificering for broadcast-klient, multicast-klient og symmetriske passive forbindelser. Dette er næsten aldrig en god idé. -b Gør det muligt for klienten at synkronisere med broadcast-servere. -c conffile Angiv navn og sti til konfigurationsfilen, standard /etc/ntp.conf -d Angiv debugging-tilstand. Denne indstilling kan forekomme mere end én gang, idet hver forekomst indikerer en mere detaljeret visning. -D level Angiver fejlfindingsniveauet direkte. -f driftfile Angiv navnet og stien til frekvensfilen. Dette er den samme operation som konfigurationskommandoen driftfile driftfile driftfile. -g Normalt afsluttes ntpd med en meddelelse til systemloggen, hvis forskydningen overstiger paniktærsklen, som som standard er 1000 s. Denne indstilling gør det muligt at indstille thetime til en hvilken som helst værdi uden begrænsning; dette kan dog kun ske én gang. Hvis tærsklen overskrides derefter, afsluttes ntpd med en meddelelse til systemloggen. Denne indstilling kan bruges sammen med indstillingerne -q og -x. Se tinker-kommandoen for andre muligheder. -i jaildir Chroot serveren til mappen jaildir Denne indstilling indebærer også, at serveren forsøger at droppe root-privilegier ved opstart (ellers giver chroot kun meget lidt ekstra sikkerhed), og den er kun tilgængelig, hvis operativsystemet understøtter at køre serveren uden fulde root-privilegier. Du skal muligvis også angive en -u-indstilling. -I iface Lyt på grænseflade. Denne indstilling kan forekomme et ubegrænset antal gange. -k keyfile Angiv navnet og stien til den symmetriske nøglefil. Dette er den samme handling som kommandoen keys keyfile-konfiguration. -l logfile Angiv navnet og stien til logfilen. Standardværdien er systemlogfilen. Dette er den samme handling som kommandoen logfile logfilekonfiguration. -L Lyt ikke til virtuelle IP’er. Standardværdien er at lytte. -m Lås hukommelse. -n Må ikke gaffeles. -N I det omfang, det er tilladt af operativsystemet, skal ntpd køres med den højeste prioritet. -p pidfile Angiv navnet på og stien til den fil, der bruges til at registrere ntpd-proces-ID’et. Dette er den samme operation som kommandoen pidfile pidfileconfiguration. -P priority I det omfang, det er tilladt af operativsystemet, skal ntpd køres med den angivne prioritet. -q Afslut ntpd lige efter første gang, at uret er sat. Denne opførsel efterligner ntpdate-programmet, som skal udgå. Indstillingerne -g og -x kan bruges sammen med denne indstilling. Bemærk: Kernel-tidsdisciplinen er deaktiveret med denne indstilling. -r broadcastdelay Angiv standardforsinkelsen for udbredelse fra broadcast/multicast-serveren til denne klient. Dette er kun nødvendigt, hvis forsinkelsen ikke kan beregnes automatisk af protokollen. -s statsdir Angiv mappestien for de filer, der oprettes af statistikfaciliteten. Dette er den samme operation som konfigurationskommandoen statsdir statsdir statsdir. -t key Tilføjer et nøgletal til listen over betroede nøgler. Denne indstilling kan forekomme mere end én gang. -u user Angiv en bruger og eventuelt en gruppe, som der skal skiftes til. Denne indstilling er kun tilgængelig, hvis operativsystemet understøtter, at serveren kan køre uden fulde root-privilegier. i øjeblikket understøttes denne indstilling under NetBSD (konfigurer med –enable-clockctl) og Linux (konfigurer med –enable-linuxcaps). -U interface update interval Antal sekunder at vente mellem scanninger af grænsefladelisten for at hente nye og slette netværksgrænseflader. Indstilles til 0 for at deaktivere dynamisk opdatering af grænsefladelisten.Standardværdien er at scanne hvert 5. minut. -v variabel-V-variabel Tilføj en systemvariabel, der er opført som standard. -x Normalt er tiden svinget, hvis forskydningen er mindre end trin-tærsklen, som som er 128 ms som standard, og trinvis, hvis den er over tærsklen. Denne indstilling indstiller tærsklen til 600 s, hvilket ligger godt inden for nøjagtighedsvinduet til at indstille uret manuelt. Bemærk: Da slew-hastigheden i typiske Unix-kerner er begrænsettil 0,5 ms/s, kræver hvert sekunds justering et amortiseringsinterval på 2000 s. Således vil en justering så meget som 600 s tage næsten 14 dage at gennemføre.Denne indstilling kan bruges sammen med indstillingerne -g og -q. Se tinker-kommandoen for andre muligheder. Bemærk: Kernel-tidsdisciplinen er deaktiveretmed denne indstilling.

konfigurationsfilen

Ordentligt læser ntpd konfigurationsfilen ntp.conf ved opstart for at bestemme synkroniseringskilderne og driftstilstandene. det er også muligt at angive en fungerende, om end begrænset, konfiguration udelukkende på kommandolinjen, hvilket overflødiggør behovet for en konfigurationsfil. Dette kan især være nyttigt, når den lokale vært skal konfigureres som en broadcast/multicast-klient, hvor alle peers bestemmes ved at lytte til broadcasts på starttidspunktet.

Sædvanligvis installeres konfigurationsfilen i mappen /etc, men den kan også installeres et andet sted (se kommandolinjeoptionen -c conffile). Filformatet svarer til andre Unix-konfigurationsfiler – kommentarer begynder med et #-tegn og strækker sig til linjens ende; tomme linjer ignoreres.

Konfigurationskommandoer består af et indledende nøgleord efterfulgt af en liste af argumenter, hvoraf nogle kan være valgfrie, adskilt af mellemrum. Kommandoer kan ikke fortsættes over flere linjer. Argumenter kan være værtsnavne, værtsadresser skrevet i numerisk form, i form af punkterede kvadrater, hele tal, tal med flydende komma (når der angives tider i sekunder) og tekststrenge. Valgfrie argumenter er afgrænset med i de følgende beskrivelser, mens alternativer er adskilt med | Notationen betyder en valgfri, ubestemt gentagelse af det sidste element før

Exit-koder

En exit-kode, der ikke er nul, angiver en fejl. Eventuelle fejlmeddelelser logges som standard i systemloggen.

Afgangskoden er kun 0, når ntpd afsluttes af et signal, eller når indstillingen -q bruges, og ntpd med succes indstiller systemuret.

Se også

ntp.conf(5), ntpq(8), ntpq(8), ntpdc(8)

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.