時の民なので時刻同期プロトコル(NTP, PTP)についてまとめる
執筆モチベーション
IIJエンジニアリングの次の発表ニュースを見かけて「あらためて時刻同期のプロトコルちゃんと整理しておくか」と思った。
加えて、日本の標準時子午線が通る兵庫県明石市出身の時の民でもあるしな?という使命感。
https://newt.net/jpn/hyogo/mag-0596813838
まあとにかく、NTPとPTPについてまとめることにする。
I. 時刻同期の基礎理論
1. 時刻同期の必要性と課題
1.1 分散システムにおける時刻同期の重要性
現代のコンピュータシステムは複数の物理的に離れた装置が協調して動作することが一般的であり、これらの装置間で時刻を一致させることは不可欠である。分散システムにおいて正確な時刻同期が必要とされる主な理由としては次のようなものがあげられる。
目的 | 説明 |
---|---|
イベントの順序付け | 複数のシステムで生成されたログやイベントの正確な時系列を把握するため |
協調動作 | 複数のシステムが特定の時刻に同期して動作する必要がある場合 (例:分散制御システム) |
データの整合性 | トランザクション処理やデータベースの整合性保持 |
セキュリティ | 暗号プロトコルやセキュリティ証明書の有効期限検証 |
計測と観測 | 科学実験や観測システムでの時間的精度の確保 |
時刻同期が不十分な場合、システム全体の動作に不整合が生じ、データの信頼性や処理の正確性に重大な影響を及ぼす可能性がある。
1.2 ネットワーク遅延と非対称性の問題
ネットワークを介した時刻同期の最も基本的な課題は、メッセージ交換における伝送遅延の存在である。この遅延は単に存在するだけでなく、以下のような性質を持つ。
遅延の非対称性は時刻同期における重大な問題である。往路と復路の遅延が等しくない場合、単純な往復時間の半分を遅延として計算すると誤差が生じる。この非対称性は以下の要因によって引き起こされる。
- ネットワークルーティングの違い(往路と復路で異なる経路を通る)
- ネットワーク機器のキュー状態の違い
- 帯域幅の非対称性(上り/下りの速度差)
- ネットワーク負荷の時間的変動
これらの問題により、リアルタイムに変化するネットワーク状態を考慮した時刻同期アルゴリズムの設計が必要となる。
1.3 クロックドリフトとジッターの概念
物理的なクロック装置は完全に正確ではなく、時間の経過とともに誤差が蓄積される。これに関連する重要な概念として以下がある。
クロックドリフト(Clock Drift)
クロックの進み方の実際の時間からのずれ率。通常はppm(parts per million)で表される。例えば、10 ppmのドリフトを持つクロックは、100万秒(約11.6日)で10秒の誤差が生じる。
ジッター(Jitter)
クロックの周期の短期的な変動。理想的なクロックは完全に等間隔で刻むが、実際には様々な要因により、刻み間隔にばらつきが生じる。
これらの現象を視覚化すると以下のようになる。
クロックドリフトとジッターの原因として、次のような要因が挙げられる。
- 温度変化
- 電源電圧の変動
- 部品の経年劣化
- 周波数源(水晶発振器など)の品質
- 外部からの電磁的干渉
実際の時刻同期システムでは、これらの問題に対処するために、継続的な同期更新と統計的手法によるフィルタリングが行われる。
2. 時刻測定の基本概念
2.1 時刻表現形式
時刻同期プロトコルでは、さまざまな時刻表現形式が使用されるが、特に重要なのはNTPとPTPで使用されるタイムスタンプ形式である。
NTPタイムスタンプ形式
NTPでは64ビット固定小数点形式が使用される。最初の32ビットが1900年1月1日0時からの経過秒数、後の32ビットが秒の小数部分を表す。
PTPタイムスタンプ形式
PTPでは秒とナノ秒の組み合わせで時刻を表現する。秒フィールドは通常48ビット整数、ナノ秒フィールドは32ビット整数で表される。
以下に両形式の比較を示す。
特性 | NTPタイムスタンプ | PTPタイムスタンプ |
---|---|---|
総ビット数 | 64ビット | 80ビット(通常) |
秒の表現 | 32ビット整数部 | 48ビット整数フィールド |
小数部/精度 | 32ビット小数部(約232ピコ秒) | 32ビットナノ秒フィールド(1ナノ秒) |
エポック | 1900年1月1日 | UTCに基づくエポック時間 |
オーバーフロー | 2036年頃(その後はエラ処理) | 約8.9×10^9年後 |
精度 | サブマイクロ秒 | サブナノ秒(ハードウェア実装時) |
2.2 エポック時間と相対時間
時刻表現には、絶対的なエポック時間と相対的な時間間隔という二つの主要な概念がある。
エポック時間(Epoch Time)
特定の基準点(エポック)からの経過時間を表す。例えば、
- Unix時間:1970年1月1日0時UTC
- NTP時間:1900年1月1日0時UTC
- GPS時間:1980年1月6日0時UTC(6日である理由は1980年における最初の日曜日のため)
相対時間(Relative Time)
二つのイベント間の時間差。時刻同期プロトコルでは、パケット送信と受信の間の時間差などの計算に使用される。
時刻同期では、これらの時間表現を適切に変換し、異なるシステム間で一貫した時刻を維持することが重要である。NTPとPTPの両方のプロトコルは、時刻オフセットの計算過程で相対時間を扱い、それをエポック時間に適用して同期を実現する。
2.3 精度と確度の違い
時刻同期システムの性能を評価する上で、精度(Precision)と確度(Accuracy)の区別が重要である。
精度(Precision)
同一条件下における測定値のばらつきの小ささ、再現性の高さを表す。複数回の測定でどれだけ近い値が得られるかという指標。時刻同期では、クロックの読み取り分解能やタイムスタンプの最小単位などに関連する。
確度(Accuracy)
測定値が真の値にどれだけ近いかを表す。時刻同期では、UTCなどの標準時からのオフセットの小ささとして現れる。
これらの違いは時刻同期システムの設計と評価に重要な影響を持つ。
- 高精度だが低確度のシステム:安定したクロックを持つが、基準時刻からずれている
- 低精度だが高確度のシステム:平均的には正確だが、短期的な変動が大きい
実際の時刻同期プロトコルは、精度と確度の両方を最適化するよう設計されている。NTPは長期的な確度を重視する傾向があり、PTPは特に短期的な精度に優れている。
時刻同期システムでは、ネットワーク条件、ハードウェア性能、ソフトウェア実装など様々な要因が精度と確度に影響を与える。これらの要因を理解し制御することが、効果的な時刻同期の実現には不可欠である。
II. NTP(Network Time Protocol)の理論
1. NTPの基本原理
1.1 階層型時刻配信モデル(ストレイタム構造)
NTPは階層的な構造を採用することで、時刻同期の正確性と安定性を確保している。この階層構造は「ストレイタム(Stratum)」と呼ばれるレベルで表現される。
各ストレイタムレベルの特徴は以下の通りである。
ストレイタム | 説明 | 例 |
---|---|---|
0 | 基準時計(Reference Clock) | 原子時計、GPS受信機、電波時計 |
1 | プライマリサーバ | ストレイタム0の時計に直接接続されたNTPサーバ |
2-15 | セカンダリサーバ | 上位のNTPサーバから時刻を同期するサーバ |
16 | 未同期状態 | 正確な時刻源と同期していないサーバ |
各ストレイタムレベルを下るごとに、時刻精度は若干低下する。これは伝送遅延やクロックドリフトの累積によるものである。NTPは通常、ストレイタム16を「未同期」状態と定義し、このレベルのサーバは同期ソースとして使用されない。
1.2 NTPの動作モード
NTPプロトコルには複数の動作モードがあり、ネットワークトポロジーや要件に応じて適切なモードを選択できる。
モード | 値 | 説明 | 用途 |
---|---|---|---|
対称アクティブ | 1 | 双方向の時刻同期を開始 | ピア間の相互同期 |
対称パッシブ | 2 | 対称アクティブモードへの応答 | ピア間の相互同期 |
クライアント | 3 | サーバに時刻要求を送信 | 一方向の時刻同期 |
サーバ | 4 | クライアントからの要求に応答 | 一方向の時刻同期 |
ブロードキャスト | 5 | 時刻情報をブロードキャスト | 多数のクライアントへの配信 |
ブロードキャストクライアント | 6 | ブロードキャストを受信 | ブロードキャストからの同期 |
これらのモードに加えて、NTPv4ではマルチキャストやエニーキャストなどの機能も導入されており、さまざまなネットワーク環境での時刻同期に対応している。
1.3 オンワイヤプロトコルとタイムスタンプ交換
NTPの核心部分は、4つのタイムスタンプを使用して時刻オフセットとネットワーク遅延を計算するオンワイヤプロトコルである。
この4つのタイムスタンプを使用して、クロックオフセットθと往復遅延δが計算される。
オフセット計算:θ = [(t2 - t1) + (t3 - t4)] / 2
往復遅延計算:δ = (t4 - t1) - (t3 - t2)
この計算は、往路と復路の遅延が対称であると仮定している。この仮定が成り立たない場合、計算されたオフセットには誤差が生じる。
2. NTPの時刻算出アルゴリズム
2.1 オフセットと遅延の計算方法
NTPのオフセットと遅延の計算は、前述の4つのタイムスタンプに基づいているが、実際の実装ではこれに加えて様々な要素を考慮する。特に、複数のサーバから時刻情報を受け取る場合、それらの情報を適切に組み合わせる必要がある。
オフセット計算の拡張要素として、以下の統計量が重要である。
統計量 | 説明 |
---|---|
ジッター(Jitter) | タイムスタンプのばらつきを表す統計量 |
分散(Dispersion) | 時間の経過とともに増加する潜在的な誤差 |
ルート遅延(Root Delay) | 基準時計(最上位NTPサーバー)までの累積遅延 |
ルート分散(Root Dispersion) | 基準時計(最上位NTPサーバー)までの累積潜在誤差 |
特に分散は、測定からの経過時間とともに増加する。これはクロックドリフトによる不確かさの増大を反映している。NTPv4では、この増加率はPHI(通常15 ppm)と定義されている。
2.2 クロックフィルタリングアルゴリズム
単一のサーバからの複数の測定値をフィルタリングするために、NTPはクロックフィルタアルゴリズムを使用する。このアルゴリズムは以下のようなステップで処理を行う。
- 最新の8つの(オフセット、遅延、分散、到着時刻)のタプルをシフトレジスタに保存
- これらのタプルを遅延の昇順でソート
- 最小遅延を持つタプルを「最良」のサンプルとして選択
- このサンプルの値を基に、フィルタオフセット、遅延、分散、ジッターを計算
このアルゴリズムは、ネットワーク輻輳やジッターの影響を最小限に抑えるのに効果的である。また、「スパイク抑制」機能も備えており、前回のオフセットと新しいオフセットの差がジッターの閾値を超える場合、その測定値を除外する。
2.3 選択、クラスタリング、結合アルゴリズム
複数のサーバから時刻情報を受け取る場合、NTPは以下の3つのアルゴリズムを連続して適用する。
アルゴリズム | 説明 |
---|---|
選択(Selection)アルゴリズム | 「真実を告げる時計(truechimers)」と「偽りを告げる時計(falsetickers)」を識別する。このアルゴリズムはビザンチン一致アルゴリズムに基づいており、正確なサーバの多数派を特定する。 |
クラスタリング(Clustering)アルゴリズム | 選択されたtruechimersの中から、最も正確なサブセットを特定する。各サーバについて「選択ジッター」を計算し、最も大きな選択ジッターを持つサーバを順次除外していく。 |
結合(Combine)アルゴリズム | 残ったサーバからの時刻情報を重み付け平均によって組み合わせる。重みはルート距離(ルート遅延とルート分散の組み合わせ)の逆数として計算される。 |
これらのアルゴリズムにより、NTPは複数のソースからの時刻情報を効果的に利用し、より正確な時刻推定を実現している。
3. クロック制御アルゴリズム
3.1 位相同期ループ(PLL)と周波数同期ループ(FLL)
NTPのクロック規律アルゴリズムは、位相同期ループ(PLL)と周波数同期ループ(FLL)を組み合わせたハイブリッドアプローチを採用している。
ループタイプ | 説明 |
---|---|
位相同期ループ(PLL) | 位相オフセットに基づいてクロック周波数を調整する。ネットワークジッターが支配的な場合に効果的。 |
周波数同期ループ(FLL) | 周波数オフセットに基づいてクロック周波数を調整する。発振器の揺らぎが支配的な場合に効果的。 |
NTPv4では、これらを自動的に切り替えるハイブリッド制御が実装されている。アラン偏差(Allan deviation)と呼ばれる統計量に基づいて、PLLとFLLの適用度合いが決定される。
3.2 クロック規律(ディシプリン)アルゴリズム
NTPのクロック規律アルゴリズムは状態機械として実装されており、以下の状態を持つ。
状態 | 説明 |
---|---|
NSET | クロックが未設定 |
FSET | 周波数は設定されているがオフセットは未設定 |
SPIK | スパイク(異常値)が検出された |
FREQ | 初期周波数測定中 |
SYNC | 通常の同期状態 |
オフセットの大きさや同期状態に応じて、これらの状態間を遷移する。特に、オフセットがSTEPT(通常125 ms)を超える場合、クロックは「ステップ」調整され、それ以下の場合は「スルー」調整される。
また、このアルゴリズムはポーリング間隔の自動調整も行う。時刻が安定している場合は間隔を徐々に長くし(最大1024秒)、不安定な場合は短くする(最小64秒)。
3.3 耐障害性と安全性の考慮
NTPは長期間にわたって安定した運用を実現するために、様々な耐障害性メカニズムを備えている。
メカニズム | 説明 |
---|---|
複数のサーバの利用 | 単一障害点を避けるため、複数のNTPサーバから時刻を取得する。 |
キス・オ・デス(Kiss-o'-Death)パケット | サーバはRSTR(アクセス制限)やDENY(アクセス拒否)などのコードを含むKoDパケットを送信し、クライアントの動作を制御できる。 |
レート制限 | RATEキスコードを使用して、クライアントのポーリングレートを制限できる。 |
認証メカニズム | NTPv4は対称鍵暗号化(MD5)とAutokey公開鍵認証をサポートしており、時刻情報の改ざんを防止する。 |
これらのメカニズムにより、NTPは長期間にわたる安定した動作と、悪意のある攻撃に対する基本的な防御を実現している。
III. PTP(Precision Time Protocol - IEEE 1588)の理論
1. PTPの基本原理
1.1 マスター・スレーブモデル
PTPは高精度の時刻同期を目的として設計されたプロトコルで、IEEE 1588標準として規格化されている。NTPの階層モデルと異なり、PTPはシンプルなマスター・スレーブモデルを採用している。
クロックタイプ | 説明 |
---|---|
グランドマスタークロック | ネットワーク内で最も正確な時刻を持ち、全体の時刻源となるクロック。通常はGPSや原子時計などの高精度時刻源に同期されている。他のすべてのクロックの基準となる。 |
境界クロック | 複数のネットワークセグメントを接続するデバイスに実装されるクロック。上流ではスレーブとして機能し、下流ではマスターとして動作する。これによりネットワークセグメントごとの時刻同期品質を保持する。 |
スレーブクロック | マスタークロックから時刻情報を受け取り、自身のクロックを同期させるエンドデバイス。測定機器、制御装置、コンピュータなど、時刻同期を必要とするあらゆる機器に実装される。 |
PTPドメイン内では、ベストマスタークロックアルゴリズム(BMC)によって自動的にマスタークロックが選択される。このアルゴリズムは、クロック品質、優先度、安定性などの要素に基づいてマスターを決定する。
PTPは特に以下の要素に重点を置いている。
- サブマイクロ秒の精度:ハードウェアタイムスタンプを活用して高精度を実現
- ネットワーク効率:最小限のネットワークリソースと帯域幅で動作
- 自己構成能力:BMCアルゴリズムによる自動マスター選択
- 組み込みシステムへの適合性:リソース制約のあるデバイスでも実装可能
1.2 ハードウェアとソフトウェアのタイムスタンプ方式
PTPの高精度を実現する鍵となるのが、ハードウェアレベルでのタイムスタンプ生成である。
タイムスタンプ方式 | 説明 | 精度 |
---|---|---|
ソフトウェアタイムスタンプ | プロトコルスタック内でタイムスタンプを生成 | マイクロ秒〜ミリ秒レベル |
ハードウェアタイムスタンプ | NICで物理層に近いレベルでタイムスタンプを生成 | ナノ秒レベル |
ハードウェアタイムスタンプは、PTPメッセージが物理媒体に送出される瞬間、または物理媒体から受信される瞬間に可能な限り近いタイミングでタイムスタンプを生成する。これにより、プロトコルスタックの処理遅延やOSのスケジューリング遅延がタイムスタンプ精度に影響しなくなる。
典型的なPTP実装では、以下のコンポーネントが含まれる。
- 高精度のクロック発振器
- タイムスタンプユニット(TSU)
- PTPハードウェアクロック(PHC)
1.3 境界クロックとトランスペアレントクロックの概念
PTPはネットワーク機器による遅延変動の影響を最小化するために、特殊なクロックタイプを定義している。
クロックタイプ | 説明 | 機能 |
---|---|---|
通常クロック(Ordinary Clock) | 単一のネットワークポートを持つエンドデバイス | マスターまたはスレーブとして動作 |
境界クロック(Boundary Clock) | 複数のネットワークポートを持つデバイス | 各ポートでマスターまたはスレーブとして動作 |
トランスペアレントクロック(Transparent Clock) | PTPメッセージの通過遅延を測定・補正 | エンド・ツー・エンド(E2E)またはピア・ツー・ピア(P2P)モードで動作 |
境界クロックは、マスターからの時刻情報を受信し、その情報を基に内部クロックを同期させ、さらにそれを下流のデバイスに配信する。これにより、各ネットワークセグメントでのジッターが独立し、累積しなくなる。
トランスペアレントクロックは、PTPメッセージがデバイスを通過する際の遅延を測定し、その情報をメッセージ内の修正フィールドに追加する。エンドデバイスはこの情報を使用して、ネットワーク機器による遅延の影響を補正できる。
2. PTPの時刻同期メカニズム
2.1 同期メッセージ交換の詳細フロー
PTPの時刻同期プロセスは、主に2つのフェーズから構成される。
- オフセット補正フェーズ:マスターとスレーブ間のクロックオフセットを測定
- 遅延測定フェーズ:マスターとスレーブ間のパス遅延を測定
各メッセージの役割は以下の通りである。
メッセージ | 送信者 | 目的 |
---|---|---|
Sync | マスター | マスターの時刻情報を伝達 |
Follow_Up | マスター | Syncメッセージの正確な送信時刻を伝達(2ステップクロックの場合) |
Delay_Request | スレーブ | パス遅延測定のためのリクエスト |
Delay_Response | マスター | Delay_Requestの受信時刻を伝達 |
これらのメッセージは標準的にはマルチキャストで送信されるが、ユニキャストモードも定義されている。
2.2 オフセット補正フェーズ
オフセット補正フェーズでは、マスタークロックとスレーブクロック間のオフセットを測定する。
PTPでは1ステップクロックと2ステップクロックが定義されている。
- 1ステップクロック:Syncメッセージ内に正確な送信時刻を含める
- 2ステップクロック:Syncメッセージ後にFollow_Upメッセージで正確な送信時刻を伝える
2ステップクロックが用いられる主な理由は、ハードウェアでのタイムスタンプ生成と送信処理のタイミングの問題を解決するためである。多くのハードウェア実装では、パケットが実際に送信される瞬間の正確な時刻を事前に知ることができないため、送信後にその情報をFollow_Upメッセージで伝える方が現実的である。
2.3 遅延測定フェーズ
遅延測定フェーズでは、マスタークロックとスレーブクロック間のパス遅延を測定する。
遅延測定は、往路と復路の遅延が対称であると仮定している。この仮定が成り立たない場合、計算されるオフセットには誤差が生じる。PTPでは、この対称性の仮定をより正確に満たすために、ハードウェアレベルでのタイムスタンプ生成や、トランスペアレントクロックによる遅延補正が重要な役割を果たす。
3. PTPメッセージ形式と処理
3.1 PTPメッセージの基本構造
PTPメッセージは、ヘッダー部分と本体部分から構成される。ヘッダーは34バイトで固定長であり、すべてのPTPメッセージに共通である。
フィールド | サイズ (バイト) | 説明 |
---|---|---|
messageType | 1 | メッセージの種類(Sync, Delay_Req など) |
versionPTP | 1 | PTPのバージョン |
messageLength | 2 | メッセージの全長 |
domainNumber | 1 | PTPドメイン番号 |
flags | 2 | 各種フラグ |
correctionField | 8 | 時間補正フィールド |
sourcePortIdentity | 10 | 送信ポートのID |
sequenceId | 2 | シーケンス番号 |
controlField | 1 | 後方互換性用の制御フィールド |
logMessageInterval | 1 | メッセージ間隔(対数スケール) |
本体部分はメッセージタイプによって異なる構造を持つ。例えば、SyncメッセージやFollow_Upメッセージには、タイムスタンプフィールドが含まれる。
3.2 アナウンス、同期、遅延要求/応答メッセージ
PTPでは、複数の種類のメッセージが使用される。
メッセージタイプ | 値 | 説明 |
---|---|---|
Announce | 0xB | マスターの品質や優先度などの情報を含むメッセージ |
Sync | 0x0 | 同期用メッセージ |
Delay_Req | 0x1 | 遅延測定用のリクエストメッセージ |
Follow_Up | 0x8 | Syncメッセージの正確な送信時刻を伝えるメッセージ |
Delay_Resp | 0x9 | Delay_Reqの受信時刻を伝えるメッセージ |
Pdelay_Req | 0x2 | ピア間遅延測定用のリクエスト(P2Pモード) |
Pdelay_Resp | 0x3 | ピア間遅延測定の応答(P2Pモード) |
Pdelay_Resp_Follow_Up | 0xA | Pdelay_Respの正確な送信時刻(P2Pモード) |
Management | 0xD | 管理用メッセージ |
Signaling | 0xC | シグナリングメッセージ |
アナウンスメッセージは、ベストマスタークロックアルゴリズムの実行に必要な情報を提供する。このメッセージには、クロックの品質クラス、クロックの精度、オフセット、優先度などの情報が含まれる。
同期メッセージと遅延要求/応答メッセージは、前述のオフセット補正フェーズと遅延測定フェーズで使用される。
3.3 マスター選択のベストマスタークロックアルゴリズム
ベストマスタークロックアルゴリズム(BMC)は、PTPドメイン内で最良のマスタークロックを選択するアルゴリズムである。
BMCは以下の基準を順番に適用して、最良のマスタークロックを決定する。
- Priority1:管理者が設定する最優先の値(低い値が優先)
- Clock Class:クロックの品質クラス(低い値が優先)
- Clock Accuracy:クロックの精度(低い値が優先)
- Clock Variance:オフセットの変動性(低い値が優先)
- Priority2:管理者が設定する次優先の値(低い値が優先)
- Unique Identifier:一意識別子(タイブレーク用)
このアルゴリズムにより、PTPドメイン内のすべてのクロックが同じ決定に到達し、唯一のマスタークロックを選択することができる。また、マスタークロックに障害が発生した場合は、次に良いクロックが自動的に新しいマスターとして選択される。
4. PTPの精度向上技術
4.1 ハードウェアアシストによる高精度タイムスタンプ
PTPがサブマイクロ秒の精度を実現するための鍵となるのは、ハードウェアレベルでのタイムスタンプ生成である。
ハードウェアアシストの主な要素は以下の通りである。
要素 | 説明 |
---|---|
タイムスタンプユニット(TSU) | 物理層またはMACレイヤーでのタイムスタンプ生成を行う。Ethernetの場合、フレームの開始シンボルやプリアンブルを検出した時点でタイムスタンプを生成することが多い。 |
PTPハードウェアクロック(PHC) | 高精度の発振器と分周器を備えたハードウェアクロック。通常は温度補償型水晶発振器(TCXO)やオーブン制御型水晶発振器(OCXO)が使用される。 |
クロック調整ハードウェア | 微細な周波数調整を可能にするデジタル制御発振器(DCO)や電圧制御発振器(VCO)。 |
ハードウェアアシストなしのPTP(ソフトウェアのみの実装)でも、マイクロ秒レベルの精度は達成可能であるが、サブマイクロ秒の精度を目指す場合は、ハードウェアアシストが不可欠である。
4.2 ネットワーク要素での遅延補償
PTPは、ネットワーク機器による遅延変動の影響を最小化するために、境界クロックとトランスペアレントクロックという2つの重要な概念を導入している。
境界クロックは、マスターから受信した時刻情報に基づいて内部クロックを同期させ、その時刻を下流のデバイスに配信する。これにより、上流ネットワークのジッターが下流に伝播することを防ぐ。
トランスペアレントクロックには、以下の2つのタイプがある。
-
エンド・ツー・エンド(E2E)トランスペアレントクロック
PTPメッセージが機器を通過する際の「滞留時間」を測定し、その値をメッセージの修正フィールドに加算する。 -
ピア・ツー・ピア(P2P)トランスペアレントクロック
E2E機能に加えて、リンクごとの遅延を測定し補正する。これにより、ネットワークトポロジーの変化にも迅速に対応できる。
特にスイッチングネットワークでは、パケットのキューイング遅延が大きな不確実性要因となる。トランスペアレントクロックはこの問題を軽減し、より安定した時刻同期を可能にする。
4.3 サブマイクロ秒精度を実現する手法
PTPでサブマイクロ秒の精度を実現するためには、以下の要素を総合的に考慮する必要がある。
要素 | 説明 |
---|---|
高品質なハードウェアクロック | 温度補償型水晶発振器(TCXO)やオーブン制御型水晶発振器(OCXO)などの高安定性発振器の使用 |
ハードウェアタイムスタンプ | 物理層またはMACレイヤーでの正確なタイムスタンプ生成 |
ネットワークインフラストラクチャのサポート | 境界クロックまたはトランスペアレントクロック機能を持つネットワーク機器の使用 |
非対称遅延の最小化 | ネットワークパスの対称性を確保するための設計と構成 |
環境条件の管理 | 温度変動などの環境要因がクロック安定性に与える影響の最小化 |
実際の導入例では、すべてのネットワーク機器がPTPをサポートするわけではないため、非PTP対応機器の影響を最小化するネットワーク設計も重要である。理想的には、マスターとスレーブの間にPTP対応の境界クロックまたはトランスペアレントクロックのみを配置することが望ましい。
IV. 両プロトコルの比較分析
1. 精度と確度の比較
1.1 NTPとPTPの精度限界
NTPとPTPの最大の違いは、達成可能な時刻同期精度である。両プロトコルの典型的な精度とその制限要因を以下に示す。
プロトコル | 典型的な精度 | 理論的な限界 | 制限要因 |
---|---|---|---|
NTP | 1-10ミリ秒(LAN) 数十ミリ秒(WAN) |
数百マイクロ秒 | ソフトウェアタイムスタンプ 非決定的OS遅延 |
PTP | 数十ナノ秒-数マイクロ秒 | 数ナノ秒 | ハードウェア品質 ネットワーク非対称性 |
NTPの精度はソフトウェアスタックの遅延変動に大きく影響される。一方、PTPはハードウェアタイムスタンプを使用することで、この制限を大幅に軽減している。
両プロトコルとも、ネットワーク遅延の非対称性が精度に大きな影響を与える。NTPは主にインターネット上で使用されることを想定しており、この問題を統計的手法で緩和する。PTPは主にローカルネットワークでの使用を想定しており、境界クロックやトランスペアレントクロックを使用して非対称性の影響を最小化する。
1.2 実装複雑性とリソース要件
NTPとPTPには、実装複雑性とリソース要件にも大きな違いがある。
側面 | NTP | PTP |
---|---|---|
実装複雑性 | 中程度 (ソフトウェアのみでも可能) |
高い (ハードウェアサポートが必要) |
CPU要件 | 低-中 (バックグラウンドプロセスとして動作可能) |
低-高 (実装による) |
メモリ要件 | 中程度 (複数のピアと統計情報を管理) |
低-中 (実装による) |
ネットワーク帯域幅 | 非常に低い (数分に1パケット) |
低い (数秒に1パケット) |
ハードウェア要件 | 特殊なハードウェア不要 | 高精度用途にはハードウェアサポートが必要 |
NTPはインターネット規模での使用に適した設計になっており、最小限のリソースで動作する。一方、PTPは高精度を実現するために、特にハードウェアレベルでの追加リソースを必要とする。
1.3 ネットワーク条件による影響の差異
NTPとPTPは、ネットワーク条件の変動に対して異なる挙動を示す。
条件 | NTPの挙動 | PTPの挙動 |
---|---|---|
ネットワーク輻輳 | 統計的フィルタリングで緩和 長期的安定性を維持 |
境界クロックなしでは大きな影響 境界クロックありでは影響最小化 |
パケットロス | 影響は限定的 (次のポーリング間隔で回復) |
同期メッセージの損失で一時的な精度低下 |
遅延変動 | クロックフィルタで異常値を除外 | トランスペアレントクロックで補償 |
ルート変更 | 新しいパスに適応(数分) | P2Pモードでは迅速に適応 E2Eモードでは再収束が必要 |
NTPは長期的な安定性を重視しているため、ネットワーク条件の一時的な変動に対して堅牢である。一方、PTPはネットワークインフラストラクチャのサポート(境界クロックやトランスペアレントクロック)がある場合に最も効果を発揮する。
2. 適用シナリオの区別
2.1 インターネット規模の時刻同期(NTPの強み)
NTPは、以下のようなシナリオで特に適している。
シナリオ | NTPの利点 |
---|---|
インターネット上の時刻同期 | 長距離・異種ネットワークでの堅牢性 |
大規模なサーバーファーム | スケーラブルな階層構造 |
ミリ秒精度で十分な一般的なITシステム | 実装の容易さと低リソース要件 |
信頼性が重視される環境 | 数十年の運用実績と広範なテスト |
複数の冗長サーバーが必要な環境 | 複数ソースからの情報を統計的に組み合わせる能力 |
NTPの主な利点は、インターネットのような不確定性の高いネットワーク環境での堅牢性と、最小限のリソース要件である。また、数十年にわたる運用実績があり、様々な環境での安定性が実証されている。
2.2 ローカルネットワークでの高精度同期(PTPの強み)
PTPは、以下のようなシナリオで特に適している。
シナリオ | PTPの利点 |
---|---|
産業制御システム | マイクロ秒以下の高精度同期 |
通信ネットワーク | キャリアグレードの同期要件への適合 |
金融取引システム | タイムスタンプの法的要件への適合 |
テスト・計測システム | 分散計測の高精度同期 |
オーディオ・ビデオ放送 | メディアクロックの精密同期 |
PTPの主な利点は、ハードウェアアシストを活用した高精度な時刻同期能力である。特に、制御ループやデータ収集が厳密な時間同期を必要とする産業用途に適している。
2.3 産業用途、科学応用、通信インフラでの要件差
産業、科学、通信の各分野では、時刻同期に対する要件が異なる。
分野 | 典型的な要件 | 推奨プロトコル |
---|---|---|
産業制御 | サブマイクロ秒精度 決定的な動作 高い信頼性 |
PTP(IEEE 1588) |
科学計測 | 超高精度 長期安定性 UTCトレーサビリティ |
用途により異なる (PTPまたは専用システム) |
通信ネットワーク | ナノ秒精度 同期周波数分配 階層的配信 |
PTP(テレコムプロファイル) SyncE(周波数同期) |
IT基盤 | ミリ秒精度 広域分散 低リソース要件 |
NTP |
エネルギー配分 | マイクロ秒精度 長距離配信 サイバーセキュリティ |
PTP(パワープロファイル) |
各分野に特化したPTPプロファイルが規格化されており、それぞれの要件に最適化されている。例えば、テレコム用のIEEE 1588 Telecom Profileや、電力系統用のIEEE C37.238などがある。
NTPは主にIT基盤での使用に適しているが、PTPは産業制御、計測、通信、エネルギーなどの分野で広く採用されている。
3. 実装上の考慮点
3.1 ハードウェア要件の違い
NTPとPTPには、実装に必要なハードウェア要件に大きな違いがある。
側面 | NTP | PTP |
---|---|---|
最低限のハードウェア | 標準的なOSが動作するコンピュータ | 標準的なOSが動作するコンピュータ |
高精度実現に必要なハードウェア | 安定したシステムクロック (特殊ハードウェアは不要) |
タイムスタンプユニット(TSU) PTPハードウェアクロック(PHC) 高精度発振器 |
ネットワークインターフェース要件 | 特殊要件なし | PTPサポートのNIC(高精度用) |
クロック安定性要件 | 中程度 (ソフトウェア補正で対応) |
高い (TCXOやOCXOが望ましい) |
NTPはソフトウェアのみの実装で十分な精度を提供できるが、PTPが真価を発揮するには専用ハードウェアが必要である。ただし、精度要件が緩い場合は、PTPもソフトウェアのみで実装可能である。
3.2 ネットワークインフラストラクチャの要件
NTPとPTPでは、ネットワークインフラストラクチャに対する要件も異なる。
側面 | NTP | PTP |
---|---|---|
ネットワーク機器のサポート | 特殊サポート不要 | 境界クロックまたはトランスペアレントクロック機能(高精度用) |
マルチキャストサポート | 不要 (ブロードキャストモードはオプション) |
必要 (標準モードはマルチキャスト) |
帯域幅要件 | 非常に低い (数分に1パケット) |
低い (数秒に1パケット) |
ネットワーク遅延の対称性 | 望ましいが必須ではない | 高精度には重要 (非対称性は誤差の主要因) |
PTPの高精度を実現するには、ネットワークインフラストラクチャのサポートが重要である。特に、スイッチやルーターが境界クロックまたはトランスペアレントクロック機能を提供することが望ましい。
3.3 セキュリティと信頼性の確保方法
時刻同期プロトコルは、システム全体のセキュリティと信頼性に重要な役割を果たす。両プロトコルのセキュリティメカニズムを以下に示す。
側面 | NTP | PTP |
---|---|---|
認証メカニズム | MD5(基本) Autokey(公開鍵) NTS(新しい標準) |
IEEE 1588-2008: Challenge-Response IEEE 1588-2019: 改良認証 |
アクセス制御 | IPフィルタリング キー制限 |
IPフィルタリング |
DoS対策 | レート制限 KoD(Kiss-o'-Death)パケット |
アクセス制御リスト |
データ整合性 | MD5ハッシュ | 認証TLV |
時刻ソース監査 | 複数ソースの比較 リーフノードでの監視 |
アナウンスTLVでの品質情報 |
NTPは長年の運用経験から、より成熟したセキュリティメカニズムを持っている。一方、PTPは当初セキュリティに重点を置いていなかったが、IEEE 1588-2019(PTPv2.1)ではセキュリティ機能が強化されている。
信頼性については、両プロトコルとも冗長構成をサポートしているが、アプローチが異なる。NTPはアルゴリズム的に複数ソースを組み合わせるのに対し、PTPはフェイルオーバーメカニズムに依存している。
V. 最後に
小さい頃はよく「たこフェリー」に(車ごと)乗船して淡路島に釣りにいったものです。
https://www.asoview.com/note/641/
参考文献
- https://datatracker.ietf.org/doc/html/rfc5905
- IEEE 1588 - Precise Time Synchronization as the Basis for Real Time
Applications in Automation - Implementation of the IEEE 1588 Precision Time Protocol for Clock Synchronization in the Radio Detection of Ultra-High Energy Neutrinos
Discussion