時(shí)間同步絕對(duì)是一個(gè)大問題
假設(shè)A電腦時(shí)間和B電腦時(shí)間不同,當(dāng)他們兩個(gè)電腦的用戶在使用電腦的時(shí)候就會(huì)存在問題,比如A電腦的用戶說(shuō),我們下午5:00 去打球,然后A電腦到了5:00就去打球了,但是可能這個(gè)時(shí)候B電腦的時(shí)間才到4:00,他們的信息就不能對(duì)齊。
還有一些問題的追溯,如果出現(xiàn)問題后,本地時(shí)間存在差異,那么我們根據(jù)日志時(shí)間來(lái)排查問題就會(huì)有問題。
NTP 時(shí)鐘
NTP(Network TimeProtocol,網(wǎng)絡(luò)時(shí)間)是由美國(guó)德拉瓦大學(xué)的David L. Mills教授于1985年提出,由時(shí)間協(xié)議、ICMP時(shí)間戳消息及IP時(shí)間戳選項(xiàng)發(fā) 展而來(lái)。NTP用于將計(jì)算機(jī)客戶或服務(wù)器的時(shí)間同步到另一服務(wù)器或參考時(shí)鐘源。它使用UTC作為時(shí)間標(biāo)準(zhǔn),是基于無(wú)連接的IP協(xié)議和UDP協(xié)議的應(yīng)用層協(xié)議,使用層次式時(shí)間分布模型,所能取得的準(zhǔn)確度依賴于本地時(shí)鐘硬件的精確度和對(duì)設(shè)備及進(jìn)程延遲的嚴(yán)格控制。
PTP 時(shí)鐘
NTP 時(shí)鐘是不準(zhǔn)確時(shí)鐘,人們?yōu)榱双@得更加精準(zhǔn)的時(shí)鐘對(duì)齊,所以就出現(xiàn)了PTP時(shí)鐘。
PTP(PrecisionTime Protocol)是一種對(duì)標(biāo)準(zhǔn)以太網(wǎng)終端設(shè)備進(jìn)行時(shí)間和頻率同步的協(xié)議,也稱為IEEE 1588,簡(jiǎn)稱為1588。1588分為1588v1和1588v2兩個(gè)版本,1588v1只能達(dá)到亞毫秒級(jí)的時(shí)間同步精度,而1588v2可以達(dá)到亞微秒級(jí)同步精度。1588v2被定義為時(shí)間同步的協(xié)議,最初只是用于設(shè)備之間的高精度時(shí)間同步,隨著技術(shù)的發(fā)展,1588v2也具備頻率同步的功能。
理論上任何PTP時(shí)鐘都能實(shí)現(xiàn)主時(shí)鐘和從時(shí)鐘的功能,但一個(gè)PTP通信子網(wǎng)內(nèi)只能有一個(gè)主時(shí)鐘。整個(gè)系統(tǒng)中的最優(yōu)時(shí)鐘為最高級(jí)時(shí)鐘GMC(Grandmaster Clock),有著最好的穩(wěn)定性、精確性、確定性等。根據(jù)各節(jié)點(diǎn)上時(shí)鐘的精度和級(jí)別以及UTC(通用協(xié)調(diào)時(shí)間)的可追溯性等 特性,由最佳主時(shí)鐘算法(Best MasterClock)來(lái)自動(dòng)選擇各子網(wǎng)內(nèi)的主時(shí)鐘;在只有一個(gè)子網(wǎng)的系統(tǒng)中,主時(shí)鐘就是最高級(jí)時(shí)鐘GMC。每個(gè)系統(tǒng)只有一個(gè)GMC,且每個(gè)子網(wǎng)內(nèi)只有一個(gè)主時(shí)鐘,從時(shí)鐘與主時(shí)鐘保持同步。
整個(gè)PTP網(wǎng)絡(luò)中,所有時(shí)鐘都會(huì)按照主從(Master-Slave)層次關(guān)系組織在一起,各節(jié)點(diǎn)逐級(jí)同步時(shí)鐘,最終完成與系統(tǒng)的最優(yōu)時(shí)鐘Grandmaster的同步。整個(gè)同步的過程是通過交換1588v2報(bào)文來(lái)完成的。從時(shí)鐘通過1588v2報(bào)文中攜帶的時(shí)間戳信息計(jì)算與主時(shí)鐘之間的時(shí)間偏移和路徑延遲,據(jù)此調(diào)整本地時(shí)鐘達(dá)到與主時(shí)鐘的同步。
1588v2報(bào)文是在物理芯片上打時(shí)間戳,而不是在上層網(wǎng)絡(luò),這樣能最大程度上保證時(shí)間戳的準(zhǔn)確。因此,與傳統(tǒng)的應(yīng)用層協(xié)議NTP(Network Time Protocol,網(wǎng)絡(luò)時(shí)間協(xié)議)相比,1588v2的精度更高。
時(shí)間同步的原理
1588V2時(shí)間同步的基本原理和NTP相同,都是主從設(shè)備之間雙向收發(fā)時(shí)間同步報(bào)文,根據(jù)報(bào)文的收發(fā)時(shí)間戳,計(jì)算得到兩個(gè)設(shè)備之間往返的總時(shí)間T。
如果兩個(gè)方向的時(shí)延相同,T/2 就是單向時(shí)延。
根據(jù)單向時(shí)延就可以得到主設(shè)備和從設(shè)備的時(shí)間偏差,從設(shè)備根據(jù)這個(gè)時(shí)間偏差來(lái)調(diào)整自身的時(shí)間,就可以完成主從設(shè)備之間的時(shí)間同步。
PTP 與NTP的區(qū)別
NTP 協(xié)議運(yùn)行在應(yīng)用層,測(cè)量出來(lái)的時(shí)間差除了在實(shí)際物理網(wǎng)絡(luò)上的時(shí)間,還包括操作系統(tǒng)的處理時(shí)間,比如你在發(fā)送網(wǎng)絡(luò)數(shù)據(jù)包的時(shí)候,被更高優(yōu)先級(jí)的任務(wù)中斷了,又或者緩存阻塞了等等。
所以NTP的抖動(dòng)相對(duì)PTP來(lái)說(shuō)大得非常非常多。
1588v2 的優(yōu)勢(shì)在于,它的時(shí)間戳是在物理層發(fā)送前加上去的,就撇開了操作系統(tǒng)對(duì)它和影響。
因?yàn)樽罱ぷ餍枰芯康囊恍┲R(shí)點(diǎn),我們要解決的問題是在兩個(gè)網(wǎng)絡(luò)設(shè)備上保證他們時(shí)間是完全對(duì)齊的,這個(gè)完全對(duì)齊一定是要求非常非常高的。如果也是在從事這方面研究的同學(xué),歡迎一起討論。
END
來(lái)源:嵌入式Linux版權(quán)歸原作者所有,如有侵權(quán),請(qǐng)聯(lián)系刪除。
▍