1588v2学习笔记

时间同步和频率同步

下图给出了时间同步与频率同步的区别。如果两个表(Watch A与Watch B)每时每刻的时间都保持一致,这个状态叫时间同步;如果两个表的时间不一样,但是保持一个恒定的差,比如6小时,那么这个状态称为频率同步。

1588v2是如何实现同步的?

时间同步网络中的每个节点,都被称为Clock。1588v2协议定义了三种基本的时钟节点类型:

OC(Ordinary Clock,普通时钟)
节点仅有一个物理端口同网络通信,既可作为首节点(Grandmaster Clock,最高级时钟)向下游节点发布时间,也可作为末节点(Slave Clock,从时钟)从上游节点同步时间。如1588服务器一般配置为OC模式,作为整个网络的Grandmaster Clock;而用户终端(如:无线基站)作为最末端的Slave Clock设备,也配置为OC模式。

BC(Boundary Clock,边界时钟)
节点有多个物理端口与网络通信,其中一个端口从上游设备同步时间,其余多个端口向下游设备发布时间。

TC(Transparent Clock,透明时钟)
节点有多个物理端口与网络通信,只在端口之间处理和转发1588v2协议报文,并不从任何一个端口同步时间。TC节点分成两种类型:E2E TC(End-to-End Transparent Clock)、P2P TC(Peer-to-Peer Transparent Clock)。

E2E TC转发1588v2报文时,可测量报文经过该节点的转发时延,并且修正到1588v2报文中,在两端的OC或者BC节点计算链路时延和时间偏差进行同步。与E2E TC相比,P2P TC不仅修正转发时延,还测量并修正该节点每个端口相连链路的链路时延,在两端的OC或者BC节点计算时间偏差进行同步。

三种基本时钟节点的分层拓扑示例,如下图所示。

同步机制

1588v2协议定义了两种具体的时间同步机制:E2E(End-to-End,端到端)机制和P2P(Peer-to-Peer,点到点)机制。在支持1588v2的网络中,主时钟节点可以与从时钟节点直接相连,或者隔几个中间节点相连。对于主时钟节点到从时钟节点之间的总链路延迟,E2E和P2P的测量机制不同:

  • E2E实际上是直接测量两个OC或者BC之间的总链路延迟,包括其间的所有中间TC节点。
  • P2P仅限于测量两个直连相连的OC,BC或者TC节点之间的逐点链路延迟

E2E机制

E2E机制主从节点之间通过Sync,Delay_Req和Delay_Resp报文交互,使从节点计算出自身与主节点之间的时间偏差,并调整自身的时间以达到和主节点时间同步。主节点发送Sync报文有one-step和two-step模式,对于one-step方式,Sync报文带有本报文发送时刻的时间戳;对于two-step方式,Sync报文并不带有本报文发送时刻的时间戳,而只是记录本报文发送时的时间,由后续报文Follow_Up带上该Sync报文发送时刻的时间戳。

E2E机制实现时间同步过程如下图所示。

E2E机制实现时间同步

  1. Master在t1时刻发送Sync报文(如果配置为two-step方式,还会发送Follow_Up报文),并将t1时间戳携带在Sync报文(或Follow_Up报文)中;
  2. Slave在t2时刻接收到Sync报文,在本地产生t2时间戳,并从报文中提取t1时间戳;
  3. Slave在t3时刻发送Delay_Req报文,并在本地产生t3时间戳;
  4. Master在t4时刻接收到Delay_Req报文,并在本地产生t4时间戳,然后将t4时间戳携带在Delay_Resp报文中,回传给Slave;
  5. Slave接收到Delay_Resp报文,从报文中提取t4时间戳。最后Slave节点得到了一组时间戳(t1,t2,t3,t4)。

假设Master到Slave的发送链路延迟是t-ms,Slave到Master的发送链路延迟是t-sm,Slave和Master之间的时间偏差为Offset,则:

