20.2. PTP の使用
PTP
を使用するには、対象とするインターフェイス用のカーネルネットワークドライバーがソフトウェアまたはハードウェアのタイムスタンプ機能をサポートしている必要があります。
20.2.1. ドライバーおよびハードウェアサポートの確認 リンクのコピーリンクがクリップボードにコピーされました!
ドライバーがハードウェアタイムスタンプをサポートしていることに加え、NIC も物理的なハードウェアでこの機能をサポートできる必要があります。特定のドライバーおよび NIC のタイムスタンプ機能を検証する最善の方法は、ethtool ユーティリティーを使ってインターフェイスにクエリーすることです。この例では、eth3 がチェックする必要があるインターフェイスです。
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
~]# 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
~]# systemctl start ptp4l
Red Hat Enterprise Linux 7 でのシステムサービスの管理の詳細については、10章systemd によるサービス管理 を参照してください。
コマンドラインからの ptp4l の使用
ptp4l プログラムは、デフォルトでハードウェアタイムスタンプを使用しようとします。ハードウェアタイムスタンプ対応のドライバーおよび NIC で ptp4l を使用するには、使用するネットワークインターフェイスに -i
オプションを指定します。root
で次のコマンドを実行します。
ptp4l -i eth3 -m
~]# ptp4l -i eth3 -m
eth3 は、設定するインターフェイスに置き換えます。以下は、NIC 上の PTP
クロックがマスターに同期された際の ptp4l からの出力例です。
マスターオフセットの値は、マスターからナノ秒で測定されたオフセットです。s0
、s1
、s2
の各ストリングは、異なるクロックのサーボ状態を示しています。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
~]# ptp4l -i eth3 -m -S
20.2.3.1. 遅延測定メカニズムの選択 リンクのコピーリンクがクリップボードにコピーされました!
遅延測定メカニズムには 2 種類あり、以下のように ptp4l
コマンドにオプションを追加することで選択できます。
-P
-P
は peer-to-peer (P2P) の遅延測定メカニズムを選択します。P2P メカニズムはネットワークトポロジーの変更に他のメカニズムよりも速く反応し、遅延の測定がより正確であることから、より好まれます。P2P メカニズムが使用できるのは、各ポートが最大で他の 1 つの P2P ポートで PTP メッセージを交換するトポロジーだけです。これは、透過クロックを含む通信パス上のすべてのハードウェアでサポートされ、使用される必要があります。
-E
-E
は、エンドツーエンド (E2E) の遅延測定メカニズムを選択します。これはデフォルトです。E2E メカニズムは、遅延リクエスト-レスポンスメカニズムとも呼ばれます。
-A
-A
では、遅延測定メカニズムの自動選択を有効にします。自動オプションは、E2E で ptp4l を起動します。ピアの遅延リクエストを受け取ると、P2P モードに変更します。
1 つの PTP
通信パス上のクロックはすべて、遅延を測定するために同じメカニズムを使用する必要があります。以下の場合に警告が表示されます。
- E2E メカニズムを使用しているポートでピアの遅延リクエストを受け取る場合
- P2P メカニズムを使用しているポートで E2E の遅延リクエストを受け取る場合