配置高精度的系统

适用于:Windows Server 2022、Windows Server 2019、Windows Server 2016、Windows 11、Windows 10 版本 1607 和更高版本、Azure Stack HCI 版本 21H2 和 20H2

Windows 10 和 Windows Server 2016 中的时间同步已大幅改善。 在合理的操作条件下,可将系统配置为维持 1ms(毫秒)的精度或更高的精度(依据 UTC)。

警告

Windows Server 2012 R2 及更低版本无法满足同样的高精度目标。 这些操作系统不支持高精度。 在这些版本中,Windows 时间服务满足以下要求:

  • 提供了满足 Kerberos 版本 5 身份验证要求所需的时间精度。
  • 为加入到公共 Active Directory 林的 Windows 客户端和服务器提供了大致准确的时间。

2012 R2 及更低版本的较高容差超出了 Windows 时间服务的设计规范。

Windows 10 和 Windows Server 2016 默认配置

虽然 Windows 10 或 Windows Server 2016 上支持高达 1 ms 的精度,但大多数客户并不需要高度精确的时间。

因此,默认配置旨在满足与先前的操作系统相同的要求,即:

  • 提供满足 Kerberos 版本 5 身份验证要求所需的时间精度。
  • 为加入到公共 Active Directory 林的 Windows 客户端和服务器提供大致准确的时间。

如何配置系统以实现高精度

时间精度需要准确时间从权威时间源到终端设备进行端到端分布。 沿此路径在测量中增加不对称性的任何因素都会负面影响设备上可实现的精度。

出于此原因,我们编写了文档用于针对高精度环境配置 Windows 时间服务的支持边界,其中概述了要实现高精度目标必须满足的环境要求。

操作系统要求

高精度配置需要 Windows 10 或 Windows Server 2016。 时间拓扑中的所有 Windows 设备都必须满足此要求,包括更高层次的 Windows 时间服务器以及在虚拟化方案中运行时间敏感型虚拟机的 Hyper-V 主机。 所有这些设备都必须至少为 Windows 10 或 Windows Server 2016。

警告

强烈建议在已与可靠时间源(如 NTP 服务器)同步的设备上为 Windows 时间服务禁用安全时间种子设定 (STS) 功能。 其中包括 Active Directory 域控制器和成员服务器。 这是因为 STS 专用于更正便携式设备(例如平板电脑和笔记本电脑)上的总时钟不准确问题,而这些问题可能会导致此类设备的电池失效或硬件时钟不可靠。 此外,如果收到包含随机数据的基于 SSL 的握手,STS 可能会错误地设置系统时钟。

有关详细信息,请参阅 Windows Server 2016 的时间精度改进

在下面所示的插图中,需要高精度的虚拟机运行 Windows 10 或 Windows Server 2016。 同样,虚拟机所在的 Hyper-V 主机以及上游 Windows 时间服务器也必须运行 Windows Server 2016。

A diagram that shows three virtual machines connected to a Windows Server 2016 Hyper-V host utilizing the Windows Time service.

提示

可以在命令提示符下运行命令 winver 来验证 OS 版本是否为 1607(或更高版本),以及 OS 版本是否为 14393(或更高版本),如下所示:

A screenshot of the winver command displaying Windows Server 2016 version 1607 and operating system build 14393.

系统配置

达到高精度目标需要进行系统配置。 可以通过多种方式来执行此配置,包括直接在注册表中执行或通过组策略。 有关这些设置的详细信息,请参阅 Windows 时间服务技术参考:Windows 时间服务工具

Windows 时间服务启动类型

Windows 时间服务 (W32Time) 必须持续运行。 为此,请将 Windows 时间服务的启动类型配置为“自动”启动。

A screenshot of the Windows Time service properties box displaying its startup type set to automatic.

累积单向网络延迟

测量不确定性和“噪音”会增加网络延迟。 因此,网络延迟必须在合理的范围内。 具体要求取决于目标精度,用于针对高精度环境配置 Windows 时间服务的支持边界中提供了概述。

若要计算累积单向网络延迟,请将时间拓扑(从目标开始,到高精度第 1 层次时间源结束)中的 NTP 客户端 - 服务器节点对之间的各个单向延迟进行相加。

例如:请考虑包含高精度源、两个中间 NTP 服务器 A 和 B 以及按此顺序排列的目标计算机的时间同步层次结构。 若要获取目标和源之间的累计网络延迟,请测量以下项之间各自的平均 NTP 往返时间 (RTT):

  • 目标和时间服务器 B
  • 时间服务器 B 和时间服务器 A
  • 时间服务器 A 和源

可以使用收件箱 w32tm.exe 工具获取此度量。 若要实现此目的,请执行以下操作:

  1. 从目标和时间服务器 B 执行计算。

    w32tm /stripchart /computer:TimeServerB /rdtsc /samples:450 > c:\temp\Target_TsB.csv
    
  2. 从时间服务器 B 对(指向)时间服务器 A 执行计算。

    w32tm /stripchart /computer:TimeServerA /rdtsc /samples:450 > c:\temp\Target_TsA.csv
    
  3. 从时间服务器 A 对源执行计算。

  4. 接下来,添加在上一步中测量的平均 RoundTripDelay 并除以 2,获取目标和源之间的累计网络延迟。

注册表设置

MinPollInterval

配置允许系统轮询的最小间隔(以 log2 秒为单位)。

说明
密钥位置 HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Config
设置 6
结果 最小轮询间隔现为 64 秒。

以下命令将指示 Windows 时间获取更新的设置:

w32tm /config /update

MaxPollInterval

配置允许系统轮询的最大间隔(以 log2 秒为单位)。

说明
密钥位置 HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Config
设置 6
结果 最大轮询间隔现为 64 秒。

以下命令将指示 Windows 时间获取更新的设置:

w32tm /config /update

UpdateInterval

相位校正调整之间的时钟周期数。

说明
密钥位置 HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Config
设置 100
结果 相位校正调整之间的时钟周期数现为 100。

以下命令将指示 Windows 时间获取更新的设置:

w32tm /config /update

SpecialPollInterval

配置启用 SpecialInterval 0x1 标志后的轮询间隔(以秒为单位)。

说明
密钥位置 HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient
设置 64
结果 轮询间隔现为 64 秒。

以下命令将重新启动 Windows 时间以获取更新的设置:

net stop w32time && net start w32time

FrequencyCorrectRate

说明
密钥位置 HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Config
设置 2

注意

若要详细了解 W32Time 注册表设置,请参阅 Windows 时间注册表参考