Я заметил, что на моих серверах и других машинах часы всегда сдвигаются, поэтому они должны синхронизироваться, чтобы оставаться точными.
Как часы NTP-сервера не дрейфуют и всегда остаются правильными?
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. И так далее. На практике эта потеря точности настолько мала, что она совершенно незначительна во всех случаях, кроме самых крайних.
В сетевом хронометраже спецификация, которая сообщает вам, как сервер получает свой источник времени, называется уровнем уровня. Чем ниже уровень, тем лучше время хранения этого сервера.
Устройства уровня 0 не подключены напрямую к сети. Они сами являются фактическим устройством хронометража и должны быть подключены к компьютеру для получения фактического времени. Затем этот компьютер становится NTP-сервером уровня 1.
Компьютер, подключающийся к уровню 1 уровня, также может стать сервером времени, но тогда это будет уровень 2 уровня. Когда компьютеры подключаются к серверам времени, чем ниже уровень слоя, тем точнее может быть ваше время.
Устройства уровня 0 включают атомные часы, участвующие в TAI (международное атомное время) или синхронизированные с ним, и приемники сигнала времени, отправленного такими часами. Чаще всего это GPS-приемники хронометража с соответствующим интерфейсом, который включает сигнал GPS PPS. Сигнал PPS, когда GPS имеет хорошую блокировку на нескольких спутниках, посылает один импульс в секунду, и передний фронт этого импульса находится в наносекундах от фактического начала этой секунды. В зависимости от спецификации приемника GPS сигнал PPS может быть более или менее точным. Это потому, что у каждого спутника GPS есть атомные часы. После того, как приемник GPS определил свое собственное положение и местоположение спутников GPS, которые он слушает, он может скорректировать радиочастотное распространение и дать вам время, почти такое же точное, как наличие атомных часов прямо на приемнике GPS.
Таким образом, серверы уровня 1 подключаются к атомным часам или приемникам GPS, а NTP-серверы подключаются к ним. Даже подключение к серверу уровня 2 или 3 уровня с частыми настройками обеспечит вашему компьютеру точность синхронизации, измеряемую в наносекундах. Но если вам нужно улучшить синхронизацию, подключитесь к серверу первого уровня или купите соответствующий GPS-приемник с хронометрированием и станьте самим источником первого уровня.
Все часы в некоторой степени дрейфуют, это зависит от источника сигнала синхронизации и от того, насколько хорошо он отслеживается. На ПК это HPET в наши дни, но ПК может потерять счет того, сколько тиков прошло, если перегружен.
Серверы NTP, к которым обращается ваша машина, вероятно, тоже теряют время, однако они возвращаются к лучшему источнику.
В конечном счете, лучшими источниками являются высокоточные часы, такие как атомные часы. Вы можете думать о NTP как о сети машин, каждый из которых будет иметь несколько источников, на которые он полагается в течение времени, и искажает свое собственное время до того, что считается более точным.
Это регулируется источником, объявившим свой пласт. Атомные или GPS-часы - это уровень 0, который определяет время. Каждый слой, выходящий из этого, является следующим слоем - слоем 1, и будет проверять количество источников слоя 0 вместе со сверстниками на том же уровне, чтобы проверить правильность источников времени.
Скорее всего, вы говорите с источником времени 2 или 3 уровня.
То, что написали другие, правда: сервер Stratum 1 получает время от устройства Stratum 0. Я не знаю, в каких временных интервалах это происходит, но я думаю, что они достаточно точны.
Сервер Stratum n с n> 1 получает время по NTP от сервера Stratum n-1. Это означает, что он синхронизируется с ним через равные промежутки времени. После запуска службы NTP синхронизация происходит через довольно короткие интервалы, и со временем интервалы начинают увеличиваться. В конце концов, интервал составляет 1024 с, около 17 минут.
Что не было решено, так это вопрос, что происходит между тем временем? Ну, есть объект, который называется дрейф файл. Это помогает NTP отслеживать любой сдвиг между местными часами и опорными часами. Частота локальных часов затем корректируется в соответствии с обнаруженным дрейфом, так что время также является точным между опросами сервера.
В других реализациях NTP могут использоваться другие средства, но часто встречается одно: необходимость и возможность настройки тактовой частоты.