天天看點

PTP(IEEE1588),TSN時間同步方法

本文首先簡要介紹主流的時間同步方式GNSS,NTP,PTP。然後通過NTP和PTP對比,解釋PTP性能更優秀的原因;并對算法公式進行了推導。

0 Why need time synchronization

(1)網絡系統、網絡中的各節點有時間同步需求 [電信、軍事、衛星、股票、銀行、工業、電力網絡、報紙印刷、普通網絡等]。舉例來說,在一條工業生産線商的多個裝置,或者兩個機器人如何實作協同,往往首先需要在各相關裝置在時間上時同步的。

(2)不同場景下,網絡時間同步的精度要求也是不同的。

1.網絡時間同步方式GNSS,NTP,PTP(IEEE1588),TSN的介紹、性能

GNSS (Global Navigation Satellite System), 如基于GPS或北鬥的衛星定位、時間同步方式,根據子產品的品質、價格不同,精度從納秒到百納秒級不等。使用限制條件:

  • 隻有在子產品同時收到4顆衛星信号時才解出精準的時間信号;
  • 衛星信号容易受到樓宇、天氣等因素的影響,接收不到衛星信号的裝置就無法和其他裝置實作時間同步;
  • 為所有網絡中的裝置安裝GNSS子產品用于對時的硬體成本是很高的。

是以對于網絡時間同步,應考慮利用網絡将一個精準的時間信号傳遞給其他節點,通過算法進行本地時間調整,實作同步。舉一個極端且普遍的例子,網絡中隻有1個主節點(本文中稱為Master Node)安裝有GPS子產品,接收衛星的精準時間,然後通過網絡基礎設施,把該時間傳播到網絡的其他各子節點(本文中稱為Slave Node),通過軟體算法的調整,實作各節點網絡時間的同步。

NTP(Network Time Protocol,網絡時間協定)的用途是把計算機的時鐘同步到世界協調時UTC,其精度在區域網路内可達0.1ms,在網際網路上絕大多數的地方其精度可以達到1-50ms。

IEEE1588,即PTP(Precision Timing Protocol精密時間協定),根據演進有v1和v2兩個版本。v2在v1基礎上進行了改進和擴充,根據IEEE1588v2自己的說法,在有線網絡中可以實作5ns級的時間精度。即,網絡中隻要1個節點作為時間源,其他節點通過PTP技術就可以實作和GNSS同級别的同步精度。

TSN(Time-Sensitive Networking,時間敏感網絡)中時間同步協定使用 IEEE 802.1AS 協定,它基于 IEEE 1588 協定進行精簡和修改,也稱為 gPTP 協定(IEEE 802.1AS is an adaptation of PTP for use with Audio Video Bridging and Time-Sensitive Networking)。有關TSN的資訊參見https://zhuanlan.zhihu.com/p/291206968。由于TSN和PTP有相似性,本文還是以PTP為主。PTP和gPTP的差別,在另一篇文章中通過引用gPTP的标準,做了介紹。

同步方式 同步精度(典型值) 備注
1 GNSS 納秒級,百納秒内 取決于子產品算法,硬體性能
2 NTP 區域網路内可達0.1ms, 網際網路上1-50ms
3 PTP(IEEE1588) 有線網絡中可以實作5ns級的時間精度 與GNSS精度接近
4 TSN (IEEE 802.1AS,gPTP) 同PTP 同PTP

2.NTP,PTP原理對比

NTP和PTP為何在性能或精度上差距明顯呢?主要原因在兩個方面:“處理延時(processing delay)”和“傳輸延時(propagation delay)”。相關概念見外文翻譯https://blog.csdn.net/DREAMGEEKLEE/article/details/51218724,本文中處理延時的定義類同于譯文中processing delay + queuing delay + transmission delay。

(1)處理延時

處理延時可了解為軟體調用send()或者receive()的時刻,與裝置硬體将資料實際發送出去或接收進來的時刻之間的偏差。

