Linux PTP 高精度时间同步实践

简介

精确时间协议(PTP)是用于在网络中进行时钟同步的协议。当与硬件支持结合使用时, PTP 能够达到亚微秒的精度,这远好于通常使用的 NTP 。 PTP 支持分为内核空间和用户空间。该协议的实际实现称为linuxptp,它是 PTPv2 根据 Linux 的 IEEE 标准 1588 实现的。所述linuxptp包包括ptp4l和phc2sys用于时钟同步的程序。该ptp4l程序实现了 PTP 边界时钟和普通时钟。硬件时间戳用于将 PTP 硬件时钟与主时钟同步,软件时间戳用于将系统时钟与主时钟同步。

认识PTP

同步的时钟按 PTP 按照主从层次结构组织。从站与它们的主站同步,而主站可能是他们自己的主站的从站。层次结构由最佳主时钟( BMC ) 算法自动创建和更新,该算法在每个时钟上运行。当一个时钟仅具有一个端口,它可以是主或从属,这样的时钟被称为普通时钟(OC)。具有多个端口的时钟可以在一个端口上作为主时钟,在另一个端口上作为从时钟,这样的时钟称为边界时钟 ( BC )。顶级master被称为grandmaster 时钟,可以使用全球定位系统( GPS ) 时间源进行同步。通过使用基于 GPS 的时间源,可以高度准确地同步不同的网络。

PTP的优势

PTP 与网络时间协议( NTP ) 相比的主要优势之一是各种网络接口控制器( NIC ) 和网络交换机中需要硬件时间戳支持。这种专用硬件可以 PTP 解决消息传输中的延迟,并大大提高时间同步的准确性。虽然可以在网络中使用不支持 PTP 的硬件设备(如不支持PTP的交换机),但这通常会导致抖动增加或在延迟中引入不对称性,从而导致同步不准确。为获得尽可能高的准确性,建议将所有网络设备之间的 PTP 时钟的 PTP 硬件是启用的。并非所有网络硬件都支持 PTP 。大型网络中的时间同步可能更适合 NTP。在硬件 PTP 支持下,NIC 拥有自己的板载时钟,用于为接收和传输的 PTP 消息添加时间戳。正是这个板载时钟与 PTP 主机同步,计算机的系统时钟 PTP 与网卡上的硬件时钟同步。在软件 PTP 支持下,系统时钟用于对 PTP 消息打时间戳,并直接与主站同步。硬件 PTP 支持提供了更高的准确性,因为 NIC 可以在PTP 数据包发送和接收的确切时刻标记数据包,而软件 PTP 支持需要 PTP 操作系统对数据包进行额外处理。

实践1-检查硬件时间戳

为了使用 PTP ,网络接口的内核网络驱动程序必须支持软件或硬件时间戳功能。除了驱动程序中存在的硬件时间戳支持之外,NIC 还必须能够在物理硬件中支持此功能。验证特定驱动程序和 NIC 的时间戳功能的最佳方法是使用ethtool查询接口,如下所示:

其中eth3是您要检查的接口。

对于软件时间戳支持,参数列表应包括:

  • SOF_TIMESTAMPING_SOFTWARE
  • SOF_TIMESTAMPING_TX_SOFTWARE
  • SOF_TIMESTAMPING_RX_SOFTWARE

对于硬件时间戳支持,参数列表应包括:

  • SOF_TIMESTAMPING_RAW_HARDWARE
  • SOF_TIMESTAMPING_TX_HARDWARE
  • SOF_TIMESTAMPING_RX_HARDWARE

实践2-安装linuxptp

实践3-运行程序

主偏移值是以纳秒为单位测量的主偏移。的 s0 , s1 , s2 串表示不同的时钟伺服状态:s0 被解锁,s1 是时钟步骤和 s2 被锁定。一旦伺服处于锁定状态( s2 ),除非 pi_offset_const 在配置文件中将该选项设置为正值,否则时钟将不会步进(仅缓慢调整)。该 freq 值是时钟的频率调整,以十亿分之一 (ppb) 为单位。路径延迟值是从主站发送的同步消息的估计延迟(以纳秒为单位)。端口 0 是用于本地 PTP 管理的 Unix 域套接字。端口 1 是 eth3 接口。 INITIALIZING、LISTENING、UNCALIBRATED 和 SLAVE 是一些可能的端口状态,它们会在 INITIALIZE、RS_SLAVE、MASTER_CLOCK_SELECTED 事件上发生变化。在最后一个状态更改消息中,端口状态从UNCALIBRATED 更改为 SLAVE,表明与 PTP 主时钟成功同步。

相关产品

在新的工业 4.0 理念正在改变技术格局的世界中,提出了更高的时间同步要求。虹科 & ELPROMA 提供世界领先的时间同步解决方案。ELPROMA(1992年起)提供先进的NTP PTP / IEEE1588时间服务器,用来确保从时钟高度稳定和准确。

  • 高可用性支持(HA)

  • 两路冗余天线

  • 便捷式型号可选

  • MTBF 391000 小时

  • 支持NTP/PTP/IRIG/1PPS+ToD

  • 电信,电力等多行业PTP标准支持