t2 - t1 = t-ms + Offset
t4 - t3 = t-sm - Offset
(t2 - t1) - (t4 - t3) = (t-ms + Offset) - (t-sm - Offset)
因此,Offset = [(t2 - t1) - (t4 - t3) - (t-ms - t-sm)] / 2
如果 t-ms = t-sm,即Master和Slave之间的收发链路延迟对称,那么:
Offset = [(t2 - t1) - (t4 - t3)] / 2
这样Slave就可以根据t1,t2,t3,t4 四个时间戳计算出自己和Master之间的时间偏差Offset,再对本地时间进行偏差调整,就实现了Slave与Master的时间同步。

从上述原理可以看出,1588v2时间同步是建立在Master和Slave之间的收发链路延迟对称的基础上的。如果Master和Slave之间的收发链路延迟存在不对称,将引入同步误差,误差的大小为两个方向链路延迟差值的二分之一。因此,对于一些高精度同步场景,需要对Master和Slave之间的收发链路延迟不对称进行补偿。

P2P机制

P2P机制不区分Master/Slave,所有节点都和相邻节点交互P2P报文,从而每个节点都可以计算得到和相邻节点之间的链路延迟。每个节点发送报文也有one-step和two-step模式,对于one-step方式,Pdelay_Resp报文带有本报文发送时刻的时间戳;对于two-step方式,Pdelay_Resp报文并不带有本报文发送时刻的时间戳,只是记录本报文发送时的时间,本报文发送时刻的时间戳由后续报文Pdelay_Resp_Follow_Up携带。

P2P机制计算相连链路延迟如下图所示。

P2P机制计算相连链路延迟

  1. 节点2在t1时刻发送Pdelay_Req报文;
  2. 节点1在t2时刻接收到Pdelay_Req报文,生成该报文的接收时间戳t2;
  3. 节点1在t3时刻发送Pdelay_Resp报文,生成该报文的发送时间戳t3:
  • 对于one-step方式,把t3 – t2携带在Pdelay_Resp报文中;
  • 对于two-step方式,把t3 – t2携带在Pdelay_Resp_Follow_Up报文中,或者Pdelay_Resp报文携带t2,Pdelay_Resp_Follow_Up报文携带t3;
  1. 节点2在t4时刻接收到Pdelay_Resp报文,在本地产生t4时间戳;最后节点2得到了一组时间戳(t1,t2,t3,t4)。
    假设节点2到节点1的发送链路延迟是t-reqresp,节点1到节点2的发送链路延迟是t-respreq,可以得到节点2到节点1的总链路往返延迟为:

(t-reqresp + t-respreq)= (t4 - t1) - (t3 - t2)

如果t-reqresp = t-respreq,即节点2到节点1之间的收发链路延迟对称,那么节点2和节点1之间的链路平均延迟为:

MeanPathDelay = [(t4 - t1) - (t3 - t2)] / 2

上述过程只是不断地实时计算和更新相连链路延迟,并不进行时间同步。时间同步,还需要有Master到Slave的Sync报文(如下图所示),Master节点向Slave节点周期发送Sync报文(Slave节点得到t5/t6两个时间戳)。最终,Slave相对于Master的时间偏差:

Offset = t6 - t5 - MeanPathDelay

这样Slave就可以根据时间偏差Offset,对本地时间进行偏差调整,就实现与Master的时间同步。

P2P机制实现时间同步

1588v2是如何进行频率同步的?
1588v2可以通过在Master和Slave之间交换Sync报文来实现频率同步。Master周期性地给Slave发送Sync报文,不考虑路径延时的变化,如果Slave的频率和Master是同步的,那么在相同的时间间隔内,Master和Slave累计的时间偏差是相同的,即:
t2(1) - t2(0) = t1(1) - t1(0),

t2(2) - t2(1) = t1(2) - t1(1),

t2(3) - t2(2) = t1(3) - t1(2)

…………

t2(n) - t2(n-1) = t1(n) - t1(n-1)

如果t2(n) - t2(n-1)大于t1(n) - t1(n-1),说明Slave的频率比Master快,则需要调慢Slave的频率;反之则需要调快Slave的频率,调整的偏差为:

Foffset = [t1(n) - t1(n-1)] / [t2(n) - t2(n-1)] - 1

1588v2频率同步过程如下图所示。

原文参考:https://info.support.huawei.com/info-finder/encyclopedia/zh/1588v2.html

posted @ 2025-05-24 12:31  AlwaysComb  阅读(173)  评论(0)    收藏  举报