Skip to content
网络工具 / linuxptp

linuxptp

南京翼辉网络部 · SylixOS 高精度网络时间同步套件

···Armory 获取
PTPIEEE 1588
gPTP802.1AS
≤250ns硬件时间戳
SylixOS目标平台

简介 ​

linuxptp 是翼辉基于 SylixOS 移植定制的高精度网络时间同步套件,支持普通 PTP(IEEE 1588)与 gPTP(IEEE 802.1AS),适用于工业自动化、车载以太网、TSN、测试测量等需要亚微秒级时间同步的场景。

套件核心工具包括:

工具作用
ptp4l运行 PTP/gPTP 协议栈,完成端口状态机、BMCA、报文收发和 PHC 同步
phc2sys在 PHC(网卡硬件时钟)与 CLOCK_REALTIME 等系统时钟之间做同步
pmc通过 PTP 管理消息查询或配置 ptp4l 的数据集和端口状态

基础概念 ​

概念说明
PTPPrecision Time Protocol,面向分布式系统的精确时间同步协议,常用于工业控制、电信、金融、数据中心等场景
gPTPgeneralized PTP,IEEE 802.1AS 定义的时间同步协议,常用于车载以太网、AVB/TSN 音视频和工业 TSN
软件时间戳由内核协议栈记录收发时间,部署简单,但精度容易受系统负载影响
硬件时间戳由支持 PTP 的网卡/PHY 记录收发时间,精度可达纳秒级,推荐生产场景使用
E2EEnd-to-End 延迟机制,适合普通 PTP 和简单网络拓扑
P2PPeer-to-Peer 延迟机制,支持透明时钟,gPTP 场景通常要求使用

部署 ​

准备条件 ​

  • 翼辉高精度网络时间同步方案套件。
  • 支持网络时间戳版本的 SylixOS 固件与目标板卡。
  • 支持硬件时间戳的网卡或 MAC/PHY 组合(可选,但推荐)。

内核补丁 ​

如果目标 BSP 尚未包含网络时间戳支持,需要将套件提供的 SylixOS 内核补丁放到 libsylixos 目录,并执行:

bash
patch -p1 < xxxx.patch

Armory 自动安装 ​

配置目标板卡远程地址后,可通过 Armory 自动下载并部署套件:

bash
armory remote set default="remote://username:password@board_ip"
armory install @nic_drv/linuxptp

也可以按套件目录结构手动上传对应文件到板卡的 usr、etc 等目录。

快速验证 PTP ​

以下命令不使用配置文件,适合快速验证。正式部署时建议通过 -f 指定配置文件。

主时钟(Master) ​

软件时间戳:

bash
ptp4l -i en1 -m -S

硬件时间戳:

bash
ptp4l -i en1 -m -p /dev/ptp0

从时钟(Slave) ​

软件时间戳:

bash
ptp4l -i en1 -s -m -S

硬件时间戳:

bash
ptp4l -i en1 -s -m -p /dev/ptp0 &
phc2sys -s /dev/ptp0 -c CLOCK_REALTIME -m -w &

硬件时间戳模式下,ptp4l 负责将网卡 PHC 与主时钟同步;如果还需要同步系统时间,需要同时运行 phc2sys。

快速验证 gPTP ​

gPTP 使用二层 Ethernet 报文,强烈建议使用硬件时间戳。以下示例为最常见的 Ordinary Clock 模式。

主时钟(Grandmaster) ​

软件时间戳:

bash
ptp4l -i en1 -m -S -2

硬件时间戳:

bash
ptp4l -i en1 -2 -m -p /dev/ptp0

从时钟(Time-Aware Slave) ​

软件时间戳:

bash
ptp4l -i en1 -2 -s -m -S

硬件时间戳:

bash
ptp4l -i en1 -2 -s -m -p /dev/ptp0 &
phc2sys -s /dev/ptp0 -c CLOCK_REALTIME -m -w &

常用参数 ​

参数适用工具说明
-i <ifname>ptp4l指定网卡接口,如 en1
-mptp4l / phc2sys将日志打印到终端,便于调试
-Sptp4l强制使用软件时间戳
-p <device>ptp4l指定网卡绑定的 PTP 设备,如 /dev/ptp0
-sptp4l / phc2sysptp4l 中表示 slaveOnly;phc2sys 中表示同步源时钟
-2ptp4l使用 IEEE 802.3 二层传输,gPTP 场景常用
-f <file>ptp4l指定配置文件
-c <clock>phc2sys指定同步目标时钟,如 CLOCK_REALTIME
-wphc2sys等待 ptp4l 完成同步后再开始同步系统时钟

同步状态判断 ​

ptp4l 从时钟日志出现类似内容时,表示端口已进入同步状态:

text
port 1 (en1): LISTENING to UNCALIBRATED on RS_SLAVE
port 1 (en1): UNCALIBRATED to SLAVE on MASTER_CLOCK_SELECTED
master offset  1300 s2 freq -10464 path delay 151636

关键字段说明:

  • SLAVE:端口已作为从时钟工作。
  • master offset:从时钟与主时钟的时间偏差,单位通常为纳秒。
  • path delay:链路路径延迟估计值。
  • s2:伺服状态进入锁定/稳定阶段。

phc2sys 日志出现 CLOCK_REALTIME phc offset 持续输出时,表示正在将 PHC 与系统时钟做同步:

text
phc2sys[949.536]: CLOCK_REALTIME phc offset -272804 s0 freq +0 delay 0
phc2sys[951.536]: CLOCK_REALTIME phc offset  743962 s2 freq +740704 delay 0

管理与诊断 ​

通过 pmc 可以查询 ptp4l 的端口属性、延迟机制和运行状态:

bash
# 查询端口属性
pmc -u -b 0 'GET PORT_PROPERTIES_NP'

# 查询端口数据集和延迟机制
pmc -u -b 0 'GET PORT_DATA_SET_NP'

常见排查步骤:

  1. 确认网卡名、PTP 设备名是否正确,如 en1、/dev/ptp0。
  2. 确认网卡驱动和内核已启用网络时间戳能力。
  3. 普通 PTP 可先用 -S 软件时间戳验证链路;gPTP 建议直接验证硬件时间戳。
  4. 从时钟未进入 SLAVE 时,检查主从是否在同一二层网络、是否选择了正确传输层(UDP 或 L2)。
  5. 使用配置文件部署时,确认 delay 机制、domainNumber、transportSpecific、logSyncInterval 等参数与对端一致。