基于时钟精度加权的时钟同步算法
2020-07-01钟程张磊凌震
钟 程 张 磊 凌 震
1.宇航智能控制技术国家级重点实验室,北京100854 2.北京航天自动控制研究所,北京100854 3.中国运载火箭技术研究院, 北京100076
0 引言
时间触发以太网(Time-Triggered Ethernet,简称 TTE)是将时间触发传输的实时性、确定性、容错能力等特点与传统以太网特点相结合的一种实时以太网技术,可应用于航空航天等对安全性要求较高的领域。SAE组织针对TTE建立了AS6802协议标准,制定了一套高精度的同步技术,能够保证TTE对于高带宽,低延迟,髙精度,高可靠性的需求,为TTE建立了可靠的全局时钟[1]。同步精度是TTE网络中的重要指标之一,如何提高同步精度是工业界不断研究的课题。张英静等学者采用稳健回归算法对TTE节点的本地时钟进行补偿,同步精度优于传统的补偿算法[2];徐乾舜等学者在滤除晶振噪声的情况下,仿真验证了2种渐近时钟补偿算法在TTE网络上的可行性[3];杨永强等学者提出一种野值预剔除算法,通过对野值的预先剔除和本地时钟的补偿,有效解决了TTE同步主节点出现野值的问题[4]。
实际工程中,网络节点常使用不同精度等级的晶振,如普通晶振、温补晶振、恒温晶振及铷钟等。AS6802协议的同步算法未根据节点的不同时钟精度等级进行特别的优化设计。在一定同步精度要求下需要以最差晶振指标设定同步周期,因此要消耗更多的带宽资源。
在SAE AS6802同步算法的基础上,提出一种基于时钟精度加权的时钟同步改进算法,通过给予网络系统中不同精度的时钟不同的权值,使较高精度的时钟在同步过程中发挥其稳定、精确的作用,提高网络系统时钟同步精度,为数据交换、资源调度提供可靠的保障[5]。
1 时间触发以太网时钟同步算法
1.1 时钟同步服务与压缩函数
AS6802是于2011年发布的一种高容错高精度的时钟同步协议,该协议TTE 指定的一种网络时钟同步算法,用于实现集群节点间的时钟内同步。
在TTE的同步过程中,各个端系统和交换机可以配置为不同的功能单元:同步主节点(Synchronization Master,SM)、同步客户端(Synchronization Client,SC)和压缩主节点(Compression Master,CM)。如图1所示,网络系统的同步过程为:SM向CM节点发送协议控制帧(Protocol Control Frame,PCF)。CM节点收到各个链路上的PCF后进行固化函数,重建PCF的派发顺序。继而进行压缩函数,对收集到的PCF中包含的时间信息进行整合计算,利用容错中值算法得到压缩修正值。CM根据压缩修正值修正本地时钟后,将时间信息记录在一个新PCF中广播给各SM和SC,各个节点根据新PCF的时间信息各自修正自己的本地时间,实现全局的时间同步[6]。
图1 两阶段的同步过程
压缩函数(Compression Algorithm)是AS6802协议时钟同步算法的最为核心的函数之一。压缩函数主要有三个阶段:收集阶段、计算阶段和延迟阶段[7-8]。
1)收集阶段。当压缩函数开始时会开启观察窗口,该阶段通过最大观察窗口容错机制对CM节点接收到的PCF帧固化点进行收集;
2)计算阶段。收集阶段完成后,计算阶段对观察窗口内收集到的固化点进行计算,最后得到参数压缩修正值C(Compression correction)用于CM节点本地时钟的修正,计算方法采用容错中值算法,步骤如下。其中ti表示第i个固化时刻点。
采集阶段被固化的 PCF 的数量决定了计算阶段输入参数的数量,第i个输入Ui按照如下公式计算:
Ui=ti-t1
(1)
压缩函数将应用以下公式来计算压缩修正值:
(2)
式中,N为收集到的PCF的个数,k是离线配置的与容错相关的常量。
3)延迟阶段。引入一段“人为”的延迟时间,等待PCF帧的再次派发。延迟阶段结束后,压缩函数完成。
1.2 AS6802同步算法原理分析
精确可靠的全局时间对于时间触发网络至关重要,是后续过程中时间触发通讯的先决条件。网络中各节点的晶振均会存在不同程度的误差,随着时间的推移,各个节点间的时钟偏差会越来越大。时钟同步算法就是在给定的精度范围Π内对系统内各个节点的本地时钟进行校正的过程,在各节点间形成一个较为合适的全局时间[9],如图2所示。
图2 时钟同步算法的作用
对于网络节点中存在的晶振误差,AS6802同步算法仍可以保持较高的精度与容错性。确保高精度与容错性的关键策略是AS6802算法中的观察窗口容错机制。在同步算法压缩函数的收集阶段,CM节点在收到第1个到达的PCF时刻开启多个观察窗口。观察窗口机制的作用是尽量多地收集落在同一窗口范围内的PCF,作为后续压缩计算的输入;在该范围之外的PCF视作错误时钟不予收集。观察窗口的大小为两个正常时钟的最大偏差。由于各个时钟的精度存在差别,观察窗口的长度必须设置为足够长来囊括正常时钟存在的偏差。在这种情况下,容错机制势必会占用较高的带宽资源来满足需求。这将对TTE网络中不同数据流的通讯服务在带宽流量的分配与利用方面带来一定的限制和影响。
另一方面,压缩函数在同步过程的作用是:利用接收到的PCF的时间信息,整合计算出一个趋近于全局同步的时间信息。压缩算法计算阶段求出的压缩修正值正是对各个PCF的时间偏差的平均体现。AS6802协议中对压缩修正值的计算较为简洁,仅将到达CM节点的时间信息作为修正值计算的输入,节点时钟本身的时间信息并未加以利用。
2 基于时钟精度加权的时钟同步算法
2.1 时钟晶振误差分析
由于老化、温度变化、冲击等原因,一般时钟晶振具有频率漂移、相位噪声恶化等情况。通常用频率稳定性评估适应晶振的性能。频率稳定性包括长期稳定性和短期稳定性。长期稳定性是指振荡器在长时间内发生的频率变化的特性,也叫漂移特性。短期稳定性是指由晶振内部的相位噪声引起的频率的随机抖动。本次研究重点主要是短期稳定性,并在一定程度上简化晶振的误差模型:假定晶振的输出频率满足以其标称频率为期望,方差为的正态分布。由统计学知识可知,频率的误差也满足正态分布。
晶振输出脉冲信号的个数会被寄存器不断累加,按照一定的换算关系就能计算出该节点的本地时间。由于晶振的工作频率并不恒定,单位时间内输出脉冲信号的个数会有所偏差,导致计算的本地时间与标准时间之间出现偏差。
对于高精度晶体振荡器,如温补晶振、恒温晶振等,它们通过采取温度补偿、量化噪声等方法,使输出频率具有较高的稳定度和准确度。这将为网络节点带来更为准确的本地时钟。本文研究的重点就是利用高精度的时钟节点,对AS6802同步算法进行改进,提高同步精度,优化资源利用。
2.2 基于时钟精度加权的时钟同步算法
在AS6802协议的基础上,在压缩函数的计算阶段提出如下改进:
1)对于具有不同时钟精度的SM节点,提前离线设定出不同的权重,晶振精度越高,权重越大,表示该节点的PCF时间信息在计算整合阶段的作用越高;
2)对于收集到的所有固化点(以n个端节点为例),CM节点经过压缩函数计算的压缩修正值的公式修改为:
C=t1×λ1+t2×λ2+…+tn×λn-t1
(3)
3)对于权值λi的配置,提出一种静态配置与动态检验结合的配置方案。
动态检验是在同步过程中压缩函数中进行的。考虑到高精度时钟的权值较高,一旦发生故障,带有错误时间信息的PCF被收集后将对同步过程产生较大影响,动态检验是一种提高安全性的容错手段。
动态检验的具体方案为:CM接收的每个PCF 都有各自的先验接收时刻(无误差的完美同步下),可以根据实际时刻偏离先验时刻的大小判断该PCF时间信息的正确与否。在没有其他误差的情况下,偏离程度仅由时钟精度决定。精度越高的时钟,其PCF到达的时刻越接近先验时刻。因此可以在先验接收时刻,左右两端开启一定宽度的接收窗口。接收窗口的宽度和发送该PCF节点的时钟精度有关,精度越高,其接收窗口的宽度越小。若PCF的实际接收时刻落在其对应的接收窗口,则表示该PCF的时间信息是可靠的,其权值按照静态配置的方法配置。若实际接收时刻超出了接收窗口的范围,则说明发送该PCF的时钟出现故障,需要根据其具体落点范围对其权值进行修正。
如图3所示,精度为pi的时钟都会有其对应宽度的PCF接收窗口,若PCF没有落在对应的窗口中,则按照其实际所在窗口对应的精度给予其权值。若实际接收点落在最大接收窗口之外,则该PCF将不再参与本次同步服务,对应的节点应重启。
图3 接收窗口示意图
3 仿真案例及分析
3.1 网络模型的建立与参数设置
利用网络仿真软件OPNET对本次研究的网络建立模型[10],如图4所示。网络拓扑采用星形拓扑,网络中包含4个端节点(SM节点),1个交换机节点(CM节点),网络连接线的传输速率为1Gbps。
图4 网络拓扑
在该网络模型中,4个端节点分别采用3种精度的晶振:普通晶振,温补晶振和恒温晶振。不同时钟精度等级的节点时钟会在PCF帧格式的第18个字节中做出标记。本次仿真中,各个精度等级的时钟权值按照静态配置的方式设置。各个晶振的主要参数信息如表1所示。
表1 晶振等级划分与权值设定
本次仿真中假定网络系统已经进行了上电和冷启动过程,各节点已经达到同步状态。
3.2 评价指标
本次仿真中,集成周期设定为20ms,共进行100次同步服务,即100次本地时钟采集,仿真总时长为2s。设定所有晶振的标称频率为30MHz,对于普通晶振每次集成周期后的抖动误差范围为±600ns,温补晶振为±100ns,恒温晶振为±10ns。
本次研究中,改进算法的目的是通过提高同步后的时钟精度,释放更多的带宽资源。本次仿真设定观察和评价指标Q为网络的同步精度,是指每次同步服务后,各个节点的本地时钟里最大值与最小值的差值。即:
(4)
3.3 仿真结果及分析
OPNET仿真软件在网络域、节点域和进程域3个层面上建立了网络模型,并通过相关代码的编译实现端接点的成帧、发包、收包及处理数据,交换机的收发包、数据分析及处理等关键功能。
同步服务启动前,时钟间最大时钟偏差的统计情况如图5所示。
图5 时钟偏差(未同步)
利用AS6802同步算法进行同步服务,对100次同步后的最大偏差结果记录如图6所示,对比图5可知,节点间的时钟偏差范围相较于未同步时的结果有大幅度的下降,说明AS6802算法可以有效地对各节点本地时钟进行修正,具有一定的同步精度。
图6 时钟偏差(AS6802同步算法)
利用改进算法对网络系统进行仿真,经过100次同步服务后的同步结果统计如图7所示。未同步、AS6802同步算法与改进算法的偏差数据统计如表2所示。与未同步状态和AS6802算法同步结果比较可知,经过改进算法的同步服务后,节点间时钟最大偏差值的范围大幅度缩减,相较于原算法的偏差值降低了一个数量级。各个时钟之间最大偏差缩小到一个较小的范围,说明基于时钟精度加权的改进时钟同步算法可为网络系统提高更高精度的全局时钟。
图7 时钟偏差(改进同步算法)
表2 不同同步服务条件下的统计值
4 结束语
同步精度是TTE网络中的重要指标之一,如何提高同步精度是工业界不断研究的课题。本文在AS6802的基础上提出了一种基于时钟精度加权的时钟同步改进算法,在同步算法的压缩计算阶段,给予不同晶振精度的时钟不同的权值以发挥高精度时钟晶振稳定准确的特性。仿真结果表明:改进的算法能在较大程度上提高网络的同步精度,同步后的时钟偏差缩减为原算法的10%左右。