一种基于PTP 协议的局域网高时钟同步方法-设计应用_第1页
一种基于PTP 协议的局域网高时钟同步方法-设计应用_第2页
一种基于PTP 协议的局域网高时钟同步方法-设计应用_第3页
一种基于PTP 协议的局域网高时钟同步方法-设计应用_第4页
一种基于PTP 协议的局域网高时钟同步方法-设计应用_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精品文档-下载后可编辑一种基于PTP协议的局域网高时钟同步方法-设计应用1引言

在分布式系统中,常常需要一个全局时间,用来确定系统中各种事件发生的先后、协调各种消息的传输等,以控制和监视系统的状态。这就需要将系统中各个部件的局部时间统一,进行时钟同步。随着分布式仿真系统和试验系统在网络上的广泛应用,如何在网络上提供可靠的时钟服务成为一项重要课题。并且由于系统速度上的要求,同步的精度也成为一项重要指标。

PTP(PrecisionTimeProtocol)协议是IEEE-1588中定义的一种精密时钟同步协议,PTP协议主要针对于相对本地化、网络化的系统,子网较好,内部组件相对稳定的环境设计的。由于PTP协议实现简单,占用的网络和计算资源少等优点使其广泛应用于分布式系统中。

PTP协议可以采用硬件实现,也可以采用软件实现。当采用硬件实现时可以达到ns级的精度,采用软件实现时通常可以达到ms级的精度。当在网络中采用软件实现亚毫秒的精度时,存在多种因素的影响造成了时间同步的不可靠。包括网络的不平稳性、网卡对信息包的缓存效应以及操作系统进程调度的影响,这些因素通常不可预测并且无法控制,造成时钟同步终的失效。

本文中结合计算机自身的特点和PTP协议时钟同步机制,提出了一种纯软件实现的局域网内高精度时钟同步方法,通过构造高精度时钟,采取握手机制以及对测量结果进行处理,实现了局域网内亚毫秒精度的时间同步,有效解决了各种因素对时钟同步的影响。

2PTP协议时钟同步原埋与分析

一个简单的基于PTP协议时钟同步机:制的系统包含一个主时钟和多个从时钟,时间同步主要通过分别在发送方和接收方对包含时间的信息打时戳,并在接收方根据时戳计算出主从时钟的时间偏差和时间信息在网络中传输的延时来实现。为了管理这些时间信息,PTP协议定义了四种信息类型,包括Sync(同步信息)、FollowUp(Sync之后的跟随信息)、DelayReq(延时校正申请信息)和DelayResp(对延时校正申请信息的响应)。

主从时钟的差异主要由时钟偏差和信息包在网络传输中的延迟构成,PTP协议时钟同步机制中,主从时钟的同步主要分为两个阶段,偏移校正和延时校正阶段。具体流程如图1所示。

图1PTP协议时钟同步原理

在偏移校正阶段,即图中的A阶段,首先由主时钟在1TM时刻发出Sync信息到从时钟,在Sync信息中包含了一个时间戳,描述了数据发出的预计时间。由于信息包含的是预计的发出时间而不是真实的发出时间,所以Sync信息真实的发出时间被测量后在随后的FollowUp信息中发出。在从时钟一方,记录下Sync信息真实的接收时间TS1,由TM1和TS1可以计算出从时钟相对于主时钟的时间偏差offset:

可由该时间偏差来校正从时钟。但由此计算出来的结果仍然包含有时间信息在网络中传输造成的延时,因此还需要进行延时校正。

在延时校正阶段,即图中的B阶段,首先由从时钟发出DelayReq信息到主时钟,从时钟记录下发送的准确时间TS2,主时钟记录下接收的准确时间2TM,并将该时间通过DelayResp返回到从时钟。从时钟通过这两个时间计算出网络延时delay:

从时钟利用该值来进行校正。此时经过偏移校正和延时校正,主从时钟达到同步。

但在实际应用中,尤其是在网络中采用纯软件实现时,简单采用上述流程进行时钟同步并不能达到亚毫秒的同步精度。这主要是由于网卡的缓存效应、网络的不平稳性以及操作系统进程调度等多方面的影响。

网络中在进行信息传输时,信息首先送到本地网卡的缓冲区,并在网络空闲时发送到接收方网卡的缓冲区。这样在发送方连续发送多个信息到接收方时,信息首先在缓冲区缓存,包括发送方网卡的缓存和接收方网卡的缓存,在接收方接收信息时可能会同时收到所有的信息。这直接导致了信息接收时间测量不准确,造成时间同步的失效。