NTP協定的時間資訊産生和接收處理(時間戳)發生于應用層,主節點在應用層将時間同步資訊發送後,該資訊還需經過協定棧其他層的處理,當主節點硬體發送出該時間同步資訊時,已經存在一部分“處理延時”。同理,當從節點硬體接收到該時間同步資訊,經過協定棧至應用層處理時,也會産生“處理延時”。

為應對處理延時,PTP協定支援把時間同步資訊的時間戳标記操作放在協定棧的底層,由硬體直接處理,是以,“處理延時”降低到最小,基本忽略不計。硬體直接處理的一大前提則是硬體需支援。是以,部署PTP的網絡往往對時間同步有更苛刻的需求,如營運商、銀行、軍事網絡等(不差錢)。

Note: 根據調研,PTP的硬體輔助方法中的時間戳操作應發生在MAC層和實體層的媒體獨立接口MII,見https://blog.csdn.net/wll1228/article/details/106556706。下圖來自網絡。

PTP(IEEE1588),TSN時間同步方法

(2)傳輸延時

傳輸延時指資料在傳輸鍊路上産生的時間偏差。

由于網絡中資訊中繼裝置(路由器、交換機等)的存取–轉發機制,NTP主節點發送出的時間同步資訊每經過一個中繼節點,就會産生一個延時。即,在授時裝置和被授時裝置之間,n個中繼節點将整個傳輸路徑分成n+1個傳輸路徑,每個路徑上都會有不同的延時。同時,由于在更複雜網絡中的動态路由的選擇機制,傳輸延時的随機性更大。

上文中提到了“NTP精度在區域網路内可達0.1ms,在網際網路上絕大多數的地方其精度可以達到1-50ms”,兩個場景下精度存在差别的原因即是因為中繼節點數量的不确定性。

PTP(IEEE1588),TSN時間同步方法

PTP如何克服這種傳輸延時的随機性呢?答案是燒錢。PTP為網絡時鐘同步設計了主從式架構,由一個或多個網段及一個或多個時鐘組成。在每段傳輸鍊路上安裝PTP主從裝置,且主從關系、端口關系等保持确知。簡化版的原理如下圖。

PTP(IEEE1588),TSN時間同步方法

A點可了解為整個網絡的主時鐘(Grandmaster),通過PTP使B實作時間同步(B作為A的Slave Node),然後B通過PTP使C、D與其同步,此時C和D為B的Slave Node。相關概念可見PTP中的邊界時鐘(Boundary Clock, 一些相關定義的了解見文末參考資料)等。下圖中M、S代表同一鍊路兩端分别為Master、Slave,Slave通過PTP協定實作與Master的時間同步。

下圖是營運商網絡中PTP的應用場景,源自https://www.techplayon.com。注意圖中最右側為主時鐘,相當于上圖中的A。圖中各元素可通過參考文獻了解。

PTP(IEEE1588),TSN時間同步方法

3.PTP原理

基于PTP架構設計上的确知性(同一鍊路的兩端,傳輸延時相同),實作Master和Slave之間的同步,過程如下圖。

PTP(IEEE1588),TSN時間同步方法
  1. The master clock sends SYNC packet periodically, and stores transmission time of SYNC at PHY layer as t1, then sends the value of t1 to the slave clock via FOLLOWUP packet;

    master在本地t1時刻發送SYNC包,并将t1時刻儲存;然後在FOLLOWUP包中,将t1發給slave。

  2. The slave clock receives the SYNC packet and records the receiving time stamped at PHY layer as t2, then receives the FOLLOWUP packet to obtain t1;

    slave收到SYNC包時,記錄本地接收時刻t2;收到FOLLOWUP包時,儲存其中的t1。

  3. The slave sends a DELAYREQ message and records the local sending time t3; slave向master發送DELAYREQ包,并在本地記錄發送時刻t3。
  4. The master receives the DELAYREQ message, records the receiving time as t4, and sends t4 to the slave through the DELAYRESP message;

    master接收到DELAYREQ包,記錄接收時刻t4,然後将t4通過 DELAYRESP發送給slave。

  5. The slave obtains t4, calculates the time offset between the master and the slave by using t1, t2, t3, t4 and adjusts its local time. slave接收到包含t4的DELAYRESP包,将t4儲存。

