PTP移植笔记五:SYNC报文和时间戳

SYNC报文:
在这里插入图片描述下图为捕获的dante设备PTPv2报文:
在这里插入图片描述可以看到每四次Sync一次Announce报文。

编写K64上面的PTP代码时发现,K64可以为PTPv1和PTPv2两个版本的报文记录时间戳。

SYNC报文结构
报文头在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
SYNC、FOLLOW_UP报文的发送:
SYNC报文由处于MASTER状态的时钟周期性的发送,间隔时间为1(秒) ×(2^portDS.logSyncInterval)。
FOLLOW_UP是SYNC的关联报文,应在SYNC之后,尽快发送。
FOLLOW_UP头中的sequenceId应当与SYNC头中的sequenceId相同。
Delay_Req报文的发送:
端口处于SLAVE或UNCALIBRATED状态时,才可以发送此报文。
发送时间要求为:
第一帧Delay_Req的时间没有额外要求,之后的间隔应使用响应报文中的logMessageInterval计算,公式为1(秒) ×2^portDS.logMinDelayReqInterval。logMinDelayReqInterval=最后一次接收到的Delay_Resp中的logMessageInterval。
连续Delay_Req的时间间隔应该随机分布,分布时间范围为0~2^(logMinDelayReqInterval+1)秒之间,又不能大于2的(logSyncInterval-4)次方秒,每次发送前都应重新计算此随机值。
Delay_Resp报文的发送:
端口处于MASTER状态时,才可以发送此报文。
接收到Delay_Req报文后,应尽快发送此报文。
在发送报文之前应:
1.计算logMinDelayReqInterval的更新值。
2.用上面的计算结果更新发送端口的portDS.longMinDelayReqInterval值。
3.

猜你喜欢

转载自blog.csdn.net/u011226925/article/details/89361740