18.6. 带有 HW 时间戳的 Chrony


18.6.1. 了解硬件时间戳

硬件时间戳是一些网络接口控制器(NIC)支持的一项功能,它提供传入和传出数据包的准确时间戳。NTP 时间戳通常由内核及使用系统时钟的 chronyd 创建。但是,当启用 HW 时间戳时,NIC 使用自己的时钟在数据包进入或离开链路层或物理层时生成时间戳。与 NTP 一起使用时,硬件时间戳可以显著提高同步的准确性。为了获得最佳准确性,NTP 服务器和 NTP 客户端都需要使用硬件时间戳。在理想条件下,可能还会有次微秒的准确性。

另一个用于使用硬件时间戳进行时间同步的协议是 PTP有关 PTP 的详情请参考 第 20 章 使用 ptp4l 配置 PTP。与 NTP 不同,PTP 依赖于网络交换机和路由器。如果您想要达到同步的最佳准确性,请在带有 PTP 支持的网络中使用 PTP,在使用不支持这个协议的交换机和路由器的网络上选择 NTP

18.6.2. 验证硬件时间戳支持

要验证接口是否支持使用 NTP 的硬件时间戳,请使用 ethtool -T 命令。如果 ethtool 列出了 SOF_TIMESTAMPING_TX_HARDWARESOF_TIMESTAMPING_TX_SOFTWARE 模式,以及 HWTSTAMP_FILTER_ ALL 过滤器模式,则可以使用硬件时间戳的 NTP

例 18.2. 在特定界面上验证硬件时间戳支持

~]# ethtool -T eth0

输出:

Timestamping parameters for eth0:
Capabilities:
    hardware-transmit   (SOF_TIMESTAMPING_TX_HARDWARE)
    software-transmit   (SOF_TIMESTAMPING_TX_SOFTWARE)
    hardware-receive   (SOF_TIMESTAMPING_RX_HARDWARE)
    software-receive   (SOF_TIMESTAMPING_RX_SOFTWARE)
    software-system-clock (SOF_TIMESTAMPING_SOFTWARE)
    hardware-raw-clock  (SOF_TIMESTAMPING_RAW_HARDWARE)
PTP Hardware Clock: 0
Hardware Transmit Timestamp Modes:
    off          (HWTSTAMP_TX_OFF)
    on          (HWTSTAMP_TX_ON)
Hardware Receive Filter Modes:
    none         (HWTSTAMP_FILTER_NONE)
    all          (HWTSTAMP_FILTER_ALL)
    ptpv1-l4-sync     (HWTSTAMP_FILTER_PTP_V1_L4_SYNC)
    ptpv1-l4-delay-req  (HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ)
    ptpv2-l4-sync     (HWTSTAMP_FILTER_PTP_V2_L4_SYNC)
    ptpv2-l4-delay-req  (HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ)
    ptpv2-l2-sync     (HWTSTAMP_FILTER_PTP_V2_L2_SYNC)
    ptpv2-l2-delay-req  (HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ)
    ptpv2-event      (HWTSTAMP_FILTER_PTP_V2_EVENT)
    ptpv2-sync      (HWTSTAMP_FILTER_PTP_V2_SYNC)
    ptpv2-delay-req    (HWTSTAMP_FILTER_PTP_V2_DELAY_REQ)

18.6.3. 启用硬件时间戳

要启用硬件时间戳,请使用 /etc/chrony.conf 文件中的 hwtimestamp 指令。该指令可以指定单个接口,也可以使用通配符()在支持它的所有接口上启用硬件时间戳。如果 linuxptp 软件包 中没有其它应用程序(如 [application]*ptp4l )在接口中使用硬件时间戳,请使用通配符规格。在 chrony 配置文件中允许使用多个 hwtimestamp 指令。

例 18.3. 使用 hwtimestamp 指令启用硬件时间戳

hwtimestamp eth0
hwtimestamp eth1
hwtimestamp *

18.6.4. 配置客户端轮询间隔

建议为互联网中的服务器使用默认的轮询间隔范围(64-1024秒)。对于本地服务器和硬件时间戳,需要配置一个较短的轮询间隔,以便最小化系统时钟偏差。