表1时钟偏差测量(单位:us间隔:1s)

相对于网卡的缓存效应,网络的不平稳性和操作系统的进程调度则更复杂一些,因为这两个因素具有不确定性,而且是无法控制的。网络的不平稳性导致了信息包在网络中传输的延迟不可预测,影响了同步的精度。

而操作系统采用时间片轮转机制对进程进行调度,使得无法控制时间同步进程何时被调度,何时停止,造成了软件延时的不可预测。例如,表1中的数据是在局域网中测得的几组数据,表示的是主时钟和从时钟的偏差,单位为us。在测试过程中主时钟每隔1s向从时钟连续发送10个偏移校正时间信息,为了保证网络处于一定的活跃状态,网络中的一些计算机开启FTP。从表1中的数据可以看出,每组中连续发送的数据相对稳定,相对偏差约几十us,但会出现一些差异较大的特殊值,而组与组之间的数据则差异较大,从几ms到几百ms不等,这样无法断定哪些数据对于时钟同步是可靠的。

经过以上分析可知,必须对上述因素进行相应处理,否则无法达到高精度的时钟同步。

3基于PTP协议的高精度时钟同步方法

高精度时钟是实现高精度时钟同步的基础,因此本方法首先构造高精度时钟。在此基础上,通过对PTP协议的分析,为了解决网卡的缓存效应、网络的不平稳性和操作系统进程调度对时钟同步精度造成的影响,在PTP协议基础上引入握手机制,同时,采用过滤和直线拟合的方法,实现亚毫秒精度的时钟同步。

3.1高精度时钟的构造

对于一个系统来说,时钟可分为两种,物理时钟和逻辑时钟。物理时钟又称为时钟或者墙上时钟,对应于现实世界中的时间。通常通过计算机内置的时钟芯片可以获得ms级别的物理时钟。相对时钟是指系统独有的时钟,独立于物理时钟,但和物理时钟有一定的换算关系。

当系统与外界无相互作用时,系统内的时钟可以采用逻辑时钟来实现。逻辑时钟实现简单,方法多样,并且可以满足大多数场合的要求,许多系统中都采用了逻辑时钟。

为了实现高精度的定时,例如微秒级别的定时,一般采用高频率的晶振实现。其实计算机CPU本身就带有一个高精度的时钟,对于一个2GHz的CPU来说,这个时钟的定时精度可达0.5ns。并且Windows系统提供了一些接口来获取CPU的震荡频率和计算机开机以后定时器的计数值,因此可以通过这些API接口来构造一个高精度的逻辑时钟,并且可向物理时间单位进行转换。

在这里使用t0表示CPU定时器的计数值,△t表示逻辑时间相对于CPU计数的偏差,当前逻辑时间t可由下式构造:

并且当前逻辑时间t的修改可通过修改Dt来实现。

当需要使用物理时间单位来度量逻辑时间时,可进行相应的转换。转换公式如下:

其中t’为以us为单位的逻辑时间,f为CPU时钟震荡频率,该值可由windows提供的API来获得。

虽然CPU的时钟频率很高,但由于获取CPU的计数值也需要消耗时间,所以并不能达到CPU时钟级别的精度。经实验表明,由该方法构造的逻辑时钟可以达到1us的精度。这可以满足大多数场合的需要。

3.2握手机制

对于网卡的缓存效应,通过增大两次传输之间的时间间隔并不能有效解决。间隔小起不到隔离两次传输的作用,间隔大,时钟同步又将受到网络的不平稳性和操作系统进程调度的较大影响。而采用握手机制和阻塞的SOCKET套接字可有效解决这个问题。即在接收方收到信息后返回一个确认信息,而发送方只有在收到接收方的确认信息以后才发送下一条信息。这样将两次信息传输进行了隔离,使得接收方不会一下收到发送方的所有信息。

3.3时钟同步的时间要求

网络的不平稳性和操作系统进程调度的影响可能会造成时钟同步的失效。但通过分析发现,尽管存在这些因素,实现高精度的时钟同步是可能的。在下面表2中列出了5组数据(共测试了10组,从中随机选择了5组数据),测试环境与表1中数据测试环境是相同的,同样都采用了握手机制以避免网卡的缓存效应,只是在测试过程中主时钟向从时钟发送两组数据的间隔为10ms。

