ptp4l与phc2sys进行系统时钟同步
linuxptp用于时钟同步。
安装采用
apt install linuxptp
主要包含2个程序,
ptp4l 进行时钟同步,实时网卡时钟与远端的时钟同步,支持1588 和 802.1AS 两种协议
phc2sys 将网卡上的时钟同步到操作系统,或者反之
命令demo:
某主机P通过eth2连接TSN交换机,下列命令实现主机P的网卡与交换机进行时钟同步,并且将主机的操作系统的时钟也与TSN交换机同步。
ptp4l实现 网卡上的时钟与TSN交换机同步。
phc2sys实现网卡上的时钟 同步到操作系统(以网卡上的时钟为准)
ptp4l -i eth2 -2 –m -s -f gPTP.cfg phc2sys -a -r --transportSpecific=1 -m --step_threshold=1000# the same as -a -r
phc2sys -c eth2 -s CLOCK_REALTIME --transportSpecific=1 -m --step_threshold=1000 -w
命令介绍:
ptp4l
-2 指定用2层的以太网帧进行数据传输,而非UDP
-s 作为slave向外界同步(以外面的时间为准)
-f gPTP.cfg 配置更多内容,具体内容见下面。 此例中使用的是802.1AS协议
phc2sys
此处2种用法是一样的,-a -r会自动寻找当前运行的ptp4l程序,利用它的时钟,同步到操作系统时钟。
-c eth2 -s CLOCK_REALTIME -w不过是写的更清楚一点。
如果用-a -rr 两个r,则是反方向的,操作系统的时钟是主时钟,网卡的时钟是slave.
CLOCK_REALTIME 指的是操作系统的时钟。
--transportSpecific=1 用于802.1AS TSN协议的同步, 1588协议可以不用
-m 打印消息
--step_threshold=1000 在master时钟发生突变时,slave不是一下就跟过去,而是一步步跟过去,避免时钟跳变。
-w 等待ptp4l
gPTP.cfg的内容:
[global]
gmCapable 1
priority1 128
priority2 248
logAnnounceInterval 0
logSyncInterval -3
syncReceiptTimeout 3
#neighborPropDelayThresh 800
neighborPropDelayThresh 80000
min_neighbor_prop_delay -20000000
assume_two_step 1
path_trace_enabled 1
follow_up_info 1
transportSpecific 0x1
ptp_dst_mac 01:80:C2:00:00:0E
network_transport L2
delay_mechanism P2P
各配置项说明
参数 | 说明 |
gmCapable | 该项目决定设备是否能成为整个网络的主时钟。 默认配置下,所有运行ptp4l的设备将从该选项设为1的设备中自动协商选择主时钟。 |
priority1, priority2 | 设备时钟优的先级。数字越小,优先级越高。 |
neighborPropDelayThresh | 邻近设备延时阈值,单位为纳秒(ns)。实际组网后,设备将根据测得的网络延时来选择主时钟,若连接的所有设备网络延时均超出阈值,且在gmCapable设置为1的情况下,则设备将以自身本地时钟作为网络的主时钟。 |
ptp_dst_mac | 使用MAC地址01:80:C2:00:00:0E。该项目为IEEE 802.1AS协议规范,不应修改。 |
network_transport | 使用数据链路层传输协议,相当于命令行参数-2。该项目为IEEE 802.1AS协议规范,不应修改。 |