一种基于PTPd2协议的精确时钟同步实现方法转让专利

申请号 : CN201810626267.X

文献号 : CN108880727B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陆阳陶稳静卫星石雷徐娟张本宏贾向利高健

申请人 : 合肥工业大学

摘要 :

本发明涉及一种基于PTPd2协议的精确时钟同步实现方法,属于通信技术及计算机网络领域。本发明通过主从时钟设备交互通信报文实现精确时钟同步,PTPd2协议可获取报文到达主从时钟设备的网络驱动层的精确时间戳,相比于NTP协议在应用层获取的时间戳,可有效避免协议栈的干扰,同时通过捕获报文到达主从时钟设备的MAC层的时间,并在主从时钟设备中补偿报文从网络驱动层传输到MAC层所产生的延时和抖动,可提高时钟同步精度。测试表明,当主从时钟设备通过网线直接连接时,合理设置参数并补偿出边界时间,时钟同步精度可达19μs,并且通用性强,容易实现。

权利要求 :

1.一种基于PTPd2协议的精确时钟同步实现方法,其特征在于,包括以下步骤:(1)主从时钟设备分别运行PTPd2协议,确定各时钟设备的端口状态,并启动定时器,当定时器超时时,主从时钟设备开始发送通信报文;

(2)分别在主从时钟设备中捕获通信报文,提取报文在主从时钟设备中到达MAC层的时间,并提取相应报文字段中记录的报文到达主从时钟设备的网络驱动层的时间,定义出边界时间Δt为报文在主从时钟设备中从网络驱动层传输到MAC层的时间,分别计算主从时钟设备的出边界时间Δt;

所述计算主从时钟设备的出边界时间Δt,具体包括以下步骤:

(21)主时钟设备首先组播Sync报文Sj,Sync报文Sj到达主时钟设备的MAC层的时间为Tmac_Sj,随后组播Follow_Up报文,Follow_Up报文中记录了Sync报文Sj到达主时钟设备的网络驱动层的精确时间Tip_Sj;

(22)在主时钟设备中捕获Sync报文Sj,提取Tmac_Sj;

(23)在主时钟设备中捕获跟随Sync报文Sj的Follow_Up报文,提取Tip_Sj;

(24)通过以下公式计算主从时钟设备的出边界时间Δt:

其中,Δt为主从时钟设备的出边界时间,n为报文数目;

(3)分别在主从时钟设备中补偿出边界时间Δt,主从时钟设备重新运行PTPd2协议,确定各时钟设备的端口状态并交互报文信息;

(4)从时钟设备根据本地时钟同步算法校正本地时钟,与主时钟设备保持同步。

2.根据权利要求1所述的基于PTPd2协议的精确时钟同步实现方法,其特征在于:所述步骤(3)中,分别在主从时钟设备中补偿出边界时间Δt′,具体为:主从时钟设备分别处理通信报文k,解析报文信息,若报文k是自身时钟设备发送的报文,则将计算的出边界时间Δt补偿到报文到达其自身时钟设备网络驱动层的精确时间Tip_Ak中即Tip_Ak=Tip_Ak+Δt。

3.根据权利要求1所述的基于PTPd2协议的精确时钟同步实现方法,其特征在于:步骤(4)中,所述从时钟设备根据本地时钟同步算法校正本地时钟,与主时钟设备保持同步,具体包括以下步骤:(41)从时钟设备计算主从时钟设备之间的时钟偏差offset以及报文在主从时钟设备之间的链路延迟delay;

(42)设定频率同步门限值Threshold;

(43)若offset大于等于Threshold,则从时钟设备进行时间同步;

(44)若offset小于Threshold,则从时钟设备进行频率同步。

4.根据权利要求3所述的基于PTPd2协议的精确时钟同步实现方法,其特征在于:步骤(41)中,所述从时钟设备计算主从时钟设备之间的时钟偏差offset以及报文在主从时钟设备之间的链路延迟delay,具体步骤为:从时钟设备采用延迟请求响应测量机制计算offset和delay,通过以下公式计算出offset和delay:其中,t1为主时钟设备发送Sync报文的时间,t2为Sync报文到达从时钟设备的时间,t3为从时钟设备发送Delay_Req报文的时间,t4为Delay_Req报文到达主时钟设备的时间,t1~t4为补偿出边界时间Δt后的时间。

5.根据权利要求3所述的基于PTPd2协议的精确时钟同步实现方法,其特征在于:步骤(43)中,所述从时钟设备进行时间同步,具体为:从时钟设备根据所述步骤(41)中计算的时钟偏差offset和链路延迟delay直接校正本地时钟。

