【智能驾驶】gPTP时间同步服务器在车载网络的重要性

【智能驾驶】gPTP时间同步服务器在车载网络的重要性
【智能驾驶】gPTP时间同步服务器在车载网络的重要性
为了传输更高带宽的音视频流并且满足汽车内低延迟、高可靠性传输的要求,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。
gPTP协议位于OSI模型的层2之上,可以依赖于以太网传输。gPTP报文利用以太网传输时,MAC报文头中的Ethertype = 0x88F7。
gPTP报文由3部分组成:

  1. Header (对所有gPTP都一样)
  2. Body (取决于gPTP 报文类型)
  3. TLV(type lengthvalue)
    其中header是所有类型的gPTP报文都有的,它有34个字节,结构如下图所示:

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

gPTP报文类型
接下来对gPTP协议的具体任务和实现流程的介绍中将涉及到上图中的报文类型。
gPTP要完成的主要任务包括:
1.选择最佳主时钟
2.频率同步
3.时间同步
4.延迟时间测量
选择最佳主时钟:
gPTP的主时钟选择机制是“最佳主时钟算法(BMCA)”。选择算法启动时,所有可以成为主时钟的端点都会参与竞争。要启动BMCA算法,所有端点都通过发送Announce报文来宣告自己的能力。各个端点比较自己与其他端点的相关字段值,胜出者作为主时钟端点。但车辆是一个封闭的网络,不会出现节点总变化的情况,所以车载应用中,主时钟往往都是固定的,比如网关。
频率同步:
网络中各个节点的时钟的频率并不总是完全一致。比如,在实际为100秒的时间段时间,A节点的时钟可能计时为90秒,B节点的时钟可能计时为110秒(实际中不可能出现如此大的偏差,但偏差总是有的,这里只是举例说明)。所以gPTP Slave的时钟频率需要与Master相匹配。频率同步的实现方式如下图所示:

频率同步的实现方式
在实际的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之间的偏差,计算式如下图所示:

延迟时间测量:
为了将自己的时钟与master同步,slave必须测量出自己与master之间报文传递的延迟时间。时延测量使用到的上文中提到的PDelay_Req、PDelay_Resp和PDelay_Resp_Followup三种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这四个时间戳了,然后利用如下算式计算延迟时间:

计算延迟时间
其中R是在上节中提到的计算出的slave与master之间时钟频率的偏差。这种计算方法中,认为信道是对称的,即报文从slave到master和从master到slave所经历的延时是一样的。
时间同步:
根据上文计算出延迟时间和频率差异之后,slave就可以利用master不断发送的sync和follow_up报文将自己的时钟与master进行同步了。
具体的同步方式如下图所示:

将slave的时钟与master同步
计算式如下所示:

在上述计算式中,Tb是slave在某时刻的本地时间戳,Ta是该时刻master上的本地时间戳。同步的目的,就是根据Tb可以推算出Ta的值。在这个计算式中,slave通过sync和follow_up报文获得T1和T2,delay和R在之前的延迟时间和频率差异计算中已经获得。所以,slave能够根据本地时间戳Tb计算出master上的时间戳Ta,时间同步就实现了。
以上是我对gPTP协议的粗浅理解,抛砖引玉,如有疏漏,还请指正。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值