TL

PTP(IEEE 1588):ナノ秒精度の時刻同期

NTP の数ミリ秒では足りない用途でも、PTP なら同一 LAN でナノ秒級に時刻を合わせられる。遅延を往復測定で打ち消す原理、経路非対称の落とし穴、境界/透過クロックとハードウェアタイムスタンプの効きどころを解説。

応用PTPIEEE 1588時刻同期ハードウェアタイムスタンプNTP最終更新: 2026-06-21
TL;DR要点だけ先に
  • 1.PTP は Sync/Follow_Up/Delay_Req/Delay_Resp の 4 メッセージで往復の片道遅延を測り、それを差し引いてスレーブの時刻オフセットを求める。
  • 2.原理の前提は「往復で経路遅延が対称」。非対称があるとその半分がそのまま誤差として残り、PTP 自身では検出できない。
  • 3.各ホップに境界/透過クロックを置き、NIC のハードウェアタイムスタンプで滞留時間を実測・補正することで、ソフト処理のゆらぎを排してナノ秒級に到達する。

PTP は何を解決するのか

時刻同期の定番である NTP は、広域でも数ミリ秒、LAN 内でも数百マイクロ秒どまりが現実的な精度です。多くの用途には十分ですが、金融取引の注文タイムスタンプ、5G 基地局の無線フレーム整合、産業オートメーション、分散データベースの順序付けなどは、マイクロ秒〜ナノ秒の同期を要求します。この桁に踏み込むのが PTP(Precision Time Protocol, IEEE 1588)です。

両者の差は精度目標だけではありません。NTP はソフトウェアが受信時に時刻を読むため、OS のスケジューリング遅延や割り込み処理のゆらぎ(ジッタ)がそのまま誤差になります。PTP は「いつパケットがケーブルに出た/入ったか」をできるだけ物理層に近い場所で測り、経路上の機器にもその測定へ参加させることで、ソフト処理のゆらぎを設計的に排除します。

基準クロックは GM(グランドマスタ)が握る

PTP ドメイン内で最も正確なクロックを持つノードを GM(Grandmaster)と呼び、ここが時刻の基準になります。GM は BMCA(Best Master Clock Algorithm)で自動選出され、各ノードはクロック品質(GPS 同期か、内蔵発振器か等)を広告し合って最良の一台を選びます。残りはスレーブとして GM に追従します。

往復測定でオフセットと遅延を分離する

スレーブが知りたいのは自分の時計とマスタの時計の差(オフセット)です。しかしマスタの時刻を載せたメッセージは、ネットワークを伝わる片道遅延 d のぶん遅れて届くので、受信時刻をそのまま比べると「オフセット+遅延」が混ざってしまいます。PTP はこれを 4 つのメッセージで分離します。

メッセージ送信元運ぶ情報記録するタイムスタンプ
Syncマスタ→スレーブ同期の起点t1(送信), t2(受信)
Follow_Upマスタ→スレーブ正確な t1 の値(t1 を後追いで通知)
Delay_Reqスレーブ→マスタ遅延測定の要求t3(送信), t4(受信)
Delay_Respマスタ→スレーブ正確な t4 の値(t4 を通知)

スレーブは 4 つの時刻 {t1,t2,t3,t4} を集めます。マスタ→スレーブの片道遅延は t2 - t1、スレーブ→マスタの片道遅延は t4 - t3 ですが、どちらにもオフセット o が混入しています。t2 - t1 = d + ot4 - t3 = d - o と書けるので、二式を足し引きすれば d と o が分離できます。

# 往復が対称(両方向の片道遅延が等しく d)と仮定
t2 - t1 = d + o      # マスタ→スレーブ:遅延に +o が乗る
t4 - t3 = d - o      # スレーブ→マスタ:遅延に -o が乗る

# 足すと o が消えて片道遅延が出る
meanPathDelay = ((t2 - t1) + (t4 - t3)) / 2

