プレシジョン・タイム・プロトコル(PTP)とは?

PTP(Precision Timing Protocol)は、「高精度時刻同期プロトコル」の略称であり、IEEE規格の1588に記載されています。このプロトコルはパケットネットワーク上で時刻を分配する仕組みを提供します。

PTPでは、マスタークロックがスレーブクロックに対してメッセージを送信し、マスター側の時刻情報を通知します。ただし、メッセージの遅延をどう解消するかが大きな課題であり、この遅延問題の解決にプロトコルの多くの機能が割かれています。

例えば、自分が手紙を送るとして、その手紙に送付日時を書いた場合、それだけでは受取人は正しい時刻を同期できません。なぜなら、手紙が受取人に届くまでにどれだけの時間が経ったのかを把握する必要があるからです。仮に翌日配達サービスを使用したことがわかれば、カレンダーの設定には役立つでしょうが、正確な時計の調整には使えません。このように、どれだけ正確に遅延の時間が計測できるかが、正確な時刻合わせを行う鍵となります。

PTPは「イベントメッセージ」と呼ばれる双方向のタイミングメッセージを交換することで動作します。これによって「往復遅延」を計算し、この値を単純に半分化することで、一方向の遅延時間を推定します。しかし、この方法には課題があります。ネットワーク内では、送信方向と受信方向で異なる遅延時間が発生する場合が多いため、この推定は正確ではありません。この問題は「非対称性問題」として知られています。

遅延見積もりの誤差を最小限に抑えるために、PTPでは次の3つの主要な技術が採用されています:

  1. ハードウェアタイムスタンプ
    イベントメッセージが物理インターフェイスを通過する瞬間を正確に記録します。これにより、ソフトウェアによる処理遅延や他の影響を排除できます。

  2. バウンダリークロック
    ネットワーク内の中間ノードで時刻同期を行い、新しいメッセージセットとしてタイミングを更新します。これらは主にスイッチやルーターに実装され、キューイング遅延などによる同期精度への影響を軽減します。

  3. トランスペアレントクロック
    スイッチやルーターなどのネットワーク機器で使用され、タイミング自体をリカバリーするのではなく、機器を通過した際の遅延時間を記録します。この情報は最終的にスレーブクロックに伝達され、スレーブ側がマスタークロックとの間でより正確なローカル時刻の調整を実現できるようになります。

現在、IEEE 1588規格は改訂プロセスが進行中であり、このプロトコルは電気通信や配電、自動車産業、科学研究、工業ネットワークなど多岐にわたる分野で利用されています。こうした改訂にはさまざまな専門分野の参加者が携わっており、今後ともIEEE 1588がネットワーク全体で正確な時刻配信を実現するための主要手段として位置づけられる将来性が示されています。


PTPクロックとは?

時計とは、共通の基準点から規則的な現象を数えるための単なるデバイスです。日時計を例外として、あらゆる時計やカレンダーにこの考え方が当てはまります。規則的な現象には、日、月、年といった天体の動きや、振り子の揺れ、水晶の振動、さらには原子遷移などが含まれます。

例えば、私の腕時計はクオーツ結晶の共振振動を数えることで時間を表示しています。そして通常、携帯電話の時計など、私のタイムゾーンにおいてより正確な時刻を示すデバイスと比較しながら、既知の開始点を基準に手動でその時刻を設定します。この携帯電話の時刻は携帯電話網から取得され、その情報はさらに時刻サーバーから供給されます。最終的には、この時刻は国内時刻サーバーを経由してUTC(協定世界時)に基づいています。このような流れから、私の腕時計の時刻はたとえUTCから若干ずれていたとしても、その源泉を辿ればUTCに行き着くわけです。ただし、腕時計の水晶振動子の周波数はUTCのそれと完全には一致しないため、時間が経つにつれて少しずつ誤差が生じます。そのため、私は定期的に腕時計を調整して、正しい時刻に近づけるようにしています。

