IEEE 1588,也稱為Precision Time Protocol (PTP),是一種用于實現分布式網絡中設備間高精度時間同步的協議。其主要目的是在網絡中的各個節點之間提供精確的時間對齊,這對于需要高精度時間同步的應用場景(如工業自動化、電信網絡、數據中心等)至關重要。IEEE 1588v2是該協議的一個版本,它在2008年發布,提供了更高的精度和更多的功能。
NTP:NTP旨在提供毫秒級別的時間同步精度。在局域網(LAN)中,NTP通常能夠達到1毫秒(ms)以內的同步精度,在廣域網(WAN)中,精度可能降低到幾十毫秒。
PTP:PTP提供更高的時間同步精度,可以達到亞微秒(10^-6秒)甚至納秒(10^-9秒)級別。PTPv2版本特別適用于需要極高時間精度的應用場景。
Windows10 V1809包括一個PTP客戶端。win11加強了這一功能。windows中對PTP的支持不如Linux中的支持那樣功能性和成熟。
ptpclient僅支持 UDP 傳輸和 two-step 模式,這與 Linux PTP 的默認設置相匹配。但是,它要求在總線時鐘設置中 currentOffsetUtcValid 標志必須為 1。(如果沒有這個設置,我的 Windows 機器會非常精確地同步到偏差 37 秒。)你可以在樹莓派上使用 pmc 來設置這個。我使用以下的 shell 腳本:
#!/bin/sh
pmc -u -b 0 \
"set GRANDMASTER_SETTINGS_NP
clockCss 6
clockAccuracy 0x20
offsetScaledLogVariance 0xffff
currentUtcOffset 37
leap61 0
leap59 0
currentUtcOffsetValid 1
ptpTimescale 1
timeTraceable 0
frequencyTraceable 0
timeSource 0xa0
"
然后,為了配置ptpclient,請打開管理員權限的PowerShell并執行以下步驟。
1.配置防火墻以打開必要的端口
2.添加一些注冊表鍵。同時啟用MulticastTx,運行命令 reg add HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\PtpClient /t REG_DWORD /v EnableMulticastTx /d 1。如下圖。
3.在Windows 11上,你現在可以使用 w32tm /ptp_monitor /duration:10 來檢查你是否正確接收到PTP數據包。如果這不起作用,那么PTP將無法工作。
4.現在重啟時間服務。使用 stop-service w32time 然后 start-service w32time。
5.現在使用 w32tm /query /status /verbose 來查看一切是否正常工作。你也可以使用事件查看器查看,如下圖。
同時將Windows時間服務的啟動類型設置為自動。
我在讓它工作時遇到了一些麻煩。似乎有一個bug阻止了PTP與某些驅動程序的工作。有一段時間,它在我的一個網絡適配器上工作(主板上的Realtek 2.5GbE RTL8125BG),但在另一個上不工作(10GbE Aquantia卡)。其他人也有類似的問題。在Windows 11 22H2中,Aquantia卡開始工作,然后在我更新NIC固件/驅動程序時停止工作;另一個更新(KB5019509)使它再次工作。所以,如果它對你不起作用,可以嘗試另一個網絡適配器或嘗試更新到Windows 11 22H2。注意,這里的問題不是驅動程序沒有PTP硬件支持。
我沒有找到許多支持硬件時間戳的Windows驅動程序。用于I210、I211和I350的Intel E1R驅動程序有支持。
?
一、域控新建策略
計算機策略需要配置在計算機的OU中,不能放在用戶組OU中
二、編輯策略
1、全局配置設置
2、啟用windows NTP客戶端
3、配置windows NTP客戶端
三、配置完成
一段時間后,策略會同步到所有計算機上