在接收到t4後,slave端在本地集齊了t1,t2,t3,t4,可以放大招了。

The time offset between master clock and slave clock:

T o f f s e t = ( t 2 + t 3 − t 1 − t 4 ) / 2 T_{offset} = (t2 + t3 - t1 - t4)/2 Toffset​=(t2+t3−t1−t4)/2

note:在上述的過程中,sync消息的發送時間t1是由followup消息攜帶的,這種成為two-step synchronization的方式。對應的,PTP還定義了one-step同步方式,及sync消息中自帶t1時間戳。在對時原理上,兩者是相同的,但相比之下,one step的設計方式,由于實時性的要求,是以對硬體操作的要求更高,成本也更高。在此順便提一下一處gPTP和PTP的不同:在gPTP中,考慮到成本、通用等因素,隻要求two-step 同步的方式(能同步就行,要啥自行車)。

4.公式推導

T m a s t e r + T o f f s e t = T s l a v e (1) T_{master} + T_{offset} = T_{slave} \tag{1} Tmaster​+Toffset​=Tslave​(1)

  • ----假設slave比master 慢T_offset(為負則代表快)

t 1 + t p r o p a g a t i o n = t 2 − T o f f s e t (2) t1 + t_{propagation} = t2 - T_{offset} \tag{2} t1+tpropagation​=t2−Toffset​(2)

  • ----t_propagation,鍊路的單向傳輸延時;
  • ----t2 - T_offset 可了解為收到SYNC包時,master端對應的時刻(或目标同步時間)。

t 3 + t p r o p a g a t i o n = t 4 + T o f f s e t (3) t3 + t_{propagation} = t4 +T_{offset} \tag{3} t3+tpropagation​=t4+Toffset​(3)

由公式(2)、(3)可得:

T o f f s e t = ( t 2 + t 3 − t 1 − t 4 ) / 2 T_{offset} = (t2 + t3 - t1 - t4)/2 Toffset​=(t2+t3−t1−t4)/2

  • note: 另外還可得到t_propagation,鍊路的單向傳輸延時

是以,Slave節點在接收到Delay_Resp資訊之後,可将本地時鐘調整T_offset,即實作與Slave的同步。在實際應用過程中還有一些細節處理,在此不做論述。

5.舉個例子

參考https://cezacx2.tistory.com/

PTP(IEEE1588),TSN時間同步方法

【概念相關參考資料】

https://community.cambiumnetworks.com/t/ieee-1588-what-s-the-difference-between-a-boundary-clock-and-transparent-clock/44033

下圖來自思科

PTP(IEEE1588),TSN時間同步方法

The original IEEE 1588-2002 standard for a precision clock synchronization protocol describes Ordinary Clocks, which are either Grandmaster Clocks or Slave Clocks. An Ordinary Clock (OC) always has a single port.

IEEE 1588-2002 also describes Boundary Clocks. A Boundary Clock (BC) is a clock node that has two or more ports. For example, a router or Ethernet switch might be capable of operating as a BC.

A BC generally has one port in the role of a slave clock and the remaining ports in the role of master clocks. In this case, the BC recovers the time of day within the slave clock function and relays it as a reference to the master clock functions.

A practical synchronization network might consist of a Grandmaster Clock, a tree of BCs, and many Slave Clocks.

IEEE 1588-2008 introduces a new type of clock called a Transparent Clock (TC). A TC is a multi-port device that forwards precision time protocol messages, measuring the time taken for event messages to pass through the device, and accounts for this so-called residence time by modifying the message, or by sending a separate follow-up message. The other clocks in the system use the delay measured by the TC to compensate for the additional latency introduced between master and slave clocks. In this sense, the TC can be made to “disappear”, hence the name.

In a typical telecommunications network with “full on-path support” every network node or transmission system must be either a BC or a TC so that the delay through that node or transmission system does not degrade the synchronization performance.

繼續閱讀