8. PTP数据集
===========
每个数据集成员规范包括:
1. 成员的正式名称
2. 与成员相关的语义参考或定义
3. 初始化和配置属性
对于每个普通时钟和边界时钟,下面的“时钟数据集”要在本地维护,并作为协议决策和
填充消息域的基础:
1. defaultDS
2. currentDS
3. parentDS
4. timePropertiesDS
5. portDS
对于每个透明时钟,要维护:
1. transparentClockDefaultDS
2. transparentClockPortDS
初始化分类
----------------
每个数据集的每个成员可以分类为静态的,动态的或这可配置的。
静态成员的值来自协议适中的内在物理或者操作属性。
动态成员的值不会被用户直接更改,但是他们可以发生变化。
可配置成员的值只可以通过使用管理消息或者实现相关的配置方法改变。
8.2 普通时钟和边界时钟的数据集
===========================
1. defaultDS 数据集
Static:
defaultDS.twoStepFlag
defaultDS.clockIdentity
defaultDS.numberPorts
Dynamic:
defaultDS.clockQuality
defaultDS.clockQuality.clockClass
defaultDS.clockQuality.clockAccuracy
defaultDS.clockQuality.offsetScaledLogVariance
Configurable:
defaultDS.priority1
defaultDS.priority2
defaultDS.domainNumber
defaultDS.slaveOnly
2. currentDS数据集
Dynamic:
currentDS.stepsRemoved
currentDS.offsetFromMaster
currentDS.meanPathDelay
3. parentDS 数据集
Dynamic:
parentDS.parentPortIdentity
parentDS.parentStats
parentDS.observedParentOffsetScaledLogVariance
parentDS.observedParentClockPhaseChangeRate
parentDS.grandmasterIdentity
parentDS.grandmasterClockQuality
parentDS.grandmasterPriority1
parentDS.grandmasterPriority2
4. timePropertiesDS数据集
Dynamic:
timePropertiesDS.currentUtcOffset
timePropertiesDS.currentUtcOffsetValid
timePropertiesDS.leap59
timePropertiesDS.leap61
timePropertiesDS.timeTraceable
timePropertiesDS.frequencyTraceable
timePropertiesDS.ptpTimescale
timePropertiesDS.timeSource
timePropertiesDS.ptpTimescale应该在其他成员之前初始化。
5. portDS数据集
Static:
portDS.portIdentity
Dynamic:
portDS.portState
portDS.logMinDelayReqInterval
portDS.peerMeanPathDelay
Configurable:
portDS.logAnnounceInterval
portDS.announceReceiptTimeout
portDS.logSyncInterval
portDS.delayMechanism
portDS.logMinPdelayReqInterval
portDS.versionNumber
8.3 透明时钟数据集
================
Static:
transparentClockDefaultDS.clockIdentity
transparentClockDefaultDS.numberPorts
Configurable:
transparentClockDefaultDS.delayMechanism
transparentClockDefaultDS.primaryDomain
9 PTP for 普通时钟和边界时钟
=========================
9.2 状态协议
===========
所有的普通和边界时钟必须实现状态机。
PTP portState定义
INITIALIZING
FAULTY
DISABLED
LISTENING
PRE_MASTER
MASTER
PASSIVE
UNCALIBRATED
SLAVE
激发PTP状态迁移的事件
--------------------------------
POWERUP
INITIALIZE: 收到Initialize管理消息
Designated_Enabled: 收到Enable_Port管理消息
Designated_Disabled: 收到Disable_Port管理消息
Fault_Cleared: 清除fault条件
......
9.3 最佳主时钟算法
================
9.4 Grandmaster时钟
==============
9.5 消息处理语义
==============
除管理消息外,所有的多播PTP消息应该终止于边界和普通时钟。
边界时钟会将根据规则将所有的单播PTP消息转发出去。
收到一条来从其他的时钟的Announce消息
--------------------------------------------------------
如果这个端口处于Initializing 或 disabled或faulty状态,消息被抛弃。
如果收到的Announce消息的sourcePortIdentity字段与接收该消息的时钟的
parentDS.parentPortIdentity一致,那么这条消息是来自当前的父时钟(也就是这个时钟已经同步的主时钟)。
收到一条来从其他的时钟的Sync消息
-------------------------------------------------
如果接收到Sync消息的端口处于INITIALIZING或者DISABLED状态,消息被抛弃。
接收到Sync的时候,要为这个消息产生<syncEventIngressTimestamp>。
接收到的Sync消息要尽可能快的被处理。如果Sync消息中的sourcePortIdentity字段值与接收时钟的parentDS.parentPortIdentity字段值一致,那么这个消息是来自当前master时钟的。
如果接受到Sync消息的端口处于Slave状态,并且Sync消息的twoStepFlag位是FALSE(意味着不会收到Follow_Up消息),那么:
1. Sync消息的correctionField要考虑非对称性进行调整。
2. 本地时钟应该根据接收到的Sync消息和<syncEventIngressTimestamp>进行同步。
如果twoStepFlag位是TRUE,那么:
1. Sync消息的correctionField要考虑非对称性进行调整。
收到一条来从其他的时钟的Follow_Up消息
--------------------------------------------------------
本地时钟应该根据接受到的Follow_Up消息和与Sync消息关联的<syncEventIngressTimestamp>进行同步。
收到一条来从其他的时钟的Delay_Req消息
---------------------------------------------------------
收到一条来从其他的时钟的Delay_Resp消息
-----------------------------------------------------------
Annouce消息的发送
----------------------------
Sync消息的发送
----------------------
Follow_Up消息的发送
-----------------------------
Delay_Req消息的发送
------------------------------
Delay_Resp消息的发送
--------------------------------