NTP(Network Time Protocol)
NTP(Network Time Protocol)とは
ネットワーク機器間で時刻合わせを行うプロトコルのことです。
目的
ネットワーク機器では、何らかのアクションをログに記録する際には時刻も記載されます。
機器同士で時刻が合っていないとログを付き合わせた解析ができなくなるため、統一された時刻で同期する必要があリます。
機器自身が持つ時計は精度が低いため時間経過とともに時刻のズレが発生するため、定期的に時刻を合わせる仕組みが必要です。
仕組み
時刻を要求するNTPクライアント、応答するNTPサーバ間でのやりとり
NTPサーバはUDPの123番ポートで待ち受ける
大元の時刻は原子時計やGPSであり、それに同期するNTPサーバがstratum(ストレイタム)と呼ばれる階層構造で構成される
最上位のNTPサーバはstratum1で、その配下にstratum2、stratum3が接続して同期する(最大stratum15まで)
伝送遅延を考慮して時刻を補正
NTPサーバの時刻情報をそのまま使用すると、NTPサーバからNTPクライアントに到達するまでの伝送遅延時間分の誤差が生じてしまいます。
これに対応するため、NTPクライアントでは、以下の情報から伝送遅延を算出します。
NTPクライアントから要求した時刻
NTPサーバで受信した時刻
NTPサーバから応答した時刻
NTPクライアントが受信した時刻
そして、NTPサーバの時刻情報から伝送遅延(NTPサーバからNTPクライアントへの片道分)を差し引いた時刻を採用します。
1900年1月1日が基準
NTPの時刻情報は絶対値でやりとりされるものではありません。1900年1月1日0時0分0秒を基準とした経過時間(ミリ秒単位)です。
その時刻情報は64ビットで表され、最大値、つまりすべてのビットが「1」になったあとは「0」に戻ることになります。
この最大値は2036年2月6日6時28分15秒になります。
以前、2000年問題と言われた時はそれほど大きなシステムトラブルはなかったようですが、2036年問題は確実に影響があると思われます。