/etc/chrony.conf 中的以下指令使用一秒轮询间隔指定本地 NTP 服务器:

server ntp.local minpoll 0 maxpoll 0

18.6.5. 启用交集模式

不是硬件 NTP 设备,但一般情况下运行软件 NTP 实施的计算机(如 chrony )的 NTP 服务器只有在发送数据包后才会获得硬件传输时间戳。此行为可防止服务器在它对应的数据包中保存时间戳。要启用 NTP 客户端接收传输时间戳后生成的传输时间戳,请将客户端配置为使用 NTP 交集模式,方法是在 /etc/chrony.conf 的 server 指令中添加 xleave 选项:

server ntp.local minpoll 0 maxpoll 0 xleave

18.6.6. 为大量客户端配置服务器

默认服务器配置允许几千个客户端同时使用交集模式。要为更多的客户端配置服务器,增大 /etc/chrony.conf 中的 clientloglimit 指令。这个指令指定为服务器中客户端访问的日志分配的最大内存大小:

clientloglimit 100000000

18.6.7. 验证硬件时间戳

要校验该接口是否已成功启用了硬件时间戳,请检查系统日志。日志应包含来自 chronyd 的每个接口的消息,并成功启用硬件时间戳。

例 18.4. 带有 Enabled Hardware Timestamping 的接口的日志消息

chronyd[4081]: Enabled HW timestamping on eth0
chronyd[4081]: Enabled HW timestamping on eth1

chronyd 配置为 NTP 客户端或对等时,您可以有传输和接收时间戳模式,以及 chronyc ntpdata 命令为每个 NTP 源报告交集模式:

例 18.5. 报告每个 NTP 源的转换、接收时间戳和交集模式

~]# chronyc ntpdata

输出:

Remote address : 203.0.113.15 (CB00710F)
Remote port   : 123
Local address  : 203.0.113.74 (CB00714A)
Leap status   : Normal
Version     : 4
Mode      : Server
Stratum     : 1
Poll interval  : 0 (1 seconds)
Precision    : -24 (0.000000060 seconds)
Root delay   : 0.000015 seconds
Root dispersion : 0.000015 seconds
Reference ID  : 47505300 (GPS)
Reference time : Wed May 03 13:47:45 2017
Offset     : -0.000000134 seconds
Peer delay   : 0.000005396 seconds
Peer dispersion : 0.000002329 seconds
Response time  : 0.000152073 seconds
Jitter asymmetry: +0.00
NTP tests    : 111 111 1111
Interleaved   : Yes
Authenticated  : No
TX timestamping : Hardware
RX timestamping : Hardware
Total TX    : 27
Total RX    : 27
Total valid RX : 27

例 18.6. 报告 NTP 测量的稳定性

# chronyc sourcestats

启用硬件时间戳后,NTP 测量的稳定性应该以十秒或数百纳秒为单位,处于正常负载下。此稳定性会在 chronyc sourcestats 命令的输出结果的 Std Dev 列中报告:

输出:

210 Number of sources = 1
Name/IP Address      NP NR Span Frequency Freq Skew Offset Std Dev
ntp.local         12  7  11   +0.000   0.019   +0ns  49ns

18.6.8. 配置 PTP-NTP 桥接

如果网络中存在一个高度准确的 Precision Time Protocol (PTP) grandmaster,但没有支持 PTP 支持的交换机或路由器,则一个计算机会可能会被指定专门用于作为 PTP slave 和一个 stratum-1 NTP 服务器。此类计算机需要两个或多个网络接口,并且与降电员接近或与之直接连接。这样可保证高度准确的网络同步。

配置 linuxptp 软件包中的 ptp4lphc2sys 程序,以使用 PTP 同步系统时钟。该配置在 第 20 章 使用 ptp4l 配置 PTP 中描述。配置 chronyd 以使用其他接口提供系统时间:

例 18.7. 配置 chronyd 以使用其他接口提供系统时间

bindaddress 203.0.113.74
hwtimestamp eth1
local stratum 1
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.