【NTP入門 第9回】PTPと高精度同期 ― IEEE 1588、グランドマスターとBMCA、境界クロック・透過クロック、ハードウェアタイムスタンプ、linuxptp

NTP サーバー
スポンサーリンク
スポンサーリンク

「監査の要件で、取引の記録はUTCから1ms以内にそろえるよう求められました」
「5Gや放送の現場では、NTPではなくPTPを使うと聞きました。何が違うんですか?」

多くの業務システムは、NTPのミリ秒単位の精度で足ります(第1回)。でも、マイクロ秒の精度が要る分野では、PTP(Precision Time Protocol)が使われます。

第8回まででNTPを一通り見ました。第9回では、PTPの仕組みと、NTPとの使い分けを扱います。


PTPとは・NTPとの違い

PTP(Precision Time Protocol)は、IEEE 1588で定められた高精度の時刻同期の規格です。現行版はIEEE 1588-2019(PTPv2.1)で、2008年版(PTPv2)と互換性を保ちつつ、セキュリティの仕組みなどが加わりました。その後の追補をまとめる改訂も進んでいます。

NTPはNTPサーバーから普通のスイッチを通るため待ちがばらつきミリ秒〜数十µs(LAN)の精度なのに対し、PTPはグランドマスターからPTP対応のスイッチ(BC/TC)が補正しNICもハードウェアで刻むためマイクロ秒未満の精度になることと、IEEE 1588が2002年のv1から2008年のv2、2019年のv2.1、次の改訂へ進んでいることを示す図

NTPとの大きな違いは3つです。

  1. ネットワーク機器が同期に参加する:スイッチが境界クロックや透過クロックとして、中継の揺らぎを取り除く
  2. ハードウェアで時刻を刻む:NICやスイッチのハードウェアで送受信の時刻を刻む
  3. 最良の時計を自動で選ぶ:ネットワークの中で最良の時計(グランドマスター)を自動で選び、そこから配る

条件がそろえばマイクロ秒未満の精度が得られます。その代わり、経路上の機器とNICの対応が前提で、インターネット越しには使いません。


グランドマスターとBMCA

PTPで時刻の大元となる時計をグランドマスター(GM)と呼び、多くはGNSS受信機を内蔵した専用機です。

GM-A(priority1=100、clockClass 6)とGM-B(予備、priority1=110)がAnnounceで品質を知らせ、BMCAでGM-Aが選ばれることと、比べる順がpriority1、clockClass、clockAccuracy、安定度、priority2、clockIdentityであること、GM-AがGNSSを失うとclockClassが下がりGM-Bに自動で切り替わること、IEEE 1588g-2022からmasterはtimeTransmitter、slaveはtimeReceiver、BMCAはBTCAとも呼ぶことを示す図
  • どれがGMになるかは、BMCA(Best Master Clock Algorithm)で自動的に決まる
  • 各時計はAnnounceメッセージで品質を知らせ、受け手は、管理者が決める優先度(priority1)、時計の状態(clockClass:GNSSに同期中か等)、精度、安定度、2つ目の優先度(priority2)、識別子の順に比べて最良のものを選ぶ
  • GMがGNSSを失って品質が下がれば、予備のGMへ自動で切り替わる
  • IEEE 1588g-2022で、master/slaveの代わりにtimeTransmitter/timeReceiverという用語も使えるようになり、BMCAはBTCAとも呼ばれる

priority1を最初に比べるので、主のGMは管理者が決められます。


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

普通のスイッチは、混み具合でパケットを待たせる時間が毎回変わり、この揺らぎがPTPの精度を落とす最大の要因です。PTP対応のスイッチは、2つの方法で対処します。

境界クロック(BC)はGMから区間1で受けた時刻を上流で受け下流で配ることで区間を分け、透過クロック(TC)はPTPを中継しながらスイッチ内の滞留3.2µsをcorrectionFieldに加算して受け手が差し引くことで待ち時間を申告し、非対応のスイッチでは待ち時間の揺らぎがそのまま残ることを示す図
  • 境界クロック(BC:Boundary Clock):上流のポートでは時刻を受ける側として自分の時計を合わせ、下流のポートでは時刻を配る側としてPTPを送り直す。区間ごとに区切るので、スイッチ内の待ち時間の影響を受けず、下流が多くてもGMの負荷が増えない
  • 透過クロック(TC:Transparent Clock):PTPのパケットを中継しながら、スイッチの中にとどまった時間(滞留時間)を測って、パケットの補正フィールド(correctionField)に書き足す。受け手はその分を差し引いて揺らぎを取り除ける
  • 通信事業者の網では、全ノードをBCにする構成(ITU-T G.8275.1)がよく使われる

