PTP时间同步概念简介
目前在做一些車載多傳感器時間同步方面的工作,以此記錄總結(jié)一下學(xué)習(xí)過程中碰到的一些概念和問題。文中大部分知識源于網(wǎng)絡(luò),且均標(biāo)明了文章來源,如有侵權(quán),請聯(lián)系我刪除,謝謝。
內(nèi)容來源
標(biāo)*的是我認(rèn)為需要仔細(xì)閱讀的文章。
一、主機(jī)上的時間
以Linux(Ubuntu)操作系統(tǒng)為例,主要包含兩個時鐘:系統(tǒng)時鐘和硬件時鐘。硬件時鐘,即BIOS時間;系統(tǒng)時鐘,即linux系統(tǒng)Kernel(內(nèi)核)時間。每次Linux啟動時,系統(tǒng)Kernel(內(nèi)核)會先去讀取硬件時鐘的設(shè)置(但是此時的硬件時間不一定是準(zhǔn)確的),然后系統(tǒng)時鐘就會獨(dú)立于硬件繼續(xù)運(yùn)作。在linux系統(tǒng)上程序運(yùn)行時讀取的時間都是系統(tǒng)Kernel(內(nèi)核)時間。
綜上所述,想要永久修改linux時間并使得時間準(zhǔn)確,就需要永久修改硬件時間,并實(shí)現(xiàn)系統(tǒng)時間對硬件時間的同步。不然要么每次重新啟動linux時,系統(tǒng)時間又變回之前錯誤的硬件時間,要么硬件時間同步完成,但系統(tǒng)時間未同步到硬件時間,導(dǎo)致程序獲取到的時間(系統(tǒng)時間)仍是錯誤的。但這里我還有個問題,在我使用PTP的過程中,發(fā)現(xiàn)部分網(wǎng)絡(luò)接口控制器 (NIC) 自身帶有時鐘,那么這個時鐘與主機(jī)自身的硬件時鐘又有什么關(guān)系呢?
二、同步的概念
時鐘同步包含三個概念:
????????頻率同步(Frequency Sync):指單位時間內(nèi)產(chǎn)生時鐘脈沖的次數(shù)保持一致,與具體的時間值無關(guān)。
????????相位同步(Phase Sync):除包含頻率同步外,還指產(chǎn)生的時鐘脈沖邊界保持一致,即在同一時刻觸發(fā)時鐘脈沖的上升沿或下降沿,與具體時間值無關(guān)。
????????時間同步(Time of Day Sync):除包含相位同步外,還要求具體時間一致。這也是PTP同步的要求。
三、PTP中的概念
PTP
Precision Time Protocol,共有三版,分別為IEEE1588-2002,IEEE1588-2008,IEEE1588-2019,具體可參考參考4。目前市面上大多數(shù)的PTP設(shè)備應(yīng)該都支持到了第二版即IEEE1588-2008。冷知識:該標(biāo)準(zhǔn)的pdf售價為280美元。
Linuxptp
PTP協(xié)議在Linux系統(tǒng)上的實(shí)現(xiàn),具體包含ptp4l和phc2sys兩個軟件,具體使用可參看我另一篇文章鏈接。
PTP中的設(shè)備類型
PTP作用的對象是時鐘,主要分為全局主時鐘(GrandMaster),主時鐘(MasterClock),透明時鐘(TransparentClock),邊界時鐘(BoundaryClock)和普通時鐘(OrdinaryClock)。
全局主時鐘(GM),全局唯一,為PTP域中的所有設(shè)備提供時間基準(zhǔn)。
主時鐘(MC),OC和BC的基準(zhǔn)時鐘稱為主時鐘。
邊界時鐘 (BC) , 指在兩個或多個通信路徑中具有端口的設(shè)備(即它可以是從設(shè)備,也可以同時是其他從設(shè)備的主設(shè)備)。
普通時鐘(OC),指只有一個端口的時鐘(即只能作為從設(shè)備進(jìn)行時間同步)。
透明時鐘(TC),指不與其它時鐘節(jié)點(diǎn)保持時間同步的時鐘,如交換機(jī)。
PTP中的端口類型
時鐘通過端口進(jìn)行通信,這些端口按類型可分為主端口(Master Port),從端口(Slave Port),被動端口(Passive Port)。
主端口(Master Port)指發(fā)布同步時間的端口。
從端口(Slave Port)指接收同步時間的端口。
被動端口(Passive Port)指既不接收同步時間、也不對外發(fā)布同步時間的端口。
PTP中的角色
Master 提供同步時間。
Slave 以Master時間為基準(zhǔn)進(jìn)行同步。
PTP中的同步
PTP 中Master定期發(fā)送同步消息,由Slave接收。這給了Slave兩個時間戳,Master發(fā)送消息時的遠(yuǎn)程時間t1和Slave接收消息時的本地時間t2。t2與t1的關(guān)系可表示為
????????????????????????????????????????????????????????????????????????t2 = t1 + offset + RTT/2,
因此只有t1和t2兩個時間戳不足以計算時鐘偏移offset。必須首先測量Master和Slave之間的網(wǎng)絡(luò)延遲RTT。測試網(wǎng)絡(luò)延遲的方法有兩種:延遲請求/響應(yīng)的端到端方法(E2E) 和對等延遲請求/響應(yīng)的點(diǎn)對點(diǎn)方法 (P2P),原理詳見參考5及參考8。簡單來說就是前者(E2E)使用了上述的兩個時間戳來計算往返時延RTT,后者(P2P)不使用t1和t2,而是重新獲得四個時間戳來計算往返時延RTT??偠灾?#xff0c;二者都以某種方式獲得了往返時延RTT,之后利用往返時延RTT結(jié)合t1和t2即可得到時鐘偏移offset,從而實(shí)現(xiàn)時鐘同步。
其它
PTP消息類型,PTP時鐘等級規(guī)格可參考參考7。
PTP的配置文件及方式可參考參考2,參考7。
PTP與NTP的關(guān)系詳見參考6,這是很棒的一篇文章。
四、PTP的優(yōu)勢
PTP本身用于設(shè)備之間的高精度時間同步,但也可用于頻率同步。相比現(xiàn)有的各種時間同步機(jī)制,PTP具備以下優(yōu)勢:
????????相比NTP(Network Time Protocol,網(wǎng)絡(luò)時間協(xié)議),PTP能夠滿足更高精度的時間同步要求:NTP一般只能達(dá)到亞秒級的時間同步精度,而PTP則可達(dá)到亞微秒級。關(guān)于NTP和PTP的詳細(xì)討論,參見文章*Combining PTP with NTP to Get the Best of Both Worlds*
????????相比GPS(Global Positioning System,全球定位系統(tǒng)),PTP具備更低的建設(shè)和維護(hù)成本,并且由于可以擺脫對GPS的依賴,在國家安全方面也具備特殊的意義。
五、PTP精度誤差及故障來源
網(wǎng)絡(luò)延遲不對稱
PTP測量誤差的假設(shè)前提就是報文在Master和Slave之間的傳輸延遲是相同的。由于該因素導(dǎo)致的誤差上限值為±RTT(往返時延),此時報文往返的一端時延為0,另一端時延為RTT,進(jìn)一步的討論見參考6。
時間戳錯誤
在 Linux 機(jī)器上,基本上可以在三個不同的地方生成時間戳:
????????在用戶空間(即 NTP/PTP 守護(hù)進(jìn)程)中,通常在進(jìn)行 send()系統(tǒng)調(diào)用之前和 select() 或 poll() 系統(tǒng)調(diào)用之后。
????????在內(nèi)核中,在將數(shù)據(jù)包復(fù)制到網(wǎng)卡環(huán)形緩沖區(qū)之前以及網(wǎng)卡在收到數(shù)據(jù)包后發(fā)出中斷時。這稱為軟件時間戳。
????????在網(wǎng)絡(luò)接口控制器 NIC 本身中,當(dāng)數(shù)據(jù)包進(jìn)入和離開鏈路或物理層時。這稱為硬件時間戳。
軟件時間戳比用戶空間時間戳更準(zhǔn)確,因為它不包括上下文切換、內(nèi)核中數(shù)據(jù)包的處理和網(wǎng)絡(luò)堆棧中的等待。硬件時間戳比軟件時間戳更準(zhǔn)確,因為它不包括在 NIC 中等待。但是,硬件和軟件時間戳存在一些問題,使它們比用戶空間時間戳更難使用。進(jìn)一步的討論見參考6。
閏秒
PTP 按國際原子時 (TAI) 運(yùn)行,而系統(tǒng)時鐘使用的是協(xié)調(diào)世界時 (UTC),來源于參考2。
按照百度百科的說法,閏秒是指為保持協(xié)調(diào)世界時(UTC)接近于世界時(TAI)時刻,由國際計量局統(tǒng)一規(guī)定在年底或年中(也可能在季末)對協(xié)調(diào)世界時(UTC)增加或減少1秒的調(diào)整。由于地球自轉(zhuǎn)的不均勻性和長期變慢性(主要由潮汐摩擦引起的)使世界時(UTC)和原子時(TAI)之間相差超過到±0.9秒時,就把協(xié)調(diào)世界時向前撥1秒(負(fù)閏秒,最后一分鐘為59秒)或向后撥1秒(正閏秒,最后一分鐘為61秒); 閏秒一般加在公歷年末或公歷六月末。截至2017年1月2日,全球已經(jīng)進(jìn)行了27次閏秒,均為正閏秒。最近一次閏秒在北京時間2017年1月1日7時59分59秒(時鐘顯示07:59:60)出現(xiàn)。這也是本世紀(jì)的第五次閏秒。至于是否會出現(xiàn)該問題取決于PPT服務(wù)器中的GPS接收機(jī)。
GPS周翻轉(zhuǎn)
全球?qū)Ш蕉ㄎ幌到y(tǒng)GPS的時間是通過“周數(shù)”+“周內(nèi)秒”的方式編碼的。而GPS系統(tǒng)設(shè)計之初分配給“周數(shù)”的字長為10比特位,即GPS系統(tǒng)只能表示0~1023周,GPS系統(tǒng)運(yùn)行時間超出1023周后,“周數(shù)”會發(fā)生溢出翻轉(zhuǎn),即從0開始計數(shù),從而導(dǎo)致接收機(jī)直接解算出來的時間會回退到1024周之前。第一個GPS系統(tǒng)時間起點(diǎn)為1980年1月6日00:00:00,結(jié)束時間為1999年的8月21日23:59:47。第二次GPS系統(tǒng)時間于2019年4月6日23:59:41結(jié)束。在這一天,GPS周翻轉(zhuǎn)可能會造成一些GPS接收機(jī)的數(shù)據(jù)和時間功能發(fā)生故障,無法正常運(yùn)轉(zhuǎn)。這一問題是由GPS系統(tǒng)本身的設(shè)計決定的,在GPS系統(tǒng)整體升級之前,每經(jīng)過19.7年便會發(fā)生一次周翻轉(zhuǎn)事件,無法避免。北斗衛(wèi)星系統(tǒng)采用13比特的周數(shù)信息,157年內(nèi)不會出現(xiàn)這一問題,無需擔(dān)心。至于是否會出現(xiàn)該問題取決于PPT服務(wù)器中的GPS接收機(jī)。
總結(jié)
以上是生活随笔為你收集整理的PTP时间同步概念简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: web项目报404一直找不到图片(路径绝
- 下一篇: 等边三角形的积木编程