FC网络时钟同步误差补偿方法转让专利

申请号 : CN201210323235.5

文献号 : CN103684728B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 田泽李攀杨海波蔡叶芳袁晓军霍卫涛赵强

申请人 : 中国航空工业集团公司第六三一研究所

摘要 :

本发明涉及一种FC网络时钟同步误差补偿方法,该方法包括:客户端接收由服务器所发送的CSU ELS帧或者时钟同步原语信号;根据CSU ELS帧或者时钟同步原语信号判断客户端时钟同步计数器与服务器时钟同步计数器是否一致;获取服务器时钟同步计数器和客户端时钟同步计数器的理论差值,并根据该理论差值对客户端时钟同步计数器的计数操作进行补偿控制;补偿控制完成后,再次判断客户端时钟同步计数器与服务器时钟同步计数器是否一致。本发明提供了一种能够避免客户端时钟在直接时钟同步过程中产生大范围跳跃或回退以及补偿精度高的FC网络时钟同步误差补偿方法。

权利要求 :

1.一种FC网络时钟同步误差补偿方法,其特征在于:所述FC网络时钟同步误差补偿方法包括以下步骤:

1)客户端接收由服务器所发送的CSU ELS帧或者时钟同步原语信号;

2)根据CSU ELS帧或者时钟同步原语信号判断客户端时钟同步计数器与服务器时钟同步计数器是否一致,如果一致,则退出补偿;如果不一致,则进行步骤3);

3)获取服务器时钟同步计数器和客户端时钟同步计数器的理论差值,并根据该理论差值对客户端时钟同步计数器的计数操作进行补偿控制;

4)获取时钟同步误差补偿的微调值,并将该微调值赋予客户端时钟同步计数器的值上;

4.1)获取服务器时钟同步计数器和客户端时钟同步计数器的频率偏差;

4.2)根据步骤4.1)所得到的频率偏差得到时钟同步误差补偿微调值;

4.3)将步骤4.2)所得到的时钟同步误差补偿微调值取整后直接赋予客户端时钟同步计数器的值上;

5)补偿控制完成后,再次判断客户端时钟同步计数器与服务器时钟同步计数器是否一致,如果一致,则退出补偿;如果不一致,继续进行步骤3)。

2.根据权利要求1所述的FC网络时钟同步误差补偿方法,其特征在于:所述客户端时钟同步计数器与服务器时钟同步计数器不一致的情况包括:所述客户端时钟同步计数器的时钟频率比服务器时钟同步计数器的时钟频率慢或者所述客户端时钟同步计数器的时钟频率比服务器时钟同步计数器的时钟频率快。

3.根据权利要求2所述的FC网络时钟同步误差补偿方法,其特征在于:所述客户端时钟同步计数器的时钟频率比服务器时钟同步计数器的时钟频率慢时,所述步骤3)的具体实现方式是对客户端时钟同步计数器的时钟频率进行跳跃加计数。

4.根据权利要求3所述的FC网络时钟同步误差补偿方法,其特征在于:所述跳跃计数是在每个计数周期内加整数个计数时间单位。

5.根据权利要求2所述的FC网络时钟同步误差补偿方法,其特征在于:所述客户端时钟同步计数器的时钟频率比服务器时钟同步计数器的时钟频率快时,所述步骤3)的具体实现方式是对客户端时钟同步计数器的时钟频率进行延时计数。

6.根据权利要求5所述的FC网络时钟同步误差补偿方法,其特征在于:所述延时计数是在多个计数周期内加小于计数周期个数的整数个计数时间单位。

7.根据权利要求1或2或3或4或5或6所述的FC网络时钟同步误差补偿方法,其特征在于:所述步骤4.1)的具体实现方式是:所述服务器与客户端晶振的频率偏差=(时钟同步值n-时钟同步值n-1)/时钟同步值到达时间寄存器的值;

所述时钟同步值n是指客户端收到服务器发送的CSU ELS帧或者时钟同步原语信号时,CSU ELS帧或者时钟同步原语信号所携带的并寄存到n寄存器的时钟同步值;

所述时钟同步值n-1是指客户端收到服务器发送的CSU ELS帧或者时钟同步原语信号时,由前一次CSU ELS帧或者时钟同步原语信号所携带的并寄存到n-1寄存器的时钟同步值;

所述时钟同步值到达时间寄存器的值是计数器在清零之前计数器自身的值被寄存器到时钟同步值到达时间寄存器。

