2.2 时间同步误差分析
时间同步是指将多个时钟同步到指定的时间基准。时间同步主要有两类:一类是基于网络的数据层次的时间同步,即通过时间同步数据包交换来实现时间同步,这个层次的同步依托现有网络通信链路,无须硬件投入,但实现逻辑较为复杂,需要占用通信链路带宽,精度相对较低;第二类是基于时间信号层次的时间同步,即通过传递时频信号来辅助时间同步,如GPS终端采用的就是时频信号同步的模式,其接收机系统可输出1PPS授时信号。
在同步精度要求较高的领域,一般需要采用信号层次的时间同步方法。
2.2.1 网络时间同步误差分析
2.2.1.1 网络时间同步误差分类
根据网络时间同步的过程,其误差可分为时钟源误差、时间同步过程误差和振荡器漂移误差等几类。
(1)时钟源误差
时钟源误差主要包括卫星/长波等时间基准源的误差、时间信号传播过程中产生的误差以及接收机部分的误差。其中,与卫星有关的误差包括由星历误差、卫星时钟误差和相对论效应引起的误差;与信号传播有关的误差,包括由电离层/对流层的折射误差和多路径效应引起的误差;接收机部分的误差,主要是接收机的时钟误差。
该部分误差较小,一般在微秒量级,可以忽略。
(2)时间同步过程误差
根据时间同步过程的主要组成环节,可对时间同步过程误差从以下几个阶段进行分析。
①发送阶段:该阶段主要是发送节点用于构建同步包,包括内核和协议处理以及操作系统的延迟。发送时间也可认为是把信息从发送节点(应用层)发送到网络接口(MAC层出口)的时间。
②介质访问阶段:数据包到达MAC层之后,等待访问传输信道的延迟时间。介质访问时间与具体的数据包传输媒介、网络节点采用何种MAC协议等有关。
③传送阶段:主要是指数据包从物理层发送到网络链路所消耗的时间。所需延迟主要由介质的属性决定,并且与数据包大小、传送速度大小有关。由于对中断的反应时间不一样,每个节点传送者的软件实现也会有一些细微的变动。不过,也有人提出基于硬件的RF收发器,这些细微的变动可以被消除。
④传播阶段:主要是指从发送节点通过信道把包传送给接收节点。和其他部分的延迟相比,这部分延迟依赖于包长度和电磁波在介质中的传播速度,一般可忽略不计。
⑤接受阶段:和传送时间对应,指的是发生在接收节点物理层上所发生的延迟。接收者将数据包从传输信道接受进来并传递到MAC层,如果接收节点应用了基于硬件的RF收发器,则接受的延迟会更小一些。
⑥接收阶段:数据流被重新组装成数据包并传递给应用层。由于不同操作系统的不同特性,这个阶段的误差也会有所不同。
对于有线网络,接受/传送的时间主要取决于网卡的性能,一般在几十微秒甚至更小。
发送/接收的时间主要取决于操作系统、协议栈和应用负载。对于VxWorks等强实时操作系统,协议栈处理与线程切换的时间一般在微秒级;对于Windows等非实时操作系统,协议栈处理与线程切换的时间具有较大的不确定性,从毫秒到几十甚至几百毫秒不等,此时发送/接收的时间误差是网络时间同步的主要误差源之一。
(3)振荡器漂移误差
振荡器是时钟的两个基本组件之一(另一组件为计数器),一般表现为一种产生周期性信号的器件或电路。受温度、压力、湿度、使用时间等因素的影响,振荡器相位存在噪声,使得振荡器不能严格按指定的频率工作。由于相位噪声是随机的,因而时钟系统误差同样具有随机性。同一个时钟在不同环境中可能具有不同的时钟频率。
这种频率漂移是产生时钟系统误差的主要因素。
2.2.1.2 典型时间同步误差分析
在上述三类时间同步误差中,时钟源误差和振荡器漂移误差虽然具有一定的随机性,但只要硬件设备确定后,就可以根据设备固有的特性进行估计。这里主要以典型的NTP时间同步过程中产生的误差进行分析。
为简便起见,令,,则时间偏差和传输延迟计算公式可表示为
(2-4)
假设客户端与服务器之间时钟系统误差的真实值为。若为报文从服务器发送至客户端的真实网络延迟,则。因为为非负数,可知。类似可得。据此得到
(2-5)
现实情况下,客户端或服务器所记录的时标存在误差。这种误差主要包括由时钟晶振的频率漂移引起的误差和时标本身的读取误差。用随机变量表示晶振频率误差,表示在晶振工作寿命内频率的最大容错度。由于频率误差一般随时间缓慢变化,在较短的时间段t内可看作固定值,则可看作在时间段t内时钟晶振频率的最大误差。时标读取误差一般可用服从均匀分布且与晶振频率误差是相互独立的随机变量来表示,为最大时标读取误差。
在NTP算法中,若和(和)分别表示客户端(服务器)时钟的最大读取误差和晶振频率误差,、表示两地时钟晶振的频率最大容错度,则四个时标()的误差满足
(2-6)
假设表示测量值的误差,表示测量值的误差,则根据式(2-5)可得
(2-7)
由此可知
(2-8)
同理可得
(2-9)
以及
(2-10)
时钟系统误差真实值的范围可表示为
(2-11)
定义对等最大可能误差(Peer Dispersion)为
(2-12)
则时钟系统误差真实值的范围可表示为以估计值为中心的区间。其中,被称为同步距离(Synchronization Distance),可作为时间同步过程的质量度量。
在进行实际计算时,可从服务器应答报文的根离散(Root Dispersion)字段获得,而一般取常数86 400的倒数,表示本地时钟在连续两次NTP校时的时间间隔大小为86 400s时,由本地时钟振荡器的漂移误差导致校时过程得到的时间系统误差值的最大误差不超过1s。之所以不采用本地晶振的最大容错度(表示),是因为本地时钟晶振的短期频率误差不断被时间同步过程的时间系统误差值所补偿,对误差的影响被抵消掉了。
2.2.1.3 主要误差因素分析
在利用NTP和PTP的同步机制进行一次对时计算时,忽略了两地时钟的不稳定性和测量误差。在实际应用中,客户端请求报文的传输延迟与服务器应答报文的传输时延不尽相同,发送、接收的处理时延也可能存在差异。在一个完整的对时过程中,主要影响时间同步的误差包括时间戳误差、存储与转换误差、随机误差、往返数据传输速率误差等。
(1)时间戳误差
如图2-7所示,在时间同步过程中,有三种获得时间戳的方式:应用层时间戳获取、驱动层时间戳获取和硬件物理层时间戳获取。
图2-7 时间戳获取点示意图
在应用层获取时间戳时,客户端/服务器从发送报文到实际从网卡发送出报文的时间,包括应用层、协议栈、网卡等多个环节的处理时间。其中,应用层、协议栈的处理时延因为受应用程序负载、操作系统任务调度、协议栈缓冲处理等因素的影响而具有较大的不确定性(毫秒量级)。接收报文涉及的处理环节与发送报文相同,只是顺序相反。
在物理层获取时间戳时,可避免报文从网络接口到应用层传递中诸处理环节的不利影响,其理论精度可达到纳秒级,但需要硬件支持。IEEE1588就是通过专有的电子硬件电路在设备网络接口处获取发送/接收时间报文时间戳的一个例子。
在驱动层获取时间戳时,一般在报文发送前或接收后到达协议栈前进行时间戳标记,可避免队列缓冲等软件因素的影响,其精度介于前二者之间。由于报文从协议栈到网络接口处的处理时间很短,可忽略不计或看作传输延迟的一部分。
影响时间戳精度的另一重要因素,是时间戳的标记方式。在应用层/驱动层获取时间戳时,一般直接采用计算机的系统时间来标记时间戳。对于Windows、UNIX等非实时操作系统,通过系统调用获取当前系统时间时,其最低有效位只能达到毫秒。
(2)存储与转换误差
在具有交换机或路由器的传输网内,若一部分采用10Mbit/s的带宽传输,另一部分采用100Mbit/s的带宽传输,即使采用硬件物理层时间戳,由于不同报文传送时段的不同,也可能会出现误差。如果定义客户端带宽带来的传输时延误差为dA,服务器端带宽带来传输误差时延为dB,当路由器接收到报文后才转换发送到接收端,且假定信息交换不会中断,在采用硬件物理层时间戳的情况下,有
(2-13)
化简以后可以得到,时间系统误差的误差增加了,延迟的误差增加了。当时,系统误差没有误差,延迟增加了。
在上面的分析中,若接收时采用的是应用层时间戳,则有
(2-14)
化简以后可以得到,时间系统误差并没有产生误差,延迟误差增加了。
由以上分析可以看出,不仅客户端与服务器间时间戳的标记要匹配,还要考虑交换机两边的连接线路的传输速率(带宽)。但可以采用传输时间戳使用硬件与接收时间戳采用软件的方法来解决上面的问题。
(3)随机误差
时间同步过程中的随机误差是指由于硬件设备中元器件性能及传输过程硬件线路随环境变化而引起的时间抖动误差。这与设备运行时间同步软件时的环境条件有关,因此可以采用性能更好的硬件设备及对采集的数据通过可靠的滤波处理算法进行处理来减小随机误差。
(4)往返数据传输速率误差
上面时间戳的获取是基于报文从客户端到服务器及返回相同的情况下进行分析的,即使不同的部分,传输路径也是等同的,包括传输延迟、传输速率、报文长度均相同。如果由于时间戳获取带来的影响因素可以避免,那么同步网络中的数据传输速率就成为影响时间同步精度提高的一个重要因素,即往返传输路径延迟不相等的情况。而一个典型的传输路径可能由两个或更多的网络连接部分组成,每一部分的传输速率和接收速率可能都不相同,这才是空间网络连接的一般情况。
假定报文传输的时延为,其中为传输时延,为报文长度,为传输速率,则报文经过一系列传输后,总的传输时间为
(2-15)
式中,为报文经过的传输段,若往返路径一致,则总的传输时间不变。如果时间戳采用驱动层时间戳或硬件物理层时间戳,则时间传输延迟是相等的,同步系统误差的精度并没有影响。即在考虑双向传输路径等同的情况下,往返时间均可写为
(2-16)
式中,为总的传输速率。
在往返路径不同的情况下,令为报文向外发送过程中的传输速率,为报文由外接收过程中的传输速率,则经过简单计算后可得到系统误差增加的误差为
(2-17)
2.2.2 基于时频信号的时间同步过程分析
对于信号层次的同步处理,首先需要一个高稳定的时钟服务器(也是时钟源),时钟服务器一方面通过以太网向客户端提供标准的网络时间同步服务(SNTP/NTP协议),同时还通过时频电缆向需要信号级时间同步的客户端提供时频信号,典型的包括1PPS基准脉冲信号和10MHz基准时频信号,SNTP授时、1PPS和10MHz信号完全同源,保证了时间系统的唯一性。信号层次的时间同步结构如图2-8所示。
图2-8 信号层次的时间同步结构
该结构同时涵盖了远程(卫星、罗兰C、长短波等)及本地两个层次的时间同步模式。在这两个层次中,综合干扰对时频信号的影响,是时间基准误差的主要因素。
在基于时频信号的时间同步结构基础上,采用网络软件同步SNTP和1PPS时钟脉冲信号相结合的方法。因为单纯的SNTP是不能满足信号级信息交互的分布时间同步需求的,而在信号处理节点间仅仅进行时频信号传输也只能保证时钟信号的同源,并不能获得信息处理和数据处理的逻辑时间同步,只有将二者结合,才可以同时满足信号处理的同源性时钟和数据处理的逻辑时间同步。
为实现时频和NTP的配合,时钟服务器必须依托时钟源信号来控制自己的服务器时钟,通过专门的时钟控制组件,由时钟源作为驱动时钟更新时钟寄存器,同时启动监听服务,对网络客户的时间请求进行快速应答。
以秒脉冲时频信号为例,时间服务器必须保证在原子钟秒脉冲的上升沿同步更新时钟寄存器,以确保此时的NTP时间服务得到同步更新。
考虑在实际战场环境,一般很难保证向每个分布节点提供时频电缆,大多只能通过电缆、无线信号或者卫星导航接收设备提供1PPS信号,因此主要研究在1PPS信号条件下的时间同步方法。
时间同步具体包括周期时间校正和初始时间标定两个部分(见图2-9和图2-10):客户端首先在1PPS信号驱动下通过NTP协议访问时间服务器获得1PPS的初始标定。由于网络的延迟远远小于1s,因此非常容易地标定1PPS。然后,在锁定1PPS信号后,根据自身需要,将1PPS信号扩展到本地的时钟部件,按实际步长进行周期触发,同时持续接收1PPS信号对本地时钟部件进行周期的校正。持续周期的校正也可以保持长时间的同步效果。
图2-9 基于1PPS周期时间校正和调度
图2-10 基于NTP的初始时间标定
2.2.2.1 时钟源模型
时钟源是统一时间支持体系的时间参考源,为时间同步提供具有溯源唯一性的参考时间。时钟源的物理特性是众所周知的。典型时钟源的物理部件是由一个石英振荡电路和一个计数器构成的。振荡电路产生的脉冲(时钟滴答)由计数器记录。计数器的计数值和振荡电路的振荡周期之积即为机器时间值。因此时钟源的物理特性体现在两方面:一是离散特性,机器时间不是连续推进的,而是以时钟滴答为单位递增的;二是系统误差特性,考虑到振荡电路的频率系统误差和漂移,其振荡周期的实际值和标称值是有一定差别的,故引入时钟源模型的分辨率和脉冲时间精度两个定量指标来分别刻画时钟源的离散和系统误差特性:
定义1 时钟源模型的分辨率(Resolution):时钟源部件产生的电子脉冲的标称时间周期。刻画了时钟源模型输出的最小时间单位。
定义2 时钟源模型的脉冲时间精度(Accuracy):时钟源部件产生的电子脉冲的标称时间周期和实际时间周期之间的最大误差。刻画了时钟源模型的输出时间所能达到的最高精度。对理想时钟源,。
因此可以得到时钟源模型的一个近似数学描述
(2-18)
显然,这是一个阶梯函数。在实际应用中,时钟源主要用来对自然时间的模拟,为更准确地利用时钟源时间来模拟自然时间,需要对时钟源模型加以修正,因此我们在基础上引入逻辑修正。
首先考虑和的差别,故首先引入比例补偿因子;此外,考虑的初始偏移,我们又引入初始偏移补偿。于是有
(2-19)
从机理上分析,时间精度还可以再细分为频率准确度和频率稳定度,这两方面的因素可以综合到比例补偿因子上,考虑到时变性,这里我们以动态比例补偿因子代替常值比例补偿因子,即可得到时钟源模型:
(2-20)
2.2.2.2 链路授时误差模型
从时钟源输出的1PPS时间同步信号一般通过电缆传输给被授时对象,必然带来传输延迟。由于延迟是纯粹的信号物理传输延迟,对于确定的传输链路,这个延迟时间是基本确定的。对于计算机应用而言,这个延迟和温度相关,抖动很小,我们可以用一个叠加小扰动的常数来模拟传输延迟,即
(2-21)
式中,表示第个时钟脉冲的传输延迟;表示与小的扰动相对的时间延迟变化;表示链路的时间延迟。
2.2.2.3 软件响应模型
相对于链路延迟,软件响应的延迟就复杂得多。时钟脉冲信号到达客户端计算机后,计算机通过接口卡捕获该脉冲,可以采用以下模式进行。
查询模式:接口卡通过计数器对脉冲进行计数,计算机定时查询计数器来确定脉冲的到达时刻。查询一般按一定的间隔进行,考虑到计算机的开销,查询频率不能太高,查询间隔一般在毫秒以上,再附加上读操作延迟,导致响应延迟时间在毫秒以上。考虑查询方式会给计算机带来额外的开销,现在一般不推荐采用。
中断模式:接口卡捕获到时钟脉冲后触发CPU中断,由中断响应程序完成时钟逻辑处理,这种模式缓解了计算机的开销,是目前主要的脉冲响应模式。
在中断模式下,软件响应延迟包括中断响应延迟和I/O操作延迟,这个延迟和操作系统的选择有比较大的差异。在实时操作系统领域选择比较有代表性的是vxworks,在中断操作中,其相关的实时性指标包括中断响应和信号量开销,测试结果如图2-11和图2-12所示。
由图可见,中断响应延迟最大为2.76μs,最小为1.86μs,均值为1.89μs,对信号量的操作为200ns左右。
图2-11 单任务下中断响应延迟测试
图2-12 单任务下二进制信号量的获取