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

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

そのようなNTPですが、いろいろな上位ソースが存在します。原子時計やGPS、そこから正確な時刻を受けて再配布するNTPマスター(Stratum-1)といった感じです。細かくはいろいろとルールがあります。とにかくいろんな時刻ソースがあります。上位ソースは、上位なので正確なのですが、ネットワークを経由してNTPを受信しますので、その距離や品質によってoffset/RTT/ジッタなどが発生します。

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

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

インストーラからアプリをインストールすると、以下の画面が起動します。

左上のタブにて、ミリ時計とNTP比較機能を切り替えて利用できます。

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

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

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

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

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

次にNTP Compareの機能を紹介します。初期設定では、Google と CloudflareのNTPサーバを登録しています。ちなみにGoogle のNTPサーバはスミア(うるう秒調整タイプ)です。Cloudflareは、非スミアです。NTP比較機能では、基準としてシステムクロックと比較して、NTPクロックをグラフ化します。システムクロックは常にドリフトしたり精度は低いので、よく理解して基準として参考にする必要があります。

意外と便利なので、5秒ごとのタイムコードスナップショット窓です。ミリ秒は人間の目で把握できないため、5秒ごとにスナップショットを表示します。何が何ミリ秒どうなっているのかすぐにわかります。

右側にディレイを表示しています。ざっくり言えばRTT(往復遅延)です。ディレイが大きいほどNTPサーバーまでの物理的なネットワークが遠い可能性が高くジッターも大きくなるといえます。googleの方がサーバーが遠いのだなと一目でわかります。またスパイクが同時に起きている場合は、自分のネットワークが原因だなとわかります。コマンドを打てばわかる情報ですが、グラフでみると一目瞭然です。

左側には、システムクロックとそれぞれのNTPのオフセットが表示されます。googleとCloudflareでは1-2ms程度の一定のズレがあるようですね。

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

各種情報を統合すると何かNTPの正しさが見えてきませんか?後ほどの記事でさらに追加補足もします。

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

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

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

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

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

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

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

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

settings.txtを見つけます。

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

例えば、こんな感じにNTPを追加します。そうそうたるNTPアドレス先です。NTPアドレスはそのNTPアドレスのルールに基づいて正しく利用してください。

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

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

5つのNTPアドレスを比較してみましょう。結果はどうでしょうか。

appleは応答がすごく遅れることがあります。

googleはちょっと遠いですね。

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

こうやって見比べてみると、この辺りがよさそうですね。良さげなCloudflareでしたが、Stratum3のためか他よりずれがみえます。

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

Cloudflareは、みんなよりちょっと。。。

appleは尖がっています。

poolはよいかんじです。

awsもよいかんじです。一番良いかも。

それぞれの時刻の差は1~2ms程度です。このクラスになると、人間としては体感できないためどれを選んでも同じですが、より状況がつかめるのではと思います。