8.根据权利要求7所述的FC网络时钟同步误差补偿方法,其特征在于:所述步骤4.2)的具体实现方式是:所述时钟同步误差补偿微调值=服务器与客户端晶振的频率偏差×计数器m的值;

所述计数器m的值是计数器在清零之后的重新计数的值。

说明书 :

FC网络时钟同步误差补偿方法

技术领域

[0001] 本发明属于计算机通信技术领域,涉及一种FC(Fibre Channel)网络时钟同步误差补偿方法。

背景技术

[0002] FC网络具备高带宽、低延迟和高可靠等特性,非常适合于对数据传输实时性有较高要求的分布式系统中使用,时钟同步技术是分布式系统中的一个经典问题,分布在不同主机中的应用相互协调,共同完成一项任务时,需要这些系统间有一个准确、统一的时钟。
[0003] FC网络支持时钟同步功能,允许网络中不同节点之间交换时间敏感的信息。FC网络的时钟同步服务是通过含有参考时钟的时钟同步服务器来获得的,服务器使用时钟同步更新扩展链路服务(CSU ELS:Clock Synchronization Update Extended Link Service)帧或者时钟同步原语信号,周期性的发送时钟同步信息到客户端,客户端使用收到的时钟同步信息更新其内部的同步计数器值,修正客户端和服务器的时钟偏差,使客户端的时钟被同步到参考时钟。
[0004] 在时钟同步周期内(服务器发送两次时钟同步信息的时间间隔),由于服务器/客户端晶振频率差异,会导致服务器和客户端各自时钟同步计数器的值存在较大的偏差,若客户端使用来自服务器的时钟同步信息直接更新自己的时钟同步计数器,有可能会引起客户端时钟大范围的向前跳跃或向后回退,导致时钟会出现非单调性的变化,增加上层软件对时间信息应用的复杂度,降低时钟同步功能的通用性。

发明内容