非対応のスイッチをはさむと、その区間で精度が大きく落ちます。PTPを導入するときは、経路上のすべての機器を確認します。


Sync・Follow_Up・Delay_Req・Delay_Respの流れ

PTPの基本のやり取り(E2E方式)は、4つのメッセージで行います。

配る側(timeTransmitter)がSyncを送った時刻t1、受ける側(timeReceiver)が受け取った時刻t2を記録し、Follow_Upでt1を通知し(1ステップなら不要)、受ける側がDelay_Reqを送った時刻t3、配る側が受け取った時刻t4をDelay_Respで通知し、t2−t1=遅延+ずれ、t4−t3=遅延−ずれとなるので、2つの差を足せば遅延の2倍、引けばずれの2倍が残ることを示す図
  1. 時刻を配る側がSyncを送り、送った時刻t1を記録する。受ける側は受け取った時刻t2を記録する
  2. 正確な送信時刻は送ってからでないと分からないため、2ステップ方式では続けてFollow_Upでt1を知らせる(ハードウェアが直接書き込む1ステップ方式もある)
  3. 受ける側がDelay_Reqを送り、送った時刻t3を記録する
  4. 配る側は受け取った時刻t4をDelay_Respで返す

これでNTPと同じく4つの時刻がそろい、片道の遅延は ((t2−t1)+(t4−t3))/2、時刻のずれは ((t2−t1)−(t4−t3))/2 と計算できます(NTPの計算は第3回)。行きと帰りの遅延が等しい前提も同じです。メッセージは、UDPの319番・320番か、Ethernetに直接載せて運ばれ、1秒に何度も交換します。


ハードウェアタイムスタンプ

ソフトウェアのタイムスタンプは割り込みやカーネルの処理待ちで記録した時刻の誤差が数〜数十µs揺らぐのに対し、ハードウェアのタイムスタンプ(PHC)は通過の瞬間をNICが刻むのでサブµsにそろうことと、ethtool -T eth0で対応を確認することを示す図
  • ソフトウェアでの時刻の記録は、割り込みやカーネルの処理待ちで数〜数十マイクロ秒揺らぐ。NICがパケットの通過の瞬間にハードウェアで時刻を刻むのが、ハードウェアタイムスタンプ
  • NICは自分の時計(PHC:PTPハードウェアクロック、Linuxでは/dev/ptp0)を持つ。PTPはまずPHCを合わせ、PHCからシステムの時計へ移す
  • NTPでも使える:chronyのhwtimestampと、正確な送信時刻を後から伝えるinterleavedモード(xleave、RFC 9769、2025年)。RFC 10030(2026年8月)は、NTPをPTPのメッセージに包み、PTPにしか時刻を刻めないNICや透過クロックを、NTPでも使えるようにした
  • Windows:Windows Server 2019・Windows 10(1809)以降に、PTPのクライアントがある(UDP上のPTPv2、2ステップのみ)。NICの設定項目は*PtpHardwareTimestamp
$ ethtool -T eth0                 # 対応の確認(抜粋)
Capabilities:
        hardware-transmit
        hardware-receive
        hardware-raw-clock
PTP Hardware Clock: 0
PS> Get-NetAdapterAdvancedProperty -Name "Ethernet" -RegistryKeyword "*PtpHardwareTimestamp"

使われる場面と業界プロファイル

