NTP - Наскільки NTP-сервери настільки точні


52

Я помітив, що на моїх серверах та інших машинах годинник завжди переміщується, тому він повинен синхронізуватися, щоб залишатися точним.

Як годинник сервера NTP не змінюється і завжди залишається правильним?


3
Мене, наприклад, зацікавив би резюме про те, як протоколи NTP дозволяють двом комп’ютерам синхронізувати свій час через ненадійну мережу ...
Xavier Nodet

@XavierNodet Хоча я впевнений, що ви це зробите, це питання не про це. Я б запропонував вам задати власне запитання (припустимо, що його вже не задавали; переконайтеся, що спочатку шукаєте). Це питання задає питання про те, як годинники серверів NTP не можуть переміщатися, тоді як сучасні апаратні годинники переміщуються.
CVn

@XavierNodet Те саме тут. Мені подобається дізнатися, як і чому все працює так, як вони роблять! :)
Джейсон

Відповіді:


58

NTP-сервери розраховують на високоточні тактові годинники для точності хронометражу. Поширеним джерелом часу для центральних серверів NTP є атомні годинники або GPS-приймачі (пам’ятайте, що GPS-супутники мають атомні годинники). Ці годинники визначені як точні, оскільки вони дають дуже точний час. Немає нічого магічного в GPS або атомних годинниках, які змушують їх точно сказати, який саме час; через те, як працюють атомні годинники, вони просто дуже добре справляються, колись їм сказали, який час, продовжуйте говорити точний час (оскільки другий визначається з точки зору атомних ефектів ). Насправді, варто зазначити, що час GPS відрізняється від UTC, який ми звикли бачити. Ці атомні годинники в свою чергу синхронізовані протиМіжнародне атомне час або TAI для того , щоб не тільки точно сказати протягом часу , але і на час.

Після того, як ви встановите точний час в одній системі, підключеній до такої мережі, як Інтернет, це стосується інженерії протоколів, що дозволяє передавати точний час між хостами через ненадійну мережу. У цьому відношенні прошарок 2 (або далі від фактичного джерела часу) NTP-сервер не відрізняється від вашої настільної системи, що синхронізується з набором серверів NTP.

На той час, коли у вас є кілька точних моментів (отриманих з серверів NTP або деінде) і ви знаєте швидкість просування вашого локального годинника (що легко визначити), ви можете обчислити швидкість переміщення вашого місцевого годинника щодо "вважається точною" "проходження часу. Після блокування це значення потім може бути використане для постійного регулювання локального годинника, щоб воно повідомляло значення дуже близькими до точного проходження часу, навіть якщо локальний годинник у реальному часі є дуже неточним; якщо ваш місцевий годинник не є надзвичайно хаотичним, це повинно дозволяти зберігати точний час деякий час, навіть якщо ваше джерело часу за течією з будь-якої причини стає недоступним. Деякі реалізації клієнтів NTP (напевно, більшість ntpdдемонів або системних служб) роблять це та інші (наприклад, супровід ntpdntpdateякий просто встановлює годинник один раз) не роблять. Це зазвичай називають файлом дрейфу, оскільки він постійно зберігає міру переміщення годин, але строго кажучи, його не потрібно зберігати як певний файл на диску.

У NTP прошарок 0 за визначенням є точним джерелом часу. Stratum 1 - система, яка використовує джерело часу stratum 0 як своє джерело часу (і, таким чином, трохи менш точна, ніж джерело часу stratum 0). Стратум 2 знову трохи менш точний, ніж прошарок 1, тому що він синхронізує свій час з джерелом 1. І так далі. На практиці ця втрата точності настільки мала, що вона є абсолютно незначною у всіх, крім самих крайніх випадках.


1
"Високий прошарок", який поважає, не означає низьке число шару, це слід усунути з відповіді. S2 вище, ніж S1. Для доказів погляньте на пояснення професора Міллса (він же проф. NTP) "Підмережа NTP працює з ієрархією рівнів, де кожному рівню присвоюється число, яке називається прошарком. Сервери Stratum 1 (первинні) на найнижчому рівні безпосередньо синхронізуються до національних сервісів часу ... Сервери Stratum 2 (вторинні) на наступному більш високому рівні синхронізуються до серверів stratum 1 тощо. " eecis.udel.edu/~mills/ntp/html/warp.html
dfc

2
Це краще, але я не думаю, що прошарок 0 - це "за визначенням точне джерело часу". Stratum 0 просто означає, що це якийсь опорний годинник. Тільки тому, що це годинник S0, не означає, що він справно працює. Рівень шару - це відстань від опорних годин, не гарантована точність.
dfc

@dfc Я ціную вклад, оскільки він дозволяє зробити відповідь ще кращою. З цього приводу я не згоден з вашим твердженням, що S0 не означає, що він є точним. Можливо, це так у абсолютно суворому сенсі, але якщо час, заданий годинником S0, неточний, цей годинник марний на практиці як джерело S0. Ерго, годинники S0 точні. Або кажучи іншим чином, якщо у вас є ізольований набір хостів, один з яких підключений до джерела часу S0, а всі інші синхронізуються з цим, час, заданий джерелом S0, є правильним часом, що стосується цих хостів. Тоді про TAI не потрібно турбуватися.
CVn

10

У мережевій хронології специфікація, яка повідомляє, як сервер отримує джерело часу, називається рівнем Stratum. Чим нижчий рівень, тим краще тримати час роботи цього сервера.

