ネットワーク・タイム・プロトコル(NTP)
ネットワーク・タイム・プロトコル(NTP)は、コンピュータネットワーク上で時刻を正確に同期させるための通信プロトコルです。このプロトコルは、1985年以前から実運用されている歴史を持ち、現在も広く利用されている
インターネットプロトコルの一つです。NTPの設計者であるデイヴィッド・L・ミルズ氏は、デラウェア大学においてこのプロトコルを開発しました。
NTPの主な目的は、全ての参加コンピュータを
協定世界時(UTC)に数ミリ秒の誤差で同期させることです。これにより、時刻に依存するデータ交換(メールやファイルの送受信、ログ配信など)が円滑に行われるようになります。各コンピュータが持つリアルタイムクロック(RTC)が異なる場合、誤った時刻でのデータ処理や通信が行われる可能性があるため、RTCの正しい同期が不可欠です。
従来のタイムプロトコルと異なり、NTPは通信時間による誤差を最小限にするよう工夫されています。例えば、NTPではマルズーロのアルゴリズムに基づいた交差アルゴリズムを使用して最適なタイム
サーバを選択し、遅延の影響を軽減します。これにより、NTPは通常、
インターネット上で数十ミリ秒、理想的な条件下ではLAN内で1ミリ秒以下の誤差を達成します。
NTPは、クライアント
サーバモデルが基本ですが、タイム
サーバを相手としてピアツーピアネットワークでも利用可能です。通信はUDPのポート123を介して行われ、ブロードキャストやマルチキャストにも対応しています。NTPは、閏秒情報を提供する一方で、タイムゾーンや夏時間に関する情報は送信しない設計です。最新のプロトコルバージョンはNTPバージョン4で、RFC 5905に文書化されています。
NTPの歴史
NTPの歴史は1979年に遡り、当時ニューヨークで開催された全米コンピュータ会議において、ネットワーク時刻同期技術が最初に公開されました。1981年には、ネットワークプロトコルがRFC 778として記述され、早期のプロトコルとして展開されました。1985年にはNTPバージョン0が発表され、ファズボールルータやUNIXシステムに統合されました。
1988年にはNTPv1がRFC 1059として公開され、さらに1991年にはNTPv1に関する論文が発表され、エンジニアコミュニティで注目を集めました。その後、RFC 1305にてNTPv3が定義され、1992年にブロードキャストモードが導入されました。最新のバージョンであるNTPv4は、2010年に仕様案が提示され、その後も進化し続けています。
NTPの動作原理
NTPでは
協定世界時(UTC)の時刻が送受信され、
サーバは他のNTP
サーバと通信しながらネットワーク遅延を測定。受け取った時刻情報を自動的に補正し、自システムの時計をミリ秒単位で校正します。
クロック階層もNTPの特徴で、最上位の基準クロックがstratum 0、同期した
サーバがstratum 1、さらに下層に各レベルがある構成で、各
サーバはそのレベルによって距離を表します。時間源は原子時計やGPS、電波時計など高精度の計時装置が用いられ、最上層に位置することで他の
サーバに正確な時刻を提供します。
NTPプロトコルでは、エポックからの経過秒数を表すタイムスタンプが使用され、これにより2036年の桁あふれ問題(2036年問題)が発生することが予測されています。これに対処するための手法もRFC 4330で示されています。
NTPの運用と問題点
NTP
サーバの設定ではIPアドレスを直接指定するよりもホスト名を用いることが推奨されており、LAN内に内部NTP
サーバを設けることで外部
サーバへのトラフィックを削減が可能です。NTPプールプロジェクトなど国際的なプロジェクトにより、エンドユーザーが利用できるNTP
サーバの負荷分散が行われていますが、根本的な解決には至っていません。
過去には特定のNTP
サーバにアクセスが集中し、過負荷となった問題も報告されています。こうした課題を解決するため、利用者はISPや公開NTP
サーバ、プール
サーバの活用を検討する必要があります。日本においても、情報通信研究機構(NICT)による高性能NTP
サーバが存在し、正確な時刻取得の一助となっています。
まとめ
ネットワーク・タイム・プロトコル(NTP)は、コンピュータ間の時刻同期を実現するために不可欠な通信プロトコルです。データ管理や通信の精度を保つため「時」への依存度が高まる現代において、NTPの技術とそのハードウェア、ソフトウェアの進化は今後も重要となるでしょう。