一、前言
gPTP(generalized precision time protocol)广义时钟同步协议,即IEEE 802.1AS协议。其核心设计目标为更高的时间同步精度,主要针对高精度、低抖动的时钟同步场景。
gPTP是IEEE 1588协议的延伸,可以为TSN提供全局精准的时间服务,实现TSN标准组中的流同步功能。和其他校时协议不同的是,通过约束网络内的节点,它可以达到ns级的精度,在车载、工业控制等对实时性要求较高的领域得到了应用。
本系列文章将带你由浅入深的了解gPTP的原理以及使用
二、基础概念
在了解gPTP的同步原理前,我们先要了解一些系统中包含的一些基础概念。
1.时钟
如下图所示,AVB域内的每一个节点都是一个时钟。
体系由两种角色构成:
-
主时钟:只有一个节点为主时钟,它是标准时间的来源。
-
从时钟:除主时钟外都是从时钟,它们要把自己的时间调整至与主时钟一致。
节点设备有两种类型:
-
Time-aware end station:可以理解为gPTP的工作节点,它可以作主时钟,也可以作从时钟。
-
Time-aware Bridge:它可以是主时钟,也可以仅仅是网桥,连接网络内的其他设备。gPTP报文在进入网桥后会有一个处理时间,称为驻留时间了,协议要求该网桥必须具备测量驻留时间的能力。
关于网桥设备还有BC(Boundary Clock,边界时钟)和TC(Transparent clock,透明时钟)之分,我们将在之后的文章中详细说明,欢迎关注。
2.同步
如果要整个网络中的节点保持时钟同步,该网络必须解决以下问题:
-
绝对时间同步:它要求同一时刻,节点显示时间一致,又称为相位同步。
-
相对时间同步:在实际的网络中,各个节点的频率往往不是完全一致的,即各节点自身有快有慢。它要求节点之间的频率保持一致,又称为频率同步。
三、校时过程
1.主时钟选取
PTP中的主时钟,既可以默认指定,也可以通过BMCA(Best Master Clock Algorithm) 动态选取。
每一个主时钟备选节点都会接收来自现有主时钟的announce消息,根据时钟指标进行对比,如果都指标都优于现有主时钟的时钟指标,则该备选节点就会成为新的主时钟节点,并继续发送announce消息。在同步网络中,announce消息是周期性发送的,所以不用担心组网部分或主时钟节点变化而出现错误。
不过gPTP在车载或其他一些网络拓扑固定的应用场景中,一般不允许使用BMCA动态选取主时钟,而是默认指定。
2.绝对时间同步
下图包含一个主时钟和一个从时钟,二者时间不同步。现在要把从时钟的时间校准到主时钟的时间,其中t1、t4为主时钟对应的时间,t2、t3为从时钟对应的时间。
主要流程如下:
-
主时钟在t1时刻发送Sync命令(记录sync的发送时间为t1),从时钟在t2时刻收到同步指令(记录sync的接收时间为t2)。这时候从时钟并不知道主时钟是在什么时候发出这个Sync命令的,但是知道自己是在t2时刻收到该命令的。
-
主时钟发送一个Follow_Up命令,该命令中携带t1的值。从时钟收到后,知道上面的Sync指令是在t1时刻发出的。此时从时钟拥有t1、t2两个值。
-
从时钟在t3时刻发送一个Delay_Req命令(记录Delay_Req的发送时间为t3),主时钟在t4时刻收到该命令(记录Delay_Req的接收时间为t4)。此时从时钟知道t1、t2、t3三个值。
-
主时钟接着发送一个Delay_Resp响应从时钟的Delay_Req,该命令中携带t4的值。从时钟收到后,知道主时钟是在t4时刻收到的Delay_Req命令的。此时从时钟知道t1、t2、t3、t4四个值。
-
我们假设路径传输延时是对称的,即去程的传输延时和回程的传输延时相等。从时钟可以根据下面的公式计算路径传输延时(path_delay),以及自己与主时钟的偏差(clock_offset):
path_delay = (t4 – t3 + t2 – t1) / 2
clock_offset = (t3 – t4 + t2 – t1) / 2
6.现在从时钟知道了自己与主时钟的时差clock_offset,就可以调整自己的时间了。
从时钟还知道自己与主时钟的路径传输延时path_delay,该值对于switch意义重大,因为在gPTP中switch需要转发主时钟的校时信号,在转发的时候,需要将该值放在补偿信息中,也就是上文提到过的Time-aware Bridge设备。
3.相对时间同步
首先看下时间度量的原理:时间是基于晶振的震荡周期进行度量的,如果一个晶振的震荡频率是10Hz,也就是说每100ms震荡一次,震荡10次代表过了1秒。但是晶振并非绝对稳定的,受温度等因素影响,震荡频率可能发生变化,震荡周期也就变得不准了。
相对时间同步,要求从时钟的频率和主时钟一致。我们可以通过下面的方式估算晶振的变化,并动态调整。
如下图所示,分别在T1、Tn时刻对主时钟和从时钟进行采样,采样值分别记为t1_master、tn_master、t1_slave、tn_slave。
可以得到下面的比例:
ratio = (tn_slave – t1_slave) / (tn_master – t1_master)
理想情况下,ratio的值应该是1,如果大于1,说明从时钟走的快了,如果小于1,说明走的慢了。从时钟可以根据该值调整自己的频率。
结语
本文主要说明了gPTP的基础概念,以及具体的工作原理。
下一节,将和大家聊聊gPTP有哪些特点,让它可以达到ns级别的精度。
欢迎扫描二维码
查看更多关于相关产品资料