一、時間參考
什么是參考時間
參考時鐘是一些對外發出當前時間的設備,它必須在一段時間內相當準確;典型的參考時鐘是非常昂貴的銫鐘,最常使用的是在一段時間內能接受到國家標準機構時間信號的接收器。一個示例示例是GPS接收器從衛星獲取時間。銫鐘的準確性是由衛星定期修正提供的。比較便宜和準確的參考時鐘可以使用地面廣播如DCF77,MSF,WWV,即HJ210-CDMA設備。
衛星授時時間參考源
一般說現在時鐘服務器高精度的是銫鐘,單銫鐘價格在十多萬。一般常用的是銣鐘的HJ210-BDRBP,價格相對便宜,守時精度大約在3ms左右。在相對便宜的是時時連接天線的HJ210,也可以采購相對便宜的HJ210-CDMA設備,采用移動基站時間,但精度相對差點。
在NTP中這個參考時間被稱為0層時鐘源,往往它是NTP中質量最好的。
NTP如何利用參考時間
參考時鐘將提供當前時間。NTP將計算一些額外的統計值以描述時間的質量。這些值包括: offset 偏差(or phase), jitter抖動 (or dispersion), frequency error頻率偏差, 和 stability穩定度。每一個NTP時間源將維持參考時鐘和本身的質量估值。
NTP如何知道時間源
有以下方法NTP客戶端將知道NTP服務器如何使用:服務器可以被手動配置,服務器可以直接發送時間給對等體;服務器可能使用多播或廣播地址發送時間,無論采取何種方式,在NTP使用前都將對NTP進行配置,以確定時間源。
如果參考時間源改變會怎樣?
理想情況下在世界各地的參考時間都是相同的。一旦同步在操作系統和參考時鐘的時鐘之間不應當有任何意想不到的變化。因此NTP沒有專門的方法來處理這種情況。ntpd的反應取決于本地時鐘之間的偏移量和參考時間。對于微小的偏差ntpd將照常調整本地時鐘;對于稍大的偏移量,ntpd將維持最后一個有效修正值,拒絕引用上級時間源一段時間。當認為上級源可信后,小偏移量將突然轉向緩慢調整;更大的偏差將導致時鐘重新設置,對于太大的偏差(一般為1000s),ntpd將終止本身。
這些算法也應用ntpd首次啟動或系統重啟。
什么是一級時間服務器?
工作在層次1的服務器屬于最好的NTP服務器可用類,因為它有一個參考時鐘。作為準確的參考時鐘是昂貴的,只有很少的這些服務器可以公開可用。一級服務器不但有一個精確的和維護良好的參考時鐘,還應該有可以給他系統可能依賴于時間的服務。這也許就是為什么不是每個NTP與參考時鐘服務器都可以公開使用。
二、時間同步
什么是時間同步?時間可以從一個時間源到另一個來源,典型的從一個參考時鐘到一級時鐘服務器,從一級時鐘服務器到二級時鐘服務器。通常一個時鐘服務器相對參考時間源有不止各個層次。
客戶端網絡同步服務器由幾種分組數據包,每個數據包是一對請求和應答。客戶端先將自己的時間戳(T1)寫到數據包被發送。服務器接收到這樣一個包時,它將存儲自己的時間戳(T2)接收到數據包,數據包將被返回后將發送包的發送時間戳(T3)。當收到回復時,客戶端將再次將自己時間放到收到時間包中(T4)。假設在延遲對稱情況下,時間延遲估計是 “總延遲-遠程處理時間” 的一半,即((T4- T3)-(T3- T2))/2。
那些時間差異可以用來估計兩臺機器之間的時間偏移和最大偏移誤差。更短更對稱的往返時間,導致更準確的對當前時間的估計。服務的時間是不被信任的直到發生了數據包交換和算法檢查。只有從服務器回復滿足協議規范中定義的條件,服務器才被認為是有效的。一些必要的值放入多級過濾器用于改進和估計樣本每個服務器的質量統計。所有使用的服務器都采用一個一致的評估時間。在分歧的情況下,最大的一組同意服務器相結合(truechimers)用于生產參考時間,從而宣布其他服務器無效(falsetickers)。
通常需要大約5分鐘,直到NTP服務器被接受為同步源。有趣的是,這也是對本地參考時鐘,沒有延遲的定義。初始同步后, 通常客戶端的質量隨著時間的推移改善。隨著客戶越來越準確,一個或多個潛在的服務器可能在一段時間后被認為是無效的。
網絡協議如何使用NTP為快速連接設置和響應時間NTP使用UDP數據包進行數據傳輸。官方的NTP端口號是123(ntpd,ntpdate監聽和交流)。
NTP如何對時間進行編碼
有一個不錯的答案由Don Payette innews://comp.protocols.time.ntp, 我們進行輕微的調整:NTP的時間戳是一個64位的二進制值與一個隱含分數點兩個32位之間的部分。如果你把所有的64位無符號整數位,把它在一個浮點變量至少有64位尾數(通常兩倍)和做一個浮點數除以2 ^ 32,你會得到正確的答案。
例如64位二進制值:
00000000000000000000000000000001 10000000000000000000000000000000為一個小數1.5。點的右邊的乘數是1/2,1/4,1/8,1/16,等等。
200秒,1除以2 ^ 32(4294967296),得到0.00000000023283064365386962890625或233 e-12秒。1 e-12秒微微秒;除了每個人都應該知道,1900年NTP開始的時代而UNIX的時代開始于1970年。因此以下值都對應于2000 - 08 - 31 - _18:52:30.735861
UNIX: 39aea96e.000b3a75
00111001 10101110 10101001 01101110.
00000000 00001011 00111010 01110101
NTP: bd5927ee.bc616000
10111101 01011001 00100111 11101110.
10111100 01100001 01100000 00000000
查詢時間服務器間隔
輪詢服務器基本上抖動(白噪聲)不應超過隨機漫步噪聲頻率。輪詢間隔試圖接近的最小噪聲(Allan攔截),且間隔永遠是2的冪。可以使用minpoll和maxpoll指定最小和最大允許指數。如果選擇較低的頻率查詢時鐘同步服務器,可能比沒有更頻繁地查詢時鐘服務器更及時發現參考時鐘的錯誤。
掃一掃咨詢微信客服