NTP - Как NTP-серверы настолько точны

52

Я заметил, что на моих серверах и других машинах часы всегда смещаются, поэтому они должны синхронизироваться, чтобы оставаться точными.

Как часы NTP-сервера не дрейфуют и всегда остаются правильными?

Джейсон
источник
3
Я, например, был бы особенно заинтересован в сводке о том, как протоколы NTP позволяют двум компьютерам синхронизировать свое время по ненадежной сети ...
Ксавье Нодет,
@XavierNodet Хотя я уверен, что вы бы, это не то, о чем спрашивает этот вопрос. Я бы посоветовал вам задать свой вопрос (при условии, что он еще не был задан; сначала обязательно выполните поиск). Этот вопрос задает вопрос, как часы NTP-серверов могут не дрейфовать, в то время как современные аппаратные часы дрейфуют.
CVn
@XavierNodet То же самое здесь. Мне нравится узнавать о том, как и почему все работает так, как они работают! :)
Джейсон

Ответы:

58

NTP-серверы используют высокоточные часы для точного хронометража. Распространенным источником времени для центральных серверов NTP являются атомные часы или приемники GPS (помните, что на спутниках GPS есть атомные часы). Эти часы определены как точные, поскольку они обеспечивают очень точную временную привязку. Нет ничего волшебного в GPS или атомных часах, которые заставляют их точно сказать, который час; из-за того, как работают атомные часы, они просто очень хороши, когда однажды сказали, который час, продолжают указывать точное время (поскольку секунда определяется с точки зрения атомных эффектов ). На самом деле, стоит отметить, что время GPS отличается от времени UTC, которое мы привыкли видеть. Эти атомные часы в свою очередь синхронизируются сМеждународное атомное время или TAI для того , чтобы не только точно сказать течение времени , но и на время.

Когда у вас есть точное время в одной системе, подключенной к сети, такой как Интернет, вопрос протокольной инженерии позволяет передавать точное время между хостами по ненадежной сети. В этом отношении NTP-сервер уровня 2 (или дальше от фактического источника времени) ничем не отличается от вашей настольной системы, синхронизирующейся с набором NTP-серверов.

К тому времени, когда у вас есть несколько точных значений времени (полученных с NTP-серверов или из других источников) и вы знаете скорость продвижения ваших локальных часов (которую легко определить), вы можете рассчитать коэффициент смещения ваших локальных часов относительно «точной точности». " Течение времени. После блокировки это значение можно затем использовать для непрерывной настройки локальных часов, чтобы они передавали значения очень близко к точному течению времени, даже если сами локальные часы реального времени очень неточны; если ваши локальные часы не очень неустойчивы, это должно позволить сохранять точное время в течение некоторого времени, даже если ваш источник времени в восходящем направлении становится недоступным по какой-либо причине. Некоторые реализации клиента NTP (вероятно, большинство реализаций ntpdдемона или системного сервиса) делают это, а другие (например, компаньон ntpd)ntpdateкоторый просто устанавливает часы один раз) не надо. Это обычно называется дрейфовым файлом, потому что он постоянно хранит меру сдвига тактовой частоты, но, строго говоря, его не нужно хранить как отдельный файл на диске.

В NTP слой 0 по определению является точным источником времени. Stratum 1 - это система, которая использует источник времени stratum 0 в качестве источника времени (и, следовательно, немного менее точен, чем источник времени stratum 0). Слой 2 снова немного менее точен, чем слой 1, потому что он синхронизирует свое время с источником слоя 1. И так далее. На практике эта потеря точности настолько мала, что она совершенно незначительна во всех случаях, кроме самых крайних.

CVn
источник
1
С уважением, «высокий уровень» не означает низкий уровень, который следует исключить из ответа. S2 выше, чем S1. Для доказательства посмотрите на объяснение проф. Миллса (он же Prof NTP): «Подсеть NTP работает с иерархией уровней, где каждому уровню присваивается номер, называемый стратом. Серверы страты 1 (первичные) на самом низком уровне напрямую синхронизируются. национальным службам времени ... Серверы уровня 2 (вторичные) на следующем более высоком уровне синхронизируются с серверами уровня 1 и т. д. " eecis.udel.edu/~mills/ntp/html/warp.html
DFC
2
Лучше, но я не думаю, что слой 0 является «по определению точным источником времени». Stratum 0 просто означает, что это эталонные часы некоторого вида. То, что это часы S0, не означает, что они работают нормально. Уровень пласта равен расстоянию от эталонных часов, а не гарантированной точности.
2011 г.
@dfc Я ценю вклад, поскольку он позволяет мне сделать ответ еще лучше. Тем не менее, я не согласен с вашим утверждением, что S0 не означает, что это точно. Возможно, это так в совершенно строгом смысле, но если время, указанное часами S0, неточно, эти часы на практике бесполезны как источник S0. Ergo, часы S0 точные. Или, другими словами, если у вас есть изолированный набор хостов, один из которых подключен к источнику времени S0, а все остальные синхронизируются с ним, время, указанное источником S0, является правильным временем для этих хостов. Не нужно беспокоиться о TAI тогда.
CVn
10