[0005] 为了解决背景技术中存在的上述技术问题,本发明提供了一种能够避免客户端时钟在直接时钟同步过程中产生大范围跳跃或回退以及补偿精度高的FC网络时钟同步误差补偿方法。
[0006] 本发明的技术解决方案是:本发明提供了一种FC网络时钟同步误差补偿方法,其特殊之处在于:所述方法包括以下步骤:
[0007] 1)客户端接收由服务器所发送的CSU ELS帧或者时钟同步原语信号;
[0008] 2)根据CSU ELS帧或者时钟同步原语信号判断客户端时钟同步计数器与服务器时钟同步计数器是否一致,如果一致,则退出补偿;如果不一致,则进行步骤3);
[0009] 3)获取服务器时钟同步计数器和客户端时钟同步计数器的理论差值,并根据该理论差值对客户端时钟同步计数器的计数操作进行补偿控制;
[0010] 5)补偿控制完成后,再次判断客户端时钟同步计数器与服务器时钟同步计数器是否一致,如果一致,则退出补偿;如果不一致,继续进行步骤3)。
[0011] 上述客户端时钟同步计数器与服务器时钟同步计数器不一致的情况包括:所述客户端时钟同步计数器的时钟频率比服务器时钟同步计数器的时钟频率慢或者所述客户端时钟同步计数器的时钟频率比服务器时钟同步计数器的时钟频率快。
[0012] 上述客户端时钟同步计数器的时钟频率比服务器时钟同步计数器的时钟频率慢时,所述步骤3)的具体实现方式是对客户端时钟同步计数器的时钟频率进行跳跃加计数。
[0013] 上述跳跃计数是在每个计数周期内加大于1的整数个计数时间单位。
[0014] 上述客户端时钟同步计数器的时钟频率比服务器时钟同步计数器的时钟频率快时,所述步骤3)的具体实现方式是对对客户端时钟同步计数器的时钟频率进行延时计数。
[0015] 上述延时计数是在多个计数周期内加小于计数周期个数的整数个计数时间单位。
[0016] 上述FC网络时钟同步误差补偿方法在步骤3)和步骤5)之间还包括:
[0017] 4)获取时钟同步误差补偿的微调值,并将该微调值赋予客户端时钟同步计数器的值上。
[0018] 上述步骤4)的具体实现方式是:
[0019] 4.1)获取服务器时钟同步计数器和客户端时钟同步计数器的频率偏差;
[0020] 4.2)根据步骤4.1)所得到的频率偏差得到时钟同步误差补偿微调值;
[0021] 4.3)将步骤4.2)所得到的时钟同步误差补偿微调值取整后直接赋予客户端时钟同步计数器的值上。
[0022] 上述步骤4.1)的具体实现方式是:
[0023] 所述服务器与客户端晶振的频率偏差=(时钟同步值n-时钟同步值n-1)/时钟同步值到达时间寄存器的值;
[0024] 所述时钟同步值n是指客户端收到服务器发送的CSU ELS帧或者时钟同步原语信号时,CSU ELS帧或者时钟同步原语信号所携带的并寄存到n寄存器的时钟同步值;
[0025] 所述时钟同步值n-1是指客户端收到服务器发送的CSU ELS帧或者时钟同步原语信号时,由前一次CSU ELS帧或者时钟同步原语信号所携带的并寄存到n-1寄存器的时钟同步值;
[0026] 所述时钟同步值到达时间寄存器的值是计数器在清零之前计数器自身的值被寄存器到时钟同步值到达时间寄存器。
[0027] 上述步骤4.2)的具体实现方式是:
[0028] 所述时钟同步误差补偿微调值=服务器与客户端晶振的频率偏差×计数器m的值;
[0029] 所述计数器m的值是计数器在清零之后的重新计数的值。
[0030] 本发明基于FC协议时钟同步服务的工作机制,创新的提出了一种服务器/客户端时钟同步误差间接补偿的方法,客户端收到时钟同步信息后,不直接使用收到的值更新自身的时钟同步计数器值,而是通过对时钟同步计数器的计数操作进行控制,使其计数值逐步、平滑的更新到服务器发送的时钟同步计数器值,避免了直接更新产生的客户端时钟大范围跳跃或回退,实现了客户端时钟的单调线性变化。同时,对进行以上间接同步操作的时钟周期中,由于时钟同步服务器和时钟同步客户端晶体振荡器频率差异产生的同步误差进行二次补偿,实现了高精度的FC网络时钟同步功能,具体而言,本发明具有以下优点:
[0031] 通用性好:本发明消除了客户端时钟的同步时大幅度向前跳跃或者向后回退,实现了同步值的平缓过度以及线性单调递增变化,简化了上层应用程序对时间值使用的算法需求,可以方便的应用到任何需要高精度时钟同步功能的FC系统中。
[0032] 同步精度高:该误差补偿方法的设计,完全采用硬件设计实现,消除了软件实现时带来的不可避免的操作延时误差,同时,对时钟同步过程中产生的确定性误差进行了二次补偿,可以达到较高的时钟同步精度。
[0033] 灵活高效:该设计采用模快化结构,接口简单,可以分别支持CSU ELS帧或者时钟同步原语信号服务的时钟同步模式,完全硬件处理,无需软件干预,且对主机透明,在保证时钟同步精度的同时具备较高的使用灵活性。

附图说明

[0034] 图1是FC网络时钟同步误差间接补偿原理图;
[0035] 图2是同步时刻客户端时钟向前跳跃示意图;
[0036] 图3是同步时刻客户端时钟向后回退示意图;
[0037] 图4是间接时钟同步过程中,客户端时钟缓慢向前跳跃示意图;
[0038] 图5是间接时钟同步过程中,客户端时钟缓慢延时计数示意图;
[0039] 图6客户端时钟负方向偏移间接补偿具体实现示意图;
[0040] 图7客户端时钟正方向偏移间接补偿具体实现示意图。

具体实施方式

