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


52

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

NTPサーバーのクロックがドリフトせず、常に正しいままになるのはどうしてですか?


3
私は、1のために、特別... NTPプロトコルは、2台のコンピュータが信頼できないネットワーク上で自分の時間を同期させることができます方法について概要に興味がある
ザビエルNodetを

@XavierNodetあなたがそうするだろうと確信している間、それはこの質問が尋ねているものではありません。自分で質問することをお勧めします(まだ質問されていない場合は、最初に検索してください)。この質問は、現代のハードウェアクロックがドリフトするのに対して、NTPサーバーのクロックがドリフトしない方法を尋ねています。
CVn 14

@XavierNodet同じ。物事がどのように、そしてなぜ機能するかについて学ぶのが好きです!:)
ジェイソン14

回答:


58

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

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

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

NTPでは、層0は定義上、正確な時刻源です。Stratum 1は、タイムソースとしてstratum 0タイムソースを使用するシステムです(したがって、stratum 0タイムソースよりわずかに精度が低くなります)。Stratum 2は、Stratum 1のソースと時刻を同期しているため、Stratum 1よりも若干精度が低くなります。等々。実際には、この精度の低下は非常に小さいため、最も極端な場合を除いて完全に無視できます。


1
敬意を表して「高層」とは、層数が少ないことを意味するものではなく、回答から削除する必要があります。S2はS1よりも高くなっています。証拠については、Prof。Mills(別名Prof NTP)による説明を参照してください。「NTPサブネットはレベルの階層で動作し、各レベルにはストラタムと呼ばれる番号が割り当てられます。最下位レベルのStratum 1(プライマリ)サーバーは直接同期されます全国のタイムサービスへ...次の上位レベルのストラタム2(セカンダリ)サーバーは、ストラタム1サーバーなどに同期されます。」eecis.udel.edu/~mills/ntp/html/warp.html
dfc

2
その方が良いのですが、階層0は「定義上、正確な時刻源」とは思いません。Stratum 0は、単に何らかの基準クロックであることを意味します。S0クロックであるからといって、適切に機能しているという意味ではありません。階層レベルは、基準クロックからの距離であり、精度は保証されません。
dfc 14

@dfc回答をさらに良くすることができるので、入力に感謝します。そうは言っても、S0は正確であるとは限らないという声明には同意しません。たぶんそれは完全に厳密な意味ではそうかもしれませんが、S0クロックによって与えられる時間が不正確な場合、そのクロックは実際にはS0ソースとしては役に立ちません。エルゴ、S0クロックは正確です。別の言い方をすれば、ホストの隔離されたセットがあり、そのうちの1つがS0タイムソースに接続されており、他のすべてのホストがそれと同期している場合、S0ソースによって与えられる時間、それらのホストに関する限り正しい時間です。TAIを心配する必要はありません。
CVn 14

10

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

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

Stratumレベル1に接続しているコンピューターもタイムサーバーになりますが、ストラタムレベル2になります。コンピューターがタイムサーバーに接続すると、ストラタムレベルが低くなるほど、時間管理が正確になります。

Stratumレベル0デバイスには、TAI(国際原子時間)に参加する原子時計が含まれますまたはそれに同期し、そのようなクロックによって送信される時間信号の受信者。最も一般的なのは、GPS PPS信号を含む適切なインターフェイスを備えたGPS計時受信機です。GPSが複数の衛星を適切にロックしている場合、PPS信号は毎秒1つのパルスを送信し、そのパルスのリーディングエッジはその秒の実際の開始からナノ秒以内です。GPS受信機の仕様に応じて、PPS信号の精度は多少なります。これは、各GPS衛星に原子時計があるためです。GPSレシーバーは、リスニングしているGPS衛星の位置と位置を見つけると、RF伝搬を修正し、GPSレシーバーに原子時計を置くのとほぼ同じくらい正確な時間を与えることができます。

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


4
安価なGPS受信機を追加して、Raspberry PIコンピューターをStratum 1 NTPサーバーに変えている人はたくさんいます。:あなたは下の80 $ネットワーク上の完全な階層レベル1のサーバーを持つことができますgoogle.com/search?q=raspberry+pi+ntp+gps+pps
アダム・デイビス

2
理論的には、GPSレシーバーを備えたスマートフォン(現在ではほとんどすべて)がstratum 0/1デバイスになる可能性があります。
ボブ14

1
電話がGPS受信機のpps出力を使用した場合、はい。CDMA電話も正確なタイミングを使用する必要があるため、CDMAチップセットは電話プロセッサの階層レベル0のソースにもなります。ただし、oem gpsモジュールとraspberry piは安価です。
アダムデイビス14

2
ただし、Raspberry Piは、多少フレーク状の低品質ネットワークアダプター(LAN9512チップ)を使用しているため、優れたNTPサーバーにはなりません。
夕暮れwuff 14

1
@duskwuffはい、ただしインターネット上の多くのStratumレベル2サーバーよりも優れており、サーバーとクライアントの両方で適切に構成されたNTP設定を使用すると、低品質のUSBベースのLANチップによって導入されるジッターとオフセットを克服できます。コストについては、打ち負かすのは難しいですが、もう少し費やすと、この小さな問題を修正できます。
アダムデイビス14

3

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

マシンが通信するNTPサーバーも時間を失っている可能性がありますが、より良いソースに時間を戻します。

最終的に、より良いソースは、原子時計のような非常に正確な時計です。NTPはマシンのネットワークと考えることができます。各マシンは、時間に依存する多くのソースを持ち、自身の時間をより正確であると見なされるものに歪めます。

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

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


1

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

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

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

他のNTP実装では他の機能を使用する場合がありますが、よくあることの1つは、クロックの周波数を調整する必要性と機能です。


ただし、ドリフトファイルは特定のソフトウェア実装の実装の詳細であり、NTPサーバーのハードウェアクロックがどのように正確であるかに関係しないと主張します。
CVn 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.