分野規格・プロファイル精度の目安ねらい
5G の基地局(TDD)ITU-T G.8275.1(全ノードが BC)、G.8275.2(非対応の区間を含む)UTC から ±1.5µs 程度隣の基地局と送受信の切り替えをそろえ、干渉を防ぐ
放送の IP 化SMPTE ST 2059-2(ST 2110 の映像・音声)、AES67(音声)マイクロ秒映像・音声を IP で送るときの同期
金融EU の MiFID II(委任規則 2017/574)高頻度取引は UTC から100µs・分解能1µs、そのほか1ms取引記録の時刻の正確さと証跡
データセンターIEEE 1588 の既定のプロファイル、Enterprise プロファイル(RFC 9760、2025年)ナノ〜マイクロ秒分散データベースの順序付け(Meta が2022年に PTP への移行を公表)
産業・車載IEEE 802.1AS(gPTP、TSN)マイクロ秒未満時間を保証するネットワーク
電力IEC/IEEE 61850-9-3、IEEE C37.2381µs 程度変電所の保護・計測

プロファイルは、PTPの選択肢(メッセージの間隔、マルチキャストかユニキャストか、BMCAの規則など)を分野ごとに決めたものです。同じPTPでもプロファイルが違うと通じないため、機器の選定ではプロファイルの対応を確認します。


Linuxのptp4l・phc2sys(linuxptp)

$ sudo ptp4l -i eth0 -s -m        # -s:時刻を受けるだけ、-m:画面に表示
(抜粋)ptp4l[…]: master offset -4552 s2 freq -30035 path delay 10385
$ sudo phc2sys -s eth0 -c CLOCK_REALTIME -w -m
$ sudo pmc -u -b 0 'GET CURRENT_DATA_SET'
グランドマスター(GNSS内蔵)からPTP対応スイッチ(BC/TC)を経てLinuxサーバーのNICのPHC(/dev/ptp0)にPTPのメッセージが届き、ptp4lがPHCを合わせ、phc2sys -wがPHCからシステムの時計CLOCK_REALTIMEへTAIからUTCへ37秒を引いて移すことと、代わりにchronyのrefclock PHCでもよく(どちらか1つ)、ptp4l -mのmaster offsetはずれ、s2は同期中、path delayは片道の遅延であることを示す図
  • linuxptp(RHEL・Ubuntuのパッケージlinuxptp)に含まれる。ptp4lがPTPのやり取りをしてNICのPHCを合わせ、phc2sysがPHCからシステムの時計(CLOCK_REALTIME)へ移す。pmcで状態を問い合わせる
  • PTPの時刻はTAI(UTCより37秒進む。第2回)で運ばれ、UTCとの差はAnnounceで配られる。phc2sysの-wはptp4lの同期を待ち、その差を使って補正する
  • chronyと併用するなら、システムの時計を合わせるのはどちらか1つにする。chronyのrefclock PHC /dev/ptp0でPHCを時刻源にし、NTPを予備にする構成もある
  • master offsetはずれ(ナノ秒)、s2は同期がとれた状態(s0:未同期、s1:時刻を合わせた直後)、path delayは片道の遅延。Windowsではw32tmのPTPクライアントを使う(前の節)

NTPとPTPの使い分け(クラウドを含む)

要件・環境選ぶもの精度の目安注意点
一般のサーバー・端末・ADNTP(chrony・w32time)ミリ秒〜数十マイクロ秒(LAN)大半はこれで足りる
監査で UTC から1ms以内NTP の高精度設定(Windows は第5回)または PTP1ms経路のホップ数を減らし、証跡を残す
5G・放送・高頻度取引PTP(対応スイッチ・GM)1µs 未満経路全体の対応が必要
NTP しか通らない混在環境NTP+ハードウェアタイムスタンプ(hwtimestamp・xleave)マイクロ秒未満も可サーバーとクライアントの NIC の対応が必要
AWS(対応インスタンス)Amazon Time Sync の PHC(/dev/ptp_ena)マイクロ秒Linux のみ。PHC はスメアしない
Azureホストの PHC(/dev/ptp_hyperv)ホストの時計に準じるネットワークに PTP は流れない

冒頭の「UTCから1ms以内」は、NTPの高精度設定かPTPのどちらかで狙えます。大事なのは、経路のホップ数を減らすことと、精度を満たしていた証跡を残すことです(第11回の問4)。

クラウドの「PTPハードウェアクロック」は、ホストの正確な時計を仮想マシンにPHCとして見せるもので、利用者がPTPのネットワークを組むものではありません(第7回)。AWSはClockBoundで、時刻とその誤差の範囲も取得できます。


PTPを導入する前に確かめること

