Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

22.3. NTP の概要

Red Hat Enterprise Linuxnbsp;Hat Enterprise Linuxnbsp;Linux で使用される NTP のバージョンは、RFC 1305 Network Time Protocol(Version 3)Specification, Implementation and Analysis and 『RFC 5905 Network Time Protocol Version』4: Protocol and Algorithms Specification で説明されています。
NTP を実装すると、10 秒以下の正確性が達成できます。インターネット上では、数十ミリ秒の正確性の維持は普通のことです。ローカルエリアネットワーク (LAN) 上では、1 ミリ秒の正確性は理想的な条件下では可能です。これは、クロックのドリフトを考慮して修正され、以前の、シンプルな時間プロトコルシステムで行われていないためです。64 ビットのタイムスタンプを使用することにより、233 ピコ秒の解像度が得られます。ここではタイムスタンプの最初の 32 ビットが秒に使われ、次の 32 ビットが 1 秒未満に使われます。
NTP は、1900 年 1 月 1 日の GMT 午前 0 分からの経過時間を秒数で表します。秒のカウントには 32 ビットが使用されます。これは、時間が 2036 で ロールオーバー されることを意味します。ただし、NTP はタイムスタンプ間の差異で機能するため、タイムプロトコルの他の実装と同じレベルの問題はありません。誤差が 68 年以内のハードウェアクロックが起動時に利用可能であれば、NTP は正確に現在の日時を解釈します。NTP4 仕様は、Era Number および Era Offset を提供します。このセットを使用すると、68 年を超える時間の長さを扱う場合にソフトウェアをより堅牢にすることができます。これは Unix 年の 2038 年問題と混同しないようにしてください。
NTP プロトコルは、正確性を高めるために追加情報を提供します。4 つのタイムスタンプを使うことで、往復時間とサーバー応答時間の計算が可能になります。NTP クライアントとしての役割でシステムが参照時間サーバーと同期するために、パケットは 元のタイムスタンプ で送信されます。パケットが到達すると、タイムサーバーは 受信タイムスタンプ を追加します。日時情報の要求を処理した後、パケットの返信前に 転送タイムスタンプ が追加されます。返信パケットが NTP クライアントに届くと、受信タイムスタンプ が生成されます。クライアントはこれで往復時間が計算でき、処理時間を差し引くことで実際の移動時間が導き出されます。送信時間と受信時間が同じだと仮定すると、NTP データを受信する際の 1 回の移動の遅延が計算されます。正式な NTP アルゴリズムは、ここで示されているものよりもはるかに複雑です。
時間情報を含むパケットは、受信後にただちに処理されるのではなく、最初に検証され、その後にいくつかの他の時間サンプルと一緒に処理されて、時間を予想します。その後、システムクロックを比較して時間オフセットを決定し、システムクロックの時間と ntpd が時間と決定する時間の違いを決定します。システムクロックは、使用されているカウンターの頻度を変更することで、このオフセットを減らすために、最大で 0.5ms のレートで調整されます。この方法を使用してクロックを 1 秒で調整するには、最低 2000 秒かかります。この方法でクロックを 1 秒調整するには、少なくとも 2000 秒かかります。クロックの時間オフセットが 128ms を超える場合(デフォルト設定)、ntpd はクロックの転送または後方を ステップ できます。システムののタイムオフセットが 1000 ミリ秒を超える場合は、ユーザーまたはインストールスクリプトで手動の調整を行う必要があります。2章日付と時刻の設定を参照してください。-g オプションを ntpd コマンドに指定すると(デフォルトで使用)、システム起動時のオフセットは修正されますが、通常の操作中に修正されるオフセットは最大 1000 秒までです。
時間を遅らせると、失敗したりエラーになるソフトウェアもいくつかあります。時間のステップ変更の影響を受けるシステムでは、しきい値を 128ms ではなく 600s に変更できます( -g オプションとは関係しません)。-x オプションを使用してステップの制限を 0.128s から 600s に増やすと、クロック制御に異なる方法が使用される必要があるため、マイナス面があります。カーネルのクロック規範が無効になり、クロックの正確性にマイナスの影響が出る可能性があります。-x オプションは、/etc/sysconfig/ntpd 設定ファイルに追加できます。