为何会出现PTP
NTP的精度很低,只能达到毫秒级别的精度,那么PTP就是为了克服NTP精度不高的问题而出现的。PTP能达到微秒到亚微秒级。
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)
-
软件时间戳需要包括参数
SOF_TIMESTAMPING_SOFTWARE SOF_TIMESTAMPING_TX_SOFTWARE SOF_TIMESTAMPING_RX_SOFTWARE
-
硬件时间戳需要包括参数
SOF_TIMESTAMPING_RAW_HARDWARE SOF_TIMESTAMPING_TX_HARDWARE SOF_TIMESTAMPING_RX_HARDWARE
PTP 工具使用
Ubuntu 下面安装 linuxptp 这个软件包
$ ptp4l -h
延迟机制选项
-A Auto,自动选择延迟机制。,从E2E开始,当收到对等延迟请求时切换到P2P
-E E2E,选择延迟请求 - 响应(E2E)机制。 默认是用这个机制。 单个PTP通信路径上的所有时钟必须使用相同的机制。 使用E2E机制在端口上收到对等延迟请求时,将输出warning
-P P2P,对等延迟机制
网络传输选项
-2 IEEE 802.3
-4 UDP IPV4(默认)
-6 UDP IPV6
时间戳选项
-H 使用硬件时间戳(默认)
-S 使用软件时间戳
-L LEGACY HW时间戳
其他选项
-f [file] 从指定文件file中读取配置。 默认情况下不读取任何配置文件。
-i [dev] 选择PTP接口设备,例如eth0(可多次指定)必须至少使用此选项或配置文件指定一个端口。
-p [dev] 在Linux内核v3.5之前,无法发现与网络接口关联的PHC设备。 此选项指定在旧内核上运行时要使用的PHC设备(例如/ dev/ptp0)。要使用的时钟设备,默认为auto,忽略软件/ LEGACY HW时间戳(不推荐使用此选项)
-s slaveOnly mode,从时钟模式(覆盖配置文件)
-t 透明时钟模式
-l [num] 将日志记录级别设置为'num',默认是6
-m 将消息打印到stdout
-q 不打印消息到syslog
-v 打印软件版本并退出
-h help
————————————————
版权声明:本文为CSDN博主「Kujou」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/BUPTOctopus/article/details/86246335
服务端(主钟):
$ sudo ptp4l -i enp0s66 -m -S
客户端(从钟):
sudo ptp4l -i enp0s25 -m -S -s
网友评论