Linuxptp使用总结

Reference
1.Linuxptp文档及源码:http://linuxptp.sourceforge.net/
2.ptp及ntp介绍及比较:https://www.redhat.com/en/blog/combining-ptp-ntp-get-best-both-worlds
3.Linux下Linuxptp软件包使用说明:https://documentation.suse.com/zh-cn/sled/15-SP2/html/SLED-all/cha-tuning-ptp.html
4.Linuxptp的一些补充知识:https://www.techplayon.com/ieee-1588-precision-time-protocol-ptp-for-telecom-networks/
5.我实验时使用的ptp服务器供应商提供的资料:https://blog.csdn.net/hongke_Tech/article/details/120087565?spm=1001.2101.3001.6650.10&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-10.fixedcolumn&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-10.fixedcolumn

正文:
1.linuxptp软件下载:

sudo apt install linuxptp

或者按照参考1以源码方式下载。
2.Linuxptp使用:下载完成后,Linuxptp主要包含两个软件,一个是ptp4l,一个是phc2sys,前者用于PTP同步,包含硬件时钟同步和软件时间同步(系统时钟同步),后者用于在ptp4l实现硬件时间同步后将系统时钟同步到硬件时钟。
要使用ptp4l,首先得确定网卡支持的同步类型,可通过ethtool测试。
Linuxptp使用总结
对于支持硬件时间戳的主机,可通过命令

sudo ptp4l -i eth0 -m -H

运行主时钟。通过

ptp4l -i eth0 -m -H -s

运行slave时钟,若不指定-s,即不设置主机为slave模式时,由于存在多个可能的主时钟,此时会通过最佳主时钟(BMC)算法从候选主时钟中选取一个grandmaster来作为整个ptp域的时钟源。经过上述步骤后,作为slave的主机会将本地的硬件时间同步到grandmaster,但此时系统时间可能仍未同步(大多数接口获取的时间戳都是系统时间戳),所以需要调用phc2sys实现系统时间对硬件时间的同步。

sudo phc2sys -s eth0 -w

至此,从设备时间同步完成。
若主机不支持硬件时间戳,可通过命令

sudo ptp4l -i eth0 -m -S -s

通过软件时间同步的方式实现对grandmaster的时间同步,该方式直接将系统时间与grandmaster的硬件时间对齐。
3.Linuxptp状态介绍
从设备通过ptp4l与grandmaster同步时若添加了-m参数,将会在终端上打印同步状态如下:
Linuxptp使用总结
master offset 值表示测得的与主时钟之间的偏差(以纳秒为单位)。

s0、s1、s2 指示器显示时钟伺服的不同状态:s0 表示已解锁,s1 表示时钟步进,s2 表示已锁定。如果伺服处于已锁定状态 (s2),并且 pi_offset_const 选项在配置文件中设置为负值,则时钟不会步进,而只会缓慢调整(有关详细信息,请参见 man 8 ptp4l)。

freq 值表示时钟的频率调整(以十亿分率 (ppb) 为单位)。

path delay 值表示从主时钟发送的同步消息的预计延迟(以纳秒为单位),该延迟可通过E2E或P2P方式测量,默认为E2E。

端口 0 是用于本地 PTP 管理的 Unix 域套接字。端口 1 是 eth0 接口。

INITIALIZING、LISTENING、UNCALIBRATED 和 SLAVE 是发生 INITIALIZE(初始化)、RS_SLAVE(本地时钟成为slave) 和 MASTER_CLOCK_SELECTED(选定了对应的主时钟) 事件时更改的端口状态示例。当端口状态从 UNCALIBRATED 更改为 SLAVE 时,表示计算机已与 PTP 主时钟成功同步。

上一篇:Vue02-第一个vue程序


下一篇:SAS学习笔记32 select语句