В сетевом хронометраже спецификация, которая сообщает вам, как сервер получает свой источник времени, называется уровнем уровня. Чем ниже уровень, тем лучше время хранения этого сервера.

Устройства уровня 0 не подключены напрямую к сети. Они сами являются фактическим устройством хронометража и должны быть подключены к компьютеру для получения фактического времени. Затем этот компьютер становится NTP-сервером уровня 1.

Компьютер, подключающийся к уровню 1 уровня, также может стать сервером времени, но тогда это будет уровень 2-го уровня. Поскольку компьютеры подключаются к серверам времени, чем ниже уровень уровня, тем точнее может быть время.

Устройства уровня 0 включают атомные часы, участвующие в TAI (международное атомное время)или синхронизируются с ним и приемники сигнала времени, отправленные такими часами. Чаще всего это GPS-приемники хронометража с соответствующим интерфейсом, который включает сигнал GPS PPS. Сигнал PPS, когда GPS имеет хорошую блокировку на нескольких спутниках, посылает один импульс в секунду, и передний фронт этого импульса находится в наносекундах от фактического начала этой секунды. В зависимости от спецификации приемника GPS сигнал PPS может быть более или менее точным. Это потому, что у каждого спутника GPS есть атомные часы. Как только GPS-приемник найдет свое местоположение и местоположение спутников GPS, которые он слушает, он может скорректировать радиочастотное распространение и дать вам время, почти такое же точное, как наличие атомных часов прямо на GPS-приемнике.

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

Адам Дэвис
источник
4
Многие люди превращают компьютеры Raspberry PI в NTP-серверы Stratum 1 с добавлением дешевых GPS-приемников. Вы можете иметь полный сервер уровня 1 уровня в своей сети менее чем за 80 долларов: google.com/search?q=raspberry+pi+ntp+gps+pps
Адам Дэвис,
2
Таким образом, теоретически смартфон с GPS-приемником (почти все из них сейчас) может быть устройством со слоем 0/1?
Боб
1
Если телефон использовал вывод pps GPS-приемника, да. Обратите внимание, что телефоны CDMA также должны использовать точную синхронизацию, поэтому набор микросхем CDMA также может быть источником уровня 0 для процессора телефонов. Модуль oem gps и Raspberry Pi будут дешевле.
Адам Дэвис
2
Raspberry Pi, тем не менее, не является отличным NTP-сервером, так как он использует не очень качественный сетевой адаптер низкого качества (чип LAN9512).
сумерки
1
@duskwuff Да, но это лучше, чем многие серверы уровня 2 через Интернет, и при правильно настроенных настройках NTP как на сервере, так и на клиенте джиттер и смещение, представленные некачественным чипом локальной сети на основе USB, могут быть преодолены. Что касается стоимости, трудно победить, но потратьте немного больше, и вы можете решить эту незначительную проблему.
Адам Дэвис
3

Все часы в некоторой степени дрейфуют, это зависит от источника сигнала синхронизации и от того, насколько хорошо он отслеживается. В настоящее время это ПК HPET, но при перегрузке ПК может потерять счет того, сколько тиков прошло.

Серверы NTP, к которым обращается ваша машина, вероятно, тоже теряют время, однако они возвращаются к лучшему источнику.

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

Это регулируется источником, объявившим свой пласт. Атомные или GPS-часы - это уровень 0, который определяет время. Каждый слой, выходящий из этого, является следующим слоем - слоем 1, и будет проверять количество источников слоя 0 вместе со сверстниками на том же уровне, чтобы проверить правильность источников времени.

Скорее всего, вы говорите с источником времени 2 или 3 уровня.

Павел
источник
1

То, что написали другие, правда: сервер Stratum 1 получает время от устройства Stratum 0. Я не знаю, в каких временных интервалах это происходит, но я думаю, что они достаточно точны.

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

Что не было решено, так это вопрос, что происходит между тем временем? Ну, есть объект, который называется дрейф файл . Это помогает NTP отслеживать любой сдвиг между местными часами и опорными часами. Частота локальных часов затем регулируется в соответствии с обнаруженным дрейфом, так что время также является точным между опросами сервера.

В других реализациях NTP могут использоваться другие средства, но часто встречается одна вещь: необходимость и возможность настройки тактовой частоты.

glglgl
источник
Однако я бы поспорил, что дрейфовый файл - это деталь реализации конкретной программной реализации, не связанная с тем, насколько аппаратные часы NTP-сервера могут быть настолько точными.
CVn