# 引くと d が消えてオフセットが出る
offset        = ((t2 - t1) - (t4 - t3)) / 2

# スレーブは自分の時計から offset を引いて GM に合わせる

要は RTT を 2 で割って片道遅延を推定し、それを使ってオフセットから遅延ぶんを取り除く、という考え方です。NTP も同じ往復測定の骨格を持ちますが、PTP はこの t1〜t4 を後述のハードウェアで桁違いに正確に取る点が違います。

Follow_Up はなぜ要るのか(ワンステップとツーステップ)

正確な t1 は「Sync がケーブルに出た瞬間」ですが、その値を Sync 自身に書き込もうとすると、書き込み確定後に送信する必要があり実装が難しくなります。そこで Sync を先に流し、確定した t1 を後続の Follow_Up で通知するのがツーステップ方式です。送信ハードウェアがその場で t1 を埋め込めるなら Follow_Up を省くワンステップにできます。

経路非対称という消えない誤差

上の式が成り立つ前提は、往復で経路遅延が対称(行きと帰りの d が等しい)ことです。現実にはこれが崩れます。行きと帰りで物理経路が違う、片方向だけ別の光ファイバ長を通る、機器内のキューイング遅延が方向で偏る——いずれも非対称を生みます。

非対称が a(行きが帰りより a だけ遅い)あると、推定オフセットには a/2 の誤差がそのまま残ります。しかも厄介なことに、PTP は t1〜t4 の差からしか情報を得ないため、この非対称を自分では検出できません。往復の平均は正しく出るのに、オフセットだけが静かにずれます。

非対称は「半分」が誤差になり、検出もできない

片方向だけ遅延が a 増えると、meanPathDelay は a/2 増える一方、offset は a/2 ずれます。ナノ秒を狙う世界では、行き帰りで使うファイバ長の数十 cm の差(光速で 1m あたり約 5ns)すら効きます。対策は経路を物理的に対称化するか、既知の非対称値を asymmetry 補正として設定にあらかじめ与えることです。式だけでは解けません。

境界クロックと透過クロック

最大の誤差源は、経路上のスイッチ/ルータでの滞留時間のゆらぎです(イーサネットスイッチングの原理 参照)。Sync がスイッチのキューで混雑により毎回違う時間だけ待たされると、片道遅延 d が一定という前提が崩れます。PTP はこれを、中継機器を 2 種類の役割で同期に参加させて解きます。

クロック種別役割やること
OC(Ordinary Clock)端点GM またはスレーブとして 1 ポートで動作
BC(Boundary Clock)中継(再同期)上流に対してスレーブ、下流に対してマスタとして振る舞い、ホップごとに同期を区切る
TC(Transparent Clock)中継(滞留補正)自機内の滞留時間を実測し correctionField に加算してそのまま転送

境界クロック(BC) は、自分が上流から正確に同期し、その時刻を下流へ再配信します。長い経路を 1 ホップずつ区切るので、各区間の誤差が累積しにくくなります。透過クロック(TC) は時刻を再配信せず、PTP メッセージが自機内に滞在した時間を測って、メッセージ内の correctionField にその値を足し込みます。スレーブは最終的に correctionField の合計を遅延計算から差し引くので、各スイッチのキューイングのゆらぎが帳消しになります。

# 透過クロックの滞留時間補正(要点)
on ingress(pkt):
    t_in = hw_timestamp()          # 入口でハードウェア計測
on egress(pkt):
    t_out = hw_timestamp()         # 出口でハードウェア計測
    residence = t_out - t_in       # 自機内の実滞留時間
    pkt.correctionField += residence
    # スレーブ側で d 計算からこの合計を差し引く
    #   → キューイング遅延のゆらぎが相殺される

ハードウェアタイムスタンプが効く理由