6.根据权利要求3所述的基于PTPd2协议的精确时钟同步实现方法,其特征在于:步骤(44)中,所述从时钟设备进行频率同步,具体为:从时钟设备使用PI控制器进行频率同步,通过以下公式计算出从时钟设备相对于主时钟设备的频率补偿值:其中,P为比例系数,I为积分系数,Xi为第i个同步周期的主从时钟设备之间的时钟偏差值,Drifft为m个同步周期的主从时钟设备之间的时钟偏差累积值,adj为第m个同步周期计算的频率补偿值,从时钟设备根据adj补偿系统频率与主时钟设备的时钟频率保持一致。

7.根据权利要求2所述的基于PTPd2协议的精确时钟同步实现方法,其特征在于:所述精确时间Tip_Ak的获取方法为:在主从时钟设备中处理通信报文k,当报文k到达主从时钟设备的网络驱动层时,主从时钟设备的系统内核产生中断,同时存储报文k到达主从时钟设备的网络驱动层的精确时间Tip_Ak,主从时钟设备根据报文k的UDP端口号判断报文是事件报文还是普通报文,若是普通报文则不记录精确时间Tip_Ak,若是事件报文则记录精确时间Tip_Ak,并将Tip_Ak加入相应的报文字段或者记录在主从时钟设备中。

说明书 :

一种基于PTPd2协议的精确时钟同步实现方法

技术领域

[0001] 本发明涉及通信技术以及计算机网络领域,具体涉及一种基于PTPd2协议的精确时钟同步实现方法。

背景技术

[0002] 随着信息技术的迅速发展,时钟同步技术成为分布式测控系统中的关键技术,并且很多场合对时钟同步精度的要求越来越高。传统的NTP(Network Time Protocol)协议在2000公里范围的广域网内同步精度在10毫秒级,局域网内的同步精度在1毫秒级,这种毫秒级的精度已经无法适用于对精度要求更高的场合;GPS虽然同步精度达100ns,但是GPS的接入设备昂贵、难于选址和安装,并且存在政治风险,因此不适合大规模使用。而IEEE 1588标准定义了一种精确时间协议(Precision Time Protocol,PTP),可以基于现有网络结构实现时钟同步且同步精度在亚微秒级,因此更能满足需求。
[0003] PTP协议主要由三种实现方式,分别为:(1)基于支持PTP协议的芯片在物理层获取时间戳的硬件实现方式,如DP83640;(2)基于支持PTP协议的微控制器在媒体独立接口(Media Independent Interface,MII)处获取时间戳的硬件实现方式;(3)基于PTPd2(Precision Time Protocol daemon)协议的软件实现方式。软硬件实现的区别在于获取时间戳的方式不同,硬件实现是在底层获取时间戳,需要硬件辅助,精度较高,但在实际应用中需要改变原有网络中的硬件设备,增加了成本;软件实现则是在协议栈获取时间戳,精度稍低,但是实现简单,节约成本,因此更易被广泛使用。
[0004] PTPd2协议可在协议栈的网络驱动层获取时间戳,而越靠近协议栈底层获取时间戳,能达到的时钟同步精度越高,在进行时钟同步时,报文在时钟设备中从网络驱动层传输到媒体访问控制(Media Access Control,MAC)层会受到操作系统和协议栈的干扰产生延时和抖动,误差在几微秒甚至几十微秒,严重影响时钟同步的精度。

发明内容

