gPTP时间同步-基础理论

一、前言

gPTP(generalized precision time protocol)广义时钟同步协议,即IEEE 802.1AS协议。其核心设计目标为更高的时间同步精度,主要针对高精度、低抖动的时钟同步场景。

gPTP是IEEE 1588协议的延伸,可以为TSN提供全局精准的时间服务,实现TSN标准组中的流同步功能。和其他校时协议不同的是,通过约束网络内的节点,它可以达到ns级的精度,在车载、工业控制等对实时性要求较高的领域得到了应用。

本系列文章将带你由浅入深的了解gPTP的原理以及使用

KUNHONG-LOGO - re-E1.png

二、基础概念

在了解gPTP的同步原理前,我们先要了解一些系统中包含的一些基础概念。

1.时钟

如下图所示,AVB域内的每一个节点都是一个时钟。

体系由两种角色构成:

  • 主时钟:只有一个节点为主时钟,它是标准时间的来源。

  • 从时钟:除主时钟外都是从时钟,它们要把自己的时间调整至与主时钟一致。

截图 (1).png

节点设备有两种类型:

  • Time-aware end station:可以理解为gPTP的工作节点,它可以作主时钟,也可以作从时钟。

  • Time-aware Bridge:它可以是主时钟,也可以仅仅是网桥,连接网络内的其他设备。gPTP报文在进入网桥后会有一个处理时间,称为驻留时间了,协议要求该网桥必须具备测量驻留时间的能力。

图片6.png

关于网桥设备还有BC(Boundary Clock,边界时钟)和TC(Transparent clock,透明时钟)之分,我们将在之后的文章中详细说明,欢迎关注。

2.同步

如果要整个网络中的节点保持时钟同步,该网络必须解决以下问题:

  • 绝对时间同步:它要求同一时刻,节点显示时间一致,又称为相位同步。

  • 相对时间同步:在实际的网络中,各个节点的频率往往不是完全一致的,即各节点自身有快有慢。它要求节点之间的频率保持一致,又称为频率同步。

三、校时过程

1.主时钟选取

PTP中的主时钟,既可以默认指定,也可以通过BMCA(Best Master Clock Algorithm) 动态选取。

每一个主时钟备选节点都会接收来自现有主时钟的announce消息,根据时钟指标进行对比,如果都指标都优于现有主时钟的时钟指标,则该备选节点就会成为新的主时钟节点,并继续发送announce消息。在同步网络中,announce消息是周期性发送的,所以不用担心组网部分或主时钟节点变化而出现错误。

不过gPTP在车载或其他一些网络拓扑固定的应用场景中,一般不允许使用BMCA动态选取主时钟,而是默认指定。

2.绝对时间同步

下图包含一个主时钟和一个从时钟,二者时间不同步。现在要把从时钟的时间校准到主时钟的时间,其中t1、t4为主时钟对应的时间,t2、t3为从时钟对应的时间。

图片4.png

主要流程如下:

  1. 主时钟在t1时刻发送Sync命令(记录sync的发送时间为t1),从时钟在t2时刻收到同步指令(记录sync的接收时间为t2)。这时候从时钟并不知道主时钟是在什么时候发出这个Sync命令的,但是知道自己是在t2时刻收到该命令的。

  2. 主时钟发送一个Follow_Up命令,该命令中携带t1的值。从时钟收到后,知道上面的Sync指令是在t1时刻发出的。此时从时钟拥有t1、t2两个值。

  3. 从时钟在t3时刻发送一个Delay_Req命令(记录Delay_Req的发送时间为t3),主时钟在t4时刻收到该命令(记录Delay_Req的接收时间为t4)。此时从时钟知道t1、t2、t3三个值。

  4. 主时钟接着发送一个Delay_Resp响应从时钟的Delay_Req,该命令中携带t4的值。从时钟收到后,知道主时钟是在t4时刻收到的Delay_Req命令的。此时从时钟知道t1、t2、t3、t4四个值。

  5. 我们假设路径传输延时是对称的,即去程的传输延时和回程的传输延时相等。从时钟可以根据下面的公式计算路径传输延时(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级别的精度。


欢迎扫描二维码

查看更多关于相关产品资料

### GPTP 时间同步断网解决方案 在网络中断的情况下,GPTP(广义精确时间协议)的时间同步会受到影响。为了应对这种情况并保持系统的稳定性和准确性,通常采用以下几种策略: #### 1. 使用本地时钟源维持临时同步 当网络连接丢失时,可以从主时钟切换到预配置的高质量本地振荡器或其他备用时钟源。这些本地时钟源虽然精度不如主时钟高,但在短时间内仍能提供相对稳定的定时服务。 #### 2. 实施冗余路径设计 构建具有多个独立通信通道的冗余架构,确保即使某条线路发生故障,其他路径仍然可用以继续接收来自主时钟的信息。这可以通过物理上的多路由部署或是逻辑层面的不同VLAN划分等方式实现[^2]。 #### 3. 启用事件驱动型恢复机制 一旦检测到网络重新建立连接,则立即触发一次完整的BMCA(最佳主时钟算法)评估周期以及后续必要的频率调整和绝对时刻校准操作。此过程中应尽可能减少对现有业务的影响,并尽快恢复正常的服务水平[^4]。 #### 4. 应用预测模型补偿误差 利用历史数据训练机器学习模型来预测可能出现的时间漂移趋势,在失去外部参考信号期间依据该模型动态修正内部计数器读数,从而减小累积误差带来的影响[^5]。 ```python def handle_network_loss(): """处理网络中断后的措施""" # 切换至本地时钟源 switch_to_local_clock() # 尝试通过备份链路获取时间信息 try_alternative_paths_for_time_sync() while not network_is_restored(): apply_drift_correction_based_on_prediction_model() perform_full_resynchronization_after_recovery() def network_is_restored(): """检查网络是否已恢复""" pass def switch_to_local_clock(): """切换到本地时钟源""" pass def try_alternative_paths_for_time_sync(): """尝试使用替代路径进行时间同步""" pass def apply_drift_correction_based_on_prediction_model(): """基于预测模型应用漂移纠正""" pass def perform_full_resynchronization_after_recovery(): """执行全面再同步""" pass ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值