14.5. ハードウェアのタイムスタンプを使用した Chrony


一部のネットワークインターフェイスコントローラー (NIC) のハードウェアタイムスタンプ (HW) は、着信パケットと発信パケットの正確なタイムスタンプを提供します。NTP タイムスタンプは通常、カーネルにより作成され、システムクロックを使用して chronyd が作成されます。ただし、ハードウェアのタイムスタンプが有効な場合、NIC は独自のクロックを使用して、パケットがリンク層または物理層に出入りするときにタイムスタンプを生成します。ハードウェアスタンプで NTP を使用すると、同期の精度を大幅に向上できます。最高精度を実現するには、NTP サーバーおよび NTP クライアントの両方が、ハードウェアのタイムスタンプを使用している必要があります。理想的な条件下では、サブマイクロ秒単位の精度を実現できるかもしれません。

ハードウェアのタイムスタンプを使用する時間同期の別のプロトコルには、PTP があります。

NTP とは異なり、PTP は、ネットワークスイッチおよびルーターの補助に依存しています。最高の同期精度を実現する場合は、PTP をサポートするスイッチやルーターがあるネットワークでは PTP を使用し、そのようなスイッチやルーターがないネットワークでは NTP を選択してください。

14.5.1. ハードウェアタイムスタンプのサポートの確認

NTP を使用したハードウェアのタイムスタンプがインターフェイスでサポートされていることを確認するには、ethtool -T コマンドを実行します。ethtool が、SOF_TIMESTAMPING_TX_HARDWARE 機能、SOF_TIMESTAMPING_TX_SOFTWARE 機能、および HWTSTAMP_FILTER_ALL フィルターモードをリスト表示する場合は、NTP を使用して、ハードウェアのタイムスタンプにインターフェイスを使用できます。

手順

  • デバイスのタイムスタンプ機能と、関連する PTP ハードウェアクロックを表示します。
# ethtool -T enp1s0

14.5.2. ハードウェアのタイムスタンプの有効化

/etc/chrony.conf ファイルの hwtimestamp ディレクティブを使用して、1 つまたは複数のインターフェイスでハードウェアタイムスタンプを有効にできます。ディレクティブは、個別のインターフェイスを指定できますが、ワイルドカード文字を使用して、ハードウェアのタイムスタンプをサポートするすべてのインターフェイスでハードウェアのタイムスタンプを有効にすることもできます。

手順

  1. /etc/chrony.conf ファイルを編集し、次の変更を加えます。

    1. ハードウェアタイムスタンプをサポートするインターフェイスに hwtimestamp 設定を追加します。以下に例を示します。

      hwtimestamp enp1s0
      hwtimestamp eno*

      ptp4l などの他のアプリケーションがハードウェアタイムスタンプを使用していない場合は、ワイルドカード * を使用できます。

    2. minpoll および maxpoll オプションをサーバー設定に追加して、短いクライアントポーリング間隔を設定します。次に例を示します。

      server ntp.example.comlocal minpoll 0 maxpoll 0

      ハードウェアタイムスタンプの場合、システムクロックのオフセットを最小限に抑えるために、デフォルトの範囲 (64 - 1024 秒) よりも短いポーリング間隔を設定する必要があります。

    3. サーバー設定に xleave オプションを追加して、NTP インターリーブモードを有効にします。

      server ntp.example.comlocal minpoll 0 maxpoll 0 xleave

      この設定では、chrony はパケットを送信した後にのみハードウェア送信タイムスタンプを取得します。この動作により、サーバーが応答するパケット内のタイムスタンプを、サーバーが保存できなくなります。xleave オプションを使用すると、chrony は送信後に生成された送信タイムスタンプを受信できます。

    4. オプション: サーバーでクライアントのアクセスのロギング用に割り当てられるメモリーの最大サイズを増やします。次に例を示します。

      clientloglimit 100000000

      デフォルトのサーバー設定では、数千のクライアントが同時にインターリーブモードを使用できます。clientloglimit 設定の値を増やすことで、多数のクライアントに対応するサーバーを設定できます。

  2. chronyd サービスを再起動します。

    # systemctrl restart chronyd

検証

  1. オプション: /var/log/messages ログファイルでハードウェアタイムサンプリングが有効になっていることを確認します。

    chronyd[4081]: Enabled HW timestamping on enp1s0
    chronyd[4081]: Enabled HW timestamping on eno1
  2. chronyd が NTP クライアントまたはピアとして設定されている場合、送信および受信タイムスタンプモードとインターリーブモードを表示します。

    # chronyc ntpdata
    
    Output:
    
    [literal,subs="+quotes,verbatim,normal"]
    
    
    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
  3. NTP 測定の安定性を表示します。

    # chronyc sourcestats
    
    Output:
    
    [literal,subs="+quotes,verbatim,normal"]
    ....
    
    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
    ....

この安定性は、Std Dev 列に表示されます。ハードウェアタイムスタンプを有効にすると、NTP 測定の安定性は、通常の負荷で数十または数百ナノ秒になります。

14.5.3. PTP-NTP ブリッジの設定

非常に精度が高い PTP (Precision Time Protocol) のプライマリータイムセーバーが、PTP サポートのあるスイッチまたはルーターを持たないネットワークで利用可能な場合、コンピューターは、PTP スレーブおよび stratum-1 の NTP サーバーとしての操作に専念する可能性があります。このようなコンピューターには、2 つ以上のネットワークインターフェイスが必要であり、プライマリータイムサーバーの近くに配置するか、プライマリータイムサーバーに直接接続する必要があります。これにより、ネットワークで非常に精度の高い同期が確実に実行されます。

手順

  1. 1 つのインターフェイスを使用して、PTP でシステムクロックを同期するように、linuxptp パッケージの ptp4l プログラムおよび phc2sys プログラムを設定します。
  1. chronyd を設定して、その他のインターフェイスを使用してシステム時間を提供するには、以下を行います。

    bindaddress 203.0.113.74
    hwtimestamp enp1s0
    local stratum 1
  2. chronyd サービスを再起動します。

    # systemctrl restart chronyd
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.