|
NTP網(wǎng)絡(luò)授時(shí)簡(jiǎn)介1. NTP網(wǎng)絡(luò)時(shí)間協(xié)議簡(jiǎn)介 NTP(Network Time Protocol)是由美國德拉瓦大學(xué)的David L. Mills教授于1985年提出,除了可以估算封包在網(wǎng)絡(luò)上的往返延遲外,還可獨(dú)立地估算計(jì)算機(jī)時(shí)鐘偏差,從而實(shí)現(xiàn)在網(wǎng)絡(luò)上的高精準(zhǔn)度計(jì)算機(jī)校時(shí),它是設(shè)計(jì)用來在Internet上使不同的機(jī)器能維持相同時(shí)間的一種通訊協(xié)定。時(shí)間服務(wù)器(time server)是利用NTP的一種服務(wù)器,通過它可以使網(wǎng)絡(luò)中的機(jī)器維持時(shí)間同步。在大多數(shù)的地方,NTP可以提供1-50ms的可信賴性的同步時(shí)間源和網(wǎng)絡(luò)工作路徑。 網(wǎng)絡(luò)時(shí)間協(xié)議(NTP)的詳細(xì)說明在RFC-1305[Mills 1992]中。RFC-1305對(duì) NTP協(xié)議自動(dòng)機(jī)在事件、狀態(tài)、轉(zhuǎn)變功能和行為方面給出了明確的說明。它以合適的算法以增強(qiáng)時(shí)鐘的準(zhǔn)確性,并且減輕多個(gè)由于同步源而產(chǎn)生的差錯(cuò),實(shí)現(xiàn)了準(zhǔn)確性低于毫秒的時(shí)間服務(wù),以滿足目前因特網(wǎng)中路徑量測(cè)的需要。 NTP是一個(gè)跨越廣域網(wǎng)或局域網(wǎng)的復(fù)雜的同步時(shí)間協(xié)議,它通?色@得毫秒級(jí)的精度。RFC2030[Mills 1996]描述了SNTP(Simple Network Time Protocol),目的是為了那些不需要完整NTP實(shí)現(xiàn)復(fù)雜性的主機(jī),它是NTP的一個(gè)子集。通常讓局域網(wǎng)上的若干臺(tái)主機(jī)通過因特網(wǎng)與其他的NTP主機(jī)同步時(shí)鐘,接著再向局域網(wǎng)內(nèi)其他客戶端提供時(shí)間同步服務(wù)。 2. NTP授時(shí)原理 NTP授時(shí)原理NTP最典型的授時(shí)方式是Client/Server方式。如下圖所示: NTP Client/Server模式授時(shí)原理 客戶端首先向服務(wù)端發(fā)送一個(gè)NTP 包,其中包含了該包離開客戶端的時(shí)間戳T1,當(dāng)服務(wù)端接收到該包時(shí),依次填入包到達(dá)的時(shí)間戳T2、包離開的時(shí)間戳T3,然后立即把包返回給客戶端?蛻舳嗽诮邮盏巾憫(yīng)包時(shí),記錄包返回的時(shí)間戳T4?蛻舳擞蒙鲜4個(gè)時(shí)間參數(shù)就能夠計(jì)算出2個(gè)關(guān)鍵參數(shù): · NTP包的往返延遲d; · 客戶端與服務(wù)端之間的時(shí)鐘偏差t; 之后,客戶端就可以使用時(shí)鐘偏差t來調(diào)整本地時(shí)鐘,以使其時(shí)間與服務(wù)端時(shí)間一致。具體方法如下,設(shè): · T1為客戶發(fā)送NTP請(qǐng)求時(shí)間戳(以客戶時(shí)間為參照); · T2為服務(wù)端收到NTP請(qǐng)求時(shí)間戳(以服務(wù)端時(shí)間為參照); · T3為服務(wù)端回復(fù)NTP請(qǐng)求時(shí)間戳(以服務(wù)端時(shí)間為參照); · T4為客戶收到NTP回復(fù)包時(shí)間戳(以客戶時(shí)間為參照); · d1為NTP請(qǐng)求包傳送延時(shí),d2為NTP回復(fù)包傳送延時(shí); · t為服務(wù)端和客戶端之間的時(shí)間偏差,d為NTP包的往返時(shí)間; 則問題轉(zhuǎn)換為已知T1、T2、T3、T4,求得t即可調(diào)整客戶端時(shí)鐘。列方程組如下: 假設(shè)NPT請(qǐng)求和回復(fù)包傳送延時(shí)相等,即d1=d2,則可解得: 可以看出,t、d只與T2、T1差值及T3、T4差值相關(guān),而與T2、T3差值無關(guān),即最終的結(jié)果與服務(wù)端處理請(qǐng)求所需的時(shí)間無關(guān)。 3. NTP授時(shí)精度分析 NTP授時(shí)精度與NTP服務(wù)端與用戶間的網(wǎng)絡(luò)狀況有關(guān),主要取決于NTP包往返路由的延時(shí)對(duì)稱程度,往返路由的延時(shí)不對(duì)稱值最大不超過網(wǎng)絡(luò)延時(shí)。 根據(jù)第一個(gè)方程組的第一個(gè)等式: t也可表示為: 我們此前都假設(shè)NTP請(qǐng)求和回復(fù)包在網(wǎng)上傳送延時(shí)相等,即d1=d2=d/2,而d1、d2的取值范圍在(0…d)間,因此由上式可以得出最大授時(shí)誤差是±d/2。一般廣域網(wǎng)的網(wǎng)絡(luò)延時(shí)在10-500ms之間,局域網(wǎng)的網(wǎng)絡(luò)延時(shí)在計(jì)時(shí)操作系統(tǒng)內(nèi)核處理延遲的情況下通常小于1ms。假定局域網(wǎng)內(nèi)NTP延時(shí)小于1ms,理論上授時(shí)誤差小于0.5ms,但對(duì)于Windows操作系統(tǒng)內(nèi)置的NTP客戶和NTP服務(wù)而言并不能達(dá)到此精度。Windows NTP時(shí)鐘分辨率因操作系統(tǒng)和硬件不同而有所不同,時(shí)鐘分辨率通常為10ms或15ms;赪indows操作系統(tǒng)內(nèi)置的NTP授時(shí)精度最高不超過10ms。 基于NTP時(shí)鐘偏差的原因時(shí)鐘頻率偏差和時(shí)鐘分辨率低是局域網(wǎng)NTP授時(shí)精度不高的主要原因。 通用存在兩類時(shí)鐘源,即硬件時(shí)鐘和軟件時(shí)。不論是硬件時(shí)鐘還是軟件時(shí)鐘,都是由石英晶體振蕩器驅(qū)動(dòng)的,通過累計(jì)石英晶體振蕩器輸出脈沖數(shù)換算出時(shí)間。受溫度變化、電壓、芯片老化等因素影響,晶振頻率會(huì)發(fā)生小幅度波動(dòng),其中溫度對(duì)晶振頻影響最大。由于工藝和材料的原因,同一生產(chǎn)線上標(biāo)稱頻率相同的石英晶體,其實(shí)際頻率也是不同的。時(shí)鐘頻率偏差是時(shí)鐘長(zhǎng)期計(jì)時(shí)累積誤差的主要原因,要提高時(shí)鐘長(zhǎng)期計(jì)時(shí)精度,必須補(bǔ)償時(shí)鐘頻率偏差。任何晶振實(shí)際工作頻率都是不穩(wěn)定的,只是程度不同而已。此外,操作系統(tǒng)應(yīng)用層加蓋、操作系統(tǒng)內(nèi)核處理延時(shí)的不確定也會(huì)影響NTP時(shí)鐘的計(jì)算。 |