PTP时间同步实战测试clock master/slave 直连校时+PPS测试
前言
通过前几篇文章相信对PTP协议已经有了一定理解了。本文将带着大家在linux下实际测试以下PTP实际应用效果。
本系列文章将带你由浅入深的了解PTP,欢迎关注
一、实战介绍.
先来简单介绍一下实验条件:
本实验由两台ubuntu PC机作为PTP主节点和从节点
网线直连进行PTP时间同步。
通过观测PPS信号变压时间差测试时间同步效果。
PPS是一个周期性的信号,每秒钟发出一个脉冲,被广泛应用于时间同步和时钟校准。
二、环境准备
通过以下命令查看电脑上活动的网卡信息:
ifconfig
enp1s0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 ......
通过命令查询到测试电脑上的网卡接口命名为enp1s0。
也许你的电脑有多个网卡,使得上一步查询出了多个enX
通过以下命令可以查看网卡驱动信息
ethtool -i <interface
$ ethtool -i enp1s0
driver: igb
version: 6.8.0-60-generic
firmware-version: 3.25, 0x8000061a, 1.654.0
也可以通过查询驱动功能,确认网卡是否支持硬件时间戳
ethtool -T <interface>
$ ethtool -T enp1s0
Time stamping parameters for enp1s0:
Capabilities:hardware-transmitsoftware-transmithardware-receivesoftware-receivesoftware-system-clockhardware-raw-clock
三、功能测试
通过以上步骤,已经确认了网卡信息,以及网卡是否支持硬件时间戳功能。
接下来就可以进行一些简单的测试。
首先介绍一下ptp4l,它是由LinuxPTP项目研发,根据IEEE 1588标准为Linux系统提供的精确时间协议(PTP)实现,支持PTPv2协议,提供高精度、高扩展性、高灵活性的PTP协议实现。
安装linuxptp工具包:
sudo apt install linuxptp ethtool
将两台电脑中一台作为主节点,另一台作从节点。
配置从节点:
sudo ptp4l -i <interface> -H -m -2 -s
-i
:指定网络接口
-H
:强制使用硬件时间戳
-m
:输出详细信息
-2
:使用 IEEE 802.1AS (gPTP) 模式
-s
:强制作为从节点
配置主节点:
sudo ptp4l -i <interface> -H -m -2
与从节点配置相同,不加-s参数,则自动选举该节点成为主节点
以下是从节点ptp4l的输出log
master offset:salve 通过ptp报文计算出的当前时钟于主时钟的差值
path delay:salve 通过ptp报文测量出和主时钟之间的路径延时
ptp4l启动校时后,从时钟和主时钟的差值快速收敛到10ns左右,此时从时钟已经稳定锁定,时间误差波动很小。通过稳定后的path delay可以测量出两个PC通过网线直连的路径延时只有7-8ns左右
四、高级配置
通过以上测试,我们完成了基础的PTP时间同步测试。
前几篇文章介绍过,ptp中有许多模式和参数可以配置,那么需要对每一个参数都了解才能进行吗?当然不,通过LinuxPTP网址,我们可以直接获取协议所需的配置。
LinuxPTP项目官网:
https://linuxptp.nwtime.org/documentation/
以汽车领域为例,在网站中可以直接获取它的配置参数
automotive-master.cfg
[global]# Options carried over from gPTP.gmCapable 1priority1 248priority2 248logSyncInterval -3syncReceiptTimeout 3neighborPropDelayThresh 800min_neighbor_prop_delay -20000000assume_two_step 1path_trace_enabled 1follow_up_info 1transportSpecific 0x1ptp_dst_mac 01:80:C2:00:00:0Enetwork_transport L2delay_mechanism P2P## Automotive Profile specific options#BMCA noopserverOnly 1inhibit_announce 1asCapable trueinhibit_delay_req 1
配置文件设置了硬件时间戳、P2P、不使用BMCA最佳主时钟算法、只做主时钟等基本设置,配置详细信息也可在LinuxPTP的网站中找到。
使用方式比之前多了-f <配置文件>加载配置文件,使用如下命令:
sudo ptp4l -i enp1s0 -m -f automotive-master.cfg#主节点
sudo ptp4l -i enp1s0 -m -f automotive-slave.cfg#从节点
结果如下图所示:
同步效果更加稳定,这也符合了gPTP Automotive作为汽车配置应用,强调的低延迟和确定性
五、PPS抓包
较为专业的PTP/IEEE1588的设备都支持PPS脉冲输出,本次实验采用带PPS输出的以太网卡。
将网卡上的PPS电平信号引脚接入逻辑分析仪上即可。
根据网卡描述引出接线
根据网卡描述引出接线
本次实验将主从两台电脑的PPS接入同一台逻辑分析仪(示波器也可以),测量主从时钟同步后PPS信号边沿时间差来验证PTP校时误差。
实测PTP校时误差仅为10ns左右和ptp4l 测量结果接近,校时效果出色
总结
本文完整讲述了从环境准备到PPS测试的全过程,希望能够帮助到对PTP感兴趣的你。
PTP的科普也进入尾声了,可能大家对ptp4l的使用还有些疑惑,将会在下一节中对其进行详细介绍。
🔍鲲弘电子KUNHONG
扫描下方二维码
获取更多相关产品资料