NTPによる時刻管理
この記事で分かること
- NTPの基本的な仕組み
- NTP導入によるメリット
概要
NTPの仕組みと役割
NTP(Network Time Protocol)とはネットワーク上にある機器の時刻を協定世界時を提供する時刻サーバーと同期するためのプロトコルである。通信にはUDPポート123番を用い、定期的な同期を行うことによって正確な時刻を維持することができ、ログの整合や認証、証明書の有効期限判定、分散システムの整合性などが正しく機能する。
また、時刻の信頼性を高めるため、複数のNTPサーバーを参照するのが一般的であり、NTPクライアントはそれらの時刻を比較し、明らかに時刻がずれているサーバー(外れ値)を候補から除外した上で、最も信頼できる時刻を算出する。
階層構造
Stratumとは何か
NTPは負荷分散と精度を両立させるため、Stratumと呼ばれる階層構造を持つ。
階層の頂点であるStratum0は時刻の基準となる原子時計やGPSそのものを指す。その直下にはStratum0から直接時刻を同期するStratum1のNTPサーバーが存在する。
仮に全てのネットワーク機器がStratum1へ時刻を同期しようとするとサーバーに負荷がかかりダウンしてしまう恐れがある。そこでStratum2はStratum1から、Stratum3はStratum2から時刻を受け取る、という様にStratum16まで(但しStratum16は未同期状態を指す為同期先には用いられない)ツリー状の階層構造を構築し負荷の分散を行っている。
サーバー選択のポイント
上の図から分かる様に、上位のStratumに行けば行くほど正確な時刻を取得することがでできるように見える。しかし実際にNTPサーバーを選択する際には、各NTPサーバーまでのネットワーク距離も重要視される。
時刻同期の精度は、時刻情報がサーバーからクライアントに届くまでのレイテンシに大きく影響される。たとえ時刻源の精度が非常に高い上位のNTPサーバーであっても、物理的に遠く、多くのネットワーク機器を経由する場所にあれば、その遅延によって正確性は失われてしまう。
このことから実用上は物理的に最も近いNTPサーバーを選択することが、安定した時刻同期を期待できるということが分かる。
NTP導入によるメリット
時刻管理の自動化
手動での時刻管理の手間や設定ミスといった運用上のリスクを解消し、統一的に時刻を管理することができるようになる。
システム信頼性の向上
ログのタイムスタンプが全機器で統一されるため、障害発生時の原因究明を的確に行うことができるようになる。
トランザクションの整合性
分散システムやクラウドでの時刻差による整合性エラーを防ぐことができる。
LAN内での構成例
社内ネットワーク(LAN)でNTPによる時刻同期を行う場合、大きく分けて2つの構成が考えられる。
- 各機器が直接インターネット上のNTPサーバーを参照する構成
- LAN内にNTPサーバーを構築する構成
各機器が直接インターネット上のNTPサーバーを参照する構成
前者は、LAN内の各コンピューターやネットワーク機器が個別にインターネット上の公開NTPサーバーを参照する方法である。
この構成はシンプルだが、インターネット回線に障害が発生すると、LAN内のすべての機器が時刻を同期できなくなるという大きなデメリットを持つ。また、多数の機器が外部と直接通信するため、セキュリティ上のリスクが存在する。
LAN内にNTPサーバーを構築する構成
一方後者はLAN内に代表となるNTPサーバーを構築し、そのサーバーだけがインターネット上のNTPサーバーと同期する方法である。LAN内の他の機器は、すべてこの社内NTPサーバーを参照して時刻を同期する。
この構成の最大のメリットは、インターネットに接続していないサーバーも時刻同期を行うことができ、またインターネット回線に障害が発生しても、社内のNTPサーバーが正常に動いている限り時刻同期は継続される点にある。これにより、システム全体の時刻の一貫性が保たれる。
このことから一般的に大規模な社内ネットワークを利用する場合は後者の構成が一般的に推奨される。
時刻補正の仕組み
NTPは通信遅延を考慮して補正を行う。クライアントとサーバ間で次の4つのタイムスタンプを用いる。
| タイムスタンプ | 説明 |
|---|---|
| T1 | クライアントが要求を送信した時刻 |
| T2 | サーバーが要求を受信した時刻 |
| T3 | サーバーが応答を送信した時刻 |
| T4 | クライアントが応答を受信した時刻 |
この時、
$往復遅延 = (T4 - T1) - (T3 - T2)$
$時刻のズレ = \{(T2 - T1) + (T3 - T4)\} / 2$
となり、クライアントは時刻のズレを補正しネットワーク遅延を織り込んだ時刻に近づける。
SNTP
SNTPはNTPの簡易版で、単方向に時刻を受信する用途を想定する。他機器への配信機能を持たず、IoT機器などで用いられる。高精度・高信頼が必要な用途ではSNTPではなくNTPを選ぶべきである。
参考
林口 裕志; 浦川 晃. シスコ技術者認定教科書 CCNA 完全合格テキスト&問題集[対応試験]. 株式会社 翔泳社.
