Как работает ntpstat?

Я установил ntp на некоторых сетевых машинах, над которыми я работаю. Когда я проверяю ntpstat, я вижу, что он говорит, что часы синхронизируются с некоторыми мс, обычно между 12 и 70 мс.

Мои вопросы:

  • Как NTP обнаруживает вышеуказанные значения?
  • Если он знает эти значения, почему он не исправляет себя?
  • Эти значения положительные или отрицательные?

2 ответа

Решение

Как NTP обнаруживает вышеуказанные значения?

Протокол NTP позволяет каждому компьютеру рассчитывать влияние задержки в сети (время, которое пакет с тимпамингом получает от одного компьютера к другому), а также любую разницу во времени.

Если он знает эти значения, почему он не исправляет себя?

Это происходит, но при этом попытка сделать это происходит плавно, дрожание сети может привести к тому, что разница во времени может измениться, если не изменилась.

Эти значения положительные или отрицательные?

Они обычно отображаются ntpq -pсо знаком - когда отрицательный.

Я никогда не использовал ntpstat (это не стандартная установка в Debian/ Ubuntu), но использовали ntp в течение многих лет и обычно смотрят на вывод ntpq -nc peer или же ntpq -np который, вероятно, показывает аналогичную информацию. ntpq вывод показывает положительные и отрицательные значения.

По сути, если ntp (stat) говорит, что он синхронизирован (или вывод ntpq помечает сервер как "*"), то он настолько близок, насколько это возможно, но он будет продолжать пытаться и улучшаться.

Упрощенное объяснение работы NTP состоит в том, что он регулярно отправляет пакеты на серверы времени, содержащие временную метку времени, которое локальная машина считает. Затем сервер добавляет свою метку времени и возвращает пакет на локальный компьютер. Как только он прибывает, у локальной машины есть 3-я отметка времени, время прибытия. Предполагая, что пакету потребовалось одно и то же время, чтобы добраться до сервера и вернуться, NTP может определить время на локальной машине, когда сервер добавил свою временную метку, и, следовательно, может рассчитать разницу и внести корректировку.

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

Даже при синхронизации NTP будет продолжать обмениваться пакетами и пытаться настроить время, чтобы минимизировать разницу во времени. Это делается путем небольших корректировок (фактически путем небольшого увеличения или уменьшения количества тактов в секунду), чтобы не было внезапных скачков и чтобы избежать проблем из-за сетевых аномалий.

Так когда ntpstat говорит, что это синхронизация, это как можно ближе, но это дает лучшую оценку того, как далеко он, вероятно, будет.

Другие вопросы по тегам