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中的狀態是主用時間服務器是“*”,輔助的時間服務器是“+”。這樣出來的誤差值并不等同于任何一個時間服務器的誤差值,在有多個時間服務器的情況下會更精確。
掃一掃咨詢微信客服