NTP - NTP sunucuları nasıl bu kadar doğru?


52

Sunucularımda ve diğer makinelerde saatin her zaman kaydığını, bu yüzden doğru kalması için senkronize olması gerektiğini fark ettim.

NTP sunucusu saatler nasıl kaymaz ve her zaman doğru kalır?


3
Birincisi, NTP protokollerinin iki bilgisayarın zamanlarını güvenilmez bir ağ üzerinden senkronize etmesine nasıl izin verdiğine dair bir özetle özellikle ilgilenecektim ...
Xavier Nodet

@ XavierNodet İstediğinizden emin olsanız da, bu sorunun sorduğu şey bu değil. Kendi kendinize bir soru sormanızı öneririm (daha önce sorulmadığı varsayılarak; ilk olarak arama yaptığınızdan emin olun). Bu soru, NTP sunucularının saatlerinin nasıl sürüklenemediğini, çağdaş donanım saatlerinin sürüklendiğini soruyor.
14’de CVn

@XavierNodet Burada da aynı. İşlerin nasıl ve neden böyle yürüdüklerini öğrenmeyi seviyorum! :)
Jason

Yanıtlar:


58

NTP sunucuları hassas zaman tutma için son derece hassas saatlere güveniyor. Merkezi NTP sunucuları için ortak bir zaman kaynağı, atom saatleri veya GPS alıcılarıdır (GPS uydularının üzerinde atomik saatler bulunduğunu unutmayın). Bu saatler oldukça kesin bir zaman referansı sağladıkları için doğru olarak tanımlanmıştır. GPS ya da atomik saatler hakkında sihirli bir şey yok, tam olarak saati size söylemelerini sağlıyor; Atomik saatlerin nasıl çalıştığından dolayı, sadece bir kez saatin kaç olduğu söylendikten sonra doğru zamanı söylemeye devam etmeleri ( ikincisi atomik etkiler açısından tanımlandığından ). Aslında, GPS zamanının UTC'den farklı olduğunu görmeye değer olduğumuzu belirtmekte fayda var . Bu atomik saatler sırayla senkronize edilir.Uluslararası Atom Saati veya TAI sadece zamanın geçişini değil, aynı zamanda zamanı da doğru bir şekilde anlatmak için .

İnternet gibi bir ağa bağlı bir sistemde kesin bir zamana sahip olduğunuzda, güvenilir olmayan bir ağ üzerinden ana bilgisayarlar arasında kesin zamanların aktarılmasını sağlayan protokol mühendisliği meselesidir. Bu bağlamda, bir tabaka 2 (veya gerçek zaman kaynağından daha uzakta olan), NTP sunucusu, masaüstü sisteminizden bir dizi NTP sunucusu ile senkronize edilmesinden farklı değildir.

Birkaç kesin zamana sahip olduğunuzda (NTP sunucularından veya başka bir yerden edindiğiniz gibi) ve yerel saatinizin ilerleme oranını (ki bu kolayca belirlenebilir) bilirseniz, yerel saatinizin kayma hızını "doğru olduğuna inanılan" değerine göre hesaplayabilirsiniz. " zaman geçiti. Kilitlendikten sonra, yerel gerçek zamanlı saatin kendisi çok yanlış olsa bile, değerleri doğru zaman geçidine çok yakın bir şekilde raporlamak için yerel saati sürekli ayarlamak için kullanılabilir; Yerel saatiniz çok düzensiz olmadığı sürece , bu, yukarı akış zaman kaynağınız herhangi bir nedenle kullanılamıyor olsa bile, bir süre doğru zamanın korunmasına izin vermelidir. Bazı NTP istemcisi uygulamaları (muhtemelen çoğu ntpddaemon veya sistem hizmeti uygulamaları) bunu yapar ve diğerleri (ntpd'nin arkadaşı gibi)ntpdatebu sadece saati bir kez ayarlar). Bu genellikle bir sürüklenme dosyası olarak adlandırılır, çünkü sürekli olarak saat kayması ölçüsünü saklar, ancak kesin olarak konuşursak, diskte belirli bir dosya olarak depolanması gerekmez.

NTP'de, stratum 0, tanım olarak kesin bir zaman kaynağıdır. Stratum 1, zaman kaynağı olarak bir stratum 0 zaman kaynağı kullanan bir sistemdir (ve böylece stratum 0 zaman kaynağından biraz daha az doğrudur). Stratum 2 tekrar stratum 1'den biraz daha az doğrudur çünkü zamanını stratum 1 kaynağına karşı senkronize eder. Ve bunun gibi. Uygulamada, bu doğruluk kaybı o kadar küçüktür ki, en uç vakalar dışında hepsinde tamamen ihmal edilebilir düzeydedir.


