web-dev-qa-db-ja.com

NTP-サーバーはどのように正確ですかNTP

私のサーバーや他のマシンでは、時計が常にずれているので、正確に保つには同期する必要があることに気づきました。

NTPサーバークロックがドリフトせず、常に正しい状態を保つにはどうすればよいですか?

52
Jason

NTPサーバーは、正確な時刻を維持するために非常に正確なクロックに依存しています。中央NTP=サーバーの一般的な時刻源は、原子時計またはGPS受信機です(GPS衛星には原子時計が搭載されていることに注意してください)。これらの時計は、非常に正確な時刻基準を提供するため、正確であると定義されています。 GPSや原子時計が何時であるかを正確に教えてくれる魔法のようなものはありません。原子時計はどのように機能するかというと、いつ何時であるかを教えられたことがあるので、非常に得意ですkeep正確な時間を伝えます(- 2番目は原子効果の観点から定義されているため )。実際、 GPS時間はUTC 慣れ親しんでいること。これらの原子時計は順番に International Atomic TimeまたはTAI に対して同期され、時間の経過を正確に伝えるだけでなくthe時間。

インターネットなどのネットワークに接続された1つのシステムで正確な時刻を取得したら、プロトコルエンジニアリングの問題により、信頼できないネットワークを介してホスト間で正確な時刻を転送できます。この点で、ストラタム2(または実際のタイムソースから離れている)NTPサーバーは、一連のNTPサーバーに対して同期しているデスクトップシステムと同じです。

(NTPサーバーまたは他の場所から取得した)数回の正確な時刻があり、ローカルクロックの進行速度(これは簡単に判断できます)がわかっているときには、ローカル時刻を計算できます。 「信じられている正確な」時間経過に対する時計のドリフト率。いったんロックされると、この値を使用してローカル時計を継続的に調整し、ローカルの実際の時間であっても、正確な時間経過に非常に近い値を報告することができます。タイムクロック自体は非常に不正確です。ローカルクロックが非常に不安定でない限りこれにより、アップストリームタイムであっても、しばらく正確な時間を保つことができます。何らかの理由でソースが利用できなくなります。一部のNTPクライアント実装(おそらくほとんどのntpdデーモンまたはシステムサービス実装))がこれを行い、他は(ntpdのコンパニオンntpdateなど)これは単にクロックを1回設定するだけです。そうしないでください。これは、ドリフトファイルと呼ばれます。ドリフトしますが、厳密に言えば、特定のファイルとしてディスクに保存する必要はありません。

NTPでは、ストラタム0は定義により正確なタイムソースです。ストラタム1は、タイムソースとしてストラタム0タイムソースを使用するシステムです(したがって、ストラタム0タイムソースよりもわずかに正確ではありません)。層2は、層1のソースに対して時間を同期しているため、層1よりも精度がやや劣ります。等々。実際には、この精度の損失は非常に小さいため、最も極端な場合を除いてすべて無視できます。

58
a CVn

ネットワークタイムキーピングでは、サーバーがタイムソースを取得する方法を示す仕様を層レベルと呼びます。レベルが低いほど、サーバーの時間管理が向上します。

Stratumレベル0のデバイスは、ネットワークに直接接続されていません。これらは実際の計時デバイスそのものであり、実際の時刻を取得するにはコンピューターに接続する必要があります。次に、このコンピュータはStratumレベル1 NTPサーバーになります。

Stratumレベル1に接続するコンピューターもタイムサーバーになる可能性がありますが、それはStratumレベル2になります。コンピューターがタイムサーバーに接続するとき、Stratumレベルが低いほど、より正確に時間を維持できます。

階層レベル0のデバイスには、 TAI(国際原子時間) に参加するか、それに同期する原子時計と、そのような時計によって送信される時間信号のレシーバーが含まれます。最も一般的なのは、GPS PPSシグナルを含む適切なインターフェースを備えたGPSタイムキーピングレシーバーです。PPSシグナル、GPSが複数の衛星で良好なロックを持っている場合、1秒あたり1つのパルスを送信し、そのパルスのリーディングエッジは、その秒の実際の開始からナノ秒以内です。GPS受信機の仕様に応じて、PPS信号は、精度が低くなります。これは、各GPS衛星に原子時計があるためです。GPS受信機が自分の位置と受信しているGPS衛星の位置を検出すると、RF伝播とGPSレシーバーに原子時計を設置するのと同じくらい正確な時間を提供します。

したがって、Stratumレベル1のサーバーは原子時計またはGPS受信機に接続し、NTP=サーバーはそれらに接続します。頻繁に調整するStratumレベル2または3のサーバーに接続しても、コンピューターにタイミングの精度が提供されますナノ秒単位で測定されます。ただし、より良いタイミングが必要な場合は、階層レベル1のサーバーに接続するか、適切な計時用GPS受信機を購入して、自分で階層レベル1のソースになります。

10
Adam Davis

すべてのクロックはある程度ドリフトします。これは、タイミング信号のソースと、それがどれだけうまく追跡されるかに依存します。 PCでは、これは最近のHPETですが、PCは過負荷の場合、経過したティック数を追跡できなくなる可能性があります。

NTPあなたのマシンが通信するサーバーもおそらく時間を失っていますが、それらはより良いソースに時間をドリフトさせます。

究極的には、より良いソースは原子時計のような非常に正確な時計です。 NTP=はマシンのネットワークと考えることができます。それぞれのマシンには、時間を依存する多数のソースがあり、自分の時間をより正確と見なされるものに偏らせます。

これは、その層を宣言するソースによって管理されます。原子時計またはGPS時計は層0であり、時刻は何であるかについての権限です。それから出る各層は次の層-層1であり、タイムソースを正常性チェックするために、同じレベルのピアとともにいくつかの層0ソースをチェックします。

階層2または3のタイムソースと話している可能性があります。

3
Paul

他の人が書いたことは真実です:Stratum 1サーバーはStratum 0デバイスから時間を取得します。発生する時間間隔はわかりませんが、そこでは非常に正確だと思います。

N> 1のStratum nサーバーは、NTPからStratum n-1サーバーから時間を取得します。つまり、定期的に同期します。NTPサービス、同期は非常に短い間隔で行われ、時間の経過とともに間隔が増加し始め、最終的には間隔が1024秒と長くなり、約17分です。

対処されていないのは、その間に発生する問題です。さて、 ドリフトファイル と呼ばれる機能があります。 NTPは、ローカルクロックと基準クロック間のドリフトを監視するのに役立ちます。ローカルクロックの周波数は、検出されたドリフトに従って調整されるため、サーバーポーリング間の時間も正確です。

その他NTP実装は他の機能を使用する可能性がありますが、1つのことは一般的です:クロックの周波数を調整する必要性と機能。

1
glglgl