10. 透明时钟PTP
================
10.1 端对端和点对点透明时钟的通用要求
------------------------------------------------------------
所有的透明时钟都应该根据网络寻址规则foward所有非PTP消息。
所有的透明时钟应该依据条款12 syntonize到一个grandmaster时钟。
如果透明时钟不实现syntonization,所有对事件消息产生的residence时间和链路延迟更正都应该基于free-running的时钟。
10.2 端对端透明时钟要求
----------------------------------
一个端对端透明时钟不应该实现点对点延迟机制。
10.3 点对点透明时钟要求
-----------------------------------
所有的PTP V2的Announce, Sync, Follow_Up, Management和Signaling消息都应该根据网络的寻址规则被转发。
所有的PTP V2的Delay_Req和Delay_Resp消息都应该被丢弃。
11. 时钟偏移,路径延迟,residence时间和非对称更正
=========================================
11.1 通用规范
-------------------
条款11提供了传送时间戳,以及任何保证事件消息的接收者会接收到尽可能准确地时间戳所需要的时间更正的机制。
条款11规范了:
a) 在slave和master时钟的偏移量的计算,<offsetFromMaster>
b) 延迟请求-响应机制:这个机制测量一对端口之间的<meanPathDelay>。
c) 点对点延迟机制:这个机制测量一对端口之间的<meanPathDelay>,这对端口要求支持点对点延迟机制。
d) 在点对点时钟中<meanPathDelay>的更正。
e) 基于在透明时钟residence时间测量的事件消息的更正。
f) 路径非对称时间戳更正。
11.2 普通时钟和边界时钟的时钟偏移量的计算
-----------------------------------------------------------------
一个slave时钟和一个master普通时钟或边界时钟的时间误差定义为:<offsetFromMaster> = <Time on the slave clock> - <Time on the master clock>,这两个时间都是在同一时刻测量的。
slave通过下面的方法计算<offsetFromMaster>:
a) 收到Sync消息时,slave应该产生一个时间戳<syncEventIngressTimestamp>。
b) 如果这个Sync消息的twoStepFlag位为False,意味着不再会接收到Follow_Up消息,那么:
<offsetFromMaster> = <syncEventIngressTimestamp> - <originTimestamp> - <meanPathDelay> - Sync消息的correctionField。
c) 如果这个Sync消息的twoStepFlag位为TRUE,意味着Follow_Up消息会被接收到,那么:
<offsetFromMaster> = <syncEventIngressTimestamp> - <preciseOriginTimestamp> - <meanPathDelay> - Sync消息的correctionField - Follow_Up消息的correctionField。
其中:
a) <originTimestamp>应该是接收到的Sync消息的originTimestamp字段
b) <preciseOriginTimestamp> 应该是接收到的Follow_Up消息的preciseOriginTimestamp字段。
c) 如果端口被配置成使用延迟请求-响应机制,那么<meanPathDelay>应该如11.3中所描述的那样。
d) 如果端口被配置成使用peer延迟机制,那么<meanPathDelay>应该如11.4中所描述的那样。
11.3 延迟请求-响应机制
---------------------------
a) master准备并产生Sync消息,如果这个节点是一个two-step时钟,那它也会准备和产生一个Follow_Up消息。
b) slave节点将:
1) 接收到Sync消息的时候,生成t2时间戳。
2) 如果需要asymmetry更正,修改接收到的Sync消息的correctionField字段。
3) 如果需要发送一个Delay_Req消息
i) 准备一个Delay_Req消息,其中correctionField设为0。originTimestamp设置为0,或者是Delay_Req消息的发出时间的估计值(误差小于1秒)。
ii) 如果需要asymmetry更正,修改correctionField字段。
iii) 发送Deley_Req消息,并产生时间戳t3。
c) 接收到Delay_Req消息时,master节点会
1) 产生时间戳t4。
2) 准备Delay_Resp消息。
3) 从Delay_Req消息中把sequenceId拷贝到Delay_Resp的sequenceId中
4) 从Delay_Req消息中把sourcePortIdentity拷贝到Delay_Resp的requestingPortIdentity中
5) 从Delay_Req消息中把domainNumber拷贝到Delay_Resp的domainNumber中
6) 设置Delay_Resp的correctionField为0
7) 将Delay_Req消息中的correctionField加入到Delay_Resp消息中的correctionField中。
8) 设置Delay_Resp消息中的receiveTimestamp为t4时刻的秒和纳秒值
9) 从Delay_Resp中的correctionField值中减去任何纳秒的小数值
10) 发出Delay_Resp消息
d) 即收到Delay_Resp消息时,slave节点会:
1) 如果接收到的Sync消息指明了不会有Follow_Up消息,那<meanPathDelay>可以计算为:
<meanPathDelay> = [(t2 - t3) + (Delay_Resp消息的receiveTimestamp - Sync消息的originTimestamp) - Sync消息的correctionField - Delay_Resp消息的correctionField]/2
2) 如果接收到的Sync消息指明了还会有Follow_Up消息,那<meanPathDelay>可以计算为:
<meanPathDelay> = [(t2 - t3) + (DelayResp消息的receiveTimestamp - Follow_Up消息的preciseOriginTimestamp) - Sync消息的correctionField - Follow_Up消息的correctionField - Delay_Resp消息的correctionField]/2
11.4 Peer延迟机制
--------------------
peer延迟机制测量端口-端口传输时间,也就是链路延迟。这两个通信端口要求支持peer延迟机制。
链路延迟测量应该是由实现peer延迟机制的每个端口独立完成的,意味着链路延迟能够为一条链路的两端都所知道,这样在网络重构的时候,链路长度更正能够立即完成。