Linux ptp4l 命令 - PTP 时间同步
介绍
ptp4l(英文全拼:PTP for Linux)命令用于 PTP 同步。
ptp4l 是根据适用于 Linux 的 IEEE 标准 1588 的精确时间协议(PTP)的实现,它实现了边界时钟(Boundary Clock)和普通时钟(Ordinary Clock),支持硬件时钟同步和软件时间同步(系统时钟同步)。
关于 PTP 详细介绍,请参考《PTP 精确时间协议》。
安装:
ptp4l 命令由 LinuxPTP 软件包提供,在 Debian/Ubuntu 系统上可以使用如下命令进行安装。
sudo apt install linuxptp
语法:
ptp4l  [ -AEP246HSLmqsv ] 
       [ -f config ] 
       [ -p phc-device ] 
       [ -l print-level ] 
       [ -i interface ] 
       [ long-options ] ...
选项:
延迟机制选项
- -A:自动模式,自动选择 E2E 延迟机制,当收到对等延迟请求时切换到 P2P。
- -E:E2E 模式,请求应答延迟机制(默认)。注意:单个 PTP 通信路径上的所有时钟必须使用相同的机制。
- -P:P2P 模式,对等延迟机制。
网络传输选项
- -2:IEEE 802.3
- -4:UDP IPv4(默认)
- -6:UDP IPv6
时间戳选项
- -H:硬件时间戳(默认)
- -S:软件模拟时间戳
- -L:老的硬件时间戳,LEGACY HW 需要配合 PHC 设备使用。
其他选项
- -f [file]:从指定文件 file 中读取配置,默认情况下不读取任何配置文件。
- -i [dev]:选择 PTP 接口设备,例如 eth0(可多次指定),必须至少使用此选项或配置文件指定一个端口。
- -p [dev]:此选项用于在旧 Linux 内核上指定要使用的 PHC 设备(例如- /dev/ptp0时钟设备),默认为 auto,忽略软件/LEGACY HW 时间戳。
- -s:从时钟模式(Slave only mode),将覆盖配置文件。
- -t:透明时钟模式。
- -l [num]:将日志记录级别设置为 num,默认为 6。
- -m:将消息打印到 stdout。
- -q:不打印消息到 syslog。
- -h,- --help:显示帮助信息并退出。
- -V,- --version:显示版本信息并退出。
示例
要使用 ptp4l,首先得确定网卡支持的同步类型,可通过 ethtool 命令测试。
sudo ethtool -T eth0
对于支持硬件时间戳的主机,可通过以下命令运行主时钟
sudo ptp4l -m -H -i eth0
运行 slave 时钟
sudo ptp4l -i eth0 -m -H -s
若主机不支持硬件时间戳,可通过以下命令启用 PTP 软件时间戳
sudo ptp4l -m -S -i eth0          # 主时钟
sudo ptp4l -m -S -s -i eth0       # 从时钟
将 ptp4l 作为服务运行
sudo systemctl start ptp4l
- ptp4l 的配置文件:/etc/linuxptp/ptp4l.conf
- 服务配置文件:/lib/systemd/system/ptp4l.service
