IEEE 1588 Sync和Follow_Up格式

本文介绍PTP(精确时间协议)中的Sync与Follow_Up消息结构及其交互流程,详细解析了用于测量PTP端口间平均路径延迟的Delayrequest-response机制。

Sync
====

34 bytes header
---------------------
10 - transportSpecific, messageType (1)
02 - reserved, versionPTP (1)
00 2c - messageLength (2)
00 - domainNumber (1)
00 - reserved (1)
02 00 - flagField (2)
00 00 00 00 1c e3 00 00 - correctionField (8)
00 00 00 00 - reserved (4)
00 00 xx xx xx xx xx xx xx xx - sourcePortIdentity (10)
00 0a - sequenceId (2)
00 - controlField (1)
00 - logMessageInterval (1)


10 bytes timestamp data
----------------------------------
00 00 00 00 00 xx xx xx xx xx - originTimestamp (10)


padding octets
--------------------
00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00


Follow_Up
=======

34 bytes header:
---------------------
08
02
00 2c
00
00
00 00
00 00 00 00 00 00 00 00
00 00 00 00
00 00 xx xx xx xx xx xx xx xx
00 0a
02
00


10 bytes data:
-------------------
00 00 00 00 00 xx xx xx xx xx 

Follow_Up消息
---------------------
34字节:消息头部
10字节:preciseOriginTimestamp

其中preciseOriginTimestamp的定义为:

struct Timestamp
{
 UInteger48 secondsField;
 UInteger32 nanosecondsField;
};
secondsField是以秒为单位的时间戳的整数部分.
nanosecondsField 是以纳秒为单位的时间戳的分数部分.
nanosecondsField 总是要小于 10E9.

例如:
+2.000000001 秒表示威:secondsField = 0000 0000 0002 和 nanosecondsField= 0000 0001 (16进制)


9.5.10 Follow_Up消息的发送
----------------------------------------
Follow_Up消息应该尽可能快地在相关联的Sync消息后发送,而且应该在下一个Sync消息之前发送。

Follow_Up消息中的sequenceId字段应该和相关联的Sync消息的sequenceId一致。

preciseOriginTimestamp 字段应该是其关联的Sync消息的syncEventEgressTimestamp值,除去纳秒的小数值。

Follow_Up中的correctionField和preciseOriginTimestamp的和应该是syncEventEgressTimestamp只,包括任何小数的纳秒值。


11.3 Delay request-response机制
=================================

这个机制测量PTP端口对之间的平均路径延迟。

a) master产生一个Sync消息,如果这个节点是一个two-step适中,它还会发送一个Follow_Up消息。
b) slave会:
 1) 接收到Sync的时候产生时间戳 t2
 2) 如果非对称更正是需要的,修改接受到的Sync消息的correctionField.
 3) 如果需要发送Delay_Req消息:
  i) 准备一个带有correctionField的Delay_Req消息,设置correctionField为0. originTimestamp 应该设置为 0,或者是Delay_Req消息的发出时间不差于1秒的估计时间。
  ii) 如果非对称更正是需要的,修改correctionField.
  iii) 发送Delay_Req消息,并记录下时间戳 t3.
c) 收到Delay_Req消息,master会 :
 1) 产生时间戳 t4.
 2) 准备 Delay_Resp 消息,
 3) 设置 sequenceId 与Delay_Req一致.
 4) 设置requestingPortIdentity为Delay_Req的sourcePortIdentity.
 5) 设置 domainNumber 与Delay_Req一致.
 6) 设置 correctionField为 0.
 7) 加入Delay_Req的 correctionField到Delay_Resp的 correctionField.
 8) 设置Delay_Resp消息的receiveTimestamp字段为t4的秒值和纳秒值.
 9) 从Delay_Resp消息的correctionField中减去t4的小数点纳秒部分。
 10) 发出Delay_Resp消息.
d) 收到Delay_Resp消息,slave会:
 1) 如果接受到的Sync消息指明不会收到Follow_Up消息。<meanPathDelay> 可计算为:<meanPathDelay> = [(t2 - t3) + (receiveTimestamp of Delay_Resp message – originTimestamp of Sync message) – correctionField of Sync message – correctionField of Delay_Resp message]/2.
 2) 如果接受到的Sync消息指明会收到Follow_Up消息,  <meanPathDelay> 可计算为:<meanPathDelay> = [(t2 - t3) + (receiveTimestamp of Delay_Resp message – preciseOriginTimestamp of Follow_Up message) – correctionField of Sync message– correctionField of Follow_Up message – correctionField of Delay_Resp message]/2.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值