Simple Network Time Protocol

Simple Network Time Protocol (SNTP) について



Simple Network Time Protocol(SNTP)は、Network Time Protocol(NTP)を簡略化した時刻同期プロトコルです。NTPと同様のパケット構造を使用しますが、より実装が簡単でリソース消費を抑えることができます。

処理概要



SNTPは、RFC1305で定義されたNTPパケットを基に、RFC 1361, RFC 1769, RFC 2030 で再定義されたパケットを使用します。上位の時計サーバーとの通信を通じて、クライアントとサーバー間のオフセットを計算し、時刻を同期させます。

時刻の反映方法については、NTPもSNTPも具体的な定義はなく、実装に依存します。これは、システムによって時刻を直接反映させるか、徐々に近づけていくかを選択する必要があるためです。

時計精度と上限



SNTPとNTPは同じパケットを使用しているため、内部精度はNTPタイムスタンプ形式に準じます。これにより、200ピコ秒までの精度で時刻を処理できます。

2036年問題


NTPパケットのタイムスタンプは、協定世界時(UTC)の1900年1月1日午前0時からの経過秒数で表現されます。この値は4バイトの符号なし整数で表現されるため、最大で4294967295秒までしか表現できません。これは、UTCの2036年2月7日午前6時28分16秒(日本時間では同日午後3時28分16秒)に到達します。この日時を超えると、値がオーバーフローし、時刻同期が正常に行えなくなる「2036年問題」が発生します。

この問題に対処するため、RFC 4330では、最上位ビットが0の場合、時刻が2036年から2104年の間であるとみなして計算する方法が定義されています。これにより、2036年2月7日6時28分16秒(UTC)を起点として計算することで、2036年問題を回避できます。

時計サーバーとの伝送モードと同期



伝送モード


SNTPとNTPには、いくつかの伝送モードがあります。NTPパケットには、3ビットの「Mode」フィールドがあり、これによりサーバーモード、クライアントモード、ブロードキャストモードなどが識別されます。多くのSNTPソフトウェアは、サーバー・クライアントモードを使用して同期処理を行います。

NTPは基本的にすべてのモードをサポートする必要がありますが、SNTPには必須の規定がないため、いずれかのモードをサポートすればSNTPとみなされます。

同期


SNTPでは、1回の通信で時刻を反映できます。一般的な実装では、stratum値(サーバーの階層を示す値)が正常であること、および閏秒指示子(Leap Indicator値)が正常であることを確認して時刻を信頼します。ただし、時刻校正の具体的な条件はRFCには記述されていません。

関連RFC



  • - RFC 1361 SNTP
  • - RFC 1769 SNTP
  • - RFC 2030 SNTP Version 4 for IPv4, IPv6 and OSI
  • - RFC 4330 SNTP Version 4 for IPv4, IPv6 and OSI

関連項目




SNTPは、NTPと比較してシンプルで実装が容易なため、リソースが限られた環境や、より簡単な時刻同期を必要とする場面で広く利用されています。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。