総合手引 | セクション 8 | English | オプション |
ntpd ユーティリティは多くの計算を 64-bit 浮動小数点演算で行ない、 究極の精度である約 232 ピコ秒を保つ必要があるときだけ、比較的扱いにくい 64-bit 固定小数点操作を行ないます。 現在の普通のワークステーションやネットワークではこの究極の精度は 達成できませんが、この精度は将来のギガヘルツ級の CPU クロックや ギガビット LAN において必要となるでしょう。
通常、 ntpd は、起動時に設定ファイル ntp.conf(5) から読み込み、同期ソースや動作モードを決めます。 また、機能が限定されますが、コマンドラインから全ての動作を指定することにより、 設定ファイルを使わずに実行することもできます。 これは、 ローカルホストをブロードキャスト/マルチキャストクライアントとして 設定し、全ての通信相手を、実行時にブロードキャストを 待受け (listen) て決定する時には、特に有益です。
ntpd
に NetInfo サポートが組み込まれている場合、
デフォルトの
ntp.conf(5)
ファイルが読み込めず、また
ntpd の実行中は、 ntpq(8) および ntpdc(8) ユーティリティプログラムを使用することで、 さまざまな ntpd 内部変数を表示したり、 設定オプションを変更したりできます。
ntpd は起動時に umask(2) の値を調べ、もしそれが 0 ならば、 umask(2) を 022 に設定します。
以下にあげる引数が使用可能です:
| |
認証モードを有効にします (デフォルト)。 | |
| |
認証モード無効にします。 | |
| |
NTP のブロードキャストメッセージを使って同期します。 | |
| |
設定ファイルの名前とパスを指定します。 (netinfo を無効にする?) | |
| |
デバッグモードを指定します。 このフラグは何回指定してもかまいませんが、 回数が多いほど表示がより詳細になります。 | |
| |
デバッグレベルを直接指定します。 | |
| |
ドリフトファイルの名前とパスを指定します。 | |
| |
通常、
ntpd
はオフセットが正気限界 (sanity limit) を越えている場合は終了します。
この値のデフォルトは 1000 秒です。
正気限界を 0 に設定した場合、正気限界のチェックを行なわず、
オフセットがどのような値でも受理します。
このオプションはこの制限を無視し、
どの時刻にも制限なく設定できるようにします。
しかしこれは一度のみ起り得ます。
この後は、制限を超過すると、
ntpd
は終了します。
このオプションは、
| |
| |
NTP の認証鍵を含むファイルの名前とパスを指定します。 | |
| |
ログファイルの名前とパスを指定します。 デフォルトはシステムログ機能です。 | |
| |
仮想 IP を待ち受けます。 | |
| |
224.0.1.1 の IP マルチキャストグループアドレス上の NTP マルチキャストメッセージを利用して同期します (マルチキャストカーネルが必要になります)。 | |
| |
フォークしません。 | |
| |
オペレーティングシステムの許容範囲で、 ntpd を高優先度で実行させます。 | |
| |
ntpd のプロセス ID を記録するためのファイル名とパスを指定します。 | |
| |
オペレーティングシステムによって設定される優先度制限を無視します。 意気地なしには使用を推奨しません。 | |
| |
最初に時刻を設定した直後に
ntpd
の実行を終了します。
この挙動は、引退させるべきプログラム
ntpdate(8)
の挙動を真似したものです。
このオプションといっしょに、
| |
| |
ブロードキャスト/マルチキャストサーバからこのコンピュータ間の デフォルト伝播遅延を指定します。 このオプションはプロトコルによって自動的に遅延を計算できない場合にのみ 必要となります。 | |
| |
統計機能によって作成されるファイルのディレクトリパスを指定します。 | |
| |
鍵番号を信頼できる鍵 (trusted key) のリストに付け加えます。 | |
| |
デフォルトでリストされるシステム変数を追加します。 | |
| |
通常は、オフセットが設定閾値 (デフォルトは 128 ms) より小さい場合、
時刻は徐々に微調整 (slew) されます。
設定閾値より大きい場合に、単に時刻設定 (step) されます。
このオプションは全ての場合において微調整するように強制します。
設定閾値を 0 に設定した場合、
| |
現代のオペレーティングシステムとハードウェアの大部分は、
time-of-year (TOY) チップを持っており、電源断の間も時刻を
保持しています。
マシンが起動すると、このチップを使いオペレーティングシステムの
時刻を初期化します。
マシンが NTP サーバに対して時刻同期を取った
後で、オペレーティングシステムはそのチップの時刻を必要に応じ修正します。
TOY チップが存在しないか、何らかの理由で TOY チップの
時刻とサーバの時刻の違いが 1000 秒より大きい場合、
ntpd
は何か決定的にまずいことが生じたと仮定します。
この場合に意味のある動作は、オペレータが介在し手動で時計を設定することです。
この場合、
ntpd
はパニックメッセージをシステムログに出力し実行終了します。
通常の状態では、 ntpd は、時刻が実質的に連続に推移し不連続が生じないように、 時計を僅かな刻みで修正します。 ネットワークの輻輳が著しい状態では、 往復遅延時間の変動 (jitter) が 3 秒を越え、同期距離 (これは、 往復遅延時間の半分と誤差量の項の和) が著しく大きくなる可能性が あります。 128ms 以下のサンプルオフセットが存在しない時間間隔が 900 秒を越えない かぎり、 ntpd のアルゴリズムでは、128ms を越えるサンプルオフセットを捨てます。 オフセットがどのような値であっても、その後最初に採取されるサンプルが 示す値で時計を設定します。 現実には、誤って時刻を設定し 間違った警告を発生する率は、この処理により ほとんどなくなったと言ってもいいほどに減少されます。
この動作の結果として、一度時計が設定されると、ネットワーク経路の
輻輳と遅延時間変動が極めて大きな場合であっても、
128ms を越えた変動は極めてまれにしか生じません。
ときどき、特に
ntpd
が最初に起動したときには、誤差が 128ms を越えることがあります。
ローカル時計の時刻がサーバと比べ 128 秒以上先に進んでいる場合、
これにより、逆向きの時計設定が生じることがあります。
アプリケーションによっては、この動作に耐えられないものもあるかも
しれません。
コマンド行に
上記の予防策にも関わらず、大きな周波数誤差が存在する場合に、ときどき、 結果として時間オフセットは 128ms の範囲を逸脱し、その際に、 時刻設定または時刻の微調整が必要となります。 そのような時刻修正の あと、最初のサンプルも受理可能な範囲外となるほど周波数誤差が大きいならば、 ntpd は、 ntp.drift ファイルが存在しない場合と同じ状態に入ります。 この動作の意図は、周波数を素早く補正し、通常の追跡モードに動作を 戻すことにあります。 最も極端な場合 (time.ien.it のことを思い出しますが) として、 時刻設定/微調整による時刻補正と、その後周波数補正とが生じることもあります。 この動作は、このような場合に、サーバを設定する際にキーワード burst を使う助けになります。
デフォルトでは、 ntpd は、連続モードで動作します。 このモードでは、複雑な状態機械により 決定される時間間隔で、いくつかある外部サーバのそれぞれに対し ポーリングを掛けます。 状態機械は、それに付随して 往復遅延時間の変動と発振器周波数の逸脱 (wander) を測定し、 ヒューリスティックなアルゴリズムを用いて最適なポーリング間隔を 決定します。 通常は、ほとんどのオペレーティングシステム環境で、この状態機械は 64 秒の時間間隔で開始し、状況に応じ、1024 秒まで段階的に増加させます。 サーバへのアクセス集中を避けるため、微小なランダム偏差も入れて あります。 加えて、しばらくの間サーバが到達できない状態になる場合には、 ネットワークのオーバヘッドを減らすために、 ポーリング間隔を 1024 秒まで段階的に増加させます。
いくつかの場合では、
ntpd
が連続モードで動作することが現実的でないことがあります。
この場合、これまでは、普通の対応方法として、
cron(8)
ジョブから
ntpdate(8)
プログラムを
指定した時刻に実行させていましたが、
このプログラムは、
ntpd
が持つ
信号処理、誤差チェック、緩和アルゴリズムに関する練り込みを
持っていません。
純正の Solaris, Tru64, Linux, FreeBSD の場合がそうですが、 時計周波数修正についてカーネルサポートが利用可能な場合には、 時計周波数の修正という有益な機能が利用可能です。 まず、 ntpd は、選択されたサーバに対し連続モードで動作し、 固有の時計周波数オフセットを測定し、周波数ファイルに記録します。 周波数とオフセットが定常状態になるまでに数時間掛かることも あります。 そのあと、 ntpd は停止し、必要に応じ単発モードで動作します。 プログラム開始時には、 周波数はファイルから読み込みカーネル内周波数を初期化します。
ダイアルアップサービスや従量性課金サービスなどの場合、 最小間隔を数 10 分にし、最大間隔を 1 日程度に増やすと便利かも しれません。 通常の動作条件では、時計修正ループがひとたび安定化すると、 時間間隔は最小値から最大値まで段階的に増えてゆきます。 しかし、これは、修正ループが誤差を修正できる程度まで 固有時計周波数誤差が小さいことが前提です。 ループの誤差補足可能範囲は、64 秒の間隔において 500 PPM で、 間隔を 2 倍にするごとに 2 の因数で減少します。 例えば、最小値 1,024 秒では、誤差補足可能範囲は 31 PPM にしか過ぎません。 固有誤差がこの値より大きい場合、ドリフトファイル (drift file) ntp.drift は、この制限以下の剰余誤差を減少させるため特別扱いせねばなりません。 この状態が一度生じると、ドリフトファイルは自動的に 1 時間に 1 回 更新され、それ以後のデーモンの再起動の際に周波数を初期化できるように なります。
スーハーフィルタは、これらの場合に目立つ時間オフセットを補正するために 設計されました。 これは、他のトラフィックが存在しないときの伝播遅延の 知識に依存します。 普通の状況でこれが生じるのは業務以外の時間です。 このフィルタは、最近の時間間隔で通常は数時間測定した中で 最小遅延を記憶するシフトレジスタを保持します。 遅延が厳しい状況では、このフィルタは、 問題の遅延と最小遅延の差と、オフセットの符号とを用いて 問題のオフセットを補正します。 このフィルタの名前は、オフセットの符号に依存した、 負の補正 (ハーと吹く) と正の補正 (プーと吹く) を表しています。
このフィルタは tinker コマンドと huffpuff キーワードにより有効にされます。 これは、 ntp.conf(5) に詳しい説明があります。
/etc/ntp.conf | デフォルトの設定ファイル名 |
/etc/ntp.drift | |
デフォルトのドリフトファイル名 | |
/etc/ntp.keys | デフォルトの鍵ファイル名 |
提供されているマニュアルページに加えて、 包括的なドキュメントが world wide web 上の http://www.ntp.org/ にあります。 このドキュメントのスナップショットが HTML 形式で /usr/share/doc/ntp にあります。
RFC1059, Network Time Protocol (Version 1),
,RFC1119, Network Time Protocol (Version 2),
,RFC1305, Network Time Protocol (Version 3),
,NTPD (8) | August 2, 2001 |
総合手引 | セクション 8 | English | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.
“ | The last good thing written in C was Franz Schubert's Symphony #9. | ” |
— Erwin Dietrich |