Network Time Protocol
出典: フリー百科事典『ウィキペディア(Wikipedia)』
Network Time Protocol (NTP ネットワーク タイム プロトコル、エヌティーピー) は、ネットワークに接続される機器において、機器が持つ時計を正しい時刻へ同期するためのプロトコルである。OSI基本参照モデルの第7層に位置する。
目次 |
[編集] 概要
ネットワークに接続され、互いにデータの交換を行う機器において、各機器が持つ時計(以下、各機器が持つ時計を「RTC」として説明する)の時刻が機器間で異なると、時刻に依存した機器間のデータ交換(例えば電子メールやファイルの送受信、ログの配信など)に異常をきたすおそれがある。よって、RTCの時刻は互いに同期していることが望ましい。
ネットワークに接続される機器において、RTCの時刻を同期する古典的な方法として Time Protocol がある。Time Protocol は正しい時刻を持つ機器に各機器が時刻の問い合わせを行い、各時計の時刻を同期する方法である。しかしこの方法では、問い合わせ結果にトラフィックや伝送距離などに起因する通信遅延による時刻の誤差が含まるため、RTCを正しい時刻に同期させることができない。
NTPは通信遅延による誤差の影響を排除する工夫がなされた時刻同期のためのプロトコルである。
[編集] 時刻同期の仕組み
[編集] 処理の概略
NTPプロトコル上では協定世界時(UTC) を使って時刻を送受信する。
NTPサーバソフトを起動させ、上位NTPサーバに接続すると、機器に搭載された時計の遅れ具合や上位NTPサーバとのネットワーク通信の遅延、それらのばらつき具合を継続的に計測し、受け取った時刻情報を補正して自動的にミリ秒単位の精度で設定を行うとともに、他の機器への時刻も提供することができる。
[編集] 通信遅延時間の計算
[編集] 階層構造
NTPはstratumと呼ばれる階層構造を持ち、最上位のサーバが正確な時計から標準時を取得し、下位のホストはそれを参照する事で時刻を合わせる。最上位のNTPサーバはstratum 1であり、階層を下りるごとに数字が一つずつ大きくなる。stratum 16が最下位で、stratum 16に同期することは出来ない。NTPでは複数のサーバへ時刻を問い合わせることが可能で、これにより可用性と精度の向上が期待できる。通常サーバは複数の上位サーバを利用して時刻を取得する。一般にstratumの大きさよりも、サーバとのネットワーク的な近さのほうが時刻精度に大きく影響する。
GPSや標準電波、原子時計などの正確な時刻源(stratum 0)に直結されたNTPサーバはstratum 1となる。これらの時刻源は誤差±1μ秒未満(100万分の1秒未満)の非常に正確な時刻を刻んでいる(ただし、いい加減な時刻源と直結していても、stratum 1を名乗ることはできる)。
GPS衛星には原子時計が搭載されており、その電波にはGPSタイムと呼ばれる時刻情報が含まれている。標準電波は地域の標準時を保持する組織が時刻情報を電波で送出するものであり、日本の場合は独立行政法人情報通信研究機構(NICT、旧・通信総合研究所(CRL))が行っている。
[編集] 運用
LAN内部にクライアント台数がそれなりある場合には、外部へのトラフィックおよび外部NTPサーバーの負荷を最小限にするため、LAN内にNTPサーバとして稼動できる機器(もしルータなどで提供できなければ、NTPサービス提供専用の古いパソコンをセットアップしても良いし、またサーバ的な存在になっている既存のパソコン等にNTPサーバをインストールしても良い)を用意し、この機器(内部NTPサーバ)をプロバイダなどの外部NTPサーバに接続し、各クライアントはこの内部NTPサーバに接続する設定を行うと良い。
ルータやクライアントパソコンなどのネットワーク上の各機器では、前述のようなNTPサーバへアクセスして、機器内部の時計の時刻をNTPサーバの時刻に合わせることで内部時計の誤差が少なくなる。
- ※「桜時計」他の時刻合わせソフトウェアやNTPクライアント機能組込ルータなどでは、製作当時に使われていた福岡大学などの大学や外国のNTPサーバのアドレスが初期設定されたままになっているので、接続先NTPサーバのアドレス設定は、前述の契約先ISPや情報通信研究機構などのNTPサーバに修正する必要がある。
[編集] 2036年問題
NTPでは、時刻の表現に1900年1月1日0時0分0秒(協定世界時、日本標準時では同日9時0分0秒、この時間を以下では「起点」とする。)からの積算秒数を使用している。この値は32ビット符号なしで表現されるため、起点から(232-1)秒、すなわち42億9496万7295秒までしか表現できない。
その結果、起点から42億9496万7295秒経過した2036年2月6日6時28分15秒(協定世界時、日本標準時では同日15時28分15秒)の次の秒が桁あふれによって起点と認識されてしまい、NTPが誤動作すると予想されている。
これが2036年問題である。UNIX(Linux, FreeBSD等UNIXライクなOSも含む)にはこの問題が複数の箇所で今後顕在するとみられるが、このNTPについても該当する。
[編集] NTP 利用環境
[編集] 下位プロトコル
通常、NTPはUDP上で動作する。UDPのポートは123番を使用する。ルータのパケットフィルタの設定でポート123番を通さないようにしている場合は、外部のNTPサーバにアクセスできなくなるので、通すように設定する必要がある。
[編集] 公開NTPサーバ
前述のNICTは、日本標準時を刻む原子時計を参照しているNTPサーバを公開している。
[編集] NTPの実装
代表的なNTPの実装として、UNIX系オペレーティングシステム用のntpd(旧xntpd)がある。 WindowsやMac OSではインターネット対応が標準化した2000年前後から、OSの標準の機能としてNTPによる時刻の同期に対応している。 日本では、Windowsが本格的にインターネット対応を開始した1990年代後半に「桜時計」と呼ばれるNTPの実装が有名になった。
また、ルータやスイッチングHUB などのネットワーク機器にNTPサーバが搭載される場合がある。もともとは高級なネットワーク機器(特にルータやゲートウェイ)に搭載される機能であったが、ネットワーク普及に伴う機器の低価格化により、2000年代後半には民生用のネットワーク機器においてもNTPサーバが搭載されている。
[編集] NTPサーバと負荷
前述の通りNTPは階層構造を採用しているため、負荷分散が行えるように工夫されている。しかし、同じく階層構造を採用するDNSはDHCPなどによるDNSサーバアドレスの配信に対応しているのに対し、NTPはサーバアドレスを配信する仕組みに対応していない。よって、エンドユーザーは自ネットワーク内のNTPサーバの存在を知ることができず、stratum 1 の公開 NTP サーバに負荷が集中する傾向がある。
NTPサーバにアクセスが集中するとサーバの応答が悪くなり、配信される時刻の正確性が失われる。例えば、Windows XPやMac OSの初期設定サーバは混雑している為、ISP提供のサーバや "ntp.nict.jp" "ntp.jst.mfeed.ad.jp" "ntp.ring.gr.jp" 等に変更すると、より正確な時刻取得が可能になる。
[編集] clock.nc.fukuoka-u.ac.jp問題
日本では福岡大学が1993年からNTPサーバを公開しているが、ここを参照するように設定された機器やソフトが非常に多いため、アクセス集中による過負荷に悩まされている。契約しているインターネットサービスプロバイダ(ISP)の公開するサーバーを利用するなどで、これらの問題は解消すると考えられるため、福岡大学内部でNTPサーバーを利用している場合を除き、ISPや研究機関等が加入者向けにサービスするNTPサーバや公開NTPサーバを利用することが好ましい。
[編集] ウィスコンシン大学-ネットギアNTP問題
ネットギア製のルータがウィスコンシン大学のNTPサーバを参照するようハードコードされていたため、負荷が極度に集中した。以下に問題の経緯を記す。
2003年5月、ウィスコンシン大学に対して平均毎秒4万パケット(異常値のようなピーク時で毎秒8万パケット)のNTPサービスへの接続が行われた。 これに対し大学側はNTP用に公開していたポートを閉じ、悪意あるアクセスは数時間のうちに収まるであろうと考えていた。しかしながら1ヵ月後の2003年6月の時点において、大学側の予想に反するどころかさらに状況は悪化し平均毎秒25万パケットを記録。さらなる調査によって、多くの接続元が1秒毎に問い合わせを行っている事に不審を抱くこととなる。接続元となっている2つの大学に協力を要請。調査結果の中で双方ともにネットギア社製のルーターを使用していた事が判明、型番もMR814であると特定された。
2003年6月16日、大学側はネットギア社のカスタマーサポート宛に電子メールにて状況を報告を行ったが返答がないため直接交渉を行い、2003年6月19日に、ネットギア社から「開発者によるデバッグ時の設定値の残骸が引き起こしたもの」との説明が大学側に報告され、協力体制が整備された。
2003年8月の時点において、影響を受けた生産台数70万台から行われる最大毎秒70万パケットに及ぶリスクに対して、大学側はルーター使用者に影響がでないよう配慮し、ネットギア社からはファームウェアのヴァージョンアップが提供された。これによりウィスコンシン大学の転送量の増加傾向は弱くなり、2003年11月からは減少傾向に転じることとなった。
なお、これらの事件の詳細は、2003年8月21日に、ウィスコンシン大学のDave Plonkaにより纏められている。[1]
[編集] 各ソフトウェアにおける設定法
[編集] Windows XPでの時刻合わせについて
Windows XP では標準で NTP クライアント機能を持っているため、以下のような方法で動作をさせることができる。
[編集] HOME エディション, Active Directory へドメイン参加していない Professional エディション
- "コントロールパネル"の"日付と時刻"を開く。
- "インターネット時刻"タブをクリックする。
- "自動的にインターネットサーバと同期する"をチェックする。
[編集] Active Directory へドメイン参加している Professional エディション
- 自動的に Active Directory サーバーと時刻の同期が行われるため、OS の NTP クライアント機能は設定を行えない("コントロールパネル"の"日付と時刻"に"インターネット時刻"タブが表示されない)。
[編集] Mac OS 9での時刻合わせについて
Mac OS 9では標準で NTP クライアント機能を持っているため、以下のような方法で動作をさせることができる。
- "コントロールパネル"の"日付 & 時刻"を開く。
- "ネットワーク・タイムサーバを使用する"をチェックする。
[編集] Mac OS Xでの時刻合わせについて
Mac OS Xでは標準で NTP クライアント機能を持っているため、以下のような方法で動作をさせることができる。
- システム環境設定を開く。
- システムの項目にある日付と時刻アイコンをクリックする
- 日付と時刻を自動的に設定のチェックボックスを ON にする
[編集] 関連RFC
- RFC 868 - Time Protocol (NTPが登場する前の古典的な時刻同期プロトコル)
[編集] 関連項目
en:NTP server misuse and abuse
[編集] 外部リンク
- NTP Project
- NICT 公開NTPサービス 日本標準時に直結されたstratum1のNTPサービス。
- 時刻情報提供サービス for Public インターネットマルチフィード(MFEED) によるNTPサービス。NICT、MFEED他による試行サービスが、NICTによるNTPサービスを利用する形として2005年3月31日に正式サービスに移行したもの。
- Ring Server ProjectによるNTPサービス
- NTP - wiki@nothing - 日本国内のISPや研究機関等のNTPサーバおよび公開NTPサーバの情報をまとめている
- 外部記事:「@IT:NTPでネットワーク全体のマシンの時刻を合わせる(1)」
カテゴリ: 書きかけの節のある項目 | インターネットのプロトコル | 時間