パソコン自動時刻同期(原理説明)

PC・ガジェット等

パソコンには、インターネットにつながっていれば自動で時刻あわせをする機能がある。windowsXP以降のOSは、インターネットがつながれば勝手に正確な時刻をインターネットから拾ってきて、自分の時計を一週間に一度修正している。普通に使用している分には意識する必要はないが、どうやってそれを実現しているのか、原理について触れる。

パソコンがインターネットから受信する正確な時刻は、インターネット上に無数に存在しているタイムサーバ(時刻同期サーバ)から受けている。タイムサーバは定期的に日本標準時(独立行政法人情報通信研究機構の運営する原子時計)やその他GPS衛星から時刻情報を受信し、自身の持つ時刻を正確なものに更新している。これにより、インターネットに接続している機器は実用上問題ないレベルで正確な時を刻むことができる。ネットワークで正確な時刻情報のやりとりを行えるシステムを、NTP(Network Time Protocol)と呼ぶ。これにより、タイムサーバは主にNTPサーバと呼ばれている。(図1)

ntp_theory.png
図1

NTPサーバ自体の時刻同期は、原子時計やGPSでなくてもよく、NTPサーバ同士で多段構成にできる。時刻提供元からユーザまでの間にかませたサーバ数は”stratum”で表され、提供元に一番近いサーバがstratum1、サーバが1つ増えるごとに数字が1つずつ増えてstratum2、stratum3、・・・というようになる。(図2)

ntp_theory2.png
図2

stratum値が大きいと、時刻提供元とユーザの間に何台も中継サーバが入るので、時刻精度が下がる。そのほかNTPの時刻精度を下げるもう一つの要因は、物理的な経路の距離にある。単純に、日本にあるNTPサーバに同期するのと、アメリカにあるNTPサーバに同期するのでは、アメリカのNTPサーバの方が距離が遠いので、その分通信に時間を要し、時刻精度が下がる。

よって、ユーザが利用するNTPは以下のことを重視してNTPサーバを選定すればよい。

・stratum値が小さいこと(1~3くらい)
・自分のパソコンから経路が近いこと

単純にstratum1が一番精度が高いので、これを読むと自分のパソコンをstratum1のNTPサーバに同期したくなる。ただ、NTPは同期するユーザ数が増えるとサーバの処理が増え、リクエストが多くなりすぎるとサーバがパンクする。電波時計ではそのようなことは発生しない。ここでNTPと電波時計の違いについて説明しよう。

NTPは電波時計の、正確な時刻情報を持つものからの情報を受信して自身の時刻を正確に保つ、という行為自体は似ているが、一部違うところがある。電波時計は一方的に流れている情報を拾うことで時刻を合わせる(図3)が、NTPはユーザがサーバに問合せ、その問合せを受けてサーバが一人のユーザに対して時刻情報を送信する(図4)。たとえて言うならば、電波時計が拡声器でたくさんの人に同時に時刻情報を伝えており、NTPは電話にて一対一で時刻情報を伝えるのと同じである。電波時計は情報を聞く人が増えても送信側に影響はないが、NTPは一対一で順番に伝えるので、問合せが多すぎるとサーバの処理が追いつかない。

radio_clock.png
図3 電波時計の情報の流れ

ntp_many_user.png

図4 NTPの情報の流れ

NTPにおいて、タイムサーバに対してのユーザリクエストが多すぎて処理が逼迫した事例があった。有名なのが、福岡大学のNTPサーバとウィスコンシン大学のNTPサーバである。

福岡大学工学部鶴岡研究室のNTPサーバは日本でも早くから運用が開始された。それに伴い、一般のユーザもこぞって参照し、モデムやルータなどの時刻同期リクエスト先として製品出荷時に登録された。これにより、莫大なリクエストが集中することとなった。ウィスコンシン大学のNTPサーバも状況は同様であった。

これらの事象については、サーバが高負荷になっていることを周知し、他のサーバへ設定替えするように呼びかけて収束していった。

コメント

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