Precision Time Protocol

Precision Time Protocol は、コンピュータネットワーク全体でクロックを同期させるために使用される通信プロトコルである。

Local Area Networkにおいてマイクロ秒以下の精度のクロック同期を達成し、測定や制御システムにも使用できるようにする。PTPは現在、金融取引、携帯電話の基地局、海底音響アレイ、および正確なタイミングを必要とするが衛星ナビゲーション信号を使用できないネットワークの同期に使用されている。

PTPは当初、2002年に発行されたIEEE 1588-2002 //"Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control Systems"//において定義された。2008年に、改訂規格 IEEE 1588-2008がリリースされた。これは「PTPバージョン2」とも呼ばれ、精度や堅牢性を向上させたが、元の2002年バージョンとの下位互換性はない。

「IEEE 1588は、NTPとGPSという2つの主要プロトコルのどちらでもうまく機能しないニッチを埋めるように設計されている。IEEE 1588は、NTPの使用で達成可能なものを超える精度を必要とするローカルシステム用に設計されている。また、各ノードでGPS受信機のコストを負担できない、またはGPS信号にアクセスできないアプリケーション向けにも設計されている。」

1. アーキテクチャ
----------

IEEE 1588規格は、クロック分配のための階層的マスタースレーブアーキテクチャとして定義されている。このアーキテクチャでは、時間配信システムは1つ以上の通信媒体と1つ以上のクロックで構成されている。//ordinary clock//は、単一のネットワーク接続を持つデバイスで、同期基準の発信元または宛先のいずれかである。//boundary clock//は、複数のネットワーク接続を持ち、あるネットワークセグメントを別のネットワークセグメントに正確に同期させることができる。システム内の各ネットワークセグメントに対して同期マスターが選択される。ネットワーク内において高精度な時刻を持つデバイスをグランドマスターに指定する。グランドマスターは、そのネットワークセグメント上にあるクロックに同期情報を送信する。セグメント上に存在する境界クロックは、接続されている他のセグメントに正確な時間を中継する。

単純化PTPシステムは、単一のネットワークに接続された通常クロックからなり、境界クロックは使用されない。クロックの中からグランドマスターが選出され、他の全てのクロックはそれに直接同期する。

IEEE 1588-2008では、PTPメッセージの伝達に使用されるネットワーク機器に関連する新たな種類のクロックが導入されている。//transparent clock//は、デバイスを通過するときにPTPメッセージを変更する。ネットワーク機器を通過するのに費やされた時間によってメッセージ内のタイムスタンプが修正される。この方式では、ネットワーク全体のパケット遅延変動を補正することで、配信の正確性が向上する。

PTPは通常、UNIX時間と同じエポックを使用するThe profile capability under IEEE 1588-2008 allows the use of application-specific epochs.。

//Management// - PTPシステムの監視・設定・維持のために使用する。
//Signaling// - クロック間のタイムクリティカルではない通信に使用される。このメッセージはIEEE 1588-2008で導入された。メッセージはイベントメッセージと一般メッセージに分類される。イベントメッセージはタイムクリティカルである。これは、送信と受信のタイムスタンプの正確さの正確さが直接クロック分配の正確さに影響するためである。//Sync//, //Delay_Req//, //Pdelay_Req//, //Pdelay_resp// はイベントメッセージである。一般メッセージは、メッセージ内のデータがPTPにとって重要であるという点でより典型的なProtocol Data Unitであるが、その送信・受信タイムスタンプは重要ではない。//Announce//, //Follow_Up//, //Delay_Resp//, //Pdelay_Resp_Follow_Up//, //Management//, //Signaling//は一般メッセージであるClause 6.4}}。

1.1. メッセージ転送
------------

PTPメッセージは、メッセージの伝送にUser Datagram Protocol over Internet Protocolを使用する。IEEE 1588-2002はIPv4のみを使用するAnnex D}}が、IEEE 1588-2008ではIPv6でも使用できるように拡張されているAnnex F}}。IEEE 1588-2002では、全てのPTPメッセージがマルチキャストで送信されるが、IEEE 1588-2008では、デバイスがポート単位でユニキャスト送信をネゴシエートするためのオプションが導入されたClause 16.1}}。マルチキャスト送信では、IPマルチキャストアドレスが使用される。IPマルチキャストアドレスでは、IPv4およびIPv6に対してマルチキャストグループアドレスが定義されているAnnex D and E}}。イベントメッセージはポート番号319、一般メッセージはポート番号320を使用する。

IEEE 1588-2008では、カプセル化がDeviceNetAnnex G}}、ControlNetAnnex H}}、PROFINETAnnex I}}に対して定義されている。

1.2. ドメイン
---------

ドメインは、PTPを使用して互いに同期し相互作用するクロックのセットである。クロックは、受信または生成するPTPメッセージ内の//Subdomain_name//または//domainNumber//フィールドの内容によって、ドメインに割り当てられる。ドメインにより、同じ通信媒体上で複数のクロック分配システムを共存させることができる。



2. BMCA
-------

best master clock algorithmは、最適な候補クロックの分散選択を実行するアルゴリズムであり、次のクロック特性に基づく。

