第17章 ptp4l を使用した PTP の設定

17.1. PTP の概要

Precision Time Protocol (PTP) は、ネットワーク内でのクロック同期に使用されるプロトコルです。ハードウェアサポートと合わせて使用すると PTP はマイクロ秒以下の正確性があり、これは NTP で得られる正確性よるもはるかに優れています。PTP サポートは、カーネルとユーザースペースに分けられます。Red Hat Enterprise Linux のカーネルには PTP クロックのサポートが含まれており、これはネットワークドライバーが提供しています。実際のプロトコル実装は linuxptp と呼ばれ、これは Linux の IEEE 標準 1588 に準拠した PTPv2 実装です。
linuxptp パッケージには、クロック同期用の ptp4l および phc2sys プログラムが含まれています。ptp4l プログラムは、PTP 境界クロックと通常のクロックを実装します。ハードウェアタイムスタンプでは PTP ハードウェアクロックのマスタークロックとの同期に使用され、ソフトウェアタイムスタンプではシステムクロックのマスタークロックとの同期に使用されます。phc2sys プログラムは、システムクロックを network interface card (NIC) 上の PTP ハードウェアクロックと同期するハードウェアタイムスタンプでのみ必要となります。

17.1.1. PTP を理解する

PTP で同期するクロックは、マスター/スレーブ階層で組織されています。スレーブはマスターと同期し、このマスターは別のマスターのスレーブとなっています。この階層は、best master clock (BMC) アルゴリズムで作成され、自動的に更新されます。このアルゴリズムは、すべてのクロック上で実行されます。クロックにポートが 1 つしかない場合、これはマスター にも スレーブ にもなることができ、ordinary clock (OC: 通常のクロック) と呼ばれます。複数のポートがあるクロックではあるポートではマスターに、別のポートではスレーブになることができ、boundary clock (BC: 境界クロック) と呼ばれます。トップレベルのクロックは グランドマスタークロック と呼ばれ、全地球測位システム (GPS) の時間ソースを使って同期できます。GPS ベースの時間ソースを使うことで、高度の正確性を保って異なるネットワークが同期可能になります。

図17.1 PTP グランドマスター、境界、スレーブの各クロック

17.1.2. PTP の利点

PTPNetwork Time Protocol (NTP) よりも優れている点の 1 つは、さまざまな network interface controllers (NIC) およびネットワークスイッチにあるハードウェアサポートです。この特化されたハードウェアにより、PTP はメッセージ送信の遅れを説明でき、時間同期の精度を大幅に高められます。ネットワーク内で PTP 以外に対応するハードウェアコンポーネントを使用することは可能ですが、その場合、変動が増えたり、遅れが非対称となったりして、同期が不正確になります。通信パスで使用される PTP を認識しないコンポーネントが複数あると、これがさらに増幅します。最高の精度を達成するには、PTP クロック間のすべてのネットワークコンポーネントが PTP ハードウェア対応となっていることが推奨されます。ネットワークハードウェアがのすべてが PTP をサポートしているわけではない大型のネットワークにおける時間同期には、NTP が適している場合があります。
ハードウェア PTP サポートでは、NIC には自らのボード上のクロックが備わります。これは、送受信される PTP メッセージのタイムスタンプに使われます。PTP マスターに同期されるのはこのボード上のクロックで、コンピューターのシステムクロックは NIC 上の PTP ハードウェアクロックに同期されます。ソフトウェア PTP サポートでは、システムクロックが PTP メッセージのタイムスタンプに使われ、直接 PTP マスターに同期されます。ソフトウェア PTP サポートではオペレーティングシステムによる追加の PTP パケット処理を必要としますが、ハードウェア PTP サポートでは、NIC が PTP パケットの送受信時の瞬間にタイムスタンプができるので、より優れた正確性が得られます。