19.2. PTP の使用

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

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

ドライバーがハードウェアタイムスタンプをサポートしていることに加え、NIC も物理的なハードウェアでこの機能をサポートできる必要があります。特定のドライバーおよび NIC のタイムスタンプ機能を検証する最善の方法は、以下のように ethtool ユーティリティーを使ってインターフェースにクエリーすることです。
~]# 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)
ここでの eth3 は、チェックするインターフェースになります。
ソフトウェアタイムスタンプのサポートについては、パラメーター一覧に以下を含めます。
  • SOF_TIMESTAMPING_SOFTWARE
  • SOF_TIMESTAMPING_TX_SOFTWARE
  • SOF_TIMESTAMPING_RX_SOFTWARE
ハードウェアタイムスタンプのサポートについては、パラメーター一覧に以下を含めます。
  • SOF_TIMESTAMPING_RAW_HARDWARE
  • SOF_TIMESTAMPING_TX_HARDWARE
  • SOF_TIMESTAMPING_RX_HARDWARE

19.2.2. PTP のインストール

Red Hat Enterprise Linux のカーネルには、PTP のサポートが含まれています。ユーザースペースのサポートは、linuxptp パッケージ内のツールが提供します。linuxptp をインストールするには、以下のコマンドを root で発行します。
~]# yum install linuxptp
これで ptp4lphc2sys がインストールされます。
システムクロックの時間を設定するサービスを同時に 2 つ以上実行しないでください。NTP を使用して PTP 時間を実行したい場合は、「NTP を使った PTP 時間の実行」 を参照してください。

19.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 はロックになります。サーボがロック状態 (s2) になると、(ptp4l(8) man ページの説明にあるように) pi_offset_const が設定ファイルでプラスの値に設定されている場合を除いて、クロックはステップされません (ゆっくり調整されるのみ)。adj の値は、10 億分の 1 (ppb) で表されるクロックの周波数調整です。path delay の値は、ナノ秒で表されるマスターから送信された同期メッセージの予想遅延です。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

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

遅延測定メカニズムには 2 種類あり、以下のように ptp4l コマンドにオプションを追加することで選択できます。
-P
-P オプションは ピアツーピア (P2P) 遅延測定メカニズムを選択します。
P2P メカニズムはネットワークトポロジーの変更に他のメカニズムよりも速く反応し、遅延の測定がより正確であることから、より好まれます。P2P メカニズムが使用できるのは、各ポートが最大で他の 1 つの P2P ポートで PTP メッセージを交換するトポロジーだけです。これは、透過クロックを含む通信パス上のすべてのハードウェアでサポートされ、使用される必要があります。
-E
-E オプションは、エンドツーエンド (E2E) 遅延測定メカニズムを選択します。これがデフォルトです。
E2E メカニズムは、遅延 リクエスト-レスポンス メカニズムとも呼ばれます。
-A
-A オプションは、遅延測定メカニズムの自動選択を有効にします。
自動オプションは、E2E モードで ptp4l を起動します。ピアの遅延リクエストを受け取ると、P2P モードに変更します。

注記

単一の PTP 通信パス上にあるクロックはすべて、遅延測定で同一のメカニズムを使用する必要があります。以下の場合に警告が表示されます。
  • E2E メカニズムを使用しているポートでピアの遅延リクエストを受け取る場合
  • P2P メカニズムを使用しているポートで E2E の遅延リクエストを受け取る場合