PTP の精度を最終的に決めるのは、t1〜t4 をどこで読むかです。OS のソケット層で時刻を読むと、ドライバ・割り込み・スケジューラを通る間にマイクロ秒級のゆらぎが乗ります。これを避けるため、対応 NIC は MAC/PHY 直前で「パケットが実際に媒体へ出入りした瞬間」をハードウェアでタイムスタンプします(RDMA と RoCE と同じく、ソフト経路を迂回して精度を稼ぐ発想です)。

ソフトウェアタイムスタンプが数 µs〜数十 µs のゆらぎを持つのに対し、ハードウェアタイムスタンプは数 ns〜数十 ns に収まります。BC/TC もこの NIC 機能を前提に滞留時間を実測するため、経路上の全機器が PTP ハードウェア対応であることがナノ秒到達の事実上の条件になります。一台でも非対応スイッチが混ざると、そこでゆらぎが入りボトルネックになります。

物理クロックの周波数も合わせる(同期 vs 周波数同期)

オフセット補正は「今この瞬間の時刻」を合わせるだけです。スレーブの発振器がマスタとわずかに周波数がずれていれば、合わせた直後からまた離れていきます。そのため PTP 実装は offset の時系列から周波数差(drift)も推定し、サーボ(PI 制御等)で局所クロックの進む速さ自体を継続調整します。これにより Sync 間隔の間も精度を保てます。

実務上の含意

PTP を導入する勘所は精度数値そのものより、「経路全体を PTP 対応にできるか」です。GM の品質(GPS/GNSS 同期か)、全ホップが BC か TC か、両端と中継の NIC がハードウェアタイムスタンプ対応か——どれか一つでも欠ければ、その箇所のゆらぎや非対称が支配項になります。データセンタや基地局網のように同一管理ドメインで全機器を揃えられる環境でこそ、PTP は真価を発揮します。

逆に、経路を完全に制御できない一般的な IP 網では NTP(ハードウェアタイムスタンプ対応の実装などで精度を底上げした構成を含む)で十分なことも多く、過剰な投資を避ける判断も重要です。キューイング遅延が同期精度に直結するという意味で、PTP は時刻同期でありながら帯域・レイテンシ・スループットの理解と地続きの技術だと捉えると、設計判断がしやすくなります。

試験・面接で問われる急所

「PTP はどうやってオフセットを求めるか」に即答できること。答えは「Sync/Delay_Req の往復で {t1,t2,t3,t4} を測り、offset = ((t2-t1)-(t4-t3))/2meanPathDelay = ((t2-t1)+(t4-t3))/2 で遅延とオフセットを分離する」。前提が「往復遅延の対称性」であり、非対称があると a/2 の誤差が残り PTP 自身では検出できない点、境界クロック(ホップごとに再同期)と透過クロック(correctionField に滞留時間を加算)の違い、ハードウェアタイムスタンプがソフト処理のゆらぎを排してナノ秒級を可能にする点が頻出です。

ネットワーク Article

PTP(IEEE 1588):ナノ秒精度の時刻同期を実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

PTP

比較で見る軸

難易度: advanced / カテゴリ: ネットワーク / タグ数: 5

導入後に効く点

原理の前提は「往復で経路遅延が対称」。非対称があるとその半分がそのまま誤差として残り、PTP 自身では検出できない。

先に潰すリスク

用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。

数字・仕様の読み方
難易度
advanced
カテゴリ
ネットワーク
タグ数
5

判断チェックリスト

  • 自社の用途が「PTP / IEEE 1588」に近いか確認する。
  • 強みである「PTP は Sync/Follow_Up/Delay_Req/Delay_Resp の 4 メッセージで往復の片道遅延を測り、それを差し引いてスレーブの時刻オフセットを求める。」が本当に評価軸になるか確認する。
  • 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

PTPIEEE 1588時刻同期ハードウェアタイムスタンプNTPPTPIEEE 1588時刻同期
参考: 公式情報