web-dev-qa-db-ja.com

ローカルネットワークのNtpd-高いオフセットを引き起こすクロックドリフトの防止

ARMサーバーとしてマイクロコントローラーNTPを使用するローカルネットワークを使用しており、ubuntu 16.04 LTSをNTPクライアントとして実行するデスクトップコンピューターを使用しています。

次のntp設定ファイルで_ntpd -g -c /etc/ntp.conf_を開始したら

_server 192.168.0.11 minpoll 4 maxpoll 4
_

Ntpdが時間を設定した後の最初のオフセットは、非常に良い結果、つまり1ms未満の値を示しています。 _ntpq -p_でオフセット値を取得します。

ただし、オフセットは約55ms後にゆっくりと最大55msまで上昇します。 1000秒。この高いオフセットは私のアプリケーションには受け入れられません。しかし、オフセットが55ミリ秒に達した後、ntpdは時間を再び設定するようになり、オフセットは十分に小さく安定します(<1ミリ秒)。 ntpdがしばらくクロックをドリフトさせ、(あまりに)長い時間が経過した後、デーモンがNTPクライアントとNTPサーバーの間のクロックドリフトに対処するようです。

_ntpd -g -c /etc/ntp.conf -f /etc/ntp.drift_を使用して_ntp.drift_がntpdによって生成された場合、オフセットは常に1ms未満に留まります。望ましい動作。

さて、私の問題:私のアプリケーションでは、しばらくしてntpdを実行させて、長時間経過後のクロックドリフトを計算することはできません。NTPクライアントを起動してから数秒後に同期を行う必要があります。オフセットは安定している必要があります。

クロックのドリフトを正確に知らなくても、ntpdで安定した小さなオフセットを取得するにはどうすればよいですか?

6
Daniel R.

ntpdでいくつかの異なるオプションを試しても、遅延が大きすぎるため、 chrony に切り替えました。私のNTPサーバーは変更されませんでした。chronyを使用すると、常に1ミリ秒未満のレイテンシが得られました。ポーリング時間を増やしたのは chronyが推奨 以下の構成ファイルがあるためです。

### chrony.conf

# Add server
server 192.168.0.11 iburst minpoll -6 maxpoll -6 filter 15 xleave
hwtimestamp eth0 minpoll -6

# Logging
logdir /var/log/chrony
log measurements statistics tracking 

makestep 0.1 3
driftfile /etc/chrony.drift

そして、デーモンを./chronyd -f /etc/chrony.conf

2
Daniel R.

driftfileはローカルクロックの周波数を記録するため、正確に制御する必要があります。 Ubuntu /etc/ntp.confには、デフォルトでdriftfileがあります。

サーバー行にiburstを追加すると、最初の同期時にいくつかのパケットが急速に送信されます。特に、最初の数パケットを数分間待たない場合に推奨されます。

NTPが同期されるまで、initスクリプトはアプリケーションの起動を遅らせる可能性があります。これは、ntp-wait systemdユニットへの依存関係を使用して行います。または、ntpwaitスクリプトを直接使用します。

オフセットが増加してからそれ自体を修正するというレポートは、ntpdがそのステップしきい値を超えてから、時間を設定するのではなく、時間を設定するように聞こえます。

9
John Mahowald

NTPサーバーのクロック時間と実際のUTC時間の間の関係の欠如が問題の原因である可能性があります。NTPサーバーが複数の実世界のソース(インターネットにあるか、ローカルネットワーク上のGPS、PPS、または原子ソースに関係なく)がある場合、それ自体のクロックの周波数誤差を決定できず、勝つその時計を効果的に統制することができない。

この理論が正しいかどうかは、次のようにサーバーとクライアントの両方で統計ログをオンにすることで解決できます。

statsdir /var/log/ntpstats/
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable

次に、統計ファイルと設定をPastebinまたは同様のサイトに投稿してください。そうすれば、あなたが見ている行動に照らして分析できます。

5
Paul Gear