用于实现时钟源选取的方法、装置、系统及存储介质与流程

文档序号:23946011发布日期:2021-02-18 13:30阅读:159来源:国知局
用于实现时钟源选取的方法、装置、系统及存储介质与流程

[0001]
本申请涉及时钟技术领域,特别涉及一种用于实现时钟源选取的方法、装置、系统及存储介质。


背景技术:

[0002]
当通信和网络应用上越来越多的使用分布式系统时,时钟同步变得越来越重要,网络时间协议(network time protocol,ntp)作为一种时钟同步方式,被得到了广泛的应用。此外,为了满足越来越多的高精度时间同步要求,使分布式系统内的最精确时钟与其他时钟保持同步的电气和电子工程师协会(institute of electrical and electronics engineers,ieee)1588协议标准也应运而生。其中,ieee 1588协议标准全称是网络测量和控制系统的精密时钟同步协议标准(ieee 1588 precision clock synchronization protocol),简称精确定时协议(precision timing protocol,ptp)。无论是在ieee 1588的应用场景中,还是ntp场景中,如何选取时钟源,是保持时钟同步的关键。


技术实现要素:

[0003]
本申请实施例提供了一种用于实现时钟源选取的方法、装置、系统及存储介质,以解决相关技术提供的问题,技术方案如下:
[0004]
一方面,提供了一种用于实现时钟源选取的方法,所述方法包括:第一节点通过所述第一节点上的第一端口接收第二节点发送的第一报文;当所述第一报文携带有第一标记时,所述第一节点在选取时钟源时,不选取所述第一端口对应的时钟源,所述第一标记用于指示所述第二节点的时间同步不确定。
[0005]
第一节点通过第一端口接收到该携带有第一标记的第一报文后,在选择时钟源时,不使用该第一端口对应的时钟源数据选择时钟源,以此避免因上游节点时间同步不确定而使得下游节点的时间发生跳变,进而影响整网的时间跳变及业务的正常进行。
[0006]
在示例性实施例中,所述第一节点在选取时钟源时,不选取所述第一端口对应的时钟源,包括:所述第一节点在选取时钟源时,不使用通过所述第一端口接收到的时钟源数据选取时钟源。
[0007]
在示例性实施例中,所述第一节点在选取时钟源时,不使用通过所述第一端口接收的时钟源数据选取时钟源,包括:根据所述第一标记将所述第一端口对应的时钟源数据集设为空集;根据所述第一节点的各端口对应的时钟源数据集选取时钟源。通过将第一端口对应的时钟源数据集设为空集,从而在根据第一节点的各端口对应的时钟源数据集选取时钟源时,不会选取第一端口的时钟源数据,以此避免因上游节点时间同步不确定而使得下游节点的时间发生跳变。
[0008]
在示例性实施例中,所述第一节点在选取时钟源时,不使用通过所述第一端口接收的时钟源数据选取时钟源,包括:根据所述第一标记将所述第一端口对应的时钟源数据集设为空集;根据所述第一节点的各端口对应的时钟源数据集中的非空时钟源数据集选取
时钟源。通过将第一端口对应的时钟源数据集设为空集,在选取时钟源时,根据第一节点的各端口对应的时钟源数据集中的非空时钟源数据集选取时钟源,无需再筛选空集的时钟源数据集,简化选取流程。
[0009]
在示例性实施例中,所述根据所述第一标记将所述第一端口对应的时钟源数据集设为空集,包括:基于所述第一标记将所述第一端口的信号异常属性的值设为第一值,用于指示所述第一端口发生信号异常;基于所述信号异常属性的第一值,将所述第一端口对应的时钟源数据集设置为空集。
[0010]
在示例性实施例中,所述第一端口的信号异常属性为端口信号失效属性portds.sf,所述portds.sf的第一值为真true。由于端口信号失效属性portds.sf为已有标准中定义的属性,基于该端口信号失效属性portds.sf将第一端口对应的时钟源数据集设置为空集,可以适用于已有的标准,提高本申请实施例提供的方法的适用性。
[0011]
在示例性实施例中,所述基于所述第一标记将所述第一端口的信号异常属性的值设为第一值,包括:基于所述第一标记确定所述第一端口发生包定时信号失效ptsf事件;基于所述ptsf事件,将所述第一端口的portds.sf的值设为第一值。
[0012]
在示例性实施例中,所述ptsf事件为包定时信号失效-丢失同步ptsf-losssync事件、包定时信号失效-不可用ptsf-unusable事件或扩展的ptsf事件。由于包定时信号失效-丢失同步ptsf-losssync事件、包定时信号失效-不可用ptsf-unusable事件为已有标准中定义的事件,可以适用于已有的标准,提高本申请实施例提供的方法的适用性。此外,通过扩展的ptsf事件对ptsf事件进行了扩展,扩展了端口信号失效属性portds.sf的确定方式。
[0013]
在示例性实施例中,所述第一报文为声明announce报文。
[0014]
在示例性实施例中,所述announce报文中的同步未确定标记synchronizationuncertain用于携带所述第一标记,当所述synchronizationuncertain的值为第三值时,用于指示所述第二节点的时间同步不确定。
[0015]
在示例性实施例中,所述synchronizationuncertain的第三值为true。
[0016]
第二方面,提供了一种用于实现时钟源选取的方法,所述方法包括:当第二节点的时间同步不确定时,所述第二节点生成第一声明announce报文,所述第一announce报文中携带的目标参数对应的级别低于基准级别,所述基准级别为所述第二节点在时间同步时所述目标参数对应的级别;向第一节点发送所述第一announce报文,所述第一announce报文中携带的参数用于选取时钟源。
[0017]
当上游的第二节点的时间同步不确定时,通过在第一announce报文中携带级别低于基准级别的目标参数,使得下游的第一节点在选取时钟源时,由于第一announce报文中的目标参数的级别低,而不选择接收第一announce报文的端口对应的时钟源,以此避免因上游节点时间同步不确定而使得下游节点的时间发生跳变,进而影响整网的时间跳变及业务的正常进行。
[0018]
在示例性实施例中,所述目标参数为时钟等级clockclass、时钟精度clockaccuracy,偏移量刻度的对数方差offsetscaledlogvariance参数中的一个或多个。
[0019]
在示例性实施例中,所述第二节点生成第一声明announce报文,包括:所述第二节点接收上游节点发送的第二announce报文,对所述第二announce报文中的目标参数的级别进行修改,得到所述第一announce报文,或者,根据所述第二announce报文中的信息,生成
所述第一声明announce报文。
[0020]
第三方面,提供了一种用于实现时钟源选取的装置,所述装置应用于第一节点,所述装置包括:接收模块,用于通过所述第一节点上的第一端口接收第二节点发送的第一报文;选取模块,用于当所述第一报文携带有第一标记时,所述第一节点在选取时钟源时,不选取所述第一端口对应的时钟源,所述第一标记用于指示所述第二节点的时间同步不确定。
[0021]
在示例性实施例中,所述选取模块,用于在选取时钟源时,不使用通过所述第一端口接收到的时钟源数据选取时钟源。
[0022]
在示例性实施例中,所述选取模块,用于根据所述第一标记将所述第一端口对应的时钟源数据集设为空集;根据所述第一节点的各端口对应的时钟源数据集选取时钟源,或者,根据所述第一节点的各端口对应的时钟源数据集中的非空时钟源数据集选取时钟源。
[0023]
在示例性实施例中,所述选取模块,用于基于所述第一标记将所述第一端口的信号异常属性的值设为第一值,用于指示所述第一端口发生信号异常;基于所述信号异常属性的第一值,将所述第一端口对应的时钟源数据集设置为空集。
[0024]
在示例性实施例中,所述第一端口的信号异常属性为端口信号失效属性portds.sf,所述portds.sf的第一值为真true。
[0025]
在示例性实施例中,所述选取模块,用于基于所述第一标记确定所述第一端口发生包定时信号失效ptsf事件;基于所述ptsf事件,将所述第一端口的portds.sf的值设为第一值。
[0026]
在示例性实施例中,所述ptsf事件为包定时信号失效-丢失同步ptsf-losssync事件、包定时信号失效-不可用ptsf-unusable事件或扩展的ptsf事件。
[0027]
在示例性实施例中,所述第一报文为声明announce报文。
[0028]
在示例性实施例中,所述announce报文中的同步未确定标记synchronizationuncertain用于携带所述第一标记,当所述synchronizationuncertain的值为第三值时,用于指示所述第二节点的时间同步不确定。
[0029]
在示例性实施例中,所述synchronizationuncertain的第三值为true。
[0030]
第四方面,提供了一种用于实现时钟源选取的装置,所述装置应用于第二节点,所述装置包括:
[0031]
生成模块,用于当第二节点的时间同步不确定时,生成第一声明announce报文,所述第一announce报文中携带的目标参数对应的级别低于基准级别,所述基准级别为所述第二节点在时间同步时所述目标参数对应的级别;
[0032]
发送模块,用于将所述第一announce报文发送至第一节点,所述第一announce报文中携带的参数用于选取时钟源。
[0033]
在示例性实施例中,所述目标参数为时钟等级clockclass、时钟精度clockaccuracy,偏移量刻度的对数方差offsetscaledlogvariance参数中的一个或多个。
[0034]
在示例性实施例中,所述生成模块,用于接收上游节点发送的第二announce报文,对所述第二announce报文中的目标参数的级别进行修改,得到所述第一announce报文,或者,根据所述第二announce报文中的信息,生成所述第一声明announce报文。
[0035]
第五方面,提供了一种用于实现时钟源选取的系统,所述系统包括:第一节点和第二节点;所述第二节点,用于向所述第一节点的第一端口发送第一报文;所述第一节点,用于通过所述第一节点上的第一端口接收所述第二节点发送的第一报文;当所述第一报文携带有第一标记时,所述第一节点在选取时钟源时,不选取所述第一端口对应的时钟源,所述第一标记用于指示所述第二节点的时间同步不确定。
[0036]
在示例性实施例中,所述第一节点,用于在选取时钟源时,不使用通过所述第一端口接收到的时钟源数据选取时钟源。
[0037]
在示例性实施例中,所述第一节点,用于根据所述第一标记将所述第一端口对应的时钟源数据集设为空集;根据所述第一节点的各端口对应的时钟源数据集选取时钟源,或者,根据所述第一节点的各端口对应的时钟源数据集中的非空时钟源数据集选取时钟源。
[0038]
在示例性实施例中,所述第一节点,用于基于所述第一标记将所述第一端口的信号异常属性的值设为第一值,用于指示所述第一端口发生信号异常;基于所述信号异常属性的第一值,将所述第一端口对应的时钟源数据集设置为空集。
[0039]
在示例性实施例中,所述第一端口的信号异常属性为端口信号失效属性portds.sf,所述portds.sf的第一值为真true。
[0040]
在示例性实施例中,所述第一节点,用于基于所述第一标记确定所述第一端口发生包定时信号失效ptsf事件;基于所述ptsf事件,将所述第一端口的portds.sf的值设为第一值。
[0041]
在示例性实施例中,所述ptsf事件为包定时信号失效-丢失同步ptsf-losssync事件、包定时信号失效-不可用ptsf-unusable事件或扩展的ptsf事件。
[0042]
在示例性实施例中,所述第一报文为声明announce报文。
[0043]
在示例性实施例中,所述announce报文中的同步未确定标记synchronizationuncertain用于携带所述第一标记,当所述synchronizationuncertain的值为第三值时,用于指示所述第二节点的时间同步不确定。
[0044]
在示例性实施例中,所述synchronizationuncertain的第三值为true。
[0045]
第六方面,提供了一种用于实现时钟源选取的系统,所述系统包括:第一节点和第二节点;所述第二节点,用于当所述第二节点的时间同步不确定时,生成第一声明announce报文,所述第一announce报文中携带的目标参数对应的级别低于基准级别,所述基准级别为所述第二节点在时间同步时所述目标参数对应的级别;向第一节点发送所述第一announce报文;所述第一节点,用于接收所述第二节点发送的所述第一announce报文,所述第一announce报文中携带的参数用于选取时钟源。
[0046]
在示例性实施例中,所述目标参数为时钟等级clockclass、时钟精度clockaccuracy,偏移量刻度的对数方差offsetscaledlogvariance参数中的一个或多个。
[0047]
在示例性实施例中,所述第二节点,用于接收上游节点发送的第二announce报文,对所述第二announce报文中的目标参数的级别进行修改,得到所述第一announce报文,或者,根据所述第二announce报文中的信息,生成所述第一声明announce报文。
[0048]
还提供一种用于实现时钟源选取的设备,所述设备包括:端口及处理器,所述端口用于与其他节点通信,所述处理器用于实现上述任一所述的用于实现时钟源选取的方法。
当所述用于实现时钟源选取的设备为第一节点时,所述端口为上述第一端口。
[0049]
还提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如上任一所述的用于实现时钟源选取的方法。
[0050]
提供了另一种通信装置,该装置包括:收发器、存储器和处理器。其中,该收发器、该存储器和该处理器通过内部连接通路互相通信,该存储器用于存储指令,该处理器用于执行该存储器存储的指令,以控制收发器接收信号,并控制收发器发送信号,并且当该处理器执行该存储器存储的指令时,使得该处理器执行上述任一种可能的实施方式中的方法。
[0051]
作为一种示例性实施例,所述处理器为一个或多个,所述存储器为一个或多个。
[0052]
作为一种示例性实施例,所述存储器可以与所述处理器集成在一起,或者所述存储器与处理器分离设置。
[0053]
在具体实现过程中,存储器可以为非瞬时性(non-transitory)存储器,例如只读存储器(read only memory,rom),其可以与处理器集成在同一块芯片上,也可以分别设置在不同的芯片上,本申请实施例对存储器的类型以及存储器与处理器的设置方式不做限定。
[0054]
提供了一种计算机程序(产品),所述计算机程序(产品)包括:计算机程序代码,当所述计算机程序代码被计算机运行时,使得所述计算机执行上述各方面中的方法。
[0055]
提供了一种芯片,包括处理器,用于从存储器中调用并运行所述存储器中存储的指令,使得安装有所述芯片的通信设备执行上述各方面中的方法。
[0056]
提供另一种芯片,包括:输入接口、输出接口、处理器和存储器,所述输入接口、输出接口、所述处理器以及所述存储器之间通过内部连接通路相连,所述处理器用于执行所述存储器中的代码,当所述代码被执行时,所述处理器用于执行上述各方面中的方法。
附图说明
[0057]
图1为本申请实施例提供的1588同步网络场景示意图;
[0058]
图2为本申请实施例提供的用于实现时钟源选取的方法流程图;
[0059]
图3为本申请实施例提供的用于实现时钟源选取的方法流程图;
[0060]
图4为本申请实施例提供的用于实现时钟源选取的方法流程图;
[0061]
图5为本申请实施例提供的用于实现时钟源选取的方法流程图;
[0062]
图6为本申请实施例提供的用于实现时钟源选取的方法流程图;
[0063]
图7为本申请实施例提供的用于实现时钟源选取的方法流程图;
[0064]
图8为本申请实施例提供的用于实现时钟源选取的方法流程图;
[0065]
图9为本申请实施例提供的用于实现时钟源选取的装置结构示意图;
[0066]
图10为本申请实施例提供的用于实现时钟源选取的装置结构示意图;
[0067]
图11为本申请实施例提供的用于实现时钟源选取的设备的结构示意图。
具体实施方式
[0068]
本申请的实施方式部分使用的术语仅用于对本申请的具体实施例进行解释,而非旨在限定本申请。
[0069]
在ieee 1588或ntp的应用场景中,当网络中的某一节点因掉电或故障修复等原因
重启或切换时钟源时,该节点的输出时间相比重启或切换时钟源之前会有跳变。如果下游节点以该掉电重启或故障修复重启或选时钟源时的节点作为时钟源,则下游节点的输出时间也会有跳变,进而会影响整网的时间跳变以及业务的正常进行。
[0070]
以图1所示的ieee 1588同步网络场景为例,该网络中包括节点a、b、c、d、e和f几个节点。其中,节点e包括两个端口,端口1和端口2。端口1对应于节点b,用于接收节点b发送的ptp报文。端口2对应于节点d,用于接收节点d发送的ptp报文。在正常情况下,节点a和节点c都跟踪全球定位系统(global positioning system,gps),节点a和节点c发给下游节点b和节点d的声明(announce)报文里的时钟等级(clockclass)为6,并且announce报文中其它代表ieee 1588质量等级的参数,如时钟精度(clockaccuracy),偏移量刻度的对数方差(offsetscaledlogvariance)等也相同。节点b和节点d发给下游节点e的announce报文里的clockclass也为6,announce报文里的其它代表ieee 1588质量等级的参数,如clockaccuracy,offsetscaledlogvariance等也相同。
[0071]
各个节点的端口具备三种端口状态,包括主状态(master,m)、从状态(slave,s)和被动状态(passive,p)。端口状态为master的通信端口简称为master端口,master端口用来向整个网络广播本节点选取的质量最好的时钟源;slave端口用来跟踪上游节点的时钟;passive端口处于一个中间地位,既不广播时钟源,也不跟踪上游节点的时钟。端口状态出现passive,一般意味着在整个ptp网络系统中有两个或者两个以上的时钟源质量不相上下。如图1所示,以节点e上对应于节点b的端口的状态为slave,节点e上对应于节点d的端口的状态为passive为例。根据ieee1588v2协议和国际电信联盟电信标准分局(international telecommunication union telecommunication standardization sector,itu-t)g.8275.1协议,节点e基于最好主时钟(best master clock,bmc)算法选择节点b或者节点d为跟踪的时钟源。以图1中节点a的clockid小于节点c的clockid为例,节点e的主跟踪路径为a->b->e,而备路径为c->d->e。
[0072]
如果节点b掉电,节点e会选择备路径c->d->e进行同步,节点e可以保证输出给节点f的时间无跳变。当节点b重新上电后,节点a向节点b发ptp报文,因而节点b会首先同步于节点a,即基于节点a的ptp报文与节点a的时间进行同步。在与节点a的时间进行同步的过程中,节点b的时间同步不确定,其中,节点的时间同步不确定是指在同步时间段内,节点的时间有大的调整。关于确定时间有大的调整的方式,本申请实施例不进行限定,示例性地,包括但不限于基于如下三种情况确定时间有大的调整。
[0073]
情况1:节点重启或者切换时钟源,该节点的入端口处于未校准状态(uncalibrated state),表明该节点正在做时钟同步,而这种情况下,通常该节点的时间有大的调整,因而在该种情况下,判断节点的时间同步不确定。
[0074]
在示例性实施例中,该种情况下,可认为参考时长之后,该节点的时间同步确定。其中,参考时长可基于经验设定,也可以基于应用场景设定,本申请实施例不对参考时长进行限定。
[0075]
情况2:节点周期性检测与上游节点的时间差是否小于阈值,如果时间差大于阈值,可以理解为该节点的入端口处于未校准状态(uncalibrated state)。而这种情况下,通常该节点的时间有大的调整,因而判断节点的时间同步不确定。
[0076]
情况3:节点重启或者换时钟源后,检测与上游节点的时间差是否小于阈值,如果
时间差大于阈值,可以理解为该节点的入端口处于未校准状态(uncalibrated state)。而这种情况下,通常该节点的时间有大的调整,因而判断节点的时间同步不确定。
[0077]
可以理解的是,上述情况2和情况3均以检测与上游节点的时间差大于阈值来判断节点的时间同步不确定,对于检测出与上游节点的时间差小于阈值的情况,可判断节点的时间同步。此外,情况2和情况3中的阈值可以相同,也可以不同,该阈值的大小可基于经验设置,也可以基于应用场景限定,本申请实施例不对阈值大小进行限定。
[0078]
以图1为例,节点b在时间同步过程中,节点b的时间会按照节点a的时间进行调整。另外,节点b还通过节点b与节点a的时间差是否小于阈值,可以判断节点b的时间是否同步。例如,节点b接收到节点a的ptp报文后,基于节点a的ptp报文计算节点b与节点a之间的时间差,如果时间差小于阈值,则表明节点b的时间同步,如果时间差不小于阈值,则表明节点b的时间同步不确定。
[0079]
对应节点b的时间同步不确定的情况,则节点b的输出时间有跳变。如果节点b向节点e发送ptp报文,会导致节点e选择对应于接收ptp报文的端口的时钟源,从而使得节点e的输出时间也有跳变。这种情况在1588的应用中是需要避免的,否则会影响整网的时间跳变以及业务正常工作。以上仅以ieee1588场景为例进行了说明,对于ntp,在时钟同步时,也同样存在因节点的输出时间跳变,导致影响整网的时间跳变以及业务正常工作的问题。
[0080]
对此,本申请实施例提供了一种选取时钟源的方法,该方法通过在第一报文里携带第一标记向下游节点通知本时钟源路径上的各个节点的时间是否同步。下游节点如果检测到上游时钟源的时间同步不确定,下游节点不选中对应于该上游节点的端口的时钟源,这样可以避免下游节点的输出时间受影响。接下来,以上游节点为第二节点,下游节点为第一节点,由第一节点选取时钟源为例,对本申请实施例提供的选取时钟源的方法进行说明。如图2所示,该方法包括如下过程:
[0081]
201,第一节点通过第一节点上的第一端口接收第二节点发送的第一报文。
[0082]
第一节点连接一个或多个上游的第二节点,该第一节点通过该第一节点上的第一端口可以接收第二节点发送的第一报文,该第一报文包括但不限于ptp报文或ntp报文。示例性地,以第一报文为ptp报文中的任一类型的报文为例,在ieee1588v1中有五种ptp报文,分别为同步(sync)报文、跟随(follow_up)报文、延迟请求(delay_req)报文、延迟响应(delay_resp)报文和管理(management)报文。verision2在verision1的基础上,增加了点延迟机制(peer-delay mechanism)中的三种ptp报文,分别为点延迟请求(pdelay_req)报文、点延迟响应(pdelay_resp)报文和点延迟响应跟随(pdelay_resp_follow_up)报文。此外,还增加了信号(signaling)报文和声明(announce)报文。
[0083]
其中,sync、delay_req、follow_up和delay_resp等报文通过应答机制(delay request-response mechanism)用于产生和通信用于同步普通时钟和边界时钟的时间信息。pdelay_req、pdelay_resp和pdelay_resp_follow_up等报文通过对等延迟机制(peer delay mechanism)用于测量两个时钟端口(port)之间的链接延时。announce报文用于建立同步路径,发送announce报文的节点和根节点的状态和特征信息;management用于查询和更新时钟所维护的ptp数据集,signaling用于其他目的,例如在主从之间协调单播报文的发送频率。在本申请实施例提供的方法中,第一节点通过该第一端口可以接收第二节点向第一节点发送的上述任一种第一报文。
[0084]
在示例性实施例中,如果第二节点因掉电重启或者故障修复重启,未同步到该第二节点的上游节点的时间,则可以通过在第一报文中携带第一标记来向下游节点通知该上游的第二节点的时间同步不确定。在本申请实施例提供的方法中,该第一标记可以携带在第一报文的已有字段中,也可以携带在第一报文新定义的字段中,本申请实施例不对第一报文携带第一标记的方式进行限定。
[0085]
以该第二节点向第一节点的第一端口发送的第一报文为announce报文为例,如果第二节点的时间同步不确定,则第二节点向第一节点发送的announce报文中携带第一标记,通过第一标记指示第二节点的时间同步不确定。在示例性实施例中,该第一标记可以携带在announce报文的已有字段中,也可以携带在announce报文新增的字段中。以将第一标记携带在announce报文的已有字段中为例,可以通过announce报文中的同步不确定标记(synchronizationuncertain)携带第一标记。示例性地,当synchronizationuncertain的值为ture时,用于指示第二节点的时间同步不确定。或者,该synchronizationuncertain的值还可以是ture和flase之外的其他值,本申请实施例不对用于指示第二节点的时间同步不确定的synchronizationuncertain的值进行限定。此外,无论用于指示第二节点的时间同步不确定的synchronizationuncertain的值为哪种表现形式,第二节点发送的announce报文中除了携带第一标记外,还可以携带其他参数,例如,携带的参数包括clockclass,clockaccuracy和offsetscaledlogvariance等。
[0086]
除了采用announce报文中的synchronizationuncertain来携带第一标记的方式外,本申请实施例提供的方法还支持在第二节点的时间同步不确定时,采用announce报文中的其他参数来携带第一标记。示例性地,当第二节点确定时间同步不确定时,该第二节点将要发送的announce报文中的clockclass,clockaccuracy和offsetscaledlogvariance等参数中的一个或多个参数的值设为特定值,通过该特定值指示第二节点的时间同步不确定。以图1所示的网络为例,在正常情况下,节点a和节点c都跟踪gps后,节点a和节点c发给下游节点b和节点d的announce报文里的clockclass为6。第二节点确定第二节点的时间同步不确定时,第二节点将announce报文的clockclass设为187之后发送至第一节点,由此通过clockclass为特定值187的方式来指示第二节点的时间同步不确定,使得第一节点不会选择第二节点作为时钟源。
[0087]
需要说明的是,采用上述哪种方式来携带第一标记,本申请实施例不进行限定。考虑到ieee 1588v2标准中,当节点在slave端口状态下,选中某个时钟源后,该节点在master端口发送出去的announce报文的clockclass应该是slave端口收到的clockclass,而不应该是将slave端口收到的clockclass降级后再发出去。对此,如果在不更改已有的ieee 1588v2标准的情况下,可以采用上述通过announce报文中的synchronizationuncertain来携带第一标记的方式。
[0088]
202,当第一报文携带有第一标记时,第一节点在选取时钟源时,不选取第一端口对应的时钟源,第一标记用于指示第二节点的时间同步不确定。
[0089]
第一节点接收到第二节点发送的第一报文后,第一节点对该第一报文进行解析。如果解析得到该第一报文携带了第一标记,则可以确定第二节点的时间同步不确定,在选取时钟源时,不选取第一端口对应的时钟源。示例性地,第一节点在选取时钟源时,不选取第一端口对应的时钟源的方式,包括但不限于第一节点在选取时钟源时,不使用通过第一
端口接收到的时钟源数据选取时钟源。第一节点通过第一端口接收该第一报文,在选取时钟源时,不使用通过第一端口接收到的时钟源数据选取时钟源,也就不会选取对应于第一端口的时钟源,避免了时间跳变。
[0090]
在示例性实施例中,第一节点的第一端口接收到携带了第一标记的第一报文后,由于该第一标记指示第二节点的时间同步不确定,因而第一节点可以对第二节点的时间同步不确定状态进行记录。例如,第一节点记录第一端口接收到了携带第一标记的第一报文,使得第一节点在选取时钟源时,基于记录的第二节点的时间同步不确定状态使得第一节点不使用第一端口接收到的时钟源数据,从而在选取时钟源时不会选取对应于第一端口的时钟源。
[0091]
除上述记录第一标记对应的端口的方式外,第一节点的每个端口都有时钟源数据集。例如,以第一报文为annouce报文为例,该第一报文中除了携带第一标记,还携带时钟源数据,例如clockclass、clockid,而时钟源数据集中包括annouce报文中的如clockclass、clockid等时钟源数据,因此,在第二节点的时间同步不确定的情况下,第一节点在选取时钟源时,不使用通过第一端口接收到的时钟源数据选取时钟源,还可以包括但不限于如下两种方式:
[0092]
方式一:第一节点在选取时钟源时,根据第一标记将第一端口对应的时钟源数据集设为空集;根据第一节点的各端口对应的时钟源数据集选取时钟源。
[0093]
该方式一中,由于第一报文中携带了第一标记,而该第一标记指示第二节点的时间同步不确定,第一节点在选取时钟源时,根据第一标记将第一端口对应的时钟源数据集设置为空集,之后再根据第一节点的各个端口对应的时钟源数据集选取时钟源。第一节点的各个端口对应的时钟源数据集包括该第一端口对应的时钟源数据集,也就是说,第一节点在选取时钟源时,第一节点可以获取第一节点的所有端口对应的时钟源数据集,之后将所有时钟源数据集中的时钟源数据进行比对,选取出时钟源。由于该第一端口对应的时钟源数据集为空集,因而也就不会使用通过第一端口接收到的时钟源数据选取时钟源。例如,选取时钟源的方式可参见2018年3月发布的itu-t g.8275.1和g.8275.2的bmc选源流程。
[0094]
方式二:第一节点在选取时钟源时,根据第一标记将第一端口对应的时钟源数据集设为空集;根据第一节点的各端口对应的时钟源数据集中的非空时钟源数据集中的时钟源数据选取时钟源。
[0095]
该方式二中,同样由于第一报文中携带了第一标记,而该第一标记指示第二节点的时间同步不确定,第一节点在选取时钟源时,根据第一标记将第一端口对应的时钟源数据集设置为空集。与方式一不同的是,该方式二中,第一节点将第一端口对应的时钟源数据集设置为空集后,并不是根据第一节点的所有端口对应的时钟源数据集选取时钟源,而是仅获取非空时钟源数据集,根据非空时钟源数据集选取时钟源。也就是说,方式二中第一节点是将非空时钟源数据集中的时钟源数据进行比对,从而选取出时钟源。
[0096]
在示例性实施例中,无论是上述方式一,还是上述方式二,第一节点在选取时钟源时,根据第一标记将第一端口对应的时钟源数据集设为空集的方式,包括但不限于:第一节点在选取时钟源时,基于第一标记将第一端口的信号异常属性的值设为第一值,用于指示第一端口发生信号异常;基于信号异常属性的第一值,将第一端口对应的时钟源数据集设置为空集。
[0097]
例如,当前itu-t g.8275.2定义了信号失效属性portds.sf,如果第一端口的portds.sf的值为第一值,例如为真(true),那么第一节点将该第一端口对应的时钟源数据集(erbest)设置为空集。因此,在本申请实施例提供的方法中,可将端口的信号失效属性portds.sf作为信号异常属性,如果第一端口的portds.sf的第一值为true,则将该第一端口的时钟源数据集(erbest)设置为空集。
[0098]
其中,第一端口的portds.sf的值可以通过包定时信号失效(packet timing signal fail,ptsf)事件来确定,示例性地,基于第一标记将第一端口的信号异常属性的值设为第一值,包括:基于第一标记确定第一端口发生ptsf事件;基于该ptsf事件,将第一端口的portds.sf的值设为第一值。其中,ptsf事件的默认值可以为false,表明没有发生ptsf事件。发生ptsf事件后,可以将ptsf事件的值设为true。当ptsf事件的值为ture时,将第一端口的portds.sf的值设为第一值。
[0099]
例如,在itu-t g.8275.2中,portds.sf这个属性是根据包定时信号失效-丢失同步(ptsf-losssync)事件和包定时信号失效-不可用(ptsf-unusable)事件来确定的,如果端口接收不到ptp报文,那么确定发生了ptsf-losssync事件,将该ptsf-losssync事件的值设为第二值(例如第二值为true),否则为false;如果端口接收到的ptp报文的性能超过本节点的容忍范围,那么确定发生了ptsf-unusable事件,将该ptsf-unusable事件的值设为第二值(例如第二值为true),否则为false。如果发生ptsf-losssync事件或者ptsf-unusable事件,那么portds.sf的值为true。则在本申请实施例提供的方法中,可以基于第一标记确定发生ptsf-losssync事件或者ptsf-unusable事件,从而使得portds.sf的值为第一值(例如true)。此外,本申请实施例提供的方法还支持扩展新的ptsf事件来触发将第一端口的portds.sf这个属性的值设置为第一值。示例性地,将接收到的announce报文中的synchronizationuncertain对应一个新的扩展的ptsf事件,例如:扩展的ptsf事件命名为包定时信号失效-同步不确定(ptsf-syncuncertain)事件,用于指示第一端口因上游节点的时间同步不确定发生信号异常。当接收到的announce报文中的synchronizationuncertain的值为true,那么确定发生ptsf-syncuncertain事件,将该ptsf-syncuncertain事件的值设为第二值(例如true),则将portds.sf的值设为第一值。
[0100]
综上所述,如果发生ptsf-losssync事件,ptsf-unusable事件或者扩展的ptsf事件(例如ptsf-syncuncertain),那么portds.sf的值为true,从而将第一端口的erbest设置为空集,使得第一节点在选取时钟源时,不使用该第一端口对应的时钟源数据。因此,基于第一标记将第一端口的信号异常属性的值设为第一值,包括但不限于如下方式:
[0101]
方式一:以扩展的ptsf事件为ptsf-syncuncertain事件为例,基于第一标记确定第一端口发生ptsf-syncuncertain事件,用于指示第一端口因上游节点的时间同步不确定发生信号异常事件;基于ptsf-syncuncertain事件,将第一端口的portds.sf的值设为第一值。
[0102]
示例性地,发生ptsf-syncuncertain事件,将该ptsf-syncuncertain事件的值设为第二值,如第二值为true,也即当发生ptsf-syncuncertain事件时,指示第一端口因上游节点的时间同步不确定发生信号异常事件,因而触发将第一端口的portds.sf的值设为第一值,例如portds.sf的值为true,由此触发将第一端口对应的时钟源数据集设为空集。除此之外,发生ptsf-syncuncertain事件时,将该ptsf-syncuncertain事件的第二值还可以
设为false,也即当发生ptsf-syncuncertain事件时,ptsf-syncuncertain事件的值为false,指示第一端口因上游节点的时间同步不确定发生信号异常事件,因而触发将第一端口的portds.sf的值设为第一值,例如portds.sf的值为true,由此触发将第一端口对应的时钟源数据集设为空集。又或者,ptsf-syncuncertain事件的第二值还可以为除了true和false之外的其他表现形式,本申请实施例对此不加以限定。
[0103]
方式二:基于第一标记确定第一端口发生ptsf-losssync事件;基于ptsf-losssync事件,将第一端口的portds.sf的值设为第一值。
[0104]
示例性地,发生ptsf-losssync事件,将该ptsf-losssync事件的值设为第二值,该第二值为true,也即当ptsf-losssync事件的值为true时,指示第一端口因上游节点的时间同步不确定发生信号异常事件,因而触发将第一端口的portds.sf的值设为第一值,例如portds.sf的值为true,由此触发将第一端口对应的时钟源数据集设为空集。或者,ptsf-losssync事件的第二值还可以为除了true之外的其他表现形式,本申请实施例对此不加以限定。
[0105]
方式三:基于第一标记确定第一端口发生ptsf-unusable事件;基于ptsf-unusable事件,将第一端口的portds.sf的值设为第一值。
[0106]
示例性地,发生ptsf-unusable事件,将该ptsf-unusable事件的值设为第二值,例如第二值为true,也即当ptsf-unusable事件的值为true时,指示第一端口因上游节点的时间同步不确定发生信号异常事件,因而触发将第一端口的portds.sf的值设为第一值,例如portds.sf的值为true,由此触发将第一端口对应的时钟源数据集设为空集。或者,ptsf-unusable事件的第二值还可以为除了true之外的其他表现形式,本申请实施例对此不加以限定。
[0107]
本申请实施例提供的方法,当上游的第二节点的时间同步不确定时,通过在第一报文中携带第一标记,以指示该第二节点的时间同步不确定。使得下游的第一节点通过第一端口接收到该携带有第一标记的第一报文后,在选择时钟源时,不使用该第一端口对应的时钟源数据选择时钟源,以此避免因上游节点时间同步不确定而使得下游节点的时间发生跳变,进而影响整网的时间跳变及业务的正常进行。
[0108]
接下来,以图1所示的网络为例,对本申请实施例提供的方法所涉及的几种可能的实施方式进行举例说明。其中,图1中的节点e为第一节点,节点b为第二节点,第一报文为announce报文。如图3所示,用于实现时钟源选取的方法包括:
[0109]
301,节点b时间同步不确定时,向节点e发送announce报文,该announce报文中的synchronizationuncertain的值为true。
[0110]
302,节点e的第一端口接收到该announce报文,解析得到announce报文中的synchronizationuncertain的值为true,将第一端口对应的时钟源数据集设为空集。
[0111]
303,节点e获取节点e的所有端口的时钟源数据集,包括数据集为空集的时钟源数据集,以及数据集为非空的时钟源数据集。
[0112]
304,节点e根据非空的时钟源数据集中的时钟源数据选取时钟源,不会使用第一端口对应的时钟源数据选取时钟源。
[0113]
其中,节点e选取时钟源的过程,可参见2018年3月发布的itu-t g.8275.1和g.8275.2的bmc选源流程。
[0114]
仍以图1所示的网络,其中,图1中的节点e为第一节点,节点b为第二节点,第一报文为announce报文为例,对本申请实施例提供的方法进行举例说明。如图4所示,用于实现时钟源选取的方法包括:
[0115]
401,节点b时间同步不确定时,向节点e发送announce报文,该announce报文中的synchronizationuncertain的值为true。
[0116]
402,节点e的第一端口接收到该announce报文,解析得到announce报文中的synchronizationuncertain的值为true,将第一端口的portds.sf的值设为true。
[0117]
403,节点e基于portds.sf的值,将第一端口对应的时钟源数据集设置为空集。
[0118]
404,节点e获取节点e的所有端口的时钟源数据集,包括数据集为空集的时钟源数据集,以及数据集为非空的时钟源数据集。
[0119]
405,节点e根据非空的时钟源数据集中的时钟源数据选取时钟源,不会使用第一端口对应的时钟源数据选取时钟源。
[0120]
其中,节点e选取时钟源的过程,可参见2018年3月发布的itu-t g.8275.1和g.8275.2的bmc选源流程。
[0121]
仍以图1所示的网络,其中,图1中的节点e为第一节点,节点b为第二节点,第一报文为announce报文为例,对本申请实施例提供的方法进行举例说明。如图5所示,用于实现时钟源选取的方法包括:
[0122]
501,节点b时间同步不确定时,向节点e发送announce报文,该announce报文中的synchronizationuncertain的值为true。
[0123]
502,节点e的第一端口接收到该announce报文,解析得到announce报文中的synchronizationuncertain的值为true,确定第一端口发生ptsf-syncuncertain事件。
[0124]
503,节点e基于ptsf-syncuncertain事件将第一端口的portds.sf的值设为true。
[0125]
504,节点e基于portds.sf的值,将第一端口对应的时钟源数据集设置为空。
[0126]
505,节点e获取节点e的所有端口的时钟源数据集,包括数据集为空集的时钟源数据集,以及数据集为非空的时钟源数据集。
[0127]
506,节点e根据非空的时钟源数据集中的时钟源数据选取时钟源,不会使用第一端口对应的时钟源数据选取时钟源。
[0128]
其中,节点e选取时钟源的过程,可参见2018年3月发布的itu-t g.8275.1和g.8275.2的bmc选源流程。
[0129]
仍以图1所示的网络,其中,图1中的节点e为第一节点,节点b为第二节点,第一报文为announce报文为例,对本申请实施例提供的方法进行举例说明。如图6所示,用于实现时钟源选取的方法包括:
[0130]
601,节点b时间同步不确定时,向节点e发送announce报文,该announce报文中的synchronizationuncertain的值为true。
[0131]
602,节点e的第一端口接收到该announce报文,解析得到announce报文中的synchronizationuncertain的值为true,确定第一端口发生ptsf-losssync事件。
[0132]
603,节点e基于ptsf-losssync事件将第一端口的portds.sf的值设为true。
[0133]
604,节点e基于portds.sf的值,将第一端口的时钟源数据集设置为空。
[0134]
605,节点e获取节点e的所有端口的时钟源数据集,包括数据集为空集的时钟源数
据集,以及数据集为非空的时钟源数据集。
[0135]
606,节点e根据非空的时钟源数据集中的时钟源数据选取时钟源,不会使用第一端口对应的时钟源数据选取时钟源。
[0136]
其中,节点e选取时钟源的过程,选源流程可参见2018年3月发布的itu-t g.8275.1和g.8275.2的bmc选源流程。
[0137]
仍以图1所示的网络,其中,图1中的节点e为第一节点,节点b为第二节点,第一报文为announce报文为例,对本申请实施例提供的方法进行举例说明。如图7所示,用于实现时钟源选取的方法包括:
[0138]
701,节点b时间同步不确定时,向节点e发送announce报文,该announce报文中的synchronizationuncertain的值为true。
[0139]
702,节点e的第一端口接收到该announce报文,解析得到announce报文中的synchronizationuncertain的值为true,确定第一端口发生ptsf-unusable事件。
[0140]
703,节点e基于ptsf-unusable事件将第一端口的portds.sf的值设为true。
[0141]
704,节点e基于portds.sf的值,将第一端口的时钟源数据集设置为空。
[0142]
705,节点e获取节点e的所有端口的时钟源数据集,包括数据集为空集的时钟源数据集,以及数据集为非空的时钟源数据集。
[0143]
706,节点e根据非空的时钟源数据集中的时钟源数据选取时钟源,不会使用第一端口对应的时钟源数据选取时钟源。
[0144]
其中,节点e选取时钟源的过程,可参见2018年3月发布的itu-t g.8275.1和g.8275.2的bmc选源流程。
[0145]
需要说明的是,上述图2-图7所示实施例中,仅以第二节点时间同步不确定的情况下,第一节点通过第一节点的第一端口接收第二节点发送的携带有第一标记的第一报文后,不选取第一端口对应的时钟源,从而避免时间跳变为例进行了说明。如果后续第二节点的时间同步了,则向第一节点发送第二报文,该第二报文里可以携带第二标记,该第二标记用于指示第二节点的时间同步。第一节点接收到携带了第二标记的第二报文后,可以将第一节点上对应于第二节点的端口的时钟源数据集不设置为空集,从而将第一端口对应的时钟源作为选择对象,据此选取时钟源。例如,仍以图1所示的网络为例,当节点b的时间同步后,节点b在master端口发送出去的announce报文的同步不确定标记synchronizationuncertain的值为false,即通过synchronizationuncertain的值携带第二标记,以此向下游通知该节点b的时间已同步。节点e基于bmc算法选择节点b或者节点d为跟踪的时钟源。由于下游的节点e在端口1接收到节点b的announce报文后,解析得到节点b的announce报文的synchronizationuncertain的值为false,那么节点e将端口1的erbest数据集等于节点b的announce报文信息,仍以图1中节点a的clockid小于节点c的clockid为例,则节点e会重新选择端口1跟踪到节点b。
[0146]
在示例性实施例中,除上述通过第一标记指示第二节点的时间同步不确定,从而使得下游的第一节点不选择接收第二节点的第一报文的第一端口对应的时钟源的方式外,本申请实施例提供的方法还支持以参数降级的方式,来使得该第一端口的时钟源不被选中,从而避免第一节点发生时间跳变。如图8所示,本申请实施例提供的用于实现时钟源选取的方法包括:
[0147]
801,当第二节点的时间同步不确定时,第二节点生成第一announce报文,第一announce报文中携带的目标参数对应的级别低于基准级别,基准级别为第二节点在时间同步时目标参数对应的级别。
[0148]
在示例性实施例中,目标参数为clockclass、clockaccuracy,offsetscaledlogvariance参数中的一个或多个。由于目标参数对应的级别低于基准级别,使得第一节点在选取时钟源时,不会选取接收该第一announce报文的端口对应的时钟源。
[0149]
需要说明的是,标准不同,第二节点在时间同步时目标参数对应的基准级别不同,基准级别不同,目标参数的值不同。各节点的基准级别通常是相同的,对于各节点的基准级别可能不同的情况,第二节点在第一announce报文中携带的目标参数对应的级别可以低于所有类型的节点的基准级别的最小值。例如,针对目标参数clockclass,在1588v2协议标准中,该clockclass为基准级别时,该clockclass的值为6。在g8265.1协议标准中,该clockclass为基准级别时,该clockclass的值为84。
[0150]
示例性地,以1588v2协议标准中,clockclass为基准级别时,该clockclass的值为6为例。如果第二节点的时间同步不确定,则clockclass的值可以设为187,clockclass的值为187对应的级别低于clockclass的值为6对应的级别,也低于clockclass的值为84对应的级别。该种情况下,如果时间同步的其他节点发送的第一announce报文中的目标参数的级别高于第二节点发送的第一announce报文中的目标参数的级别,则第一节点不选取接收该第一announce报文的端口对应的时钟源。
[0151]
关于第二节点生成第一announce报文的方式,在示例性实施例中,包括但不限于如下方式:
[0152]
方式一:第二节点接收上游节点发送的第二announce报文,对第二announce报文中的目标参数的级别进行修改,得到第一announce报文。
[0153]
该种方式下,第二节点作为中间节点,接收上游节点发送的第二announce报文后,如果上游节点的时间同步,则第二announce报文中的目标参数的级别为上游节点的基准级别。不同节点的基准级别可能不同,第二节点在时间同步不确定的情况下,对第二announce报文中的目标参数的级别进行修改,例如将第二announce报文中的目标参数降级,从而得到携带有降级后的目标参数的第一announce报文。其中,如果各节点的基准级别相同,则第一announce报文中携带的降级后的目标参数对应的级别低于第二节点的基准级别。如果各节点的基准级别不同,则第一announce报文中携带的降级后的目标参数对应的级别低于所有类型的节点的基准级别的最小值。
[0154]
需要说明的是,由于第二announce报文和第一announce报文所对应的源端口和目的端口不同,在对第二announce报文进行修改,得到第一announce报文的过程中,除了对目标参数降级,还包括修改第二announce报文中的源端口和目的端口的地址。
[0155]
方式二:根据第二announce报文中的信息,生成第一announce报文。
[0156]
该方式二中,第二节点作为中间节点,第二节点接收到第二announce报文后,对第二announce报文进行解析,得到第二announce报文中的信息。之后,第二节点在时间同步不确定的情况下,基于第二节点自身的情况及第二announce报文中的信息,生成第一announce报文。也就是说,该方式二与方式一不同的是,方式二并不在第二announce报文基础上修改,而是重新生成一个新的announce报文,即第一announce报文。
[0157]
需要说明的是,以上方式一和方式二均是以第二节点为中间节点为例,针对第二节点是网络中第一个发起announce报文的节点,而非中间节点的情况,第二节点在时间同步不确定的情况下,可直接基于自身的情况生成第一announce报文。
[0158]
802,第二节点将第一announce报文发送至第一节点,第一announce报文中携带的参数用于选取时钟源。
[0159]
第二节点将第一announce报文发送至第一节点后,第一节点解析第一announce报文,如果各节点的基准级别相同,第一announce报文中携带的降级后的目标参数对应的级别低于第二节点的基准级别。如果各节点的基准级别不同,则第一announce报文中携带的降级后的目标参数对应的级别低于所有类型的节点的基准级别的最小值,因此,第一节点在选取时钟源时,不会选取接收该第一announce报文的端口对应的时钟源。
[0160]
本申请实施例提供的方法,当上游的第二节点的时间同步不确定时,通过在第一announce报文中携带级别低于基准级别的目标参数,使得下游的第一节点在选取时钟源时,由于第一announce报文中的目标参数的级别低,而不选择接收第一announce报文的端口对应的时钟源,以此避免因上游节点时间同步不确定而使得下游节点的时间发生跳变,进而影响整网的时间跳变及业务的正常进行。
[0161]
需要说明的是,上述图8所示实施例中,仅以第二节点时间同步未确定的情况下,第一节点不选取接收该第一announce报文的端口对应的时钟源,从而避免时间跳变为例进行了说明。如果后续第二节点的时间同步了,则向第一节点发送的announce报文里的目标参数的级别可以为第二节点的基准级别,从而使得第一节点将接收该第一announce报文的端口对应的时钟源作为选择对象进行时钟源的选取。
[0162]
本申请实施例提供了一种用于实现时钟源选取的装置,该装置应用于第一节点,参见图9,该装置包括:
[0163]
接收模块901,用于通过第一节点上的第一端口接收第二节点发送的第一报文;
[0164]
选取模块902,用于当第一报文携带有第一标记时,第一节点在选取时钟源时,不选取第一端口对应的时钟源,第一标记用于指示第二节点的时间同步不确定。
[0165]
在示例性实施例中,选取模块902,用于在选取时钟源时,不使用通过第一端口接收到的时钟源数据选取时钟源。
[0166]
在示例性实施例中,选取模块902,用于根据第一标记将第一端口对应的时钟源数据集设为空集;根据第一节点的各端口对应的时钟源数据集选取时钟源,或者,根据第一节点的各端口对应的时钟源数据集中的非空时钟源数据集选取时钟源。
[0167]
在示例性实施例中,选取模块902,用于基于第一标记将第一端口的信号异常属性的值设为第一值,用于指示第一端口发生信号异常;基于信号异常属性的第一值,将第一端口对应的时钟源数据集设置为空集。
[0168]
在示例性实施例中,第一端口的信号异常属性为端口信号失效属性portds.sf,portds.sf的第一值为真true。
[0169]
在示例性实施例中,选取模块902,用于基于第一标记确定第一端口发生包定时信号失效ptsf事件;基于ptsf事件,将第一端口的portds.sf的值设为第一值。
[0170]
在示例性实施例中,ptsf事件为包定时信号失效-丢失同步ptsf-losssync事件、包定时信号失效-不可用ptsf-unusable事件或扩展的ptsf事件。
[0171]
在示例性实施例中,第一报文为声明announce报文。
[0172]
在示例性实施例中,announce报文中的同步未确定标记synchronizationuncertain用于携带第一标记,当synchronizationuncertain的值为第三值时,用于指示第二节点的时间同步不确定。
[0173]
在示例性实施例中,synchronizationuncertain的第三值为true。
[0174]
本申请实施例提供了一种用于实现时钟源选取的装置,该装置应用于第二节点,参见图10,该装置包括:
[0175]
生成模块1001,用于当第二节点的时间同步不确定时,生成第一声明announce报文,第一announce报文中携带的目标参数对应的级别低于基准级别,基准级别为第二节点在时间同步时目标参数对应的级别;
[0176]
发送模块1002,用于将第一announce报文发送至第一节点,第一announce报文中携带的参数用于选取时钟源。
[0177]
在示例性实施例中,目标参数为时钟等级clockclass、时钟精度clockaccuracy,偏移量刻度的对数方差offsetscaledlogvariance参数中的一个或多个。
[0178]
在示例性实施例中,生成模块1001,用于接收上游节点发送的第二announce报文,对第二announce报文中的目标参数的级别进行修改,得到第一announce报文,或者,根据第二announce报文中的信息,生成第一声明announce报文。
[0179]
应理解的是,上述图9和图10提供的装置在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0180]
本申请实施例提供了一种用于实现时钟源选取的系统,该系统包括:第一节点和第二节点;
[0181]
第二节点,用于向第一节点的第一端口发送第一报文;
[0182]
第一节点,用于通过第一节点上的第一端口接收第二节点发送的第一报文;当第一报文携带有第一标记时,第一节点在选取时钟源时,不选取第一端口对应的时钟源,第一标记用于指示第二节点的时间同步不确定。
[0183]
在示例性实施例中,第一节点,用于在选取时钟源时,不使用通过第一端口接收到的时钟源数据选取时钟源。
[0184]
在示例性实施例中,第一节点,用于根据第一标记将第一端口对应的时钟源数据集设为空集;根据第一节点的各端口对应的时钟源数据集选取时钟源,或者,根据第一节点的各端口对应的时钟源数据集中的非空时钟源数据集选取时钟源。
[0185]
在示例性实施例中,第一节点,用于基于第一标记将第一端口的信号异常属性的值设为第一值,用于指示第一端口发生信号异常;基于信号异常属性的第一值,将第一端口对应的时钟源数据集设置为空集。
[0186]
在示例性实施例中,第一端口的信号异常属性为端口信号失效属性portds.sf,portds.sf的第一值为真true。
[0187]
在示例性实施例中,第一节点,用于基于第一标记确定第一端口发生包定时信号
失效ptsf事件;基于ptsf事件,将第一端口的portds.sf的值设为第一值。
[0188]
在示例性实施例中,ptsf事件为包定时信号失效-丢失同步ptsf-losssync事件、包定时信号失效-不可用ptsf-unusable事件或扩展的ptsf事件。
[0189]
在示例性实施例中,第一报文为声明announce报文。
[0190]
在示例性实施例中,announce报文中的同步未确定标记synchronizationuncertain用于携带第一标记,当synchronizationuncertain的值为第三值时,用于指示第二节点的时间同步不确定。
[0191]
在示例性实施例中,synchronizationuncertain的第三值为true。
[0192]
应理解的是,上述系统与图2方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0193]
本申请实施例提供了一种用于实现时钟源选取的系统,该系统包括:第一节点和第二节点;
[0194]
第二节点,用于当第二节点的时间同步不确定时,生成第一声明announce报文,第一announce报文中携带的目标参数对应的级别低于基准级别,基准级别为第二节点在时间同步时目标参数对应的级别;向第一节点发送第一announce报文;
[0195]
第一节点,用于接收第二节点发送的第一announce报文,第一announce报文中携带的参数用于选取时钟源。
[0196]
在示例性实施例中,目标参数为时钟等级clockclass、时钟精度clockaccuracy,偏移量刻度的对数方差offsetscaledlogvariance参数中的一个或多个。
[0197]
在示例性实施例中,第二节点,用于接收上游节点发送的第二announce报文,对第二announce报文中的目标参数的级别进行修改,得到第一announce报文,或者,根据第二announce报文中的信息,生成第一声明announce报文。
[0198]
应理解的是,上述系统与图8方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0199]
参见图11,本申请实施例还提供一种用于实现时钟源选取的设备1100,图11所示的用于实现时钟源选取的设备1100用于执行上述用于实现时钟源选取的方法所涉及的操作。该用于实现时钟源选取的设备1100包括:处理器1102及端口1103,处理器1102及端口1103之间通过总线1104连接。
[0200]
端口1103用于与网络中的其他设备进行通信,该端口1103可以通过无线或有线的方式实现,处理器1102用于实现上述任一所述的用于实现时钟源选取的方法。
[0201]
在示例性实施例中,该用于实现时钟源选取的设备1100还包括存储器1101,存储器1101中存储有至少一条指令,至少一条指令由处理器1102加载并执行,存储器1101、处理器1102及端口1103之间通过总线1104连接。
[0202]
应理解的是,图11仅仅示出了用于实现时钟源选取的设备1100的简化设计。在实际应用中,选取时钟源的设备可以包含任意数量的接口,处理器或者存储器。此外,上述处理器可以是中央处理器(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processing,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理
器可以是微处理器或者是任何常规的处理器等。值得说明的是,处理器可以是支持进阶精简指令集机器(advanced risc machines,arm)架构的处理器。
[0203]
进一步地,在一种可选的实施例中,上述存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器还可以包括非易失性随机存取存储器。例如,存储器还可以存储设备类型的信息。
[0204]
该存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者,其中,非易失性存储器可以是只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用。例如,静态随机存取存储器(static ram,sram)、动态随机存取存储器(dynamic random access memory,dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data date sdram,ddr sdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synchlink dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,dr ram)。
[0205]
还提供了一种计算机可读存储介质,存储介质中存储有至少一条指令,指令由处理器加载并执行以实现如上任一所述的选取时钟源的方法。
[0206]
本申请提供了一种计算机程序,当计算机程序被计算机执行时,可以使得处理器或计算机执行上述方法实施例中对应的各个操作和/或流程。
[0207]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solid state disk)等。
[0208]
以上所述仅为本申请的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1