[0005] 本发明的目的在于提供一种基于PTPd2协议的精确时钟同步实现方法,以解决报文在主从时钟设备中从网络驱动层传输到MAC层受操作系统和协议栈的干扰而影响时钟同步精度的问题。
[0006] 为实现上述目的,本发明采用了以下技术方案:
[0007] 一种基于PTPd2协议的精确时钟同步实现方法,包括以下步骤:
[0008] (1)主从时钟设备分别运行PTPd2协议,确定各时钟设备的端口状态,并启动定时器,当定时器超时时,主从时钟设备开始发送通信报文;
[0009] (2)分别在主从时钟设备中捕获通信报文,提取报文在主从时钟设备中到达MAC层的时间,并提取相应报文字段中记录的报文到达主从时钟设备的网络驱动层的时间,定义出边界时间Δt为报文在主从时钟设备中从网络驱动层传输到MAC层的时间,分别计算主从时钟设备的出边界时间Δt;
[0010] (3)分别在主从时钟设备中补偿出边界时间Δt,主从时钟设备重新运行PTPd2协议,确定各时钟设备的端口状态并交互报文信息;
[0011] (4)从时钟设备根据本地时钟同步算法校正本地时钟,与主时钟设备保持同步。
[0012] 上述方案中,所述步骤(2)中,计算主从时钟设备的出边界时间Δt,具体包括以下步骤:
[0013] (21)主时钟设备首先组播Sync报文Sj,Sync报文Sj到达主时钟设备的MAC层的时间为Tmac_Sj,随后组播Follow_Up报文,Follow_Up报文中记录了Sync报文Sj到达主时钟设备的网络驱动层的精确时间Tip_Sj;
[0014] (22)在主时钟设备中捕获Sync报文Sj,提取Tmac_Sj;
[0015] (23)在主时钟设备中捕获跟随Sync报文Sj的Follow_Up报文,提取Tip_Sj;
[0016] (24)通过以下公式计算主从时钟设备的出边界时间Δt:
[0017]
[0018] 其中,Δt为主从时钟设备的出边界时间,n为报文数目。
[0019] 上述方案中,所述步骤(3)中,分别在主从时钟设备中补偿出边界时间Δt′,具体为:主从时钟设备分别处理通信报文k,解析报文信息,若报文k是自身时钟设备发送的报文,则将计算的出边界时间Δt补偿到报文到达其自身时钟设备网络驱动层的精确时间Tip_Ak中即Tip_Ak=Tip_Ak+Δt。
[0020] 步骤(4)中,所述从时钟设备根据本地时钟同步算法校正本地时钟,与主时钟设备保持同步,具体包括以下步骤:
[0021] (41)从时钟设备计算主从时钟设备之间的时钟偏差offset以及报文在主从时钟设备之间的链路延迟delay;
[0022] (42)设定频率同步门限值Threshold;
[0023] (43)若offset大于等于Threshold,则从时钟设备进行时间同步;
[0024] (44)若offset小于Threshold,则从时钟设备进行频率同步。
[0025] 进一步的,步骤(41)中,所述从时钟设备计算主从时钟设备之间的时钟偏差offset以及报文在主从时钟设备之间的链路延迟delay,具体步骤为:
[0026] 从时钟设备采用延迟请求响应测量机制计算offset和delay,通过以下公式计算出offset和delay:
[0027]
[0028] 其中,t1为主时钟设备发送Sync报文的时间,t2为Sync报文到达从时钟设备的时间,t3为从时钟设备发送Delay_Req报文的时间,t4为Delay_Req报文到达主时钟设备的时间,t1~t4为补偿出边界时间Δt后的时间。
[0029] 上述方案中,步骤(43)中,所述从时钟设备进行时间同步,具体为:从时钟设备根据所述步骤(41)中计算的时钟偏差offset和链路延迟delay直接校正本地时钟。
[0030] 进一步的,步骤(44)中,所述从时钟设备进行频率同步,具体为:从时钟设备使用PI控制器进行频率同步,通过以下公式计算出从时钟设备相对于主时钟设备的频率补偿值:
[0031]
[0032] 其中,P为比例系数,I为积分系数,Xi为第i个同步周期的主从时钟设备之间的时钟偏差值,Drifft为m个同步周期的主从时钟设备之间的时钟偏差累积值,adj为第m个同步周期计算的频率补偿值,从时钟设备根据adj补偿系统频率与主时钟设备的时钟频率保持一致。
[0033] 上述方案中,所述精确时间Tip_Ak的获取方法为:在主从时钟设备中处理通信报文k,当报文k到达主从时钟设备的网络驱动层时,主从时钟设备的系统内核产生中断,同时存储报文k到达主从时钟设备的网络驱动层的精确时间Tip_Ak,主从时钟设备根据报文k的UDP端口号判断报文是事件报文还是普通报文,若是普通报文则不记录精确时间Tip_Ak,若是事件报文则记录精确时间Tip_Ak,并将Tip_Ak加入相应的报文字段或者记录在主从时钟设备中。
[0034] 由上述技术方案可知,本发明基于PTPd2协议通过主从时钟设备交互通信报文实现精确时钟同步,PTPd2协议可获取报文到达主从时钟设备的网络驱动层的精确时间戳,相比于NTP协议在应用层获取的时间戳,可有效避免协议栈的干扰,同时通过捕获报文到达主从时钟设备的MAC层的时间,并在主从时钟设备中补偿报文从网络驱动层传输到MAC层所产生的延时和抖动,可提高时钟同步精度。测试表明,当主从时钟设备通过网线直接连接时,合理设置参数并补偿出边界时间,时钟同步精度可达19μs,并且通用性强,容易实现。

