Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

20.2. PTP の使用

PTP を使用するには、対象とするインターフェイス用のカーネルネットワークドライバーがソフトウェアまたはハードウェアのタイムスタンプ機能をサポートしている必要があります。

20.2.1. ドライバーおよびハードウェアサポートの確認

ドライバーがハードウェアタイムスタンプをサポートしていることに加え、NIC も物理的なハードウェアでこの機能をサポートできる必要があります。特定のドライバーおよび NIC のタイムスタンプ機能を検証する最善の方法は、ethtool ユーティリティーを使ってインターフェイスにクエリーすることです。この例では、eth3 がチェックする必要があるインターフェイスです。

~]# ethtool -T eth3
Time stamping parameters for eth3:
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)
注記

ethtool によって出力される PTP Hardware Clock 値は、PTP ハードウェアクロックのインデックスです。この値は、/dev/ptp* デバイスの名前に対応します。最初の PHC のインデックスは 0 です。

ソフトウェアタイムスタンプのサポートについては、パラメーターリストに以下を含めます。

  • SOF_TIMESTAMPING_SOFTWARE
  • SOF_TIMESTAMPING_TX_SOFTWARE
  • SOF_TIMESTAMPING_RX_SOFTWARE

ハードウェアタイムスタンプのサポートについては、パラメーターリストに以下を含めます。

  • SOF_TIMESTAMPING_RAW_HARDWARE
  • SOF_TIMESTAMPING_TX_HARDWARE
  • SOF_TIMESTAMPING_RX_HARDWARE

20.2.2. PTP のインストール

Red Hat Enterprise Linux のカーネルには、PTP のサポートが含まれています。ユーザー空間のサポートは、linuxptp パッケージのツールで提供されます。linuxptp をインストールするには、以下のコマンドを root で発行します。

~]# yum install linuxptp

これで ptp4l および phc2sys がインストールされます。

システムクロックの時間を設定するサービスを同時に 2 つ以上実行しないでください。NTP を使用して PTP 時間を実行したい場合は、「NTP を使用した PTP 時間の実行」 を参照してください。

20.2.3. ptp4l の起動

ptp4l プログラムはコマンドラインから起動することも、サービスとして起動することもできます。サービスとして実行する場合、オプションは /etc/sysconfig/ptp4l ファイルに指定されます。サービスおよびコマンドラインの両方で使用する必要のあるオプションは /etc/ptp4l.conf ファイルに指定されます。/etc/sysconfig/ptp4l ファイルには -f /etc/ptp4l.conf コマンドラインオプションが含まれ、これにより ptp4l プログラムが /etc/ptp4l.conf ファイルの読み取りと、これに含まれるオプションの処理を実行します。/etc/ptp4l.conf の使用については、「設定ファイルの指定」 で説明されています。各種の異なる ptp4l オプションおよび設定ファイルの設定についての詳細は、ptp4l(8) man ページを参照してください。

ptp4l をサービスとして起動

ptp4l をサービスとして起動するには、root で以下のコマンドを発行します。

~]# systemctl start ptp4l

Red Hat Enterprise Linux 7 でのシステムサービスの管理の詳細については、10章systemd によるサービス管理 を参照してください。

コマンドラインからの ptp4l の使用

ptp4l プログラムは、デフォルトでハードウェアタイムスタンプを使用しようとします。ハードウェアタイムスタンプ対応のドライバーおよび NIC で ptp4l を使用するには、使用するネットワークインターフェイスに -i オプションを指定します。root で次のコマンドを実行します。

~]# ptp4l -i eth3 -m

eth3 は、設定するインターフェイスに置き換えます。以下は、NIC 上の PTP クロックがマスターに同期された際の ptp4l からの出力例です。

~]# ptp4l -i eth3 -m
selected eth3 as PTP clock
port 1: INITIALIZING to LISTENING on INITIALIZE
port 0: INITIALIZING to LISTENING on INITIALIZE
port 1: new foreign master 00a069.fffe.0b552d-1
selected best master clock 00a069.fffe.0b552d
port 1: LISTENING to UNCALIBRATED on RS_SLAVE
master offset -23947 s0 freq +0 path delay    11350
master offset -28867 s0 freq +0 path delay    11236
master offset -32801 s0 freq +0 path delay    10841
master offset -37203 s1 freq +0 path delay    10583
master offset -7275 s2 freq -30575 path delay  10583
port 1: UNCALIBRATED to SLAVE on MASTER_CLOCK_SELECTED
master offset -4552 s2 freq -30035 path delay  10385

マスターオフセットの値は、マスターからナノ秒で測定されたオフセットです。s0s1s2 の各ストリングは、異なるクロックのサーボ状態を示しています。s0 はアンロックされています。s1 はクロックステップで、s2 です。servo がロック状態 (s2) の場合は、pi_offset_const オプションが設定ファイルの正の値 (ptp4l(8) で説明) に設定されていない限り、クロックはステップになりません (徐々に調整されるのみ)。adj 値は、10 億分の 1 (ppb) 単位のクロックの周波数調整です。パス遅延値は、マスターから送信される同期メッセージの遅延 (ナノ秒単位) です。Port 0 は、ローカル PTP 管理に使用される Unix ドメインソケットです。Port 1 は、eth3 インターフェイスです (上の例に基づく)。 INITIALIZING、LISTENING、UNCALIBRATED、および SLAVE は、INITIALIZE、RS_SLAVE、MASTER_CLOCK_SELECTED イベントで変化する可能性のあるポート状態です。最後の状態変更メッセージでは、ポート状態が UNCALIBRATED から SLAVE に変更し、PTP マスタークロックとの同期が成功したことを示しています。

ptp4l からのメッセージのロギング

デフォルトでは、メッセージは /var/log/messages に送信されます。ただし、-m オプションを指定すると標準出力へのロギングが可能になり、これはデバッグで役に立ちます。

ソフトウェアタイムスタンプを有効にするには、以下のように -S オプションを使用する必要があります。

~]# ptp4l -i eth3 -m -S

20.2.3.1. 遅延測定メカニズムの選択

遅延測定メカニズムには 2 種類あり、以下のように ptp4l コマンドにオプションを追加することで選択できます。

-P

-Ppeer-to-peer (P2P) の遅延測定メカニズムを選択します。

P2P メカニズムはネットワークトポロジーの変更に他のメカニズムよりも速く反応し、遅延の測定がより正確であることから、より好まれます。P2P メカニズムが使用できるのは、各ポートが最大で他の 1 つの P2P ポートで PTP メッセージを交換するトポロジーだけです。これは、透過クロックを含む通信パス上のすべてのハードウェアでサポートされ、使用される必要があります。

-E

-E は、エンドツーエンド (E2E) の遅延測定メカニズムを選択します。これはデフォルトです。

E2E メカニズムは、遅延リクエスト-レスポンスメカニズムとも呼ばれます。

-A

-A では、遅延測定メカニズムの自動選択を有効にします。

自動オプションは、E2Eptp4l を起動します。ピアの遅延リクエストを受け取ると、P2P モードに変更します。

注記

1 つの PTP 通信パス上のクロックはすべて、遅延を測定するために同じメカニズムを使用する必要があります。以下の場合に警告が表示されます。

  • E2E メカニズムを使用しているポートでピアの遅延リクエストを受け取る場合
  • P2P メカニズムを使用しているポートで E2E の遅延リクエストを受け取る場合