NTP時間伺服器優先順序配置

xjournal發表於2023-12-25

先思考一個問題:當一個客戶端配置向多個NTP時間伺服器校時,此時客戶端優先向哪個時間伺服器同步時間呢?

一個完整的NTP校時請求分四步:

1、客戶端向伺服器發起校時請求

2、伺服器收到客戶端傳送的校時請求

3、伺服器處理客戶端的校時請求併傳送(響應)給客戶端

4、客戶端收到伺服器響應的資訊並修正自身時間

下面我們從伺服器與客戶端兩個方向來分析:

1. 伺服器優先順序

先來了解一下NTP協議中的stratum(層次):

NTP時間伺服器有層次(stratum)之分,取值範圍1~15,頂層的參考時鐘編號為0。NTP官網對stratum的解釋:

NTP時間伺服器優先順序配置

“層是同步距離的衡量標準。與抖動或延遲相反,分層是一種更靜態的測量方法。基本上,從客戶端的角度來看,它是伺服器到參考時鐘的數量。因此,參考時鐘本身位於層 0,而最近的伺服器位於層 1。在網路上,沒有任何有效的 NTP 資訊是分層 0 的。

與第 n 層伺服器同步的伺服器將在第 n + 1 層執行。層的上限是 15。分層的目的是透過優先選擇分層較低的伺服器來避免同步迴圈。”

根據官網解釋,NTP時間伺服器的層次結構如下圖所示:

NTP時間伺服器優先順序配置

另根據RFC5905(NTPv4)協議和演算法規範中對於stratum的描述得知

NTP時間伺服器優先順序配置

“隨著分層號的增加,其精確度也會降低,這取決於特定的網路路徑和系統時鐘穩定性。 以同步距離衡量的平均誤差,與分層數和衡量的往返延遲大致成正比增加。”

根據NTP的stratum可知,第1層伺服器在NTP層次結構中具有最高的優先順序。層數越大距離參考時鐘距離越遠,其精度越差。

當有多個NTP伺服器時,可以透過修改其層數來調整它們的優先順序。例如,可以將某個NTP伺服器的層數設定為1,而將另一個伺服器的層數設定為2。這樣,層數較低的伺服器將具有更高的優先順序,因為它離參考時間源更近。在設定多個NTP時鐘源的優先順序時,需要根據網路環境和需求進行合理的調整。透過選擇合適的層數和可能的配置選項,可以確保網路中的裝置能夠準確地同步時間。

附:Stratum取值範圍:

NTP時間伺服器優先順序配置

  • 0表示未指定或無效
  • 1表示主伺服器(例如,配備GPS/BD衛星或CDMA/5G基站的時間伺服器)
  • 2-15表示二級伺服器,透過NTP協議實現的二級伺服器
  • 16表示不同步的
  • 17-255保留

2. 客戶端優先順序

客戶端系統種類繁多,下面以Linux(centos)和Windows兩個系統來舉例設定同步優先順序。

2.1、Linux系統(centos)

Linux系統有兩個時間同步守護程式:ntpd和chronyd,centos6.5及之前的版本使用的是ntpd,centos7及之後的版本使用的是chrony。兩者在配置上基本一樣,下面以chrony舉例:

從官網可知,chrony.conf配置檔案中,可配置多個時鐘源,如下圖所示:

NTP時間伺服器優先順序配置

可透過設定[option]為“prefer”選項來設定優先同步哪一臺時鐘源

NTP時間伺服器優先順序配置

“首選

    與不帶 prefer 選項的資訊源相比,優先選擇此資訊源。”

2.2、Windows系統

Microsoft官方給出了配置多個時間伺服器的方法,如下圖

NTP時間伺服器優先順序配置

Windows命令提示符:

w32tm /config /manualpeerlist:"ntpserver.contoso.com clock.adatum.com" /syncfromflags:manual /update

優先順序設定

NTP時間伺服器優先順序配置

優先順序設定命令

w32tm /config /manualpeerlist:"ntpserver.contoso.com,0x8 clock.adatum.com,0x2" /syncfromflags:manual /update

NTP時間伺服器優先順序配置

查詢配置引數命令

reg query HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Parameters

NTP時間伺服器優先順序配置

end.

相關文章