web-dev-qa-db-ja.com

NTP同期はリーチなしで維持されます

通常、マシンが完全に接続を失うと、ntpdはいくつかのポーリングを見逃し、すべてのソースを正常性の失敗としてマークします。これは非常に論理的なようです。しかし、リーチが0になったときに、サーバーが現在のタイムソースとしてマークされたままになる状況に遭遇しました。

サーバーは、ターゲットマシンと同じサブネットに展開され、遅延、オフセット、およびジッターが非常に低くなります。この状況は、接続を物理的にシャットダウンすることによってモデル化されました。クライアントマシンからコードを抜くだけです。これを再現しようとしましたが、それ以降、5〜6回のポーリングが失敗した後、同じマシンは常に同期ステータスを適切に失います。

本当の問題は、接続が失われたときに同期ステータスを正確に決定するものは何かということです。

2
akalenuk

RFC-1305には、リーチレジスタに関する明確な説明があります。

到達可能性レジスタは1桁左にシフトされ、空のビットがゼロに置き換えられます。このレジスタのすべてのビットがゼロの場合、クリアプロシージャが呼び出され、クロックフィルタがパージされ、必要に応じて同期ソースが再選択されます。アソシエーションが初期化手順によって構成されていない場合、アソシエーションは動員解除されます。

Howewer RFC-1305はRFC-5905によって廃止されましたが、これはそれほど明確ではありません。

次に、セクション13で説明したポーリングプロセスの8ビットp.reachシフトレジスタを使用して、サーバーが到達可能であり、データが新しいかどうかを判断します。パケットが送信され、右端のビットがゼロに設定されると、レジスタは1ビット左にシフトされます。有効なパケットが到着すると、右端のビットが1に設定されます。レジスタにゼロ以外のビットが含まれている場合、サーバーは到達可能と見なされます。それ以外の場合は、到達できません。

セクション13には明確な手順は記載されていませんが、それでも、到達不能なピアは、ある時点で同期ステータスを失うはずのようです。

リーチ0の状況で同期ステータスを再作成して、それがまれであり、永続的ではないことを確認しました。サーバー構成の「バースト」を無効にし、同期の直後に接続を切断する必要がありました。

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 91.198.10.4     194.190.168.1    2 u   20   64  177   51.137   -2.192  11.049
 192.168.1.1     193.67.79.202    2 u   65   64   77    0.459   -1.818   0.922
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*91.198.10.4     194.190.168.1    2 u   21   64  177   51.137   -2.192  11.049
+192.168.1.1     193.67.79.202    2 u    -   64  177    0.449   -3.192   1.828

リーチは177で、バイナリでは01111111です。したがって、同期を確立するのに7回のポーリングが必要でした。

その後、同期はこの位置で失われました。

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+91.198.10.4     194.190.168.1    2 u  574   64    0   63.846   -9.652   0.756
*192.168.1.1     193.67.79.202    2 u  553   64    0    0.449   -3.192   0.505
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 91.198.10.4     194.190.168.1    2 u  575   64    0   69.871  -10.409   0.002
 192.168.1.1     193.67.79.202    2 u  554   64    0    0.449   -3.192   0.505

数値が575ではなく64 * 9 = 576のように少し奇妙な場合、私は推測しますが、表現は1秒不正確である可能性があります。これを考慮すると、同期ステータスを解除するのに9回のポーリングの失敗が必要でした。

したがって、理論と実践の両方を考慮すると、リーチが0のソースが現在の時間ソースと見なされる可能性がある状態が可能であるように見えますが、まれで一時的なものでもあります。

0
akalenuk