11.9. Compute ノードの Timemaster との同期
この機能は、本リリースでは テクノロジープレビュー として提供しているため、Red Hat では全面的にはサポートしていません。これは、テスト用途にのみご利用いただく機能です。実稼働環境にはデプロイしないでください。テクノロジープレビュー機能の詳細は、対象範囲の詳細 を参照してください。
時刻プロトコルを使用して、システム間で一貫性のあるタイムスタンプを維持します。
Red Hat OpenStack Platform (RHOSP) には、Precision Time Protocol (PTP) および Network Time Protocol (NTP) のサポートが含まれています。
NTP を使用して、ネットワークのクロックをミリ秒の範囲で同期できます。また、PTP を使用して、クロックをより高いサブマイクロ秒単位の正確さで同期できます。PTP のユースケースの例として、高いスループットと高い干渉のリスクを提供する複数のアンテナが含まれる仮想ラジオアクセスネットワーク (vRAN) があります。
Timemaster は、ptp4l
とphc2sys
をchronyd
またはntpd
と組み合わせて使用し、システムクロックを NTP や PTP タイムソースに同期させるプログラムです。phc2sys
およびptp4l
プログラムは、SHM (Shared Memory Driver) 基準クロックを使用して PTP 時間をchronyd
またはntpd
に送信し、タイムソースを比較してシステムクロックを同期させます。
Red Hat Enterprise Linux (RHEL) カーネルにおける PTPv2 プロトコルの実装はlinuxptp
です。
linuxptp
パッケージには、PTP バウンダリクロックと通常クロック同期用のptp4l
プログラムと、ハードウェアタイムスタンプ用のphc2sys
プログラムが含まれています。PTP の詳細は、Red Hat Enterprise Linux System Administrator's Guideの Introduction to PTP を参照してください。
Chrony は NTP プロトコルの実装です。Chrony の主な設定要素は、Chrony デーモンであるchronyd
と、Chrony コマンドラインインターフェイスであるchonyc
の 2 つです。
Chrony の詳細は、Red Hat Enterprise Linux システム管理者ガイド の Chrony スイートを使用して NTP を設定する を参照してください。
以下の図は、PTP 設定でのパケット移動の概要です。
図11.1 PTP パケット移動の概要
以下の図は、PTP 設定の Compute ノードでのパケット移動の概要です。
図11.2 PTP パケット移動の詳細
11.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)
透過型または境界クロックのスイッチを使用して、正確性が高く、レイテンシーを低くすることができます。境界クロックにアップリンクスイッチを使用できます。バウンダリクロックスイッチは、PTPv2 ヘッダーの 8 ビットのcorrectionField
を使用して、遅延の変動を補正し、エンドクロックの精度を高めます。透過的なクロックスイッチでは、correctionField
ではなく、エンドクロックが遅延変動を計算します。
11.9.2. Timemaster の設定
オーバークラウドノードの時刻同期に使用するデフォルトの Red Hat OpenStack Platform (RHOSP) サービスは OS::TripleO::Services::Timesync
です。
既知の制限
- 仮想コントローラー向けに NTP を有効にし、ベアメタルノード用に PTP を有効にします。
-
ptp4l
には互換性のある PTP デバイスが必要なため、virtio インターフェイスには互換性がありません。 -
SR-IOV を使用する仮想マシンに Physical Function (PF) を使用します。Virtual Function (VF) は PTP に必要なレジスターを公開せず、仮想マシンは
kvm_ptp
を使用して時刻を計算します。 - 複数のソースと複数のネットワークパスを持つ高可用性 (HA) インターフェイスには互換性がありません。
手順
選択したロールに属するノードで Timemaster サービスを有効にするには、そのロールの
roles_data.yaml
ファイルセクションで、OS::TripleO::Services::Timesync
が含まれる行をOS::TripleO::Services::TimeMaster
行に置き換えます。#- OS::TripleO::Services::Timesync - OS::TripleO::Services::TimeMaster
使用する Compute ロールの heat パラメーターを設定します。
#Example ComputeSriovParameters: PTPInterfaces: ‘0:eno1,1:eno2’ PTPMessageTransport: ‘UDPv4’
ご自分の環境に該当するその他の環境ファイルと共に、新しい環境ファイルを
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> を、オーバークラウドのデプロイメントプロセスに追加する新しい環境ファイルに置き換えます。
検証
ptp4linux
と共にインストールされたコマンドphc_ctl
を使用して NIC ハードウェアクロックにクエリーを実行します。# phc_ctl <clock_name> get # phc_ctl <clock_name> cmp
11.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
11.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