附图说明

[0035] 图1为本发明实例中时钟同步系统结构示意图;
[0036] 图2为本发明实例中基于PTPd2协议的精确时钟同步实现方法的流程图;
[0037] 图3为本发明实例中时间戳的产生位置示意图;
[0038] 图4为本发明实例中延迟请求响应测量机制示意图。

具体实施方式

[0039] 下面结合附图对本发明做进一步说明:
[0040] 如图1所示为本发明实例中时钟同步系统结构示意图,该系统包括:
[0041] 主时钟设备,安装了Ubuntu14.04LTS系统的计算机,作为参考时钟,用于向从时钟设备发送通信报文,使从时钟设备同步于主时钟设备;
[0042] 从时钟设备,安装了Ubuntu14.04LTS系统的计算机,用于同主时钟设备交换通信报文,从而调整本地时钟与主时钟同步;主从时钟设备通过网线直接连接进行时钟同步。
[0043] 如图2所示,图2为本发明提供的基于PTPd2协议的精确时钟同步实现方法的流程图,具体步骤如下:
[0044] S1:主从时钟设备分别运行PTPd2协议,确定各时钟设备的端口状态,并发送通信报文:
[0045] 本发明实例中主从时钟设备分别运行PTPd2协议,配置主从时钟设备的时钟属性使主从时钟设备的端口状态均为主时钟状态,启动通信报文发送定时器,当定时器超时时,主从时钟设备按同步周期周期性发送Sync报文和Follow_Up报文。
[0046] S2:分别在主从时钟设备中捕获通信报文,提取报文在主从时钟设备中到达MAC层的时间,并提取相应报文字段中记录的报文到达主从时钟设备的网络驱动层的时间,定义出边界时间Δt为报文在主从时钟设备中从网络驱动层传输到MAC层的时间,分别计算主从时钟设备的出边界时间Δt。
[0047] 如图3所示,PTPd2协议在主从时钟设备的网络驱动层如图B点获取时间戳,报文从B传输到MAC层如图A点会受操作系统和协议栈的干扰而影响时钟同步精度,本发明中定义出边界时间Δt为报文在主从时钟设备中从网络驱动层传输到MAC层的时间,补偿出边界时间可提高同步精度,本发明实例中用Wireshark抓包软件捕获主从时钟设备中的通信报文,计算主从时钟设备的出边界时间Δt的具体过程如下:
[0048] S21:主时钟设备首先组播Sync报文Sj,Sync报文Sj到达主时钟设备的MAC层的时间为Tmac_Sj,随后组播Follow_Up报文,Follow_Up报文中记录了Sync报文Sj到达主时钟设备的网络驱动层的精确时间Tip_Sj;
[0049] S22:在主时钟设备中捕获Sync报文Sj,提取Tmac_Sj;
[0050] S23:在主时钟设备中捕获跟随Sync报文Sj的Follow_Up报文,提取Tip_Sj,;
[0051] S24:通过以下公式计算主时钟设备的出边界时间Δt,其中n为报文数目:
[0052]
[0053] S25:从时钟设备按照上述相同方式计算从时钟设备的出边界时间Δt;
[0054] 按照图1的时钟同步系统结构,主从时钟设备分别运行PTPd2协议,并利用Wireshark抓包软件捕获通信报文,最终计算得到主时钟设备的出边界时间为34090ns,从时钟设备的出边界时间为20076ns,具体出边界时间依不同时钟设备而不同。
[0055] 定义报文k(主从时钟设备中的所有通信报文,包括Sync报文)到达主从时钟设备的网络驱动层的精确时间为Tip_Ak则获取Tip_Ak的过程具体为:
[0056] 在主从时钟设备中处理通信报文k,当报文k到达主从时钟设备的网络驱动层时,主从时钟设备的系统内核产生中断,同时存储报文k到达主从时钟设备的网络驱动层的精确时间Tip_Ak,主从时钟设备根据报文k的UDP端口号判断报文是事件报文还是普通报文,若是普通报文则不记录精确时间Tip_Ak,若是事件报文则记录精确时间Tip_Ak,并将Tip_Ak加入相应的报文字段或者记录在主从时钟设备中。
[0057] S3:分别在主从时钟设备中补偿出边界时间,主从时钟设备重新运行PTPd2协议,确定各时钟设备的端口状态并交互报文信息,具体为:
[0058] 主从时钟设备分别处理通信报文k,解析报文信息,若报文k是自身时钟设备发送的报文,则将出边界时间Δt补偿到报文到达其自身时钟设备网络驱动层的精确时间Tip_Ak中即Tip_Ak=Tip_Ak+Δt。
[0059] 本发明实例中,主时钟设备发送Sync报文,将主时钟设备的出边界时间Δt补偿到Sync报文到达主时钟设备的网络驱动层的时间中,并将补偿后的时间装入Follow_Up报文的preciseOriginTimestamp字段中发送给从时钟设备;从时钟设备发送Delay_Req报文,将从时钟设备的出边界时间Δt补偿到Delay_Req报文到达从时钟设备的网络驱动层的时间中,并将补偿后的时间保存在从时钟设备中。最终,从时钟设备根据获取的时间信息进行时钟同步。
[0060] S4:从时钟设备根据本地时钟同步算法校正本地时钟,与主时钟设备保持同步,本地时钟同步算法包括时间同步和频率同步,具体校正过程如下:
[0061] S41:从时钟设备计算主从时钟设备之间的时钟偏差offset以及报文在主从时钟设备之间的链路延迟delay;
[0062] S42:设定频率同步门限值Threshold;
[0063] S43:若offset大于等于Threshold,从时钟设备进行时间同步;
[0064] S44:若offset小于Threshold,从时钟设备进行频率同步;
[0065] 步骤S41中,从时钟设备采用延迟请求响应测量机制计算主从时钟设备之间的时钟偏差offset以及报文在主从时钟设备之间的链路延迟delay,具体为:
[0066] 如图4所示,首先主时钟设备周期性的发送Sync报文,在主时钟设备中记录Sync报文的精确发送时间t1;接着主时钟设备发送Follow_Up报文,该报文携带Sync报文发送的精确时间t1,从时钟设备接收到Sync报文,在从时钟设备中记录接收时间t2,然后从时钟设备发送Delay_Req报文,在从时钟设备中记录发送时间t3;主时钟设备接收到Delay_Req报文,并在主时钟设备中记录接收时间t4,最后主时钟设备将时间t4放入Delay_Resp报文中发送给从时钟设备,当从时钟设备接收到Delay_Resp报文时,一个同步周期结束。其中t1~t4为补偿出边界时间Δt后的时间。
[0067] 定义t1时刻主从时钟设备之间的时钟偏差为offset(假设一个同步周期内主从时钟设备频率一致),主-从链路延迟为delay_ms,从-主链路延迟为delay_sm,则:
[0068] t2-t1=delay_ms+offset  (2)
[0069] t4-t3=delay_sm-offset  (3)
[0070] PTPd2协议假定主从时钟设备的往返链路延迟时间是对称的,即delay_ms=delay_sm=delay,因此根据式(2)和(3)有
[0071]
[0072]
[0073] 从时钟设备根据式(4)、(5)可得offset和delay。
[0074] 步骤S43中,从时钟设备进行时间同步,具体为:
[0075] 本实例中,从时钟设备首先调用Linux系统的clock_gettime()函数获取当前系统时钟信息,然后根据所述S41中时钟偏差offset和链路延迟delay计算实际时钟信息,最后调用Linux系统的clock_settime()函数并根据计算所得的实际时钟信息重新设置系统时钟,至此实现一次时间同步。
[0076] 步骤S44中,从时钟设备进行频率同步,具体为:从时钟设备使用PI控制器进行频率同步,通过以下公式计算出从时钟设备相对于主时钟设备的频率补偿值:
[0077]
[0078]
[0079] 其中,P为比例系数,I为积分系数,Xi为第i个同步周期的主从时钟设备之间的时钟偏差值,Drifft为m个同步周期的主从时钟设备之间的时钟偏差累积值,adj为第m个同步周期计算的频率补偿值。
[0080] 本发明实例中,从时钟设备根据式(6)、(7)可得频率补偿值adj,并根据adj调用Linux系统的内核函数adjtimex()补偿系统频率,从而与主时钟设备的时钟频率保持一致,至此实现一次频率同步。
[0081] 以上所述的实施例仅仅是对本发明的优选实施方式进行描述,并非对本发明的范围进行限定,在不脱离本发明设计精神的前提下,本领域普通技术人员对本发明的技术方案作出的各种变形和改进,均应落入本发明权利要求书确定的保护范围内。