解剖PTP协议(转载)
本文转载自:https://www.cnblogs.com/dakewei/p/10881699.html
一. 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能达到多高的精度呢?
微秒到亚微秒级