第 20 章 使用 ptp4l 配置 PTP
20.1. PTP 简介
预告时间协议 (PTP)是一个用于同步网络中时钟的协议。与硬件支持配合使用时,P TP
可以采用次微秒精确度,这比 NTP
可获得的要好得多。PTP
支持在内核和用户空间间划分。Red Hat Enterprise Linux 中的内核包括对 PTP
时钟的支持,这些时钟由网络驱动程序提供。协议的实际实施称为 linuxptp,根据适用于 Linux 的 IEEE 标准 1588 实现 PTPv2
。
linuxptp 软件包包括用于时钟同步的 ptp4l 和 phc2sys 程序。ptp4l 程序实现 PTP
边界时钟和普通时钟。使用硬件时间戳时,它用于将 PTP 硬件
时钟与主时钟同步,并将系统时钟与 master 时钟同步的软件时间戳。phc2sys 程序只需要硬件时间戳,才能将系统时钟与 网络接口卡 (NIC)上的 PTP
硬件时钟同步。
20.1.1. 了解 PTP
PTP
同步的时钟按主从层次结构组织。从接口同步到其主设备,主从设备可能是自有主设备的主接口。层次结构由最佳 master 时钟 (BMC)算法自动创建和更新,该算法在每个时钟上运行。当时钟只有一个端口时,它可以是 master 或 slave ,此类时钟被称为普通时钟(OC )。具有多个端口的时钟可以在一个端口和另一个端口上主,此类时钟称为边界时钟 (BC)。顶级主时钟称为协调主机时钟 ,可以通过使用全局定位系统 (NC )时间源同步。通过使用基于NC 的时间源,不同的网络可以与高度精确度同步。
图 20.1. PTPtenmaster、边界和从属时钟

20.1.2. PTP 的优点
PTP
与 网络时间协议 (NTP)相比有一个主要优势,那就是各种 网络接口控制器 (NIC)和网络交换机中存在硬件支持。这种特殊硬件允许 PTP
考虑消息传输的延迟,并极大地提高了时间同步的准确性。虽然可以在网络中使用非 PTP 启用的硬件组件,但这通常会导致 jitter 增加或引入非对称,从而导致同步不准确,这增加了通信路径中使用的多个非 PTP 识别组件。为了获得最佳准确性,建议启用 PTP
时钟间的所有网络组件。在大型网络中的时间同步,并非所有网络硬件都支持
PTP
可能更适合 NTP
。
对于硬件 PTP
支持,NIC 中有自己的板载时钟,用于为接收和传输的 PTP
信息添加时间戳。这是与 PTP
master 同步的板载时钟,计算机的系统时钟与 NIC 上的 PTP
硬件时钟同步。对于软件 PTP
支持,系统时钟用于为 PTP 信息加上
时间戳,并直接与 PTP
master 同步。硬件 PTP
支持提供更高的准确性,因为 NIC 可以在准确发送和接收时对 PTP
数据包进行时间戳,而软件 PTP
支持需要操作系统对 PTP
数据包进行额外的处理。