いま見ているNTPは、本当に正しいのかな?と判断がなかなか難しく途中のネットワークの品質が悪かったり、NTPサーバーの負荷が高く応答が遅いこともあります。負荷低減のための下流であるStratumはどれだけ精度がマスターに近いのか。。など疑問残ります。

そこで簡単に複数のNTPを比較して、信頼が高そうなNTPソースを確認できる「NTP Clock Compare」アプリを作成しました。デスクトップアプリとしてデジタル時計やアナログ時計としても利用できます。本記事ではNTPの信頼度を比較してすっきりできる「NTP Clock Compare」の使い方をご紹介いたします。

ダウンロードはこちらWindows用のみ
https://techietechnology.co.jp/news/ntp-clock-compare-visualizes-the-reliability-of-multiple-ntp/

NTPの簡単な説明です。オンラインの時刻としてNTPがあります。ネットワーク越しに時刻を合わせる通信プロトコルです。多くの人が意識せずに毎日利用しています。例えばWindows、Mac、スマートフォンなどのOSでも、NTPベース(MS-SNTP、NITZなど細かくありますが省略)を利用してシステムの時刻を合わせています。

放送や映像の現場でもNTPに対応した時計を見て時刻を確認しています。ちなみにNTPはミリ秒レベル(1秒1000ミリ秒)、より上流の規格であるPTPではマイクロ~ナノ秒レベルの精度があります。NTPは古い規格ですが、人間が見る環境では十分な時刻精度を持っています。

そのようなNTPですが、いろいろな上流ソースが存在します。原子時計やGPS(Stratum-0)、そこから正確な時刻を受けて再配布するNTPマスター(Stratum-1)といった感じです。上流ソースでもネットワークを経由してNTPを受信しますので、その距離や品質によってoffset/RTT/ジッタなどが発生します。そこで簡単に複数のNTPを比較する「NTP Clock Compare」を作成しました。

 

「NTP Clock Compare」インストールして起動

インストーラで導入後、アプリを起動するとメイン画面が表示されます。左上のタブで「Milli Clock(時計表示)」と「NTP Compare(比較)」を切り替えて利用します。NTP比較は後述します。

NTP比較機能は、後で説明します。こんな感じにグラフですぐに比較できます。

Milli Clock(時計表示)

まず便利なディスクトップのNTP時計として利用できるMilli Clock機能から紹介します。NTP Serverのプルダウンで表示する時計のNTPを選択できます。初期設定ではシステムクロックを参照します。初期設定を変更したい場合は、内部の設定テキストを変更することで変更できます。あとで紹介します。View 機能では、アナログ時計+デジタル、アナログ時計のみ、デジタル時計のみのモードを選択できます。

デジタル時計のみはこんな感じです。サイズ+-で大きさの調整ができます。

アナログ時計モードでは、控えめな配色のアナログ時計を表示できます。一目で秒針の位置がわかる軌跡表示も工夫しました。1秒ごと。5秒ごとに秒針先端が拍動します。

Sync Nowにて即時にNTPサーバーから受信します。インターバル設定では、初期設定として600秒ごとに時刻問い合わせをします。利用するNTPサーバーの利用規定に基づいて、常識の範囲で利用してください。

NTP Compare(比較)

次にNTP Compareの機能を紹介します。初期状態では Google と CloudflareのNTPサーバを登録しています。注意点として、Google Public NTP(time.google.com)はうるう秒にleap smear(平滑化)を採用し、Cloudflare(time.cloudflare.com)はsmearしません。NTP Compareではシステムクロックを基準に、各NTPのオフセットをグラフ化します(システムクロック自体はドリフトするため、基準としてどう使うかを理解した上で参照してください)。

スナップショット表示

人間の目ではミリ秒単位を直観的に掴みにくいため、5秒ごとに時刻スナップショットを提示するタイムコードスナップショットを用意しました。どのNTPが何ミリ秒ずれているかが一目で分かります。

右側にディレイを表示します。一般にRTTが大きいほど遠回りな経路や負荷等の可能性が高く、ジッタも増えがちです(経路品質・輻輳・Anycastの収束なども影響)。スパイクが同時刻に複数ソースで出る場合は、自ネットワーク側の問題を疑えます。コマンドでも得られる情報ですが、グラフ表示だと傾向が直感的です。

左側には、システムクロックとそれぞれのNTPのオフセットが表示されます。googleとCloudflareでは1-2ms程度の一定のズレがあるようですね。NTPなので環境によって十分にあり得るものと考えています。

