Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
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_HARDWARE
和 SOF_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 软件包中的 ptp4l 和 phc2sys 程序,以使用 PTP
同步系统时钟。该配置在 第 20 章 使用 ptp4l 配置 PTP 中描述。配置 chronyd 以使用其他接口提供系统时间:
例 18.7. 配置 chronyd 以使用其他接口提供系统时间
bindaddress 203.0.113.74 hwtimestamp eth1 local stratum 1