NTPポーリングレートをカスタマイズするにはどうすればよいですか?


17

セルラー接続で動作する組み込みマシンでUbuntuをセットアップしていますが、1バイトごとに支払います。また、マシンにはRTCバッテリーがないため、起動するたびにランダムな時間から起動します。

セルラー接続が利用可能になったときに時刻が同期され、ログメッセージなどがリアルタイムになるようにしたいのですが、NTPトラフィックに手足をかけたくはありません。

NTPが時刻を更新するレートをカスタマイズできますか?現在、openntpdを使用していますが、私はそれと結婚していません。

起動時にインターネットが必ずしもアップしているわけではないため、ntupdateおよび関連する起動は機能しません。そして、cronを介したスケジューリングは、スケジュールされたタスクが開始されるのを待つことを意味しますが、タイムデーモンはできるだけ早く時間同期を取得したいのです。

回答:


5

これらの回答のいくつかは、難読化されたntp構成コンテストに勝つ可能性があります。

ntpリファレンス実装を使用し、iburstを使用して、起動時に迅速に時間を設定します。その後、minpollディレクティブを使用して、ntpdがリモートタイムサーバーに照会する頻度を制限できます。これにより、ntpdのクロック制御を利用して帯域幅を抑えることができます。

minpoll minpoll
maxpoll maxpoll
    These options specify the minimum and maximum poll intervals for NTP 
    messages, in seconds as a power of two. The maximum poll interval 
    defaults to 10 (1024 s), but can be increased by the maxpoll option to 
    an upper limit of 17 (36 h). The minimum poll interval defaults to 6 (64 s), 
    but can be decreased by the minpoll option to a lower limit of 3 (8 s).

Chronyは、ntpリファレンス実装の優れた代替手段です。Openntpdはそうではありません。


8

私の経験では、openntpdではなくntpを使用しています。

NTPプロトコルは通常1分(64秒)ごとにパケットを送信することから始まりますが、通常は/etc/ntp.confファイルにある各サーバーに対して17分ごとに1つのパケットを送受信することで安定します。ただし、ネットワークの停止またはデバイスの不安定なクロックにより、これが増加する場合があります。各パケットには約68バイトのペイロードがあります。そのため、ポーリングごとに、おそらくそれぞれ100バイトを少し超えます。

ネットワーク稼働時のrdateとntpdateは、時間を設定するための良いアイデアです。そして、それがあなたが必要とするすべてであるならば、あなたのためにうまく働くはずです。

ただし、長時間にわたって時間の同期を保つ必要がある場合、ntpプロトコルはそれを行うように設計されています。デバイスのクロックは、クリスタル制御のクロックを備えている可能性がありますが、温かさや冷め具合に応じて少し速くなったり遅くなったりします。

継続的な計時が必要で、使用する帯域幅を減らしたい場合の提案を次に示します。ntp.confのアイテムを参照します。

iburstを使用しないでください。(ただし、最初に時間を設定するには時間がかかります)。

ミンポールを6から上方に増やします(2 ^ 6秒は64秒です)。これにより、ネットワークが立ち上がった後にプロトコルが起動するときのトラフィックが減少します。

