以太网设计规范——一刻钟读懂gPTP
技术干货 2020.11.18

一、时间同步解决的问题


大家都有过给机械手表校时的经历:手表由于走得“快”或“慢”,造成它的指示时间和标准时间不一致,为了保证手表计时的准确性,可以根据电视台或电台的整点报时调表。手表“快”或手表“慢”的意思是手表走了1s,标准时间也许实际过去了0.999s或1.001s,一般优等机械表的日误差在30秒以内。因此,为了保证计时的准确性,需要经常根据标准时间校准手表的指示时间;同时,当手表日误差过大时,还需要到专业的维修店调整手表计时精度。


类似地,欲使网络中的设备保持时间同步,必须解决以下问题:

1. 选取一个设备的时钟作为主时钟,即时间基准(类似于电视台或电台的时钟)

2. 主时钟定期发布同步信息(类似于电视台或电台整点报时)

3. 其他设备根据同步信息校正自己的本地时钟,本地时钟的同步包含以下两个方面:

a) 绝对时间同步(类似于手表调时),如下图所示,它要求在同一时刻,E和P的指示时间一致。



以太网设计规范——一刻钟读懂gPTP(图1)



b) 频率同步(类似于调整手表计时精度),如下图所示,虽然在同一时刻E和P的指示时间不同,但是相邻时刻之间的差值是相同的,如E走了20s,P同样走20s。即E和P对时间的度量是一致的。



640 (1).png



gPTP就是为了解决上述问题而诞生的,gPTP是general precise time protocol的简称,由IEEE 802.1AS标准定义。gPTP的目标是确保局域网里的所有设备的时间完全一致(同步精度在±500ns内)。


二、gPTP主要内容


1.网络架构

gPTP域内的设备都有本地时钟系统,可选择“扮演”以下两类角色之一:

主时钟(Grandmaster Clock),它是整个gPTP域的时间基准,发送校时用的时间信息;

从时钟(Slave Clock),根据收到的时间信息,保持和主时钟的同步。




640 (2).pngSource:来自“汽车以太网指南”一书




gPTP域内的设备,被称为时间感知系统,共有两类:

· Time-aware end station:图中标注802.1AS endpoint的设备。这类设备可以作为系统内的主时钟(Grandmaster),也可以是从时钟,当作为从时钟时,它是时间信息的接收方。

· Time-aware Bridge:图中标注802.1AS bridge的设备。它可以作为主时钟,或者作为中继设备,连接网络内的其他设备。作为中继设备时,它接收主时钟的时间信息,补偿链路传输时延和驻留时间,发送新的修正后的时间信息。


2.主时钟选取

在gPTP域内,某个节点被选举为Grandmaster,此节点的本地时钟将作为整个gPTP域的时基,Grandmaster可以自动选择,也可以预先分配(车载领域一般为预先分配)。


BMCA(Best Master Clock Algorithm)是gPTP的主时钟选择机制。在系统启动之初,所有设备都可以通过发送Announce报文,参与Grandmaster的“竞选”,Announce报文中含有参选设备的时钟信息(相当于竞选宣言),一旦参选设备发现自己的时钟不具备优势,就会主动退出主时钟竞选。BMCA是一种“能者优先”机制,获胜选出的Grandmaster一般具有更高精度的本地时钟,并能够和世界时保持同步(如GPS同步)。


此外通过BMCA将会构建一个以Grandmaster为根的时间同步生成树,如上图所示,在每个链路中,一个设备担任Clock Master,另一个则是Clock Slave,这种主/从关系以Grandmaster为根遍历整个gPTP网络。同步消息将会依据时间同步树从Grandmaster传遍整个gPTP网络。


3.网络报文

gPTP通过不同种类的报文,携带并传递不同的信息;其他时间感知系统通过这些信息,完成与主时钟的同步。


与时钟同步相关的报文分为两类五种:

事件类型报文:Sync、Pdelay_Req、Pdelay_Resp,此类报文的接收和发送会触发MAC层对本地时钟进行采样;

一般类型报文:Follow_UP、Pdelay_Resp_Follow_UP,用来携带信息;

时间感知系统的本地时钟都是通过晶振的振荡周期进行度量的,如果一个晶振的振荡频率是25MHz,那么它的振荡周期就是40ns,每振荡25000次是1ms;时间感知系统中有硬件计数器对振荡次数进行计数,当MAC层接收或发送事件类型报文时,会触发记录计数器的计数值。


Sync、Follow_UP为一组报文,Grandmaster的主时钟信息,通过此组报文,传遍整个生成树。Sync报文定期发送,触发记录本地时钟,Follow_UP负责将记录的时间发送到网络。

Pdelay_Req、Pdelay_Resp、Pdelay_Resp_Follow_UP报文为一组报文,周期发送,用于测量报文沿路径传输产生的延时和实现频率同步。



640 (3).png


640 (4).png



4.链路传播延迟测量

链路传播延迟是指报文在一条链路上传播引起的延迟。报文携带的是同步报文离开Master端口的时间信息,在到达链路对端的设备时,由于传播延迟的原因已经过期,从时钟根据主时钟消息校准自己的时间,需要补偿传播带来的时间延迟。100m的链路,传输延迟一般在500ns左右,对于时间精度为ns级的设备,无法忽略。


链路传播延迟一般通过两步法测量,测量过程如下:

1. 请求方发送Pdelay_Req报文,请求测量传播延迟。

