局域網絡延相對較大的原因在于時間戳一般都是在應用層加蓋。為減少操作系統(tǒng)內核處理延時的影響提高NTP授時精度,發(fā)/收NTP包時間戳應盡量接近主機真實發(fā)/收包時刻。在不改變硬件的條件下,一個可行的辦法是修改網卡驅動程序,將記錄NTP包發(fā)/收時間戳從應用程序移至網卡驅動程序處,可消除操作系統(tǒng)內核處理延時不確定而引入的誤差。這種方法在局域網中可大幅提高NTP授時精度至μs級。
任何晶振實際工作頻率都是不穩(wěn)定的,只是程度不同而已。即使溫度補償的晶振,在常溫范圍內(攝氏10℃~35℃)也有大約5×10-7~2×10-6的誤差。晶振實際頻率是受外界多種因素(溫度、電壓、老化等)影響而改變的。因此,時鐘頻率偏差系數k并非恒定不變的。每隔一定時間,NTP客戶機要對時鐘頻率偏差系數k進行校正,才能保證計時精度。
基于NTP減少計算機時鐘頻率偏差
時鐘頻率偏差是時鐘長期計時累積誤差的主要原因,要提高時鐘長期計時精度,必須補償時鐘頻率偏差。聯(lián)網的計算機可采用NTP方式,可非常方便地校準時鐘頻率偏差。以NTP服務器時鐘為標準時間,在某一時刻設置NTP客戶機時間為NTP服務器當前時間T0,經過一段時間后,NTP服務器時間為T0+tsn,NTP客戶端時間為T0+tcn。因為存在時鐘頻率偏差,tsn與tcn并不相等。NTP客戶端時間tcn需乘以時鐘頻率偏差系數k才等于tsn,即tsn=k×tcn,所以k=tsn/tcn。
假定局域網內NTP延時小于1ms,理論上授時誤差小于0.5ms,但對于Windows操作系統(tǒng)內置的NTP客戶和NTP服務,并不能達到此精度。Windows NTP時鐘分辨率因操作系統(tǒng)和硬件不同而有所不同,時鐘分辨率通常為10ms或15ms?;赪indows操作系統(tǒng)內置的NTP授時精度不超過10ms。