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

SYNC报文:
PTP移植笔记五:SYNC报文和时间戳_第1张图片下图为捕获的dante设备PTPv2报文:
PTP移植笔记五:SYNC报文和时间戳_第2张图片可以看到每四次Sync一次Announce报文。

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

SYNC报文结构
PTP移植笔记五:SYNC报文和时间戳_第3张图片PTP移植笔记五:SYNC报文和时间戳_第4张图片
PTP移植笔记五:SYNC报文和时间戳_第5张图片
PTP移植笔记五:SYNC报文和时间戳_第6张图片
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.

你可能感兴趣的:(PTP移植笔记五:SYNC报文和时间戳)