功能介绍
ptpd2是实现了ptp协议的一个用于本地局域网内的多台设备间的时间戳同步的工具。
为什么要做时间戳同步?
- 需要测试一个大包从开始发送到完成接收时,延时的时间
- 问题在于发送开始是发送端才能感知的,接收结束是接收端感知的,
- 这就需要发送端和接收端的时间戳同步
- 当然如果发送方每个包都不存在排队的情况,即每个包发送的时间和对端接收的时间几乎相等,那也可以不考虑时间戳同步
编译
项目源码:https://github.com/ptpd/ptpd
安装说明查看根目录下的INSTALL文件即可,如果是交叉编译需要指定交叉编译工具链的位置和host类型,比如:
./configure CC=/opt/tuya/rts3903/toolchain/rsdk-4.8.5-5281-EL-3.10-u0.9.33-m32fut-161202/bin/mips-linux-uclibc-gcc --host=mips
编译完成后在src目录下会生成一个ptpd2的文件
使用
需要在多台设备上同时运行ptpd2,而且关闭本地的网络时间同步功能。多台设备间会选举出一个master设备,其他设备同步master设备上的时间戳
运行命令:
./ptpd2 -C -m -i 网卡
效果如下:
master
# ./ptpd2 -C -m -i enp0s9
2019-11-05 15:51:27.209776 ptpd2[28013].startup (notice) (___) PTPd version 2.3.2 starting
2019-11-05 15:51:27.210028 ptpd2[28013].startup (info) (___) Starting ptpd2 daemon with parameters: ./ptpd2 -C -m -i enp0s9
2019-11-05 15:51:27.210137 ptpd2[28013].startup (info) (___) Checking configuration
2019-11-05 15:51:27.211055 ptpd2[28013].startup (info) (___) Configuration OK
2019-11-05 15:51:27.211625 ptpd2[28013].startup (info) (___) Successfully acquired lock on /var/run/ptpd2.lock
2019-11-05 15:51:27.211830 ptpd2[28013].startup (notice) (___) PTPd started successfully on enp0s9 using "masterslave" preset (PID 28013)
2019-11-05 15:51:27.211901 ptpd2[28013].startup (info) (___) TimingService.PTP0: PTP service init
2019-11-05 15:51:27.212993 ptpd2[28013].enp0s9 (info) (init) Observed_drift loaded from kernel: 0