
NTP詳解:時刻同期の構造と同期の仕組み、PTPとの関係
前回(NTP:インターネットを支える時刻同期の仕組み)は、NTPの基本的な役割や歴史についてご紹介しました。今回は、その仕組みをさらに深掘りし、、NTPが提供する時刻同期の堅牢性と精度の秘密に迫ります。
🌐 Stratum(ストラタム)構造:信頼の階層
NTPの信頼性は、その階層構造(Stratum)によって支えられています。Stratumは、ネットワーク上のタイムサーバーを、精度の高い順に階層化する仕組みです。
Stratumレベル | 参照元 | 特徴 |
|---|---|---|
Stratum 0 | プライマリ参照クロック | 原子時計、GPS受信機、セシウム標準器など、非常に高精度な外部の物理的な時刻源。ネットワーク上には存在せず、直接接続される。 |
Stratum 1 | Stratum 0に直結 | 外部の時刻源に直接同期しているサーバー。これをプライマリタイムサーバーとします。 |
Stratum 2 | Stratum 1 | Stratum 1サーバーに同期しているサーバー。セカンダリタイムサーバーとして、多くのクライアントに時刻を提供します。 |
Stratum 3以降 | 直上のStratum | Stratum 2サーバーに同期する、といった形で、階層が深くなるにつれて精度はわずかに低下しますが、信頼性は保たれます。 |
NTPではStratum 15まで定義されています。この多層的な構造により、一つのサーバーがダウンしても他のサーバーから時刻を取得できる冗長性と、ネットワーク負荷を分散するスケーラビリティが確保されています。
💡LinuxなどでNTPの同期状態を確認するとStratum 16と表示されている場合がありますが、これはNTPサービス起動直後やNTPサーバーの障害などで上位StratumのNTPサーバーと同期できていない時に表示される場合があります。通常は、時間の経過で解消して正常なStratumの表示になります。
⏰ NTPの時刻同期の仕組み:4つのタイムスタンプ
NTPのクライアントとサーバーは、往復するパケットの4つのタイムスタンプを利用して、ネットワーク遅延と時刻のズレ(オフセット)を算出します。
- クライアントがサーバーへリクエストを送信した時刻 (t1)
- サーバーがクライアントのリクエストを受信した時刻 (t2)
- サーバーがクライアントへレスポンスを送信した時刻 (t3)
- クライアントがサーバーのレスポンスを受信した時刻 (t4)
この4つのタイムスタンプから、以下の2つの重要な値が計算されます。
- タイムオフセット(θ):クライアントとサーバー間の時刻の差。
θ = ( ( t2 - t1 ) + ( t3 - t4 ) ) / 2 - ラウンドトリップタイム(δ):パケットの往復時間からサーバー内の処理時間を除いたもの。
δ = (t4 - t1) - (t3 - t2)
クライアントは、このタイムオフセット θ を基に、自身の時計を修正してサーバーの時刻に合わせます。
時刻修正モード:slew(スルー)モードとは?
クライアントの時刻をサーバーに合わせる場合、時刻のズレが大きい時に一気に合わせてしまうと、時刻指定で実行するようにセットされたプログラムが実行されなかったり、システムの動作に影響を生じさせる場合があります。そのためNTPは、単に時刻を一気にジャンプさせずに、システムへの影響を最小限に抑えるためにゆるやかに時刻を調整する仕組みを持っています。その方法の一つがslew(スルー)モードです。
Slew(スルー)モード
- 特徴:時刻をゆっくりと徐々に調整していく方法。システムクロックの周波数(進み/遅れの速度)を一時的に微調整することで、時間の流れを加速または減速させ、目標時刻に近づけます。
- 利点:時刻が急激に巻き戻ったり(ロールバックしたり)進んだりすることがないため、ログの連続性やシステム動作への影響を最小限に抑えられます。
- 用途:通常、オフセットが小さい場合(数秒以内)に採用されます。
Step(ステップ)モード
- 特徴:オフセットが非常に大きい場合(通常128秒以上)に、時刻を一気に目標時刻にジャンプさせる方法。
- 利点:短時間で同期が完了します。
- 用途:システムの起動時など、時刻が大きくずれている場合に用いられますが、システムやアプリケーションによっては問題を引き起こす可能性があるため、一般的にはslewモードが推奨されます。
💾 実際に使われているNTPソフトウェア
NTPを実装するためのソフトウェアはいくつか存在します。古くはNTP Projectがリファレンス実装として公開しているntpdがありますが、近年ではセキュリティや安定性の観点からそれに代わる新しい実装が広く使われています。
ntpd(NTPデーモン):歴史的に最も広く使われてきたNTPのリファレンス実装ですが、近年は新しい実装への移行が進んでいます。chrony:ntpdに代わる推奨のNTP実装として普及が進んでいます。- 特徴:同期速度が速く、断続的なネットワーク接続や仮想環境、不安定なクロックなど、幅広い環境で高い精度と安定性を発揮します。多くのモダンなLinuxディストリビューションで標準採用されています。
次回はchronyの設定方法をご紹介する予定です。
🆚 PTPとの違い:より高精度な時刻同期プロトコル
NTPはミリ秒(ms)レベルの精度を実現しますが、さらに高いマイクロ秒(μs)やナノ秒(ns)の精度が求められる分野では、 PTP (Precision Time Protocol) が使用されます。
項目 | NTP (Network Time Protocol) | PTP (Precision Time Protocol) |
|---|---|---|
精度レベル | ミリ秒 (ms) 単位 | マイクロ秒 (μs) ~ ナノ秒 (ns) 単位 |
同期方式 | ソフトウェア処理(OS依存) | ハードウェアタイムスタンプ(専用ハードウェア) |
適用範囲 | インターネットを含む広域ネットワーク、一般的なITインフラ | ローカルネットワーク、金融取引、通信基地局、産業制御システムなど |
実装 | ソフトウェアのみで可能 | 専用のネットワーク機器(PTP対応スイッチなど)が必要 |
PTPは、ネットワーク機器の遅延までも正確に補正するために、パケットのタイムスタンプをネットワークインターフェースカード(NIC)やスイッチのハードウェアレベルで取得します。この「ハードウェアタイムスタンプ」こそが、NTPとの決定的な差であり、高精度を実現する鍵となっています。
🆕 最新のNTP関連情報など
最近1年程度のNTPに関する大きな動向としては、セキュリティの強化とNTPv4からNTPv5への動き、そしてPTPとの連携が挙げられます。
NTPセキュリティの強化:
- 従来の認証メカニズムに対する脆弱性対策が進み、より安全な暗号化アルゴリズムを用いた認証(例:NTPv4のAutokeyやNTS(Network Time Security))の普及が継続しています。
NTPv5への移行:
- NTPv4の次のバージョンとして、NTPv5の仕様策定がIETF (Internet Engineering Task Force) で進められています。
- 2020年頃にRed HatのMiroslav Lichvar氏らによって草案(ドラフト)
draft-mlichvar-ntp-ntpv5が提出されました。 - 主な改善点:
- うるう秒処理の改善:
leap smear(うるう秒の挿入/削除を時間をかけて徐々に処理する手法)への対応。 - 高精度化:32-bit秒フィールドの高精度化など。
- 簡素化:NTPv4で複雑だった複数のアソシエーションモードが、クライアント/サーバーモードのみに整理される方向です。
- 💡 現状: 標準化プロセスは進行中であり、パブリックサーバーでの本格的な実装や普及はまだこれからですが、既存のNTPv4パケットと互換性を保ちながら新しい機能を組み込む工夫が盛り込まれています。
PTPとの統合利用:
- 超高精度が必要なシステムでは、NTPとPTPを組み合わせて利用するハイブリッドなシステムの設計が進んでいます。これは、NTPの広域性・汎用性と、PTPの局所的な高精度を両立させるためです。
- 具体的な構成:PTPグランドマスタークロック(非常に正確な時刻源)に同期したサーバーが、その高精度な時刻をNTPとして下位のクライアントに配信する構成が一般的です。この役割を果たすソフトウェアやアプライアンスも存在します。
- 関連仕様: NTPとPTPの相互運用性や、高精度タイムスタンプの扱いに関する仕様や業界標準の整備が進んでおり、将来的にはNTPv5がPTPとの連携をよりスムーズにする役割を担うことも期待されています。
NTPはその誕生から長い年月が経っていますが、現代のデジタル社会の基盤として、より安全で高精度な時刻同期を実現するために進化を続けています。
次回は「NTPサーバーの構築と設定のベストプラクティス」を掲載予定です。