maxpollを10から増やします(2 ^ 10秒は1024秒または約17分ごとです。17まで移動して36時間ごとにポーリングできます。私はこれを試していません。

組み込みデバイスから確実にアクセスできるサーバーがあれば、最小限のサーバーのみを使用してください。サーバーが多いほど、タイムキーピングの信頼性は高くなりますが、トラフィックが増大するため、トレードオフになります。



3

Ubuntuのデフォルトのインストールでは、NTPデーモンは実行されません。代わりに、ネットワークインターフェイスが/etc/network/if-up.d/ntpdateフックによって起動されるたびに時間が設定されます。

一定の同期ではなく1回限りの時間同期を行っている場合は、これで十分かもしれません。

どのサーバーが照会されるかを制御して、標準/etc/ntp.confファイルまたはのNTPSERVERS変数を使用して時間を設定できます/etc/default/ntpdate


2

ntpが提供する正確で正確な同期が必要ですか?そうでない場合は、起動時rdateまたはntpdate起動時に、そして定期的にcron経由で逃げることができるかもしれません。


2

おそらくすでにopenntpdのmanページを読んでいるでしょう。

http://www.openbsd.org/cgi-bin/man.cgi?query=ntpd.conf

おそらく、時間のあるポーリングオプションがないことにすでに気づいているでしょう。

私はこれらの可能なハックを提案します:

  1. cronを介してntpdateを呼び出すだけで、ntpdを使用しないでください。
  2. cronやセルラー接続スクリプトを使用して、iptablesルールを切り替えて、許可する場合にポート123トラフィックをドロップまたは許可します。これは次のように簡単かもしれません

    0 12 * * * iptables -D OUTPUT -j DROP -p udp --dport 123 # at noon start allowing ntp

    0 13 * * * iptables -A OUTPUT -j DROP -p udp --dport 123 # at 1pm stop allowing ntp

  3. 組み込みマシンにラジオクロックレシーバーを埋め込みます。私はこれについてほとんど何も知らないが、このような製品:

無線信号を受信できれば難しくないと思います。


1
ハードウェアを追加する場合、なぜラジオクロックを推奨し、PPSでGPSを追加しないのですか?
dfc 14年

@dfc良い点。OP、時間を取得するためにGPSハードウェアを検討してください。
ジェイ_silly_evarlast_レン14年

1
50ドル(確かにGPSはかなりの量)とはんだ付けのために、予備の寝室にストラタム1タイムサーバーがあります。私は巨大なカエデと別の家で遮られた窓に座っている確かなGPSアンテナを持っています、そしてそれはうまくいきます。
dfc 14年

@dfcは、ハードウェアおよびハードウェアで使用するソフトウェアにリンクできますか?
ジェイ_silly_evarlast_レン14年

1
@Jay_silly_everlast_Wrenソフトウェア:ntpリファレンス実装www.ntp.orgボード:sureelectronics.net/goods.php?id=99ディスカッションの カップル:satsignal.eu/ntp/Sure-GPS.htmおよびlists.ntp.org/pipermail/questions /2011-March/028854.htmlまだまだあります。はんだ付けで怖がらないでください。初めてのはんだ付けで、簡単でした。ntpの質問のメーリングリストには、確実なボードを使用したことがあり、非常に満足している人がたくさんいます。
dfc 14年

1

記憶が正しければ、ntpポーリング間隔は最大1024秒に設定できます。おそらく最も簡単な解決策は、ブートごとにntpdateを実行し、その後は時々crontabから実行することです。

起動するたびにランダムな時刻で時計が起動する場合は、おそらくntpdを実行できず、最初にntpdateを使用する必要があります。Ntpdは、時計とサーバーの時計の差が大きすぎる場合、時刻の同期を拒否します。


ドリフトが大きすぎる場合に同期を拒否するntpに関する情報については+1
David Pfeffer

ntpdateはにオプションの賛成で廃止されましたntpdよりも良いこのユースケースを処理するどのcroneecis.udel.edu/~mills/ntp/html/ntpdate.html
MSW

1

NTPは、TCPと同様に、プロトコルに組み込まれた深層理論と実践的経験があります。基本的なパラメーターを変更すると、設計された同期プロパティがなくなります。

デバイスが散発的に接続されている場合は、おそらく古き良きRDATEが最適です。クロックスルーもピアアベレージングも処理せず、中間者がしばらくの間価値がある場合にプレイできるさまざまな微妙なハッキングから保護することもできません。リモートサーバーから基準日を取得し、ハンマーでローカル時計を叩きます。しかし、それはあなたが望むときにそれを行い、その振る舞いは決定的です。

RDATEの精度はNTPが提供するものよりはるかに劣ります。±1秒以上は信頼できませんが、散発的に接続されているだけの場合、より正確なタイミングは関係ありません。実際、相対性理論によれば、それは意味がないかもしれません。


0

するためにminpool/をmaxpool考慮しなければ、あなたがして追加する必要があり、サーバごとにあなたにntp.conf

NTPデーモンを台無しにすることはお勧めできません(頻度を最適化するためのmathodが組み込まれています)が、次のようにこれらのオプションを追加する必要があります。

server time.google.com iburst minpoll 12 maxppol 17
server ntp.ubuntu.com iburst minpoll 12 maxppol 17
server europe.pool.ntp.org iburst minpoll 12 maxppol 17

ここで、最小周波数を2 ^ 12秒に設定し、最大周波数を2 ^ 17秒に設定した場合。

デフォルトでは、NTPは1分ごとにリクエストを送信することがわかりました。それはあまりにも多すぎる。ここでは、頻度を1時間に1回から1日1回に(単純に)減らしました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.