den 30 augusti 2005 av Thomas Nilsson
Det råder inte något tvivel längre om att alla datorer
skall ha rätt tid. Allt från att incident och spårbarheten
förbättras till något så enkelt som bekvämligheten av att alltid ha
rätt tid. Det råder heller inte några tvivel att NTP/SNTP
(RFC1305/RFC2030) är det självklara alternativet för att
synkronisera tiden. I Unix-världen har dessa
tidsynkroniseringsprotokoll varit en självklar del sedan urminnes
tider. I Windows-världen var det först med Windows 2000 som detta
blev en implementerad del i form av W32time.
Tyvärr var implementationen av W32time förenad med olyckliga val
av standardvärden. Lagom till att Windows 2003/XP såg dagens ljus
ombearbetades W32time rejält vilket dessvärre medförde att en
hårdkodad begränsning smög sig in som försvårat användningen.
Standard mode för W32time är symmetric-active vilket normalt inte
accepteras av officiella tidservrar utan dessa förutsätter att
client mode används. Detta är dock inget större problem eftersom
W32time kan konfigureras om i detta avseende, även om det inte är
alldeles självklart hur detta görs. Här ger Microsoft KB875424 en
bra vägledning.
Värre är det med den hårdkodade begränsningen i W32time som
omöjliggör användning av tidservrar med allt för god precision.
Närmare bestämt så anser W32time att ett svar från en tidserver med
ett precision-värde som är lägre än -30 att betrakta som skräp.
Varför man har valt detta värde är fortfarande oklart. Det finns
inget stöd för detta i relaterade RFC''''s och det finns heller
inte någon rimlig förklaring från Microsofts sida.
Precision-värdet är inget annat en tidserverns egen uppskattning
om hur bra den inbyggda klockan är. Det kan ses som en sorts
kvalitetsindikator och värdet används främst vid ett urval av
tidservers. Värdet anges i sekunder som ett heltal med basen 2.
Exempelvis motsvarar precision-värdet -30 en precision av 0,9ns (2
upphöjt i -30). Det finns färdiga förslag till källkod för hur
detta kan beräknas (exempelvis precision.c på www.ntp.org).
Microsoft har under sommaren bekräftat den hårdkodade
begränsningen av precision-värdet i W32time och har med
undertecknads hjälp reproducerat felet. Tyvärr har de inte i
skrivande stund beslutat om detta skall rättas. Om det rättas
återstår det att se om det sker i form av en hotfix eller en
service pack. Högst troligt är detta åtgärdat i Vista. Tills vidare
återstår två alternativ för att synkronisera tiden i Windows 2003
och i Windows XP. Antingen att välja tidservers med ett lägre
precision-värde eller att använda tredjepartsprodukter för
tidsynkronisering.
© 2005 Thomas Nilsson, Certezza AB