MAGI システムに例える「同期先3台以上」の意味
NTP において「同期先は3台以上必要」と言われる理由は、アニメ『新世紀エヴァンゲリオン』に登場する MAGI システム に例えると、直感的に理解しやすくなります。
MAGI は、
- MELCHIOR(科学者としての赤木ナオコ)
- BALTHASAR(母としての赤木ナオコ)
- CASPER(女性としての赤木ナオコ)
という 3つの独立した判断系を持ち、多数決によって最終判断を下すシステムです。ここで重要なのは、「最も優秀な1つの判断」に委ねていない、という点です。
NTP サーバーに用いられる chrony や ntpd も、MAGI システムとよく似た設計思想を持っています。
これらの NTP デーモンは、同期先サーバーと NTP プロトコルを用いて定期的に通信を行い、 各同期先から得られる時刻情報の 差分・遅延・揺らぎ を継続的に観測します。
しかし、送られてきた時刻情報が「正しいかどうか」は、 同期先の台数によって判断できる範囲が大きく異なります。
- 同期先が 1台
- 比較対象が存在せず、それが正しいかどうかを判断できない
- 同期先が 2台
- 意見が割れた場合、どちらが正しいか判断できない
- 同期先が 3台以上
- 多数派から逸脱した時計を falseticker(誤った時計) として排除できる
つまり、NTP における「同期先3台以上」とは、
正しい時刻を選ぶためではなく、誤った時刻を捨てるための最低条件
を意味しています。
MAGI が「誰か一人の判断」を信じるのではなく、合議によって暴走を防ぐ仕組みであるのと同様に、NTP もまた、単一の時刻源に依存しない設計を前提としています。
RFC ではどう書かれているか?
RFC 8633 §3.2 でも、NTP の同期先は複数あることが前提であると明記されています RFC 8633, p.5。
- 同期先が 1 台 では、正しいかどうか判断できない
- 同期先が 2 台 では、意見が割れた場合に判断が困難
- 同期先が 3 台以上 であれば、多数派に基づき誤った時刻を排除可能
- 同期先が 4 台以上 であれば、さらに冗長性が高く、信頼性が向上する
このように、「同期先は3台以上」という設計前提は RFC にも記載されているのです。
chrony / ntpd は実際に何をしているのか
MAGI の例えによって「同期先が3台以上必要な理由」は直感的に理解できます。
次に気になるのは、chrony や ntpd が内部で実際に何をしているのかでしょう。
これらの NTP デーモンは、単に「一番近そうな時刻を選んでいる」わけではありません。
複数の時刻ソースを継続的に観測している
chrony / ntpd は、設定されたすべての同期先に対して定期的に通信し、
- offset(時刻差)
- delay(往復遅延)
- jitter(揺らぎ)
- reach(到達性)
といった情報を継続的に収集します。
この段階では、まだ「どれが正しいか」を決定していないことが重要です。
なお、ここで挙げた offset / delay / jitter / reach といった指標は、chrony であれば chronyc sources や chronyc sourcestats、ntpd であれば ntpq -p などのコマンドを用いることで、実際の数値として確認することができます。
NTP デーモンがどの同期先をどのように評価しているかはブラックボックスではなく、運用者が状態を観測・判断できるよう設計されています。
明らかにおかしい時計を排除する(falseticker の検出)
複数の同期先がある場合、それぞれの時刻は完全には一致しません。
chrony / ntpd はそれらを相互に比較し、
- 他の大多数と明らかにズレている
- 突然大きくジャンプする
- 挙動に一貫性がない
といった特徴を示す同期先を falseticker(誤った時計) として候補から外します。
この処理は、
- 同期先が1台では成立しない
- 同期先が2台でも判断ができない
という点が本質です。
「最も信頼できる時刻」を合成する
残った同期先の中から、
- 遅延が小さい
- ジッターが少ない
- 長期的に安定している
ものを重視しつつ、統計的に最も信頼できる時刻を合成します。
NTP サーバーが配信しているのは、上位サーバーの時刻そのものではなく、 複数の参照を基に自ら決定した時刻です。
「3台以上」が前提とされている理由
この一連の処理は、
- 複数の参照が存在すること
- 排除や多数決が可能であること
を前提に設計されています。
つまり、「同期先は3台以上」という推奨は、単なる設定作法ではなく、 アルゴリズムそのものの前提条件です。
MAGI が 3 つの判断系を前提として設計されているのと同様に、 chrony / ntpd もまた、複数の独立した時刻源が存在することを前提として動作しています。
関連記事
-
社内ネットワークでの NTP による正確な時刻同期のススメ
- NTP 階層構成や Stratum 1/2 配布の考え方、監視サーバーの運用などの基礎を解説