NTP协议为了提高授时的精度,在选择时钟源,选择时钟源数据,以及在使用这些数据得到精确时间的过程中应用了几种算法。
首先是选择算法,选择算法包括三部分,首先是选择时钟源,NTP只对活性时间源进行检测(活性源执行ntpq –p命令时reach不为0),如NTP时钟源和客户偏差超过1000秒,算法会将时间源识别为不可信时间源。其次是选择数据,就是时钟滤波,定义了对单个时钟采样的滑动窗口是8个,图一说明了滤波的原因,延时过大的时候也会导致时间误差加大, 二说明了滤波前后的区别,采样数据被处理后,波形平滑很多,由于延时导致的高误差的数据被过滤了。
滤波算法说明来自NTP协议发明人mills教授官网消息:
https://www.eecis.udel.edu/~mills/ntp/html/filter.html
或者,是在滤波后的数据中对多个源再一次进行选择
这一次的判断标准是每个时间源的残存的数据都有个别分布范围,分布范围重叠较大的区域被认为是时间真值可能存在的区域,没有和其他源重叠的将被剔除,如图三中时间源D。两个时间服务器可能造成失锁也是因为数据没有重叠区域,导致算法失真,算不出不来结果。这个在NTPQ查看时被剔除的会显示“-”。
选择算法说明来自:https://www.eecis.udel.edu/~mills/ntp/html/select.html 的官网说明。
第二是聚类(群集)算法,是把选择后幸存的时间源的数据拿来处理,找到分布最密集的区域,不断迭代消减,选择出最可能的真值区间。
聚合算法
聚合算法来自:https://www.eecis.udel.edu/~mills/ntp/html/cluster.html 的详细说明。
第三是组合算法,它是处理聚类算法剩下的数据的过程,会给每个时间源一个权重,每个时间源的权重取决于网络延时和根误差。这时体现在NTPQ中的状态是主用时间服务器是“*”,辅助的时间服务器是“+”。这样出来的误差值并不等同于任何一个时间服务器的误差值,在有多个时间服务器的情况下会更精确。
扫一扫咨询微信客服