右上に進んでいるのは、システムクロックがドリフトしているためと思われます。

各種情報(ジッタ、オフセット、スナップショット)を総合すると、どのNTPソースが自分の環境で安定しているかの手がかりが得られます。後ほどもう少し詳しく見てゆきましょう。

Options(時計表示の補助機能)

ちょっと便利なOptions機能を紹介します。時計表示機能をサポートするものです。

On Top、Fix、Anti Burn-inなど機能があります。On Topは、つねにウィンドウを最前面に表示します。Fixはその場で固定します。ヘッダーを省略します。Anti Burn-inは、10分ごとに色を反転します。モニターの焼き付けを防止します。

ベースカラーの変更もできます。黒か白かハッキリ設定します。

On Topにすると、つねにウィンドウを最前面に表示します。ほかのアプリを操作しても前面に表示です。ウィンドウを小さくして常にデジタル時計を表示などできます。

Fixにするとヘッダーが消えて、その場で固定されます。

メニューのHide機能で、さらにコンパクトになります。

こんな感じに画面の右下に時計を固定とかできます。

設定ファイル(settings.txt)

NTPアドレスなどはsettings.txtで指定します。インストーラーで指定したインストールフォルダーを開きます。

settings.txtを見つけます。

settings.txtをデスクトップなどに移動して適宜操作してください。

例えば、こんな感じにNTPを追加します。そうそうたるNTPアドレス先です。NTPアドレスは各サービスの利用ポリシーに従って正しくご利用ください。

settings.txtを保存して、フォルダーに戻します。

起動するとNTPアドレスが反映されます。

5つのNTPアドレスを比較してみよう

5つのNTPアドレスを比較してみましょう。結果はどうでしょうか。この結果はあくまでも観測時点の自分の経路条件です。観測時点の経路条件(ISPのルーティング、Anycastの着地点、混雑状況、地域)が大きく影響しています。特定のサーバの状況を確定するものではありません。自分の環境で複数ソースを計測し、継続的に傾向を見たという比較です。

appleはたまにスパイクがあります。

googleはサーバーの距離が他より離れていそうです。

Cloudflareとpoolは、両方ともに遅れが少ないです。

こうやって見比べてみると、この辺りがよさそうですね。Cloudflareは他より少し離れています。

個別に見てゆきましょう。googleは、良さげですがジッターが大きそう。

Cloudflareは、みんなよりちょっと外れています。。。いやむしろ正しい説もあるのかもですが。

pool。良い感じ。

awsもよいかんじです。こう見てゆくとこの環境では、一番良いかもしれません。

それぞれの時刻の差は1~2ms程度です。状況は分かりやすいです。このmsクラスになると体感できないためどれを選んでも同じです。例えば表示モニターが60fpsの場合は、1フレームの描写が16.6msです。数msの誤差はフレーム描写の影響が大きくまったくわかりません。

このようになんとなく、複数のNTPソースを比較することでそれぞれの傾向が見えました。もう一度いいますが、観測時点の経路条件(ISPのルーティング、Anycastの着地点、混雑状況、地域)が大きく影響しますので特定のサーバの状況を確定するものではありません。ちょっとしたアプリとしてお楽しみいただければと思います。

ダウンロードはこちらWindows用のみ
https://techietechnology.co.jp/news/ntp-clock-compare-visualizes-the-reliability-of-multiple-ntp/

 

本当に正確なNTPはどれ?

結論として真に正確なNTPを証明するのは不可能でありますが、追加で少し検証をしました。GPSを拾ってNTPサーバとなる比較を用意しました。補足として測定している私のインターネット環境は、比較的悪い状態です。

Wifiのエキステンダーを経由して有線LANで動作しています。そのため外のインターネットに対しては、実質Wifiで動作しているようなものです。端末があるルーターまで部屋が遠くて申し訳ございません。一方でGPS-NTPサーバは、有線でローカルで接続されています。そのため比較として、ずるい環境です。予めご了承ください。

GPS-NTPサーバのディレイはゼロに近いです。

システムクロックとの変動も少なく複数のNTPの推測していた当たりにて、直線を描いています。ちなみに今回はappleのスパイクは消えました。おおむね先の検証結果と一致しています。このGPS-NTPサーバが真に正しいかの保証はありませんが、だいたい正しい気がいたします。

興味があればお試しくださいませ。