PTPは、NTPのように「サーバーを1台立てれば終わり」ではありません。経路全体の準備が要ります。

  1. 要件:UTCからどれだけの精度が必要か、それをどう示すか(証跡)を先に決める。1ms程度ならNTPの見直しで足りることも多い(第5回・第7回)
  2. グランドマスター:GNSS受信機付きの専用機を2台。priority1で主と予備を決め、ホールドオーバーの性能を確かめる
  3. スイッチ:経路上のすべてのスイッチがBCかTCに対応しているか。非対応の区間があるなら、G.8275.2のような部分対応のプロファイルを検討する
  4. プロファイル:GM・スイッチ・クライアントが同じプロファイルに対応しているか(ドメイン番号、メッセージの間隔、マルチキャストかユニキャストか)
  5. NIC とOS:ethtool -Tでハードウェアタイムスタンプに対応しているか。Linuxはlinuxptp、WindowsはPTPクライアントの条件(UDP上・2ステップ)を確かめる
  6. 監視と予備:ptp4lのoffsetと状態(s2か)を監視し、PTPが止まったときにNTPへ切り替える構成(chronyのrefclock PHC+NTPのserverなど)を用意する
  7. セキュリティ:PTPのメッセージは、通常は認証されない。PTPを流すネットワークは、時刻の配信専用のVLANなどに閉じる

特に3と4は、「スイッチを1台入れ替えたら精度が落ちた」「別の部署のPTP機器と通じない」という形で、後から問題になりがちです。


考えてみよう

  1. 自社のシステムで、時刻の精度(UTCからの許容差)の要件が決まっているものはありますか。決まっていなければ、誰がどう決めるべきでしょうか。
  2. PTPを導入するとき、経路上のスイッチがPTPに対応していないと何が起きますか。BCとTCのどちらを選びますか。
  3. EC2でPHCとNTPを併用している構成で、うるう秒の告知が出たらどうしますか。

ヒント:この記事のBC・TCの図、業界プロファイルの表、NTPとPTPの使い分けの表、第7回のスメアの表が手がかりです。Linuxではethtool -TでNICの対応を、WindowsではNICの詳細設定の*PtpHardwareTimestampを確認します。


まとめ

  • PTP(IEEE 1588-2019)は、スイッチが補正に加わり、NICがハードウェアで刻むことでマイクロ秒未満を実現する
  • 大元のグランドマスターは、BMCAでAnnounceの品質を比べて自動で選ぶ。priority1で主を決められる
  • BCは区間を分け、TCは滞留時間を申告する。非対応のスイッチで精度が落ちる
  • 4つのメッセージでt1〜t4をそろえる。行きと帰りが等しい前提はNTPと同じ
  • 分野ごとのプロファイルが違うと通じない
  • Linuxはptp4l(PHC)→ phc2sys(システムの時計)。chronyと二重にしない
  • 大半はNTPで足りる。1ms以内は経路と証跡を見直し、1µs未満はPTP

次回は、「時刻が合わない」と言われたときの切り分けを扱います。


連載「NTP入門」全11回

全回の目次と、読む順番・目的別の読み方は、NTP入門の入口のページにまとめています。

  1. なぜ時刻同期が必要か
  2. 時刻の基礎知識
  3. NTPの仕組み
  4. Linuxの時刻同期(chrony)
  5. Windowsの時刻同期
  6. ネットワーク機器・仮想基盤
  7. 設計と推奨構成
  8. NTPのセキュリティ
  9. PTPと高精度同期(この記事)
  10. 時刻同期のトラブルシュート
  11. 時刻同期の設計演習
seichan

ご連絡は X (twitter) の DM へお願いします.
AWS Certified Solutions Architect – Professional (https://www.credly.com/badges/fd8feb88-6f1f-42ff-a94b-445bb6661cb8/public_url)
Nutanix Certified Professional - Multicloud Infrastructure 6 (https://www.credly.com/badges/5c081bef-a425-42e4-809c-85138e676630/public_url)
Palo Alto Networks System Engineer (PSE) - Hardware Firewall Professional (https://www.credly.com/badges/69dc3880-4a51-47eb-8843-47ba6ea7d013/public_url)

seichanをフォローする
スポンサーリンク
スポンサーリンク
NTP サーバー
シェアする
seichanをフォローする

スポンサーリンク
スポンサーリンク

コメント

タイトルとURLをコピーしました