識別子 - 個々のクロックにユニークに設定された数値識別子。通常、デバイスのMACアドレスに基づいて設定される。
品質 - データフィールド//stratumを//知っているのはV1だけであるが、IEEE 1588のどちらのバージョンでも、予想されるタイミング偏差、クロックの実装に用いられている技術、クロック階層スキーマにおける位置に基づいてクロック品質を定量化する。PTP V2では、データフィールド//clockAccuracy//, //clockClass//を使用して、クロックの全体的な品質を定義する。
優先度 PTPドメインの//グランドマスター//を選択するためにBMCAによって使用される、管理上割り当てられた優先順位のヒント。IEEE 1588-2002では、優先順位を示すために単一のブール変数を使用する。IEEE 1588-2008では、2つの8ビット優先度フィールドがある。
分散 - PTPの基準に対するパフォーマンスの観察に基づいた、クロックの安定性の見積もり。IEEE 1588-2008は、以下に示す特性を基づく階層選択アルゴリズムを使用する。特性の優先度は、上から順であるFigure 27}}。

優先度1 - ユーザーは各クロックに優先順位を固定的に割り当てることができる。数値が小さいほど優先順位が高くなる。
クラス - 各クロックは特定のクラスのメンバーであり、各クラスは独自の優先順位を取得する。
正確さ - クロックとUTCの間の精度
分散 - クロックのばらつき
優先度2 - 他の基準では決定できなかった場合に使用する、最終定義の優先順位。数値が小さいほど優先順位が高くなる。
一意の識別子 - 他の全ての特性が等しい場合は、MACアドレスに基づいて決定される。IEEE 1588-2002では、同様の特性に基づく選択アルゴリズムを使用している。

クロック特性は、IEEE 1588-2002の//Sync//メッセージおよびIEEE 1588-2008の//Announce//メッセージによって広告される。現在のクロックマスターはこの情報を定期的に送信する。あるクロックが、自身が現在のクロックマスターよりも良いクロックだと判断した場合、マスタークロックを変更するためにこの情報を送信する。現在のマスターがより良いクロックを認識すると、現在のマスターは//Sync//メッセージおよび関連するクロック特性の送信を停止し、より良いクロックがマスターを引き継ぐ。BMCAは、自己宣言されたクロック品質のみを考慮し、ネットワークリンク品質を考慮に入れない。

3. 同期
-----

BMCAを使用することで、PTPはIEEE 1588ドメインおよびドメイン内の各ネットワークセグメントのマスタータイムソースを選択する。

クロックは自身とマスターの間のオフセットを決定する。ここで、変数を物理的な時間とする。特定のスレーブデバイスについて、時間におけるオフセットは、以下のように定義される。

ここで、は物理時間においてスレーブクロックが測定した時間、は物理時間においてマスタークロックが測定した時間を表す。

マスタは現在時刻を他のクロックへのメッセージとして定期的にブロードキャストする。IEEE 1588-2002では、ブロードキャストは1秒間に1回以下である。IEEE 1588-2008では、1秒間に10回まで許容される。

各ブロードキャストは時間に始まり、//Sync//メッセージがマスターからドメイン内の全てのクロックに送信される。あるクロックがこのメッセージを受信したときの、そのクロックにおける時間をとする。

次いでマスターは、正確なのタイムスタンプを入れた//Follow_Up//メッセージをマルチキャストで送信することができる。全てのマスターが//Sync//メッセージに正確なタイムスタンプを乗せる機能を持っているわけではない。ネットワークハードウェアから//Sync//送信時の正確なタイムスタンプを取得できるのは、送信が完了した後である。このような制限のあるマスターは、の正確なタイムスタンプを//Follow_Up//メッセージを使用して伝達する。ネットワークハードウェアにPTP機能が組み込まれたマスターは、//Sync//メッセージに正確なタイムスタンプを乗せることができるので、//Follow_Up//メッセージを送信する必要はない。

マスターと正確に同期するために、クロックは//Sync//メッセージのネットワーク転送時間を個別に決定する必要がある。転送時間は、各クロックからそのマスターまでの往復時間を測定することによって間接的に決定される。クロックは転送時間を測定するために、マスターとの交換を開始する。交換は時刻 から始まり、マスターに //Delay_Req//メッセージを送信する。マスターは //Delay_Req//を受信し、その受信した時刻を記録し、そのタイムスタンプを //Delay_Resp//メッセージに含めて応答する。

これらの交換を通して、クロックは, , , を知る。

を//Sync//メッセージの転送時間、をマスタクロックとスレーブクロックの間の定数オフセットとしたとき、次式のようになる。

上記の2つの式を組み合わせると、次のようになる。

これによって、クロックはこのトランザクション中のオフセットがわかり、この値を使って自身のクロックを修正し、マスターと一致させる。

ここでは、3つのことを仮定している。1つは、このメッセージ交換が非常に小さい時間で行われるので、このオフセットはその時間にわたって一定であると考えられるということである。2つ目は、マスターからスレーブへのメッセージの転送時間が、スレーブからマスターへのメッセージの転送時間に等しいということである。3つ目は、マスターとスレーブの両方が、メッセージを送受信する時間を正確に測定できるということである。これらの仮定が成り立つ度合いによって、スレーブデバイスでのクロックの精度が決まるClause 6.2}}。

4. オプション機能
----------

IEEE 1588-2008規格では、実装で対応される可能性のある以下の機能がリストされている。

代替タイムスケール
グランドマスタークラスター
ユニキャストマスター
代替マスター
パストレース

5. 関連項目
-------

6. 脚注
-----

7. 出典
-----