EVO ORIN PTP功能介绍#

说明#

精确时间协议(PTP)是一种用于在整个计算机网络中同步时钟的协议。在局域网上,可实现纳秒级别的时钟精度。

准备工作#

准备工作-硬件链接#

准备两台设备:设备A和设备B,A设备为主设备(Master),B设备为从设备(Slave)。两台设备网口设置静态ip,通过网线直连,并可以相互ping通。如果网络链路上使用交换机或者路由器,需要交换机或者路由器也支持ptp协议。

准备工作-软件环境#

sudo git clone -b v4.1 git://git.code.sf.net/p/linuxptp/code linuxptp
cd linuxptp
sudo make
sudo make install

主从设备配置#

配置流程

  • master启动ptp4l服务 → master时间同步到网卡时钟 → slave把master时间同步到网卡时钟 → slave把网卡时钟同步到系统时钟

打开一个终端,执行以下命令:

sudo ptp4l -i eth1 -m -H --step_threshold 1.0

此命令用于启动ptp4l服务,此时master设备终端打印信息应该会如下图所示:

另开一个终端,执行以下命令:

sudo phc2sys -m -s CLOCK_REALTIME -c eth1 -w --step_threshold 1.0

此命令用于把master设备的系统时钟同步至网卡硬件时钟,此时该终端打印信息应该会如下图所示:

设备打开终端,执行以下命令:

sudo ptp4l -i eth1 -m -H -s --step_threshold 1.0

此命令用于把master时钟同步至slave时钟,此时该终端打印信息应该会如下图所示:

其中master offset就是master、slave设备之间的时间偏移量,单位:ns

另开一个终端,执行以下命令:

sudo phc2sys -m -s eth1 -w --step_threshold 1.0

此命令用于把slave设备的网卡时钟同步至系统时钟,此时该终端打印信息应该会如下图所示:

其中phc offset就是slave设备上网卡时钟、系统时钟的时间偏移量

功能验证#

测试流程

  • 确认master时间 → 确认slave时间 → 修改master时间 → 确认slave时间被同步

查看master设备系统时间:

sudo timedatectl

查看slave设备系统时间:

sudo timedatectl

更改master设备系统时间

sudo date -s 12:12:12

此时可以看到,matser系统时间已经更改,见下图所示:

同时观察slave设备上的系统时间,等待大约30s,可以看到此时时间已经调整为master的系统时间。

sudo timedatectl

观察slave设备上的系统时间,可以看到此时时间已经调整为master的系统时间,如下图所示:

性能验证#

在从设备上打开终端,执行以下命令:

sudo ptp4l -i eth1 -m -H -s --step_threshold 1.0

此命令用于把master时钟同步至slave时钟,此时该终端打印信息应该会如下图所示:

其中master offset就是master、slave设备之间的时间偏移量,单位:ns

备注#

查看设备是否支持硬件PTP#

sudo ethtool -T ethX

ethX改成对应的网卡即可,此时会显示以下内容(以eth1为例):

如包含以下参数,即代表设备支持硬件PTP功能: SOF_TIMESTAMPING_SOFTWARE

SOF_TIMESTAMPING_TX_SOFTWARE

SOF_TIMESTAMPING_RX_SOFTWARE

SOF_TIMESTAMPING_RAW_HARDWARE

SOF_TIMESTAMPING_TX_HARDWARE

SOF_TIMESTAMPING_RX_HARDWARE

如果只包含以下参数,则代表设备不支持硬件PTP功能。

SOF_TIMESTAMPING_SOFTWARE

SOF_TIMESTAMPING_TX_SOFTWARE

SOF_TIMESTAMPING_RX_SOFTWARE

PTP问题排查#

#

现象:在米文设备上使用ptpd与外部设备进行ptp授时,发现授时失败#

排查项一:检查硬件连接#

步骤1:检查网线是否正常#

将网线插到其他能当master的ptp授时的设备上。

  • 如其他外设能连上并成功被授时,则证明网线和被授时设备正常,执行“排查项二:检查设备网络是否正常”。

  • 如其他外设不能连上且被授时失败,则建议更换网线并检查被授时外设是否正常。

步骤2:检查交换机是否支持ptp#

如网络中存在交换机,则需要通过查询说明书以及询问厂家等形式,明确交换机是否支持ptp。

  • 如交换机支持ptp则执行”排查项二:检查设备网络是否正常”。

  • 如交换机不支持ptp,则建议更换交换机或直接去掉交换机再做尝试。

排查项二:检查设备网络是否正常#

步骤1:检查米文设备与外设网络通信是否正常#

1、检查米文设备与外设是否为同一网段。

2、使用ping指令,检查米文设备与外设能否互相通信。

  • 如不能相互ping通,则需要修改ip,保证两者能互相ping通。

如相互ping通,则执行”排查项三:检查系统时间同步服务状态”。

步骤2:检查网络中是否含多播屏蔽配置#

确保网络环境允许多播消息传播,这对于PTP的正常工作是必需的。某些网络配置可能会阻止多播流量。

****#

步骤1:检查系统中是ptp4l服务是否被正确安装#

检查是否已经安装并启动了

包中的

服务。

使用以下命令查看服务状态:sudo systemctl status ptp4l.service

  • 如无此服务,则需要手动安装ptp4l(sudo apt-get install linuxptp),运行(sudo ptp4l -i <interface_name> -m)后再做验证。

  • 如有此服务,且正常启动,则执行“排查项四:检查log文件是否存在异常。”

****#

步骤1:导出ptp4l服务的日志#

通常位于/var/log/syslog并通过journalctl -u ptp4l.service获取,上传至故障工单中,交由米文技术支持。