2. Pdelay_Req报文离开请求方MAC层时,利用自由运行的本地时钟捕获t1时间戳;同时Pdelay_Req报文到达应答方MAC层时,在应答方捕获到t2时间戳。

3. 应答方回复Pdelay_Resp报文,将t2时间传输给请求方;同时,Pdelay_Resp会触发双方捕捉t3和t4时间戳。

4. 应答方通过Pdelay_Resp_Follow_Up报文,将t3时间传给请求方。

5. 假设传输延迟是对称的,即报文从请求方到应答方的传输时间和从应答方到请求方的传输时间相同,则链路传播延迟可通过以下公式计算:



640 (5).png


640 (6).png



由于t4/t1以请求方的时基为基准,t2/t3以应答方的时基为基准,在双方频率同步的前提下上述公式才正确。举个例子方便大家理解:假设以请求方时基为基准情况下,t4-t1为2ms,t3-t2为1ms。当双方频率同步时,即双方时间度量尺度相同,则Pdelay为0.5ms。而当双方频率不同步,如请求方计时1ms,应答方计时为3ms,即应答方的计时频率是请求方的3倍;则t3-t2的度量值3ms,Pdelay此时计算结果为-0.5ms,显然不正确,所以为了保证Pdelay计算结果的准确性,需要保证双方的频率同步。

链路延迟测量的方向可以从master端发起,也可以从slave端,不过有的场景下(比如车载领域固定主时钟的情况),可以禁止master端进行链路延迟测量。


5.频率同步

设备基于晶振振荡频率实现时间度量,然而晶振并非绝对稳定,其稳定度受温度、老化等因素影响。不管晶振的实际振荡频率如何变化,设备仍然按照晶振频率的标称值进行计时,从而引起计时的误差。gPTP要求晶振频率不小于25MHz,误差不大于100ppm(日误差不大于8.64s)。


gPTP的频率同步,要求从时钟以主时钟的频率为基准进行校准。具体方法如下:

1. 通过周期发送的Pdelay_Resp报文,触发本地时钟采样t3、t4;

2. 通过Pdelay_Resp_Follow_Up将一方采样值t3,传给另一方;

3. 通过以下公式计算频率比,用于校准计时频率;



640 (7).png

640 (8).png



理想情况下,Ratio的值应该是1,如果大于1,说明请求方走得慢,如果小于1,说明走的快。请求方可以根据该值将自己的计时值转化为基于应答方时基的计时值。


三、gPTP网络的时钟校准过程


以下图网络拓扑为例,介绍gPTP网络的时钟同步过程(此处高能,非战斗人员请避让):

1. 每个slave端口将周期性地发送Pdelay_Req,完成各自链路的传播延迟测量和频率同步;

2. Grandmaster周期性地发送Sync报文,在Follow_UP报文中,PreciseOriginTimestamp字段将会填充Sycn报文离开Grandmaster的时刻t1,Correction字段添加对t1时间的修正,对于Grandmaster来说,Correction的数值为t1不足ns的小数部分。因为PreciseOriginTimestamp精度是ns,Correction的精度是2的(-16)次方ns。



640 (9).png

640 (10).png

网络报文的交互



3. Bridge收到sync报文后,需要在一定时间内转发Sycn报文;Bridge在t2时刻收到报文,t3时刻转发报文,注意t2/t3是bridge自身时基的度量值。

4. Bridge在发送Follow_UP报文时,PreciseOriginTimestamp值不变,Correction字段值要重新计算,它的值为New Correction=Old Correction+Pdelayi+residence_time;Pdelayi为Grandmaster到Bridge的传播延迟,residence_time为Sync报文在Bridge中驻留的时间。注意Pdelayi、residence_time都要转化为相对主时钟时基的度量值,具体计算过程请参看802.1AS标准。同时,Follow_UP报文中还包含RateRatio字段,它是主时钟频率和Bridge时钟频率的比值。

5. Endpointi+1节点在t4时刻收到Sync报文,Endpointi+1节点的任意本地时刻t,对应的主时钟时间(GlobalTime(t),即同步时间),可以根据以下公式计算:



640 (11).png



PreciseOriginTimestamp、CorrectionFieldi来自Follow_UP报文,Pdelayi+1是节点相对主时钟时基的传播延迟,RateRatioi+1主时钟频率相对本地时钟频率的比值。注意:i+1节点通过链路延迟测量和频率同步,只能计算相对Bridge时基的传播延迟和频率比,如何转化为相对主时钟时基的值,大家不妨开动一下脑筋,也可以参考802.1AS标准。

从以上的校准过程可以看出,Sync报文以主时钟为起点,经过网络扩散到每个节点,在此过程中每个节点只需关注自己和上级节点的传输延时和频率同步,Bridge负责将中间路径的传输延时和驻留时间逐级累加到Correction域,从而实现整个网络的同步。


四、结语


汽车功能越来越复杂,汽车的智能化和网联化,推动了汽车电子电气架构的变革。汽车以太网作为通信主干网,已经成为一种趋势,结合AVB/TSN技术,能够确保数据的实时和可靠传输。gPTP作为AVB/TSN技术的基础协议,不可避免地将被率先应用。

怿星科技作为一家聚焦汽车电子新兴及关键技术的服务公司,已在国内较早地开展AVB/TSN技术研究,具备了丰富的设计和测试经验,能够提供AVB/TSN技术相关的架构设计、测试服务、协议栈开发和集成服务。




关注怿星科技公众号,获取更多资讯


以太网设计规范——一刻钟读懂gPTP(图13)