如何理解车载以太网之时间同步协议gPTP

2020年2月29日 评论 3,749 2622字

为了传输更高带宽的音视频流并且满足汽车内低延迟、高可靠性传输的要求,IEEE 802.1音视频桥接(Audio Video Bridging, AVB)工作组定义了一种基于一套独立于TCP/IP协议族的通信协议的实现方法。涉及到的协议大体如下:

IEEE802.1Qat,流预留协议(StreamReservation Protocol, SRP),为特定的数据流预留带宽的标准;

IEEE802.1Qav,时间敏感流的转发和排队规则(Forwarding and Queuing for Time-Sensitive Streams, FQTSS),流量整形的标准,可保证带宽和QoS的延迟参数。

以及其他的上层通信方案:

IEEE1722,音视频桥接传输协议(Audio/VideoBridging Transport Protocol, AVBTP)

IEEE 1733,实时传输协议(Real-timeTransport Protocol, RTP);

IEEE802.1AS, 广义精确时钟协议(GeneralizedPrecision Time Protocol, gPTP),确保收发的终端之间严格时间同步的标准。

本文将对gPTP协议进行简单介绍和分析。

gPTP的用途是将车载网络中各个节点的时钟进行同步,因为各个节点的时钟都是互相独立运行的,而有些应用需要各个节点步调一致地执行。比如播放音频和视频的任务可能在不同的节点上实现,那么这两个设备必须要有相同的时钟基准,否则可能出现画面和声音对不上的情况。时钟同步本质上就是各方对一下表。

gPTP是基于主从关系的,也就是说,一个局部网络中的所有节点以master的时钟为基准,将自己的本地时钟与master的时钟进行同步。下面是个简单的示意图,需要注意的是,时钟同步是层层递进式的,slave也可以作为下一层网络的master。

如何理解车载以太网之时间同步协议gPTPgPTP协议位于OSI模型的层2之上,可以依赖于以太网传输。gPTP报文利用以太网传输时,MAC报文头中的Ethertype = 0x88F7。

gPTP报文由3部分组成:

  1. Header (对所有gPTP都一样)
  2. Body (取决于gPTP 报文类型)
  3. TLV(type lengthvalue)

其中header是所有类型的gPTP报文都有的,它有34个字节,结构如下图所示:

如何理解车载以太网之时间同步协议gPTP

gPTP报文头

报文头中的message Type标识了gPTP报文的类型,类型取值范围如下图所示:

如何理解车载以太网之时间同步协议gPTP

gPTP报文类型

接下来对gPTP协议的具体任务和实现流程的介绍中将涉及到上图中的报文类型。

gPTP要完成的主要任务包括:

1.选择最佳主时钟

2.频率同步

3.时间同步

4.延迟时间测量

选择最佳主时钟:

gPTP的主时钟选择机制是“最佳主时钟算法(BMCA)”。选择算法启动时,所有可以成为主时钟的端点都会参与竞争。要启动BMCA算法,所有端点都通过发送Announce报文来宣告自己的能力。各个端点比较自己与其他端点的相关字段值,胜出者作为主时钟端点。但车辆是一个封闭的网络,不会出现节点总变化的情况,所以车载应用中,主时钟往往都是固定的,比如网关。

频率同步:

网络中各个节点的时钟的频率并不总是完全一致。比如,在实际为100秒的时间段时间,A节点的时钟可能计时为90秒,B节点的时钟可能计时为110秒(实际中不可能出现如此大的偏差,但偏差总是有的,这里只是举例说明)。所以gPTP Slave的时钟频率需要与Master相匹配。频率同步的实现方式如下图所示:

如何理解车载以太网之时间同步协议gPTP

频率同步的实现方式

在实际的gPTP通信中,master会不停地发送Sync和Follow-up,slave能够测量出自己收到Sync报文的时间,即上图中的T2和T4(这个时间是以slave的本地时钟为基准的)。在每个sync报文之后,master都会发送一个follow-up报文,用来告诉slave自己发送上一条sync报文时的时间戳(以master的本地时钟为基准)。

没有follow-up报文的话,slave无法知道Sync报文的实际发送时间,即上图中的T1和T3。所以sync和follow-up总是成对出现的。有了T1、T3和T2、T4,slave就能够计算出自己的时钟频率与master之间的偏差,计算式如下图所示:

如何理解车载以太网之时间同步协议gPTP

延迟时间测量:

为了将自己的时钟与master同步,slave必须测量出自己与master之间报文传递的延迟时间。时延测量使用到的上文中提到的PDelay_Req、PDelay_Resp和PDelay_Resp_Followup三种gPTP报文。具体的测量方式如下图所示:

如何理解车载以太网之时间同步协议gPTP

延迟时间测量

1.首先slave发送PDelay_Req报文,请求测量延迟时间;

2.PDelay_Req报文离开物理层时,slave利用本地时钟获得T1时间戳;

3.PDelay_Req报文到达应答方物理层,master利用本地时钟获得T2时间戳;

4.master生成一个PDelay_Resp报文并发送,将T2时间戳带给slave;

5.slave利用本地时钟可以捕获收到PDelay_Resp时的时间戳T4;

6.然后master会发送PDelay_Resp_Followup报文将T3带给slave;

这样slave就知道T1,T2,T3,T4这四个时间戳了,然后利用如下算式计算延迟时间:

如何理解车载以太网之时间同步协议gPTP

计算延迟时间

其中R是在上节中提到的计算出的slave与master之间时钟频率的偏差。这种计算方法中,认为信道是对称的,即报文从slave到master和从master到slave所经历的延时是一样的。

时间同步:

根据上文计算出延迟时间和频率差异之后,slave就可以利用master不断发送的sync和follow_up报文将自己的时钟与master进行同步了。

具体的同步方式如下图所示:

如何理解车载以太网之时间同步协议gPTP

将slave的时钟与master同步

计算式如下所示:

如何理解车载以太网之时间同步协议gPTP

在上述计算式中,Tb是slave在某时刻的本地时间戳,Ta是该时刻master上的本地时间戳。同步的目的,就是根据Tb可以推算出Ta的值。在这个计算式中,slave通过sync和follow_up报文获得T1和T2,delay和R在之前的延迟时间和频率差异计算中已经获得。所以,slave能够根据本地时间戳Tb计算出master上的时间戳Ta,时间同步就实现了。

以上是我对gPTP协议的粗浅理解,抛砖引玉,如有疏漏,还请指正。

来源:汽车ECU网络诊断技术,作者: zdybupt

继续阅读
weinxin
立即关注公众号:
1、免费领取线束设计资料包(资源); 2、进入线束技术交流专家群(进群);3、免费获取发布求职招聘信息。
转载
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: