一种分布式时钟同步方法及系统
技术领域
本发明涉及通信领域,尤其涉及一种分布式时钟同步方法及系统。
背景技术
随着新一代信息通信技术的快速发展以及新一轮智能制造产业的推进,人们对网络化系统中分散时钟的有效同步提出了更高要求。这正是因为网络化系统日益渗透到不同行业,其设备定位、传输调度、事件排序、数据融合、控制执行等大量应用都依靠同步的时钟提供准确划一的步调。如:在时间敏感网络TSN中,需要时钟同步作为基础,实现确定性时延,完成同步传输;军事领域中的多无人机隐身跟踪或对敌方事件的监控必须要求时钟协调才能准确打击目标;5G技术的核心骨干网中的节点需要实现准确的时间同步,5G空口技术即基站和移动设备之间也需要实现无线网络的时钟同步。这些应用场景都需要网络节点之间实现时钟逻辑同步或与外部 GPS世界时间同步。
时钟同步技术按照网络结构不同可大体分为层级式和分布式两种,层级式的时钟同步主要是PTP协议,而层级式的时钟同步技术中存在多跳使其时钟同步精度下降的缺点。而分布式时钟同步技术中,所有网络节点之间实现时钟逻辑同步(相对) 同步或所有节点同步于一时钟源,避免了多跳带来的影响。
在分布式时钟同步技术中,大多是网络节点与其相邻节点之间通过报文交互,计算时钟偏差,对网络节点时钟进行调整,从而实现网络节点间时钟同步。然而这种方式中,网络节点并没有选择时钟性能较优的相邻节点进行时钟同步,时钟同步的精度不够高。而且由于采用报文交换,势必会有传输延时的存在,而在协议栈中的延时是造成时钟同步精度误差的一个重要原因。
发明内容
本发明的目的在于克服在分布式时钟同步技术中网络节点没有选择时钟性能较优的相邻节点进行时钟同步,时钟同步的精度不够高,而且由于采用报文交换,会有传输延时的存在,从而造成时钟同步精度误差的问题。
为实现上述目的,本发明提出一种分布式时钟同步方法,所述方法包括:
步骤1)在标准时钟的同一时刻,每一个网络节点和与它相邻的若干网络节点逐一比较时钟性能,根据比较结果将相邻网络节点的时钟性能设置为“优”或“劣”,每一个网络节点生成一个时钟性能优劣表;
步骤2)每个当前网络节点根据自身的时钟性能优劣表计算与若干个时钟性能为“优”的相邻网络节点之间的第一平均时钟偏差值,
如果第一平均时钟值偏差小于稳定阈值,从若干个时钟性能为“优”的相邻网络节点选取出性能优且稳定的相邻网络节点,计算当前网络节点与性能优且稳定的相邻网络节点的第二平均时钟偏差值,并使用第二平均时钟偏差值调整当前网络节点的时钟;
如果第一平均时钟偏差值大于抖动阈值,计算当前网络节点与所有相邻网络节点的第三平均时钟偏差值,并使用第三平均时钟偏差值调整当前网络节点的时钟;
如果第一平均时钟偏差值大于稳定阈值且小于抖动阈值,使用第一平均时钟偏差调值整当前网络节点的时钟。
作为上述方法的一种改进,所述步骤1)包括:
步骤1-1)取任意一个网络节点作为当前网络节点A,它的相邻网络节点形成集合为H,共有K个相邻网络节点;
步骤1-2)从集合H中选取一个相邻节点B;
步骤1-3)计算所述当前网络节点A的时钟与标准时钟之间的时钟偏差值1,以及相邻节点B的时钟与标准时钟之间的时钟偏差值2,比较时钟偏差值1与时钟偏差值2,如果时钟偏差值1大于时钟偏差值2,将相邻节点B的时钟性能设置为“优”;如果时钟偏差值1小于时钟偏差值2,将相邻节点B的时钟性能设置为“劣”;执行步骤1-6);如果时钟偏差值1等于时钟偏差值2,执行步骤1-4);
步骤1-4)计算所述当前网络节点A的时钟与标准时钟之间的时钟方差值1,以及相邻节点B的时钟与标准时钟之间的时钟方差值2,比较时钟方差值1与时钟方差值2,如果时钟方差值1大于时钟方差值2,将相邻节点B的时钟性能设置为“优”;如果时钟方差值1小于时钟方差值2,将相邻节点B的时钟性能设置为“劣”;执行步骤1-6);如时钟方差值1等于时钟方差值2,执行步骤1-5);
步骤1-5)比较所述当前网络节点A和与相邻节点B的时钟标识符值,如果相邻节点B的时钟标识符值小于所述网络节点的时钟标识符值,将相邻节点B的时钟性能设置为“优”;如果相邻节点B的时钟标识符值大于网络节点A的时钟标识符值,将相邻节点B的时钟性能设置为“劣”;执行步骤1-6);
步骤1-6)将含有时钟性能的相邻节点B添加到时钟性能优劣表;将相邻节点B 从集合H中删除,转入步骤1-2),直至集合H为空。
作为上述方法的一种改进,所述步骤2)包括:
步骤2-1)取任意一个网络节点作为当前网络节点A,根据当前网络节点A的时钟性能优劣表,通过PTP协议延迟请求应答机制计算当前网络节点A与其每个时钟性能为“优”的相邻网络节点之间的时钟偏差值,然后求出当前网络节点A的第一平均时钟偏差值;
步骤2-2)若当前网络节点A的第一平均时钟偏差值小于稳定阈值,则当前网络节点A是稳定的网络节点,执行步骤2-3);否则,若当前网络节点A的第一平均时钟偏差值大于抖动阈值,执行步骤2-5),否则,执行步骤2-6);
步骤2-3)从当前网络节点A的时钟性能为“优”的相邻网络节点中,选出状态为稳定的节点为比网络节点A性能优且稳定的相邻网络节点;
步骤2-4)通过PTP协议延迟请求应答机制计算计算当前网络节点A与比网络节点A性能优且稳定的相邻网络节点的时钟偏差,再求出第二平均时钟偏差值,根据所述的第二平均时钟偏差值调整网络节点A的时钟,使当前网络节点A与比其性能优且稳定的相邻网络节点保持时钟同步;
步骤2-5)分别计算当前网络节点A与它所有相邻网络节点的时钟偏差,再求出第三平均时钟偏差值,根据所述的第三平均时钟偏差值调整当前网络节点A的时钟,使当前网络节点A与它所有相邻网络节点保持时钟同步;
步骤2-6)根据第一平均时钟偏差值调整当前网络节点A的时钟,使当前网络节点A与若干个时钟性能为“优”的相邻网络节点之间保持时钟同步。
作为上述方法的一种改进,所述步骤2-3)具体为:对于当前网络节点A的每个时钟性能为“优”的相邻网络节点C,通过PTP协议延迟请求应答机制计算网络节点C 与其每个时钟性能为“优”的相邻网络节点之间的时钟偏差值,然后求出网络节点C 的平均时钟偏差值;若该平均时钟偏差值小于稳定阈值,则网络节点C为比网络节点A性能优且稳定的相邻网络节点。
作为上述方法的一种改进,所述步骤2-1)的通过PTP协议延迟请求应答机制计算当前网络节点A与其每个时钟性能为“优”的相邻网络节点之间的时钟偏差值包括以下步骤:
步骤2-1-1)设定当前网络节点A为从时钟节点,若干个时钟性能为“优”的相邻网络节点之一为主时钟节点B;
步骤2-1-2)主时钟节点B发送Sync数据包到从时钟节点A,并记录Sync包离开主时钟节点B的时间T1;
主时钟节点B再发一个Follow_up数据包到从时钟节点A,在Follow_up数据包中携带着Sync数据包离开主时钟节点B的时间T1;
步骤2-1-3)从时钟节点A在收到Sync数据包和Follow_up数据包后,记录Sync 数据包到达从时钟节点A的时间T2,并获取Follow_up数据包中的时间T1;
步骤2-1-4)从时钟节点A会发送Delay_req数据包到主时钟节点B并记录 Delay_req数据离开从时钟节点A的时钟T3;
步骤2-1-5)主时钟节点B在收到Delay_req数据包后,记录下Delay_req数据包到达主时钟节点B的时间T4,然后发送Delay_reps数据包到从时钟节点, Delay_reps数据包中携带着T4;
步骤2-1-6)从时钟节点A在收到Delay_reps数据包后,获取包中的时间T4;
步骤2-1-7)从时钟节点A与主时钟节点B之间的时钟偏差δ为:
作为上述方法的一种改进,所述步骤2)还包括:采用了硬件时间戳的方式,记录Follow_up数据包、Sync数据包和Delay_reps数据包离开或到达硬件接口的时间。
本发明还提出一种分布式时钟同步系统,所述系统包括存储器、处理器和存储在存储器上的并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法的步骤。
本发明的优势在于:
1、本发明的一种分布式时钟同步方法通过时钟性能的比较方法比较时钟性能优劣,使网络节点择优与其相邻节点进行时钟同步;提高了分布式时钟同步的精度;
2、本发明采用了硬件时间戳的方式,在网包离开或到达硬件接口时为网包添加时间戳,大大减小了网包在协议栈中的传输延时和抖动,从而提高了分布式时钟同步的精度。
附图说明
图1为本发明实施例分布式时钟同步结构示意图;
图2为本发明实施例中时钟性能比较流程图;
图3为本发明实施例所实现的分布式时钟同步系统结构框图;
图4为本发明实施例中择优同步流程图;
图5为本发明实施例中PTP协议延迟请求应答机制图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细的说明。
如图1所示,在分布式网络中,存在着五个网络节点要进行时钟同步,同步的方法是网络节点择优和其相邻节点进行时钟同步。比如当前网络节点A的相邻节点是:网络节点B,D和E,当前网络节点A根据下面介绍的时钟性能比较方法和时钟偏差调整方法完成与其相邻节点的时钟同步;类似的,网络节点B、C、D和E使用相同的方法与各自的相邻节点完成时钟同步,最终整个系统的所有网络节点之间实现相对的逻辑时钟同步。
如图2、图3所示,以当前网络节点A与其相邻网络节点B之间的时钟性能比较为例,本发明实施例中时钟性能比较流程具体步骤1)包括:
步骤1-1)将当前网络节点A的相邻网络节点形成集合为H,共有K个相邻网络节点;
步骤1-2)从集合H中选取一个相邻节点B;
步骤1-3)比较当前网络节点A与网络节点B的时钟精确度,所述时钟精确度是指网络节点的时钟与标准时钟之间的时钟偏差值,如果B的时钟精确度小于A的时钟精确度,则B的时钟性能优于A的时钟性能;如果A的时钟精确度小于B的时钟精确度,则A的时钟性能优于B的时钟性能,执行步骤1-6);否则,执行步骤1-4);
步骤1-4)比较当前网络节点A和网络节点B的时钟方差,如果B的时钟方差小于A的时钟方差,则B的时钟性能优于A的时钟性能;如果A的时钟方差小于B 的时钟方差,则A的时钟性能优于B的时钟性能,执行步骤1-6);否则,执行步骤 1-5);
步骤1-5)比较当前网络节点A和网络节点B的标识符,如果B的标识符小于 A的标识符,则B的时钟性能优于A的时钟性能;如果A的标识符小于B的标识符,则A的时钟性能优于B的时钟性能;执行步骤1-6);
步骤1-6)将含有时钟性能的相邻节点B添加到时钟性能优劣表;将相邻节点B 从集合H中删除,转入步骤1-2),直至集合H为空。
网络节点与其相邻节点的时钟性能比较完成后,会由网络节点存储并维护时钟性能优劣表,记录时钟性能优劣比较结果,比如当前网络节点A通过与其相邻节点 B,D,E进行时钟性能比较之后,当前网络节点A会记录其与相邻节点的时钟性能的优劣,类似的,网络时钟节点B,C,D和E也会在时钟性能优劣表中记录各自与其相邻节点之间的时钟性能的优劣。
如图4所示,本发明实施例中择优同步调整流程,实现了当前网络节点A与其相邻节点之间的时钟同步。具体步骤2)包括:
步骤2-1)计算当前网络节点A与比其性能优的相邻节点的平均时钟偏差值。
步骤2-2)若平均时钟偏差值小于稳定阈值,则当前网络节点A的时钟处于稳定状态,转入步骤2-3);否则,若平均时钟偏差值大于抖动阈值,则说明当前网络节 A点的时钟很不稳定或在稳定后受环境影响发生了很大的抖动,转入步骤2-4);否则,转入步骤2-5)。
步骤2-3)当前网络节点A和比其性能优且稳定的相邻节点保持时钟同步,根据当前网络节点A与比其性能优且稳定的相邻节点之间的平均时钟偏差值调整网络节点的时钟;然后转入步骤2-1)继续执行。
步骤2-4)当前网络A和其所有相邻节点保持时钟同步,根据当前网络节点A 和其所有相邻节点之间的平均时钟偏差值调整网络节点的时钟。然后转入步骤2-1) 继续执行。
步骤2-5)当前网络节点A和比其性能优的相邻节点保持时钟同步,根据当前网络节点A和比其性能优的相邻节点之间的平均时钟偏差值调整网络节点的时钟。然后转入步骤2-1)继续执行。
每个网络节点的时钟调节一次后,整个分布式系统中的网络节点是不能实现时钟同步的,需要回步骤2-1)至步骤2-5)不断的循环调整才行,时钟受环境的影响时钟偏差值也会发生动态变化,因此采取多次循环调整,使整个分布式网络节点的时钟同步精度能很高。
结合图1对步骤2)进一步详细说明:以当前网络节点A为例。
步骤S2-1)当前网络节点A存储和维护了时钟性能优劣表,记录了当前网络节点A与其相邻节点的时钟性能优劣,比如B和D的时钟性能优于A,而E的时钟性能劣于A,那么将通过PTP协议延迟请求应答机制分别计算A与B、D的时钟偏差值,然后求第一平均偏差值;
步骤S2-2)若平均偏差值小于稳定阈值(稳定阈值通常为我们需要的精度值,如100ns)则说明当前网络节点A的时钟处于稳定状态,转而执行步骤S2-3);
否则,若偏差值大于抖动阈值(抖动阈值指当整个时钟同步系统达到稳定后,某个网络时钟节点可能会由于环境等影响发生大的抖动,与其他网络时钟节点之间的平均偏差值突然变大,所以抖动阈值一般较大,如1ms),则说明网络节点的时钟很不稳定或在稳定后受环境影响发生了很大的抖动,转而执行步骤S2-5);
否则,执行步骤S2-6)。
步骤S2-3)根据通过PTP协议延迟请求应答机制逐一计算时钟性能为“优”的相邻网络节点B、D的平均时钟偏差值,所述平均时钟偏差值小于稳定阈值的网络节点为比当前网络节点A性能优且稳定的相邻网络节点;
步骤S2-4)当前网络节点A与比其性能优且已经稳定的相邻节点保持时钟同步,网络节点B,D比A的性能优且已达到稳定状态,那么A与B、D保持时钟同步,分别计算A与B、D的时钟偏差,再求出平均偏差值,然后A根据平均偏差值调节自身的时钟,调节完毕;转入步骤2-1);
步骤S2-5)当前网络节点A和其所有相邻节点保持时钟同步,即A与B、D、E 保持时钟同步,分别计算A与B、D、E的时钟偏差,再求出平均偏差值,然后A 根据平均偏差值调节自身的时钟,调节完毕后;转入步骤2-1);
步骤S2-6)当前网络节点A与比其性能优的时钟节点保持时钟同步,即A与B 和D保持时钟同步,分别计算A与B和D的时钟偏差,再求出平均偏差值,然后A 根据平均偏差值调节自身的时钟,调节完毕后;转入步骤2-1);
如图5所示,本发明实施例中PTP协议延迟请求应答机制,通过PTP协议的延迟应答机制计算相邻网络节点之间的时钟偏差。以图1中的当前网络节点A和网络节点B为例,计算A与B之间的时钟偏差:假定A为从时钟节点,B为主时钟节点。
首先主时钟节点B发送Sync包到从时钟节点A并记录Sync包离开主时钟节点 B的时间T1;主时钟节点B稍后会再发一个Follow_up包到从时钟,在Follow_up 包中携带着Sync包离开主时钟节点B的时间T1;
从时钟节点A在收到Sync包和Follow_up包后,会记录Sync包到达从时钟节点A的时间T2,并获取Follow_up包中的时间T1;
接着从时钟节点A会发送Delay_req包到主时钟节点B并记录Delay_req离开从时钟节点A的时钟T3;
主时钟节点B在收到Delay_req包后,会记录下Delay_req包到达主时钟节点B 的时间T4,然后发送Delay_reps包到从时钟,Delay_reps包中携带着T4;
从时钟节点A在收到Delay_reps包后,获取包中的时间T4,这样,从时钟节点 A就记录了T1,T2,T3,T4四个值。设δ是从时钟节点A与主时钟节点B之间的时钟偏差,delay是从时钟节点A与主时钟节点B之间的链路延时,那么:
T2–T1=delay+δ (1)
T4-T3=delay–δ (2)
由公式1和2得:相邻网络时钟节点A与B之间的时钟偏差:
为了减小网包在协议栈中的传输延时和抖动,本发明还采用了硬件时间戳的方式,在网包离开或到达硬件接口时为网包添加时间戳,即网包离开或到达硬件接口的时间。所以T1,T2,T3和T4为精确的网包离开或到达网络时钟节点的物理硬件接口时的时间。
本发明实施例还提供了一种分布式时钟同步系统,包括:
时钟性能比较模块,用于比较网络节点和其邻居节点时钟性能优劣,存储和维护时钟性能优劣表,记录时钟性能比较结果;
择优同步模块,根据时钟性能优劣表,网络节点择优与其邻居节点进行时钟同步。
所述时钟性能比较模块包括:
时钟偏差值比较子模块,用于比较网络节点的时钟与标准时钟之间的偏差值,取精确度值低者其时钟性能为优,若两时钟的精确度值相等,则进入到时钟方差比较子模块;
时钟方差比较子模块,用于比较网络节点的时钟方差,取方差低者其时钟性能为优,若两时钟的方差相等,则进入到时钟标识符比较子模块;
时钟标识符比较子模块,比较网络节点的时钟标识符,取标识符低者其时钟性能为优。
网络节点和其邻居节点的时钟性能比较完成后会由网络节点并存储和维护时钟性能优劣表,记录时钟性能比较结果。根据时钟性能优劣,网络节点择优与其邻居节点进行时钟同步。
所述择优同步模块包括:
平均时钟偏差值计算子模块,用于计算当前网络节点与比其性能优的邻居节点的平均时钟偏差值。
同步选取子模块,根据平均时钟偏差值,择优选取网络节点时钟同步的邻居节点集合。
本发明采用PTP协议中延迟请求应答机制实现相邻两个网络节点之间时钟偏差值的计算。为了减小网包在协议栈中的传输延时和抖动,本发明采用硬件时间戳的方式,在网包离开或到达硬件接口时为网包添加时间戳。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。