发明内容
本发明实施例提供一种选择网络时间协议服务器的方法和装置,简单而又不失精度的选择NTP服务器。
为了实现上述目的,本发明实施例提供一种选择网络时间协议服务器的方法,包括:
网元设备向多个NTP时间协议服务器发送校时请求报文;
所述网元设备收到NTP服务器发送的响应报文时,判断是否已经进行时间同步;如果判断结果为否,使用当前NTP服务器进行时间同步,并在同步后将当前NTP服务器设置为已经同步的NTP服务器;如果判断结果为是,所述网元设备比较当前NTP服务器与已经同步的NTP服务器的Stratum层;
在当前NTP服务器的Stratum层次小于已经同步的NTP服务器的Stratum层次时,使用当前NTP服务器进行时间同步,并将当前NTP服务器设置为已经同步的NTP服务器;
在当前NTP服务器的Stratum层次大于已经同步的NTP服务器的Stratum层次时,结束对所述响应报文的处理;
在当前NTP服务器的Stratum层次等于已经同步的NTP服务器的Stratum层次时,所述网元设备进一步比较当前NTP服务器与已经同步的NTP服务器的精确度:如果当前NTP服务器的精确度高于已经同步的NTP服务器的精确度,使用当前NTP服务器进行时间同步,并将当前NTP服务器设置为已经同步的NTP服务器;否则,结束对所述响应报文的处理。
所述网元设备向多个NTP时间协议服务器发送校时请求报文包括:
所述网元设备在校时间隔到来时向多个NTP时间协议服务器群发所述校时请求报文。
所述网元设备收到NTP服务器发送的响应报文且判断已经进行时间同步后,还包括:
所述网元设备解析所述响应报文,根据所述响应报文中的Stratum和Precision精确度字段得到当前NTP服务器的Stratum层次和精确度。
使用当前NTP服务器进行时间同步时还包括:记录当前NTP服务器的Stratum层次和精确度、以及当前NTP服务器的标识信息;如果存在之前记录的Stratum层次、精确度和NTP服务器的标识信息,则使用当前记录的NTP服务器的Stratum层次、精确度和NTP服务器的标识信息替换之前记录的Stratum层次、精确度和NTP服务器的标识信息。
本发明实施例还提供一种网元设备,包括:
发送模块,用于向多个NTP时间协议服务器发送校时请求报文;
接收模块,用于接收NTP服务器发送的响应报文;
判断模块,用于在接收模块接收到响应报文时,判断所述网元设备是否已经进行时间同步;如果判断结果为否,触发同步处理模块;如果判断结果为是,触发第一比较模块;
所述同步处理模块,用于使用当前NTP服务器进行时间同步,并在同步后将当前NTP服务器设置为已经同步的NTP服务器;
所述第一比较模块,用于比较当前NTP服务器与已经同步的NTP服务器的Stratum层;在当前NTP服务器的Stratum层次小于已经同步的NTP服务器的Stratum层次时,触发所述同步处理模块;在当前NTP服务器的Stratum层次大于已经同步的NTP服务器的Stratum层次时,触发结束模块;在当前NTP服务器的Stratum层次等于已经同步的NTP服务器的Stratum层次时,触发第二比较模块;
所述第二比较模块,用于比较当前NTP服务器与已经同步的NTP服务器的精确度,如果当前NTP服务器的精确度高于已经同步的NTP服务器的精确度,触发所述同步处理模块,否则,触发所述结束模块;
所述结束模块,用于结束对所述响应报文的处理。
所述发送模块还用于:在校时间隔到来时向多个NTP时间协议服务器群发所述校时请求报文。
该网元设备还包括:
解析模块,用于解析所述响应报文,根据所述响应报文中的Stratum和Precision精确度字段得到当前NTP服务器的Stratum层次和精确度。
该网元设备还包括记录模块,用于当所述同步处理模块使用当前NTP服务器进行时间同步时,记录当前NTP服务器的Stratum层次和精确度、以及当前NTP服务器的标识信息;如果存在之前记录的Stratum层次、精确度和NTP服务器的标识信息,则使用当前记录的NTP服务器的Stratum层次、精确度和NTP服务器的标识信息替换之前记录的Stratum层次、精确度和NTP服务器的标识信息。
本发明实施例提供的方法和装置,仅通过NTP服务器应答报文中的Stratum层和Precision本地时钟精度这两个字段,来对NTP服务器进行筛选,与传统NTP服务器选择方法相比,设计相对简单,并且在网元设备硬件允许的计算能力范围内,能最大程度选择最可靠的NTP服务器进行时间同步,同时保证了时间的精度。在设置好NTP服务器后,网元设备自动进行时间同步,无需人工干预;并且本发明提供的NTP服务器选择方案简单实用,易于在网元设备上实现。采用本发明实施例提供的方案时,NTP服务器的个数优选为3-5个,太多会影响网元设备硬件的计算能力,影响效率。
具体实施方式
在通讯网络中,时间按NTP服务器的等级传播。按照离外部UTC(Universal TimeCoordinated,协调世界时)源的远近将所有NTP服务器归入不同的Stratum(层)中。Stratum-1在顶层,有外部UTC接入,而Stratum-2则从Stratum-1获取时间,Stratum-3从Stratum-2获取时间,依此类推。所以层次越高的NTP服务器,其时间最准确,可靠性和精度也是最高的。如图1所示,NTP服务器A、B同处于Stratum-8层,C、D同处于Stratum-10层,A\B的可靠性和精度要高于C\D。处于同一层的NTP服务器之间时钟精度也可以不同,例如NTP服务器C和D虽然都处于Stratum-10层,但服务器C的时钟精度要高于服务器D。
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
本发明实施例提供的网络时间协议服务器选择的方法,如图2所示,包括:
步骤201,网元设备上的NTP Client运行,并且已经设置了与网元设备对应的NTP服务器。
步骤202,在校时间隔到来时,网元设备向NTP服务器发送校时请求报文,NTP服务器收到校时请求后向网元设备发送响应报文。
网元设备发送校时请求报文时,优选为群发请求报文。
步骤203,网元设备收到NTP服务器返回的响应报文,判断网元设备是否已经同步,如果否,执行步骤204;否则,执行步骤205。
步骤204,网元设备使用当前NTP服务器进行时间同步,并将当前NTP服务器设置为已经同步的NTP服务器。
步骤205,网元设备比较当前NTP服务器与已经同步的NTP服务器的Stratum层;在当前NTP服务器的Stratum层次小于已经同步的NTP服务器的Stratum层次时,执行步骤204;在当前NTP服务器的Stratum层次大于已经同步的NTP服务器的Stratum层次时,执行步骤206;在当前NTP服务器的Stratum层次等于已经同步的NTP服务器的Stratum层次时,执行步骤207。
步骤206,网元设备结束对响应报文的处理。
步骤207,网元设备比较当前NTP服务器与已经同步的NTP服务器的精确度,如果当前NTP服务器的精确度高于已经同步的NTP服务器的精确度,执行步骤204;否则,执行步骤206。
其中,NTP服务器的Stratum层和精确度可以通过以下方式得到:网元设备解析接收到的响应报文,根据响应报文中的Stratum和Precision精确度字段(例如在响应报文的报文头中)得到当前NTP服务器的Stratum层次和精确度。响应报文的报文头结构具体例如图3所示,其中包括Stratum和Precision精确度字段。
网元设备还记录当前NTP服务器的Stratum层次和精确度、以及当前NTP服务器的标识信息(例如IP地址),如图4所示。如果存在之前记录的Stratum层次、精确度和NTP服务器的标识信息,则更新之前记录的Stratum层次、精确度和NTP服务器的标识信息,使用当前记录的NTP服务器的Stratum层次、精确度和NTP服务器的标识信息替换之前记录的Stratum层次、精确度和NTP服务器的标识信息。网元设备通过解析响应报文的报文头得到当前NTP服务器的Stratum层次和精确度后,将得到的Stratum层次和精确度与记录的Stratum层次和精确度进行比较,执行上述步骤205和207。
本发明实施例中,网元设备可以对未进行同步的NTP服务器进行计数,如果未同步的NTP服务器个数等于网元设备上已设置的NTP服务器个数时,会清空已同步服务器数据,同时将未进行同步的NTP服务器个数清零。
下面给出本发明实施例提供的选择网络时间协议服务器的方法的示例。假定SyncServer为已经同步的NTP服务器,ServerA、ServerB、ServerC、ServerD和ServerE为可供选择的NTP服务器,结合图5所示,具体的服务器选择过程如下:
1)ServerA的层次比SyncServer要小,网元设备直接使用ServerA进行时间同步;
2)ServerB、ServerC、ServerD的层次和SyncServer相同,还需要判断Precision字段:
2.1)ServerB的精确度要高于SyncServer,当遇到ServerB时,网元设备要使用ServerB进行时间同步;
2.2)ServerC的精确度和SyncServer相同,网元设备认为ServerC和SyncServer等价,不进行时间同步;
2.3)ServerD的精确度比SyncServer要低,网元设备在遇到ServerD时,不进行时间同步;
3)ServerE的层次要大于SyncServer,网元设备在遇到ServerE时不进行同步。
通过采用本发明实施例提供的方法,仅通过NTP服务器应答报文中的Stratum层和Precision本地时钟精度这两个字段,来对NTP服务器进行筛选,与传统NTP服务器选择方法相比,设计相对简单,并且在网元设备硬件允许的计算能力范围内,能最大程度选择最可靠的NTP服务器进行时间同步,同时保证了时间的精度。在设置好NTP服务器后,网元设备自动进行时间同步,无需人工干预;并且本发明提供的NTP服务器选择方案简单实用,易于在网元设备上实现。采用本发明实施例提供的方案时,NTP服务器的个数优选为3-5个,太多会影响网元设备硬件的计算能力,影响效率。
基于与上述方法实施例相同的技术构思,本发明实施例还提供一种网元设备,如图6所示,包括:
发送模块10,用于向多个NTP时间协议服务器发送校时请求报文;
接收模块20,用于接收NTP服务器发送的响应报文;
判断模块30,用于在接收模块20接收到响应报文时,判断所述网元设备是否已经进行时间同步;如果判断结果为否,触发同步处理模块40;如果判断结果为是,触发第一比较模块50;
所述同步处理模块40,用于使用当前NTP服务器进行时间同步,并在同步后将当前NTP服务器设置为已经同步的NTP服务器;
所述第一比较模块50,用于比较当前NTP服务器与已经同步的NTP服务器的Stratum层;在当前NTP服务器的Stratum层次小于已经同步的NTP服务器的Stratum层次时,触发所述同步处理模块40;在当前NTP服务器的Stratum层次大于已经同步的NTP服务器的Stratum层次时,触发结束模块70;在当前NTP服务器的Stratum层次等于已经同步的NTP服务器的Stratum层次时,触发第二比较模块60;
所述第二比较模块60,用于比较当前NTP服务器与已经同步的NTP服务器的精确度,如果当前NTP服务器的精确度高于已经同步的NTP服务器的精确度,触发所述同步处理模块40,否则,触发所述结束模块70;
所述结束模块70,用于结束对所述响应报文的处理。
所述发送模块10还用于:在校时间隔到来时向多个NTP时间协议服务器群发所述校时请求报文。
如图7所示,该网元设备还包括:
解析模块80,用于解析所述响应报文,根据所述响应报文中的Stratum和Precision精确度字段得到当前NTP服务器的Stratum层次和精确度。
该网元设备还包括记录模块90,用于当所述同步处理模块40使用当前NTP服务器进行时间同步时,记录当前NTP服务器的Stratum层次和精确度、以及当前NTP服务器的标识信息;如果存在之前记录的Stratum层次、精确度和NTP服务器的标识信息,则使用当前记录的NTP服务器的Stratum层次、精确度和NTP服务器的标识信息替换之前记录的Stratum层次、精确度和NTP服务器的标识信息。
本发明实施例提供的装置,仅通过NTP服务器应答报文中的Stratum层和Precision本地时钟精度这两个字段,来对NTP服务器进行筛选,与传统NTP服务器选择方法相比,设计相对简单,并且在网元设备硬件允许的计算能力范围内,能最大程度选择最可靠的NTP服务器进行时间同步,同时保证了时间的精度。在设置好NTP服务器后,网元设备自动进行时间同步,无需人工干预;并且本发明提供的NTP服务器选择方案简单实用,易于在网元设备上实现。采用本发明实施例提供的方案时,NTP服务器的个数优选为3-5个,太多会影响网元设备硬件的计算能力,影响效率。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。