[0041] 本发明提供了一种FC网络时钟同步误差补偿方法,该方法包括以下步骤:
[0042] 1)客户端接收由服务器所发送的CSU ELS帧或者时钟同步原语信号;
[0043] 2)根据CSU ELS帧或者时钟同步原语信号判断客户端时钟同步计数器与服务器时钟同步计数器是否一致,如果一致,则退出补偿;如果不一致,则进行步骤3);客户端时钟同步计数器与服务器时钟同步计数器不一致的情况包括:客户端时钟同步计数器的时钟频率比服务器时钟同步计数器的时钟频率慢或者客户端时钟同步计数器的时钟频率比服务器时钟同步计数器的时钟频率快;
[0044] 3)获取服务器时钟同步计数器和客户端时钟同步计数器的理论差值,并根据该理论差值对客户端时钟同步计数器的计数操作进行补偿控制:
[0045] 客户端时钟同步计数器的时钟频率比服务器时钟同步计数器的时钟频率慢时,步骤3)的具体实现方式是对客户端时钟同步计数器的时钟频率进行跳跃计数,跳跃计数是在每个计数周期内加整数个计数时间单位,例如2个计数时间单位,加速客户端时钟同步计数值的增加,实现时钟同步计数器的值每计数周期增加2个计数时间单位。可以根据需要每个计数周期增加比2大的其它正整数值,这样会使客户端计数器值每个时钟周期的补偿幅度加大,完成整个补偿过程所需要的时间缩短;例如加2是加两个计时的时间单位,假设计时的时间单位是1s,加2就是加两秒。可以是其它正整数值,只要比1大都行,加的值越大,客户端时钟走的越快,补偿到和服务器相等的时间值所需的时间越少。
[0046] 客户端时钟同步计数器的时钟频率比服务器时钟同步计数器的时钟频率快时,步骤3)的具体实现方式是对对客户端时钟同步计数器的时钟频率进行延时计数;延时计数是在多个计数周期内加小于计数周期个数的整数个计数时间单位,该计数时间单位例如可以是1个,减缓客户端时钟同步计数值的增加,实现时钟同步计数器的值每2个周期增加1个时间单位。可以根据需要多于2个计数周期时钟同步计数器的值加1,这样会使客户端时钟同步计数器值每个时钟周期的补偿幅度减小,完成整个补偿过程所需要的时间增加;
[0047] 4)获取时钟同步误差补偿的微调值,并将该微调值赋予客户端时钟同步计数器的值上:
[0048] 4.1)获取服务器时钟同步计数器和客户端时钟同步计数器的频率偏差:
[0049] 服务器与客户端晶振的频率偏差=(时钟同步值n-时钟同步值n-1)/时钟同步值到达时间寄存器的值;客户端时钟同步计数器工作,需要时钟来驱动,每一个时钟周期同步计数器的值会加1计数。客户端的时钟是由客户端的晶体振荡器(一种电子元器件简称晶振)来产生的。客户端的时钟同步计数器和服务器的时钟同步计数器工作都分别需要晶振来提供时钟,即使两个晶振的标称值相同,比如都是100MHz,由于晶振制造的误差,也会有100ppm的理论偏差,此处计算的晶振频率的偏差是服务器和客户端两个晶振频率的实际偏差值。
[0050] 时钟同步值n是指客户端收到服务器发送的CSU ELS帧或者时钟同步原语信号时,CSU ELS帧或者时钟同步原语信号所携带的并寄存到n寄存器的时钟同步值;
[0051] 时钟同步值n-1是指客户端收到服务器发送的CSU ELS帧或者时钟同步原语信号时,由前一次CSU ELS帧或者时钟同步原语信号所携带的并寄存到n-1寄存器的时钟同步值;
[0052] 时钟同步值到达时间寄存器的值是计数器在清零之前计数器自身的值被寄存器到时钟同步值到达时间寄存器;
[0053] 4.2)根据步骤4.1)所得到的频率偏差得到时钟同步误差补偿微调值:
[0054] 时钟同步误差补偿微调值=服务器与客户端晶振的频率偏差×计数器m的值;
[0055] 计数器m的值是计数器在清零之后的重新计数的值;
[0056] 4.3)将步骤4.2)所得到的时钟同步误差补偿微调值取整后直接赋予客户端时钟同步计数器的值上。
[0057] 5)补偿控制完成后,再次判断客户端时钟同步计数器与服务器时钟同步计数器是否一致,如果一致,则退出补偿;如果不一致,继续进行步骤3)。
[0058] 本发明提供了一种高精度的FC网络时钟同步误差补偿方法,避免客户端时钟在直接时钟同步过程中产生大范围跳跃或回退,从而引起应用软件可感知的时间抖动或者非线性变化。同时,对客户端时钟同步操作过程中,由于时钟同步服务器和客户端之间晶体振荡器频率差异导致的确定性误差进行二次补偿(参见步骤4),提高了网络系统的对时精度,保证FC网络可应用于多种对网络时钟精度有非常高要求的系统中。
[0059] 基于FC协议时钟同步服务的工作机制,在客户端收到CSU ELS帧或者时钟同步原语信号后,计算出服务器和客户端时钟同步计数器的差值,利用该差值对客户端时钟同步计数器的计数操作进行控制,在客户端时钟频率慢时,使其跳跃计数(每个计数周期加2),或者,在客户端时钟频率快时,使其延时计数(每两个计数周期加1),经历一段时间的误差补偿周期,使客户端时钟同步计数器的值间接的逐步平滑更新为服务器的时钟同步计数器值,而不是直接使用收到的CSU ELS帧或者原语信号中包含的时钟同步值来更新客户端中的时钟同步计数器,避免了客户端时钟同步计数器值的大范围跳跃或回退,实现了客户端时钟同步计数器值的单调性增长,为高层软件算法对时间的处理带来方便。同时,对进行以上同步操作的过程中,由于时钟同步服务器和同步客户端晶体振荡器频率差异产生的时钟同步误差进行补偿,实现了高精度的FC网络时钟同步功能。FC网络时钟同步误差间接补偿的工作原理如图1所示。
[0060] 本方法通过下述步骤实现,其实现分为客户端时钟同步值到服务器端时钟同步值的间接补偿过程和服务器/客户端晶振频率偏差二次补偿两个部分,分别给出说明。
[0061] 1、客户端时钟同步值到服务器端时钟同步值的间接补偿
[0062] 客户端时钟同步值到服务器端时钟同步值的间接补偿分为客户端时钟的正方向偏移的间接补偿和负方向偏移的间接补偿两个部分,分别给出说明。定义图1中时钟同步值误差△值为收到服务器发送的时钟同步值减去客户端时钟同步计数器的值。
[0063] a)客户端时钟负方向偏移的间接补偿
[0064] 在图1中,客户端收到服务器发送的CSU ELS帧或者时钟同步原语信号时,对服务器/客户端时钟同步值的差值△进行计算,△值为正,表示客户端时钟向负方向偏移,客户端时钟较服务器慢,需要将客户端的时钟调快,补偿控制的时钟周期数为△,在△时间范围内,图1中跳跃计数控制信号有效,客户端时钟同步计数器每个时钟周期加2,补偿操作结束后,跳跃计数控制信号无效,客户端时钟同步计数器每个时钟周期加1。图6以客户端时钟同步计数值比收到的服务器端时钟慢10个周期为例,对时钟负方向偏移的间接补偿进行说明。
[0065] b)客户端时钟负正方偏移的补偿
[0066] 服务器/客户端时钟同步值的差值△值为负,表示客户端时钟向正方向偏移,客户端时钟较服务器快,需要将客户端的时钟调慢,客户端需要进行补偿控制的时钟周期数为|2×△|,在|2×△|时间内,图1中延时计数控制信号有效,客户端时钟同步计数器每2个时钟周期加1,补偿操作结束后,延时计数控制信号无效,客户端时钟同步计数器每个时钟周期加1。图7以客户端时钟比收到的服务器端时钟快10个周期为例,对客户端时钟负正方偏移的补偿进行说明。
[0067] 2、服务器/客户端晶振频率偏差二次补偿
[0068] 在图1中,客户端收到服务器发送的CSU ELS帧或者时钟同步原语信号时,其携带的时钟同步值被寄存到时钟同步值n寄存器,上一次收到的时钟同步值被寄存到时钟同步值n-1寄存器。任意时刻收到时钟同步值,将图1中的计数器m被清零,计数器m清零之前的值被寄存器到时钟同步值到达时间寄存器。上述值被用来按照图1所示的方法计算服务器/客户端晶振的频率偏差,以及时钟同步更新操作期间产生的细微误差。
[0069] 其中:
[0070] 服务器与客户端晶振的频率偏差=(时钟同步值n-时钟同步值n-1)/时钟同步值到达时间寄存器的值;
[0071] 时钟同步误差补偿微调值=服务器与客户端晶振的频率偏差×计数器m的值。
[0072] 在客户端时钟同步值到服务器端时钟同步值的间接补偿完成之后,再将计算得到的时钟同步误差补偿的微调值取整,加到客户端时钟同步计数器的值上,可实现时钟同步误差的二次补偿,提高时钟同步的精度。
[0073] 图2、图3是客户端收到服务器发送的时钟同步值,直接更新自身的时钟同步计数器时刻,客户端时钟产生的变化示意图。图4、图5是使用本文叙述的方法间接更新时钟同步值的过程中,客户端时钟变化示意图。从图2可以看出,服务器端时钟快,客户端时钟慢,在时钟同步值更新时刻,客户端时钟会出现较大范围的向前跳跃。从图3可以看出,服务器端时钟慢,客户端时钟快,在时钟同步值更新时刻,客户端时钟会出现较大范围的向后回退。从图4、图5中可以看到,时钟同步更新是一个缓慢变化的过程,而不是一个时刻,一个时间点,图2、图3中出现的大范围跳跃、回退现象均已被消除。