PTP(Precision Time Protocol)クロックもこれと同じ原理で動作します。PTPスレーブクロックは、PTPマスタークロックから毎秒複数回送信されるメッセージを受信し、それに基づいて自分自身の時刻を調整します。このメッセージとメッセージの間では、ローカルオシレーター(通常は水晶振動子)の「ティック」カウントを元に時間を進めています。PTPバウンダリークロックも同様の仕組みで機能し、グランドマスタークロックから時刻メッセージを受け取り、自分の時刻を調整したうえで、その時刻を後続のバウンダリークロックやスレーブクロックへ伝達します。 一方で、このようなチェーン構造では末端に近づくほど時間の正確性が下がる傾向があります。それぞれの時計がわずかながら誤差を導入するためです。この誤差は、時刻調整が完全でないことや、水晶振動子の不安定性といった要因によって時間のズレとして現われる場合があります。

時計の性能は主に次の4つの主要なパラメータによって定義できます。

  1. ノイズ生成:時計自体が導入する時間誤差の量。これは「理想的な」タイミング信号を入力として用いて測定されます。

  2. ノイズ耐性:入力としてどれだけの時間誤差を許容できるか、それでも正確に機能する能力。

  3. ノイズ伝達:入力信号から出力信号へのノイズの伝達量。言い換えれば、時計がノイズをどれだけフィルタリングできるかを示します。

  4. ホールドオーバー(または「長期過渡応答」):入力信号を失った場合でも、どれだけ長く正確な時刻を維持できるか。

今後の記事では、これら4つのパラメータについてさらに詳しく説明していきます。


なぜこれほど多くのPTPプロファイルがあるのか?

IEEE1588(2008年版)は、なんと269ページにも及ぶ膨大な規格書です。この規格は、PTP(Precision Time Protocol:精密時刻プロトコル)と呼ばれる、パケット通信ネットワーク上で時刻を配信する仕組みを定義しています。しかしながら、パケット通信ネットワークと言っても実に多種多様。産業用ネットワーク、電力系統、テレコム、オーディオやビデオ系、さらには車載系まで、種類を挙げればきりがありません。それぞれが微妙に異なる要求を持っているため、IEEE1588には幅広いオプションと機能が盛り込まれており、その結果、すべてのネットワークにそのまま適用することは困難です。

この課題に対処するため、IEEE1588の委員会では「プロファイル」という仕組みを導入しました。プロファイルとは、「必要とされるオプション」「使ってはいけないオプション」「設定可能な属性の範囲とそのデフォルト値」を定義したものです。これにより、業界団体や標準化機関が、それぞれの分野に適した形でPTPプロトコルをカスタマイズできるようにしたのです。たとえば、国際電気通信連合(ITU)では、モバイル基地局への正確な周波数同期(時刻同期ではなく)を目的としたG.8265.1プロファイルを策定しました。

しかし、ここで新たな問題が発生しています。それは「プロファイルの増殖」。ITUだけで3種類のプロファイルを定義しており、IEEE自身も少なくとも3種類持っています。さらにIETFも1つ定義しようとしましたが途中で頓挫です。そしてIECは、IEEEのプロファイルの1つに非常に似たものを作り出しましたが、完全一致はしていません。また、SMPTE(映画・テレビ業界団体)も独自のプロファイルを持っており、おそらくそれ以外にもまだまだ存在することでしょう。

この状況を例えるなら、みんなが「英語」を話していると言いながら、それぞれ異なる発音で話しているようなものです。一人はイギリス北部のジョーディー英語、また一人はアメリカ英語、別の人はスコットランド英語、そしてさらに女王英語(クイーンズイングリッシュ)で話すという具合です。それぞれ同じ言語を話しているつもりでも、互いにうまく意思疎通できないほどの差があります。

ですから、次に誰かが「これらは全部PTPクロックだから、自動的につながるよね?」などと言い出したら、その前にどのプロファイルが使われているか確認する必要があるでしょう。そうしないと混乱必至です。この状況、本当にややこしいですね!

Related

Blog Library