PTP(Precision Time Protocol)について調べてみた

仕事で必要になったので、PTPについて調べてみた。

PTPとは?
  • Precision Time Protocol の略。
  • ネットワーク内のデバイスの時刻を高精度で同期するためのプロトコル
  • 類似の技術に、NTP(Network Time Protocol)があるが、PTPはNTPと比べてより高精度である。NTPの誤差はおよそ10ms以下の精度だが、PTPはハードウェアが対応していれば、1us 以下の精度が望める。
  • PTPは、NTPとGPSのニッチを埋めるための規格である。すなわち、GPS以下のコストで、NTP以上の精度の時刻が実現可能。
versionについて

versionは、以下の通り

  • PTPv1 IEEE 1588-2002
  • PTPv2 IEEE 1588-2008
  • gPTP IEEE 802.1AS-2011

PTPv2はv1より更なる精度向上を目指して定義された。
IEEE 802.1As-2011は、IEEE1588-2008の規格に順じ、特別な(tightly-constrainedな) プロファイルを定義。
これをgPTPと呼ぶ。

なぜ時刻同期が必要か?

例えば、自動車内の環境において

  • 右スピーカーと左スピーカが同時に音を鳴らす
  • 右カメラと左カメラからの映像を同時に表示する。

といったデータストリームを同期するユースケースにて、時刻同期が必要とされている。

アーキテクチャ

マスター、スレーブ型アーキテクチャである。

https://upload.wikimedia.org/wikipedia/en/thumb/6/64/Clock-Master.pdf/page1-800px-Clock-Master.pdf.jpg

ネットワーク内において、高精度な時刻を持つデバイスをグランドマスタに指定する。
グランドマスタは、周期的に自身の持つタイムスタンプ情報をネットワークにマルチキャスト配信。
スレーブはマスタから配信された時刻に対して、とある手法で算出されたグランドマスタから自身までのネットワーク遅延時間値で補正し、正確な時刻を算出する。

Open Source

以下の2つが代表的

  • ptpd
  • linuxptp
参考資料
  • ptpd について

 https://blackfin.uclinux.org/doku.php?id=uclinux-dist:ptp

  • IEEE1588-v2 について

 http://www.slideshare.net/guiderlee/ieee1588v2

  • ELC 2015 - Intro to IEEE 1588 Precision Time Protocol Using Embedded Linux

 https://www.youtube.com/watch?v=pNiOlRi8jK4