Overview
主要介绍三点:
- propagation delay的计算,使用的是PTP peer delay protocol,与1588无太大区别。
- 发送synchronization information,用到了PTP messages Sync、Follow-up。
- 整个MD entity model的概览。
Propagation delay measurement
一般,mean propagation delay的算式为:D = ((t4-t1)-(t3-t2))/2
其中,t1,t4是在initiator中测量出的,t2,t3是在responder中测量出的。
如果propagation delay的计算需要以responder time base为基准,则上面算式中的(t4-t1)需要乘上responder相对于initiator的rate ratio。同理,如果以initiator time base为基准,或者以grandmaster time base为基准,都需要乘上对应的rate ratio。
Transport of time-synchronization information
此处的同步机制,在逻辑上与1588协议中的two-step,peer-to-peer,syntonized transparent clock是一样的(参考1588 11.4.5.1,11.5.1,11.5.2.2)。
也就是说,收到Sync message时,要尽快将其转发出去。同时,需要将根据peer delay mechanism算出的meanPathDelay(算的是Sync message来的那条path),加到Follow_up的correctionField处,然后转发出去。 如果port上的delayAsymmetry知道的话,这个也需要被考虑进去。
实际上,在gptp中,boundary clock的同步机制与transparent clock的同步机制是一样的。它们之间的区别是:BC可以参加BMCA,而TC不行。
上图中,Follow_Up中的包含grandmaster发送此synchronization information的时间。这个field没有下标,因为无论传到哪,这个值都不会变。
包含了与preciseOriginTimestamp之间的差。
是grandmaster与i-1的localclock之间frequency的比值。
当收到Sync message的时候,它记录下,接着它收到了Follow-Up。
然后在时将Sync message发出。接着它要计算。计算这个值并不是简单地将减去preciseOriginTimestamp就好了,因为clock之间的rate不一致。正确的计算方法为将下面两个值相加:
(1). 与之间的propagation delay,以grandmaster time base为准(即考虑rate ratio)。
(2). 与的差,即residence time,也以grandmaster time base为准。
接下来计算发送时,的local time。它相当于MDSyncReceive结构中的upstreamTxTime,等于减去link propagation delay(以的time base为准)。
其中,link propagation delay由以下两个值相加得出:
(3). neighborPropDelay(以对端的clock time base为准的propagation delay,应该就是在对端测出的)除以neighborRateRatio(对端的clock rate相对于本端clock rate的比值)。
(4). delayAsymmetry(见10.2.4.8和8.3)除以。
upstreamTxTime的计算是在setMDSyncReceive()中完成的。当向发送Sync message的时候,它计算以grandmaster time base为准的link propagation和residence time之和,即
(5).
从这里可以看出,
(5)的结果加上,得到。这些计算是在setFollowUp()函数的MDSyncSendSM state machine里完成的。被放入Follow_Up中并发送出去。
而所谓的Synchronized time,就是preciseOriginTime + correctionField。
其实,mean propagation delay不管以grandmaster time base为准,还是以本端或者对端的clock time base为准,它们之间的差距都可以忽略不计。link delay asymmetry其实误差也不大。差距比较大的应该在residense time上,因为它一般时间较长。
这么说,上面的计算,逻辑上可以简化一些。中引入的correction就是
upstreamTxTime PropagationDelay
之所以说gptp中的同步和1588中的transparent clock很像,是因为在1588中,诸如boundary clock,都是把synchronized time给保存到preciseOriginTimestamp中的(除了纳秒部分),而transparent clock则是保持原有preceseOriginTimestamp不变,将更新的部分都放到correctionField中。
Model of operation
一个time-aware system的每个port都包含一个MD entity。此entity种包含了对所有media通用的function,也包含了只对特定media可用的function。下面介绍针对Ethernet full-duplex, point-to-point link的functions。
根据8.4.3和11.3.2.1,event messages在经过timestamp measurement plane(位于MD entity中)时被打上一个ingress/egress MeasuredTimestamp,在经过reference plane(用于划分time-aware system和media的界限)时,算出ingress/egress Latency。根据这两个值,最后得出ingress/egress Timestamp。
State machines for MD entity specific to full-duplex, point-to-point links
每一个port都有一个state machine,因为每一个state machine都对应一个MD entity。 state machine有如下这些:
- MDSyncReceiveSM:接收Sync, Follow_Up,将其中的time-synchronization information提取出来并传给PortSync entity。
- MDSyncSendSM:从PortSync entity接收MDSyncSend structure,发送Sync message,用校正过egressLatency的<syncEventEgressTimestamp>和MDSyncSend structure,计算出Follow_up中需要的数据,并发送Follow_Up。
- MDPdelayReq:发送Pdelay_Req,接收对应的Pdelay_Resp和Pdelay_Resp_Follow_Up。用接收的message中的信息计算出对端clock frequency 和本端clock frequency 的比值,并用此rate ratio计算出此link的propagation delay。
- MDPdelayResp:接收对端传来的Pdelay_Req,回应Pdelay_Resp和Pdelay_Resp_Follow_Up。
- LinkDelaySyncIntervalSetting state machine:接收携带Message Interval Request TLV(见10.5.4.3)的Signaling message,根据其中的信息,设置控制Sync和Pdelay_Req发送间隔的全局变量。
网友评论