前言
PTP(Precision Time Protocol)时钟是一种用于实现高精度时钟同步的网络协议和技术。它旨在提供精确的时间参考,使网络中的设备能够在微秒级别进行同步,并确保各个设备的时钟保持高度一致。
PTP时钟的工作原理基于主从架构,其中一个设备(主时钟)作为时间参考源,其他设备(从时钟)通过网络与主时钟进行通信,以便调整自身的时钟。PTP协议定义了在主从设备之间进行时间同步所需的消息交换和算法。
本文主要分析PTP时钟属性值特征,供学习参考之用:
Clock Instance 与 Local Clock
Clock Instance是指网络中的一个PTP时钟实例,通常由硬件设备或软件实现。每个时钟实例都具有唯一的标识符(Clock Identity)和特定的配置参数(Profile、Clock Type等)。在给定的网络中可能存在多个时钟实例,每个实例负责维护自己的时钟状态和与其他时钟之间的通信。
Local Clock(本地时钟)是指特定时钟实例中的本地时钟设备。它是该时钟实例内部的一个组件,负责生成本地时间和时钟状态。Local Clock具有自己的当前状态、锁定状态、系统时间以及与全局主时钟(Grandmaster Clock)之间的时间估计。
区别:
Clock Instance是整个网络中的一个PTP时钟实例,而Local Clock是该实例内部的本地时钟设备。
Clock Instance可以与其他时钟实例进行通信和同步,而Local Clock是一个组件,负责生成本地时间和与全局主时钟之间的时间同步。
Clock Instance通常具有多个端口,可以与其他设备进行通信,而Local Clock是时钟实例内部的一个组件,不直接与其他设备通信。
在给定的信息中,Clock Instance 1和Clock Instance 2代表了两个不同的时钟实例,每个实例具有自己的配置参数和状态。而Local Clock指的是Clock Instance 2中的本地时钟设备,提供了有关该时钟实例的当前状态、锁定状态、系统时间和与全局主时钟的时间估计等信息。
Clock的几种状态(不同厂商大差不差 都这个意思)
状态 | 可能的原因 |
---|---|
unknow | 重启PTP进程的中可能出现;其他设备异常情况会导致,是一种设备故障的表现 |
freerun | 表示时钟此刻没有锁定,检查上下游的配置 |
holdover-in-spec | 当本地时钟在holdover状态下,其时间偏差仍然在可接受的规范范围内时,被称为Holdover-In-Spec。也就是说,本地时钟能够维持时间同步,并且在规定的误差限度内保持准确性 |
holdover-out-spec | 当本地时钟在holdover状态下,其时间偏差超出了可接受的规范范围时,被称为Holdover-Out-Spec。这意味着本地时钟的准确性已经超出了规定的误差限度,无法保持与主时钟的同步 |
acquiring | 该时钟正在尝试获取或获取特定的状态,即"Operational State"。在这种情况下,操作可能是通过发送特定的PTP消息(如Announce消息)来寻找并获取Grandmaster(主时钟)的角色。时钟可能会尝试与其他时钟进行通信,进行时钟同步协议的协商,并尝试成为系统中的主时钟 |
locked | 锁定成功,至于锁定在哪里了,自己结合现场环境分析 |
时钟锁定的属性值分析
当我们查看锁定时钟的信息的时候,他会给我们提供三个数据集defaultDS、currentDS和parentDS。这些数据集是时钟同步过程中使用的不同信息集合,用于描述时钟的属性、当前状态以及与上级时钟的关系。
defaultDS(Default Dataset):该数据集描述了时钟的默认属性和配置。其中包含了时钟的唯一标识(clockIdentity)、时钟的品质(clockQuality)、时钟的优先级(priority1和priority2)、时钟所属的域(domainNumber)等信息。
currentDS(Current Dataset):该数据集描述了时钟的当前状态。其中包含了与主时钟的同步情况,如从主时钟同步移除的步骤数(stepsRemoved)、与主时钟的时间偏移(offsetFromMaster)、平均路径延迟(meanPathDelay)等信息。
parentDS(Parent Dataset):该数据集描述了时钟与上级时钟的关系。其中包含了上级时钟的标识(parentPortIdentity.clockIdentity)、上级时钟的端口号(parentPortIdentity.portNumber)、与上级时钟的偏移和相位变化率(observedParentOffsetScaledLogVar和observedParentClockPhaseChangeRate)等信息。
数据集详细属性为下表:
数据项 | 含义 |
---|---|
twoStepFlag | 两步模式标志 |
numberPorts | 端口数量 |
clockIdentity | 时钟标识 |
clockQuality.clockClass | 时钟质量的类别 |
clockQuality.clockAccuracy | 时钟精度 |
clockQuality.offsetScaledLogVar | 时钟偏移的缩放对数变量 |
priority1 | 优先级1 |
priority2 | 优先级2 |
domainNumber | 域编号 |
slaveOnly | 是否仅从模式 |
localPriority | 本地优先级 |
数据项 | 含义 |
---|---|
stepsRemoved | 从主时钟同步过程中移除的步骤数 |
offsetFromMaster | 与主时钟的时钟偏移量 |
meanPathDelay | 平均路径延迟 |
currentUtcOffsetValue | 当前的协调世界时(UTC)偏移值 |
currentUtcOffsetValid | 当前的UTC偏移值是否有效 |
leap59 | 是否启用了59秒闰秒 |
leap61 | 是否启用了61秒闰秒 |
timeTraceable | 时间是否可追溯 |
frequencyTraceable | 频率是否可追溯 |
ptpTimescale | 是否使用PTP时间刻度 |
timeSource | 时间源 |
parentPortIdentity.clockIdentity | 父级端口的时钟标识 |
parentPortIdentity.portNumber | 父级端口的端口编号 |
parentStats | 是否启用父级统计信息 |
observedParentOffsetScaledLogVar | 观察到的父级偏移的缩放对数变量 |
observedParentClockPhaseChangeRate | 观察到的父级时钟相位变化速率 |
gmIdentity | 主时钟的时钟标识 |
gmClockQuality.clockClass | 主时钟的时钟质量类别 |
gmClockQuality.clockAccuracy | 主时钟的时钟精度 |
gmClockQuality.offsetScaledLogVar | 主时钟的偏移的缩放对数变量 |
gmPriority1 | 主时钟的优先级1 |
gmPriority2 | 主时钟的优先级2 |