概述
gPTP(generalized precision time protocol)广义时钟同步协议,即IEEE 802.1AS协议。它是IEEE 1588协议的延伸,可以为TSN提供全局精准的时间服务,用以实现TSN标准组中的流同步功能。
该协议旨在让AVB网络中所有的节点与一个共同的参考时间同步,要求间隔不超过7个AVB节点的两个终端节点之间的时间误差不能超过500ns。其大体的作用逻辑是,利用BMCA算法在网络中选择一个最佳的节点作为主时钟(或者预先内定一个),并建立主时钟树;然后利用对等路径时延测量机制,计算主从时钟端口间的误差来进行同步。
基础概念
gPTP定义设备工作在OSI模型中的MAC子层(属于数据链路层),离物理层仅一步之遥的距离即可以减少协议栈缓存带来的延时不确定性,又可以缩短报文的传输时间。该协议规定了两种设备类型:Time-aware-end Station以及Time-aware Bridge
- Time-aware-end Station:可以理解为gPTP的工作节点,可以作为主时钟,也可以作为从时钟
- Time-aware Bridge:一种网桥,仅可以作为主时钟。gPTP报文在进入网桥后会有一个处理时间,称为驻留时间了,协议要求该网桥必须具备测量驻留时间的能力
上述的两种设备都具有本地时钟,本都是通过晶振的振荡周期进行度量并由设备内部硬件计数器负责对振荡周期进行计数。
网络中,发布时间同步报文的网络端口称为主端口,接收时间同步报文的端口称为从端口。
主时钟是整个系统中的时间基准,这就要求它具有更高的时间精度,需要能被更高精度的时钟授时,比如原子钟和卫星。主时钟的分配可以分为动态分配和静态分配两种。对于汽车而言,其网络的组成一般是稳定的,可以采用静态的预分配来确定主时钟。对于网络组成部分会动态变化的系统,一般采用BMCA算法(Best Master Clock Algorithm,最佳主时钟选择算法)进行分配。
报文格式
报文分类
gPTP协议中的报文被划分成为了报文级别(Message Class)和报文种类(Message Type)两个属性,其中报文级别的具体划分如下
- 事件型报文(Event Massage):这类报文的特点是设备在接收或发送事件类报文时,会对硬件计数器进行采样,将震荡周期计数值和时钟震荡频率以及基准时间相结合,生成一个时间戳。
- 通用型报文(General Massage):这类报文在设备接受或者发送时,不会触发硬件对硬件技术器的采样,不会生成时间戳。
报文种类的划分以及对应的取值如下:
Massage Type | Message Class | Value |
---|---|---|
Sync | Event | 0x0 |
Pdelay_Req | Event | 0x2 |
Pdelay_Resp | Event | 0x3 |
Announce | General | 0xB |
Signaling | General | 0xC |
Follow_UP | General | 0x8 |
Pdelay_Resp_Follow_UP | General | 0xA |
表1 报文类型对应的报文等级以及取值
需要特别说明的是
- Announce报文是在主时钟分配中启用,包含最佳主时钟的运算时间
- Signaling报文主要用来传递信息、请求或者控制指令
报头定义
gPTP可以看作PTP的特定配置文件,所以这里的报头可以直接用PTP的
图1 802.1AS中对PTP报头的定义
PTP报头定义中各字段的含义如下:
字段 | 含义 | 作用 | 取值 |
---|---|---|---|
transportSpecific | 传输协议 | 标识所用的传输规范 | 0x1 |
messageType | 报文类型 | 标识报文类型 | 参考报文类型表格 |
versionPTP | PTP协议版本 | 标识对应的IEEE 1588版本 | 0x2 |
messageLength | 报文长度 | 标识整个PTP的报头长度 | / |
domainNumber | 域编号 | 标识该报文所属的时钟域 | / |
flags | 标志域 | 对特殊报文的特殊取值有不同作用 | 参考IEEE 802.1AS Table 10-6 |
correctionField | 修正域 | 各报文都有,主要应用于Sync报文,用于补偿传输时延 | 0x0 |
sourcePortIdentity | 源端口标识符 | 标识发送该报文的时钟ID和端口号 | / |
sequenceId | 序列号 | 标识消息的序列号 | / |
control | 控制域 | / | 0x5 |
logMessageInterval | 录入消息周期 | PTP消息的发送时间 | 不同报文类型的取值不同 |
表2 PTP报头字段对应表
主时钟的分配(BMCA)
在系统上电时,每一个主时钟备选节点都会接收来自现有主时钟的announce消息,用来和他们现有的时钟指标(大概有8个)进行对比。如果这些指标都优于现有主时钟的时钟指标,则该备选节点就会上位成为新的主时钟节点,并发送新的announce消息。该过程会一直持续到真正的主时钟被选出。
在同步网络中,这个announce消息是周期性发送的,所以即使组网部分或者主时钟节点的信息发生了变化,新的主时钟也会被顺利分配出来。
时钟同步树
BMCA算法通过给AVB网络中所有端口打上标签,可以生成“时钟生成树”,即时钟同步相关消息的传输路径。具体的端口标签可以分为以下几类:
- Slave Port 接收主时钟节点发送的消息的端口
- Master Port 主时钟节点发送消息的口
- Disabled Port 连接到non-1AS节点的端口
- Passive Port 与网络中冗余路径链接的端口
图2 Master – Slave节点示意图
不包含Switch的设备一般只有一个端口。如果这个设备提供主时钟节点的功能,那么它仅有的端口将会作为Msater端口,否则将为Slave端口
St1. 频率同步
在实际的网络中,各个节点的频率往往不是完全一致的,所以需要用两组Sync报文和两组Follow_UP来计算出各个节点之间的频率偏差。
- 主端口发送Sync报文,报文离开主端口MAC层时,触发主端口记录此时的时间戳T1。
- 从端口接收Sync报文,报文到达从端口MAC层时,触发从端口记录此时的时间戳T2。
- 主端口发送Follow_UP报文,将T1值附在报文中发送。
- 主端口发送Sync报文,报文离开主端口MAC层时,触发主端口记录此时的时间戳T3。
- 从端口接收Sync报文,报文到达从端口MAC层时,触发从端口记录此时的时间戳T4。
- 主端口发送Follow_UP报文,将T3值附在报文中发送。
- 从端口通过下图所示公式计算出自己与主端口时钟频率的偏差R。
图3 频率同步时序图
St2. 传输延迟测量
gPTP采用P2P(Peer to Peer)的方法来进行传输延迟的测量,该测量方法仅能测量相邻设备间的传输延迟,不可跨设备传输。这一步要求AVB网络内所有的节点都必须支持gPTP。测量传输延迟的报文包括:Pdelay_Req、Pdelay_Resp和Pdelay_Resp_Follow_UP,和时钟偏差测量一样,这组报文也是周期性发送的。
- 从端口发送Pdelay_Req报文,报文离开从端口MAC层时,触发从端口记录此时的时间戳T5。
- 主端口接收Pdelay_Req报文,报文到达主端口MAC层时,触发主端口记录此时的时间戳T6。
- 主端口发送Pdelay_Resp报文,将T5的值附在报文中发送,报文离开主端口MAC层时,触发主端口记录此时的时间戳T7。
- 从端口接收Pdelay_Resp报文,报文到达从端口MAC层时,触发从端口记录此时的时间戳T8。
- 主端口发送Pdelay_Resp_Follow_UP报文,将T7的值附在报文中发送。
- 从端口通过下图公式即可算出相邻设备间的传输延迟delay。
图4 传输延迟测量时序图
St3. 时钟偏差测量
在完成频率同步和传输延迟测量的基础上,该步骤使用了一组周期性发送的Sync和Follow_UP报文,来实现主从端口的时间同步
- 主端口发送Sync报文,报文离开主端口MAC层时,触发主端口记录此时的时间戳T9。
- 从端口接收Sync报文,报文到达从端口MAC层时,触发从端口记录此时的时间戳T10。
- 主端口发送Follow_UP报文,将T9值附在报文中发送。
- 从端口可以通过下述公式计算,根据本地时间戳Tb计算出主端口上的时间戳Ta,至此完成时间同步。
图5 时钟偏差测量时序图
参考文献
[1] gPTP时间同步(时钟同步)协议对智能驾驶车载网络的重要性 – ahjzdz {gPTP时间同步(时钟同步)协议对智能驾驶车载网络的重要性_ITPUB博客}
[2] 如何理解车载以太网之时间同步协议gPTP {如何理解车载以太网之时间同步协议gPTP - 线束工程师之家}
[3] 汽车以太网·5.1.3.2 IEEE 802.1AS – Kirsten Matheus
[4] 时间敏感网络(TSN)及无线TSN技术 – 许方敏
[5] IEEE 802.1AS时间同步构架 – 攻城狮 {IEEE 802.1AS时间同步构架 - 知乎}
[6] 时间同步—TSN(Time Sensitive Network-时间敏感网络)协议802.1AS介绍 – Polelink上海北汇信息 {时间同步—TSN(Time Sensitive Network-时间敏感网络)协议802.1AS介绍 - 知乎}
[7] 智能驾驶数据网络时间同步(PTP时钟服务器)分析 – mb607022e25a607 {智能驾驶数据网络时间同步(PTP时钟服务器)分析_mb607022e25a607的技术博客_51CTO博客}
[8] 车载以太网之时间同步协议gPTP – 知乎政务 {页面时间与当前时间同步_车载以太网之时间同步协议gPTP_知乎政务的博客-CSDN博客}
[9] “IEEE Standard for Local and Metropolitan Area Networks – Timing and Synchronization for Time-Sensitive Applications in Bridged Local Area Networks,” in IEEE Std 802.1AS-2011 , vol., no., pp.1-292, 30 March 2011.