Пристрої Stratum рівня 0 безпосередньо не підключені до мережі. Вони є власне пристроєм хронометражу, і його потрібно підключити до комп'ютера, щоб отримати фактичний час. Потім цей комп'ютер стає сервером NTP Stratum рівня 1.

Комп'ютер, який підключається до Stratum 1-го рівня, також може стати сервером часу, але це був би рівень страти 2. Коли комп’ютери підключаються до серверів часу, чим нижчий рівень вашого шару, тим точнішим може бути ваш час.

Прилади Stratum рівня 0 включають атомні годинники, які беруть участь у TAI (міжнародний атомний час)або синхронізовані до нього, і приймачі сигналу часу, що надсилаються таким годинником. Найчастіше це приймачі хронометражу GPS з відповідним інтерфейсом, що включає сигнал GPS PPS. Сигнал PPS, коли GPS добре блокується на декількох супутниках, посилає один імпульс в секунду, а передній край цього імпульсу знаходиться в межах наносекунд від фактичного початку цієї секунди. Залежно від специфікації GPS-приймача, сигнал PPS може бути більш-менш точним. Це тому, що кожен GPS-супутник має атомний годинник. Як тільки GPS-приймач знайшов своє власне положення та місце розташування GPS-супутників, які він слухає, він може виправити розповсюдження радіочастот та дасть вам час майже такий же точний, як встановлення атомного годинника прямо біля GPS-приймача.

Отже, сервери Stratum рівня 1 підключаються до атомних годин, або GPS-приймачів, і до них підключаються сервери NTP. Навіть підключення до сервера рівня 2 або 3 прошарку з частими налаштуваннями забезпечить ваш комп'ютер точністю вимірювання часу, виміряною в наносекундах. Але якщо вам потрібні кращі терміни, підключіться до першого шару рівня страту або придбайте відповідний приймач GPS-хронометражу та самі станьте джерелом пластового рівня.


4
Багато, багато людей перетворюють комп’ютери Raspberry PI на NTP-сервери Stratum 1 з додаванням дешевих GPS-приймачів. Ви можете мати повний сервер першого рівня Stratum у вашій мережі за ціною нижче $ 80: google.com/search?q=raspberry+pi+ntp+gps+pps
Адам Девіс,

2
Тож теоретично смартфон з GPS-приймачем (майже всі вони зараз) може бути пристроєм страт 0/1?
Боб

1
Якщо телефон використовував pps вихід GPS-приймача, так. Зауважте, що телефони CDMA також повинні використовувати точні терміни, тому мікросхема CDMA також може бути джерелом рівня 0 для пластових процесорів телефонів. Модуль oem gps та малинове пі було б дешевше.
Адам Девіс

2
Raspberry Pi не має чудового сервера NTP, однак він використовує дещо лускатий, якісний мережевий адаптер (чіп LAN9512).
сумерк

1
@duskwuff Так, але це краще, ніж на багатьох серверах Stratum рівня 2 через Інтернет, і за допомогою правильно налаштованих параметрів NTP на сервері та клієнті можна подолати тремтіння та зміщення, запроваджені низькоякісним USB-чіпом на базі USB. За витрату важко перемогти, але витратите трохи більше, і ви зможете виправити цю незначну проблему.
Адам Девіс

3

Усі годинники певною мірою дрейфують, це залежить від джерела сигналу синхронізації та того, наскільки добре він відстежується. На ПК це HPET в наші дні, але ПК може втратити дані про те, скільки кліщів минуло, якщо перевантажений.

Сервери NTP, на яких ваша машина спілкується, ймовірно, також втрачають час, однак вони переносять свій час назад до кращого джерела.

Зрештою, кращими джерелами є високоточні годинники, як атомні годинники. Ви можете думати про NTP як мережу машин, кожне з них матиме ряд джерел, на які покладається час, і визначає власний час до того, що вважається більш точним.

Цим керується джерело, що оголошує прошарок. Атомний або GPS-годинник - прошарок 0, і повноваження щодо часу. Кожен шар із цього - наступний прошарок - прошарок 1, і перевірятиме ряд джерел шару 0 разом із однолітками на тому самому рівні, щоб перевірити джерела часу.

Ви, ймовірно, розмовляєте з другою або третьою версією часу.


1

Те, що написали інші, це правда: сервер Stratum 1 отримує свій час від пристрою Stratum 0. Я не знаю, в яких часових інтервалах це відбувається, але я думаю, що вони там досить точні.

Сервер Stratum n з n> 1 отримує свій час через NTP з сервера Stratum n-1. Це означає, що він регулярно синхронізується з ним. Після запуску служби NTP синхронізація відбувається через досить короткі проміжки часу, а з часом інтервали починають збільшуватися. Врешті-решт інтервал досягає 1024 с, приблизно 17 хвилин.

Що не було вирішено - це питання, що відбувається між тим часом? Ну, є об'єкт під назвою файл дрейфу . Це допомагає NTP стежити за будь-яким переміщенням між місцевим та опорним годинником. Частота локальних тактових параметрів потім регулюється відповідно до виявленого дрейфу, так що час також опитується між опитуваннями сервера.

Інша реалізація NTP може використовувати й інші засоби, але одне спільне: потреба та можливість регулювати тактову частоту.


Однак я заперечую, що файл дрейфу - це деталізація конкретної реалізації програмного забезпечення, а не пов'язана з тим, як апаратний годинник сервера NTP може бути таким точним.
CVn
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.