1
Sırasıyla "yüksek stratum", düşük stratum sayısı anlamına gelmez, bunun cevaptan çıkarılması gerekir. S2, S1'den daha yüksektir. Mills’in açıklamasına bakınız: “Mills NTP alt ağı, her seviyeye stratum adı verilen bir numara atanan düzeyler hiyerarşisi ile çalışır. ulusal zaman hizmetlerine ... Bir sonraki daha yüksek seviyedeki Stratum 2 (ikincil) sunucular, 1. katman sunuculara vb. senkronize ediliyor. " eecis.udel.edu/~mills/ntp/html/warp.html
dfc

2
Daha iyi, ama stratum 0'ın “tanım gereği doğru bir zaman kaynağı” olduğunu sanmıyorum. Stratum 0, basitçe, bir çeşit referans saati olduğu anlamına gelir. Sadece bir S0 saati olduğu için düzgün çalıştığı anlamına gelmez. Stratum seviyesi, referans saatlerine olan mesafe hakkında kesinliği garanti etmemektedir.
dfc

@dfc Yanıtı daha iyi yapmamı sağladığı için girişi takdir ediyorum. Bununla birlikte, S0'ın doğru olduğu anlamına gelmediğine dair ifadenize katılmıyorum. Belki de bu çok kesin bir anlamdadır, ancak S0 saatiyle verilen süre yanlışsa, bu saat S0 kaynağı olarak pratikte işe yaramaz. Ergo, S0 saatler doğru. Bir S0 zaman kaynağına bağlı, biri ana, izole bir set var ve tüm diğerleri buna karşı senkronize Veya, başka bir deyişle, S0 kaynak tarafından verilen zaman olduğu kadarıyla bu ana söz konusu olduğunda doğru zaman. TAI hakkında endişelenmenize gerek yok o zaman.
Bir CVn

10

Ağ zaman işleyişinde bir sunucunun zaman kaynağını nasıl elde ettiğini gösteren şartnameye Stratum Seviyesi denir. Seviye ne kadar düşük olursa, o sunucunun kullanım süresi o kadar iyi olur.

Stratum seviye 0 cihazları doğrudan ağa bağlı değil. Bunlar gerçek zaman tutma cihazının kendisidir ve gerçek zamanı elde etmek için bir bilgisayara bağlanmalıdır. Bu bilgisayar daha sonra Stratum seviye 1 NTP sunucusu olur.

Bir Stratum seviye 1'e bağlanan bir bilgisayar da bir zaman sunucusu haline gelebilir, ancak o zaman bir katman seviyesi 2 olur. Bilgisayarlar zaman sunucularına bağlandıkça, katman seviyeniz ne kadar düşük olursa, zaman ayırmanız o kadar doğru olur.

Stratum seviye 0 cihazları TAI'da yer alan atomik saatleri içerir (uluslararası atomik zaman)veya buna senkronize edilmişse ve böyle bir saat tarafından gönderilen zaman sinyali alıcılarını içerir. En yaygın olarak bunlar, GPS PPS sinyalini içeren uygun bir arayüze sahip GPS zaman tutma alıcılarıdır. GPS, birkaç uyduda iyi bir kilitlendiğinde, saniyede bir darbe gönderir ve bu darbenin ön kenarı, o saniyenin gerçek başlangıcının nanosaniye cinsindendir. GPS alıcısının özelliklerine bağlı olarak, PPS sinyali az çok doğru olabilir. Bunun sebebi, her GPS uydusunun bir atomik saate sahip olmasıdır. GPS alıcısı kendi konumunu ve dinlediği GPS uydularının yerini bulduktan sonra, RF yayılımını düzeltebilir ve size GPS alıcısında tam bir atom saatinin olduğu kadar hassas bir zaman verebilir.

Böylece Stratum seviye 1 sunucuları atomik saatlere, GPS alıcılarına ve NTP sunucuları bunlara bağlanır. Bir stratum seviye 2 veya 3 sunucusuna sık ayarlamalar yapmak bile bağlandığında, bilgisayarınızın nanosaniye cinsinden ölçülen zamanlama doğruluğunu sağlar. Ancak daha iyi zamanlamaya ihtiyacınız varsa, birinci seviye bir sunucuya bağlanın veya uygun bir zaman tutma GPS alıcısı satın alın ve birinci seviye bir kaynak olun.


