搜索

10.9. 将您的计算节点与 Timemaster 同步

download PDF

该功能在此发行版本中作为技术预览提供,因此不享有红帽的全面支持。它只应用于测试,不应部署在生产环境中。有关技术预览功能的更多信息,请参阅覆盖范围详细信息

使用时间协议在系统之间保持一致的时间戳。

Red Hat OpenStack Platform(RHOSP)包括对 Precision Time Protocol(PTP)和网络时间协议(NTP)的支持。

您可以使用 NTP 在 millisecond 范围内同步网络中的时钟,您可以使用 PTP 将时钟同步到更高、微秒的准确性。PTP 用例的示例是虚拟无线电访问网络(vRAN),它包含多个 antennas,它提供更高的吞吐量,并具有更高的干扰风险。

timemaster 是一个使用 ptp4lphc2syschronydntpd 结合的程序,将系统时钟与 NTP 和 PTP 时间源同步。phc2sysptp4l 程序使用 Shared Memory Driver(SHM)引用时钟将 PTP 时间发送到 chronydntpd,后者与时间源与系统时钟进行比较。

Red Hat Enterprise Linux(RHEL)内核中的 PTPv2 协议的实现是 linuxptp

linuxptp 软件包包括 PTP 边界时钟和普通时钟同步的 ptp4l 程序,以及硬件时间戳的 phc2sys 程序。有关 PTP 的更多信息,请参阅 Red Hat Enterprise Linux 系统管理员指南中的 PTP 简介

Chrony 是 NTP 协议的实现。Chrony 的两个主要组件是 chronyd (Chrony 守护进程),chronyc 守护进程是 Chrony 命令行界面。

有关 Chrony 的更多信息,请参阅 配置基本系统设置指南中的使用 Chrony 套件配置 NTP

以下镜像是 PTP 配置中数据包之旅概述。

图 10.1. PTP 数据包之旅概述

PTP 数据包之旅概述

以下镜像是 PTP 配置中 Compute 节点上的数据包之旅概述。

图 10.2. PTP 数据包之旅详情

PTP 数据包之旅详情

10.9.1. timemaster 硬件要求

请确定您有以下硬件功能:

  • 您已使用硬件时间戳功能配置了 NIC。
  • 您已将交换机配置为允许多播数据包。
  • 您已将交换机配置为作为边界或透明时钟。

您可以使用 ethtool -T <device> 命令验证硬件时间戳。

$ ethtool -T p5p1
Time stamping parameters for p5p1:
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: 6
Hardware Transmit Timestamp Modes:
        off                   (HWTSTAMP_TX_OFF)
        on                    (HWTSTAMP_TX_ON)
Hardware Receive Filter Modes:
        none                  (HWTSTAMP_FILTER_NONE)
        ptpv1-l4-sync         (HWTSTAMP_FILTER_PTP_V1_L4_SYNC)
        ptpv1-l4-delay-req    (HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ)
        ptpv2-event           (HWTSTAMP_FILTER_PTP_V2_EVENT)

您可以使用透明或边界时钟交换机,提高准确性和延迟。您可以为边界时钟使用 uplink 开关。边界时钟切换使用 PTPv2 标头上的 8 位 correctionField 更正延迟变体,并确保最终时钟的准确性更大。在透明时钟切换中,最终时钟将计算延迟变化,而不是 correctionField

10.9.2. 配置 Timemaster

overcloud 节点上的时间同步的默认 Red Hat OpenStack Platform(RHOSP)服务是 OS::TripleO::Services::Timesync

已知限制

  • 为虚拟化控制器启用 NTP,并为裸机节点启用 PTP。
  • VirtIO 接口不兼容,因为 ptp4l 需要兼容的 PTP 设备。
  • 对带有 SR-IOV 的虚拟机使用物理功能(PF)。虚拟功能(VF)不会公开 PTP 所需的寄存器,虚拟机使用 kvm_ptp 来计算时间。
  • 具有多个源的高可用性(HA)接口以及多个网络路径不兼容。

流程

  1. 要在属于您选择的角色的节点上启用 Timemaster 服务,请将包含 OS::TripleO::Services::Timesync 的行替换为 role _data.yaml 文件中的 roles ::TripleO::Services::TimeMaster

    #- OS::TripleO::Services::Timesync
    - OS::TripleO::Services::TimeMaster
  2. 为您使用的计算角色配置 heat 参数。

    #Example
    ComputeSriovParameters:
      PTPInterfaces: ‘0:eno1,1:eno2’
      PTPMessageTransport: ‘UDPv4’
  3. openstack overcloud deploy 命令中包含新环境文件,以及其他与您环境相关的环境文件:

    $ openstack overcloud deploy \
    --templates \
    
    …
    -e <existing_overcloud_environment_files> \
    -e <new_environment_file1> \
    -e <new_environment_file2> \
    …
    • 使用现有部署一部分的环境文件列表替换。<existing_overcloud_environment_files>
    • 将 <new_environment_file> 替换为您要包含在 overcloud 部署过程中的新环境文件或文件。

验证

  • 使用命令 phc_ctl,使用 ptp4linux 安装以查询 NIC 硬件时钟。

    # phc_ctl <clock_name> get
    # phc_ctl <clock_name> cmp

10.9.3. timemaster 配置示例

$ cat /etc/timemaster.conf
# Configuration file for timemaster

#[ntp_server ntp-server.local]
#minpoll 4
#maxpoll 4

[ptp_domain 0]
interfaces eno1
#ptp4l_setting network_transport l2
#delay 10e-6

[timemaster]
ntp_program chronyd

[chrony.conf]
#include /etc/chrony.conf
server clock.redhat.com iburst minpoll 6 maxpoll 10

[ntp.conf]
includefile /etc/ntp.conf

[ptp4l.conf]
#includefile /etc/ptp4l.conf
network_transport L2

[chronyd]
path /usr/sbin/chronyd

[ntpd]
path /usr/sbin/ntpd
options -u ntp:ntp -g

[phc2sys]
path /usr/sbin/phc2sys
#options -w

[ptp4l]
path /usr/sbin/ptp4l
#options -2 -i eno1

10.9.4. timemaster 操作示例

$ systemctl status timemaster
● timemaster.service - Synchronize system clock to NTP and PTP time sources
   Loaded: loaded (/usr/lib/systemd/system/timemaster.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2020-08-25 19:10:18 UTC; 2min 6s ago
 Main PID: 2573 (timemaster)
    Tasks: 6 (limit: 357097)
   Memory: 5.1M
   CGroup: /system.slice/timemaster.service
           ├─2573 /usr/sbin/timemaster -f /etc/timemaster.conf
           ├─2577 /usr/sbin/chronyd -n -f /var/run/timemaster/chrony.conf
           ├─2582 /usr/sbin/ptp4l -l 5 -f /var/run/timemaster/ptp4l.0.conf -H -i eno1
           ├─2583 /usr/sbin/phc2sys -l 5 -a -r -R 1.00 -z /var/run/timemaster/ptp4l.0.socket -t [0:eno1] -n 0 -E ntpshm -M 0
           ├─2587 /usr/sbin/ptp4l -l 5 -f /var/run/timemaster/ptp4l.1.conf -H -i eno2
           └─2588 /usr/sbin/phc2sys -l 5 -a -r -R 1.00 -z /var/run/timemaster/ptp4l.1.socket -t [0:eno2] -n 0 -E ntpshm -M 1

Aug 25 19:11:53 computesriov-0 ptp4l[2587]: [152.562] [0:eno2] selected local clock e4434b.fffe.4a0c24 as best master
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.