从表中的数据可看出,除去一些差异较大的奇异值,测得的主从时钟偏差是稳定的,大约几十us左右,这表明在这一段时间内完成0.1ms精度时钟同步是可以实现的。

表2时钟偏差测量(单位:us间隔:10ms)

通过以上分析可知,为了在网络和操作系统相对平稳的情况下完成时钟同步操作,需要同步消耗的时间尽可能的短,但是为了得到稳定可靠的数据,又需要有足够的数据以供分析处理。

3.4数据处理算法

为了从测量的数据中获取有效的数据,需要对数据进行处理。首先,数据中存在一些差异较大的值,这需要查找到这部分数据并予以过滤以消除影响。另外,为了使剩余有效数据的方差,还需要对这些数据进行拟合。

假设Data[1:N]为测量的N个数据,Data'[1:M]为过滤后的数据,过滤处理过程可按下式进行。其中M=N-m-n。

fm,n首先对数据进行排序,这样差异较大的值就排在了数组的两边,剔除m个小值和n个大值,即可实现对数据的过滤处理。m和n为可变参数,根据数据量的大小和数据的稳定程度确定。

由于数据Data'[1:M]趋向于一条水平直线,可利用直线y=C对数据进行二乘直线拟合。在这里即是对这些数据进行均值处理。拟合可按下式进行。

这样从N数据中获得拟合值C。

3.5时钟同步完整步骤

根据以上的结论,并结合PTP协议时钟同步机制,可设计出一种性能可靠的时钟同步方案,具体流程如下图所示。

(1)主时钟在TM1[1]发送Sync信息到从时钟,并记录下发送的准确时刻TM1[1],随后在FollowUp信息中将Sync信息发送的时刻TM1[1]发送到从时钟。从时钟接收到Sync信息后记录下准确的接收时刻TS1[1],并返回确认信息OK。

(2)重复上述过程N次,这样从时钟得到N个时钟信息的发送和接收时刻TM1[1:N]和TS1[1:N],将TM1[1:N]和TS1[1:N]做差,得到主从时钟的N个偏移值Offset[1:N]。

(3)对Offset[1:N]进行过滤处理和直线拟合,得到一个对所有数据的拟合值offset,并利用该值对从时钟进行偏移校正,即图中的A阶段。

(4)由从时钟发送DelayReq信息到主时钟,并记录下准确的发送时刻TS2[1],主时钟收到DelayReq信息后记录下准确的接收时刻TM2[1],并在随后的DelayResp中将TM2[1]返回给从时钟。

(5)重复第4步中的过程M次,从时钟得到2M个时钟信息,TM2[1:N]和TS2[1:N],对两个数组做差得到M个主从时钟的延时信息Delay[1:M]。

(6)对延时信息Delay[1:M]进行过滤处理和直线拟合,得到一个对延时信息的拟合值delay,并利用该值对从时钟进行延时校正,即图中的B阶段。

图2时钟同步完整步骤。

在网络相对平稳,计算机负载不大的情况下取M=N=10,m=n=2即可满足亚毫秒精度要求。

经过以上六步,即完成了主从时钟同步,为了避免时钟累积误差对系统同步精度的影响,可周期进行上述过程,保持系统同步。

4实验结果与分析

测试中采用了4台配置相同的计算机,采用交换机搭建成局域网,其中1台作为主时钟,其余作为从时钟。

逻辑时钟采用了利用上述原理构造的高精度时钟,CPU频率为1.79553GHz,可利用式t,=t*106/f转换成以us为单位的逻辑时钟。为了获取一定数量的数据,取M=N=10,m=n=2。为了保持网络处于一定的活跃状态,在计算机上开启FTP,交换机负载在5MB/s左右。

测试与时钟同步过程类似,在主从时钟同步之后,由主时钟发送Sync信息到从时钟,并在随后的FollowUp信息中将Sync信息发送的准确时刻TM发送过来,从时钟记录下Sync信息准确的接收时间TS。因为此时时钟已经同步,所以TS-TM即为时间信息在传输中的延时delayT,将此值delayT与延时校正中延时信息的拟合值delay进行比较,即可得出主从时钟的同步效果。

在表3中列出了随机选取的10组数据。

表3测

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论