4
Ucuz GPS alıcılarının eklenmesiyle Ahududu PI bilgisayarlarını Stratum 1 NTP sunucularına dönüştüren pek çok kişi var. Ağınızda 80 $ 'ın altında bir Stratum seviye 1 sunucunuz olabilir: google.com/search?q=raspberry+pi+ntp+gps+pps
Adam Davis

2
Yani teoride bir GPS alıcısına sahip bir akıllı telefon (hemen hemen hepsi artık) bir stratum 0/1 cihazı olabilir mi?
Bob,

1
Telefon, GPS alıcısının pps çıkışını kullandıysa, evet. CDMA telefonlarının da kesin zamanlamayı kullanması gerektiğine dikkat edin, böylece CDMA yonga seti, telefon işlemcisi için bir tabaka seviyesi 0 kaynağı olabilir. Bir oem gps modülü ve ahududu pi olsa daha ucuz olurdu.
Adam Davis

2
Bir Ahududu Pi, biraz lapa lapa, düşük kaliteli bir ağ bağdaştırıcısı (LAN9512 yongası) kullanıyor olsa da, mükemmel bir NTP sunucusu yapmaz.
duskwuff

1
@duskwuff Evet, ancak internet üzerinden birçok Stratum seviye 2 sunucusundan daha iyidir ve hem sunucu hem de istemcide uygun şekilde yapılandırılmış NTP ayarları ile düşük kaliteli USB tabanlı LAN yongasının getirdiği jitter ve ofsetin üstesinden gelinebilir. Maliyet için, yenmek zor, ama biraz daha fazla harcamak ve bu küçük sorunu düzeltebilirsiniz.
Adam Davis

3

Tüm saatler bir dereceye kadar kaymaktadır, bu zamanlama sinyalinin kaynağına ve ne kadar iyi izlendiğine bağlıdır. Bir bilgisayarda, bu günlerde bu HPET'dir, ancak bilgisayar aşırı yüklendiğinde kaç tane kenenin geçtiğini izleyebilir.

Makinenizin konuştuğu NTP sunucuları da muhtemelen zaman kaybediyor, ancak zamanlarını daha iyi bir kaynağa sürüklüyorlar.

Sonuçta, daha iyi kaynaklar atomik saatler gibi oldukça hassas saatlerdir. NTP'yi bir makine ağı olarak düşünebilirsiniz, her biri zamana dayanan bir çok kaynağa sahip olacak ve daha doğru olduğu düşünülen şeye kendi zamanını çarpıtacaktır.

Bu, katmanını bildiren bir kaynak tarafından yönetilir. Bir atom veya GPS saati stratum 0'dır ve saatin ne olduğuna dair otoritedir. Bundan her katman bir sonraki katmandır - katman 1 ve zaman kaynaklarını kontrol etmek için, aynı düzeyde akranlarla birlikte bir dizi katman 0 kaynağını kontrol eder.

Muhtemelen bir tabaka 2 veya 3 zaman kaynağı ile konuşuyorsunuz.


1

Diğerlerinin yazdıkları doğru: Bir Stratum 1 sunucusu zamanını Stratum 0 cihazından alıyor. Hangi zaman aralıklarında oluyor bilmiyorum, ama orada oldukça doğru olduklarını düşünüyorum.

N> 1 olan bir Stratum n sunucusu, zamanını bir Stratum n-1 sunucusundan NTP üzerinden alır. Bu düzenli aralıklarla senkronize anlamına gelir. NTP servisini başlattıktan sonra senkronizasyon oldukça kısa aralıklarla gerçekleşir ve zamanla aralık artmaya başlar. Sonunda, aralık 1024 s, yaklaşık 17 dakika kadardır.

Ele alınmamış olan, o zaman arasında neler olduğu sorusudur? Drift dosyası adı verilen bir tesis var . NTP'nin yerel saat ile referans saat arasındaki herhangi bir kaymayı izlemesine yardımcı olur. Yerel saatin frekansı daha sonra tespit edilen sapmaya göre ayarlanır, böylelikle sunucu anketleri arasındaki zaman da doğru olur.

Diğer NTP uygulamaları başka tesisleri kullanabilir, ancak bir şey yaygındır: Saatin frekansını ayarlama ihtiyacı ve yeteneği.


Bununla birlikte, sürüklenme dosyasının, belirli bir yazılım uygulamasının bir uygulama detayı olduğunu ve NTP sunucusunun donanım saatinin bu kadar doğru olmasıyla ilgili olmadığını iddia ediyorum.
14’de CVn
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.