一. PTP是什么?
英文為Precise Time Protocol,翻譯過來就是精確時間協議
二. 為何會出現PTP?
大家想必是知道NTP的存在,然而NTP的精度很低,只能達到毫秒級別的精度,那么PTP就是為了克服NTP精度不高的問題而出現的
三. PTP需要硬件支持嗎?
需要,在以太網控制器中需要集成一個與時間相關的模塊,也就是網卡需要支持PTP,例如,nxp的ls1028a芯片就在其以太網控制器子系統中集成了一個IEEE 1588 定時器模塊
四. PTP在軟件上的構成是怎樣的?
Linux下ptp是由以下兩部分構成的:
linux內核支持ptp硬件驅動(也就是linux內核的一個特性)+linux用戶空間程序Linux PTP Project
五. 如何檢查網卡是否支持PTP?
使用以下命令檢查:
ethtool -T eth0
此命令的輸出內容如下:
Time stamping parameters for eth0: Capabilities: hardware-transmit (SOF_TIMESTAMPING_TX_HARDWARE) software-transmit (SOF_TIMESTAMPING_TX_SOFTWARE) hardware-receive (SOF_TIMESTAMPING_RX_HARDWARE) software-receive (SOF_TIMESTAMPING_RX_SOFTWARE) software-system-clock (SOF_TIMESTAMPING_SOFTWARE) hardware-raw-clock (SOF_TIMESTAMPING_RAW_HARDWARE) PTP Hardware Clock: 1 Hardware Transmit Timestamp Modes: off (HWTSTAMP_TX_OFF) on (HWTSTAMP_TX_ON) Hardware Receive Filter Modes: none (HWTSTAMP_FILTER_NONE) all (HWTSTAMP_FILTER_ALL)
輸出類似以上信息,說明網卡支持PTP
六. 網卡是否支持ptp對時間計算造成的誤差發生在哪里?(PHC: PTP Hardware Clock)
請先看下圖:
從圖中可以看出,如果時間戳在應用層就生成了,那么在將數據包往下傳遞的過程中產生的時間消耗即造成了重大的精度誤差。
七. PTP能達到多高的精度呢?
微秒到亞微秒級
參考資料: