Кратко

  • Обычный клиент SNTP по RFC 2030, как правило, использовал один сервер. Четырёх меток хватало для оценки задержки и смещения в одном обмене, но не для многокритериального отбора и отбраковки ошибочных часов полного NTP.
  • Поэтому SNTP помещался на края: клиент-лист без зависимых узлов либо корневой сервер с прямым надёжным эталоном. В середине сети единственное мнение превращается в общее время потомков.
  • В anycast клиент связывался с первым ответом и продолжал по unicast. Первенство в одной гонке не удостоверяет близость, точность, подлинность, устойчивость или постоянную идентичность.

Главный риск простого протокола времени состоит не в отсутствии числа. Он возникает, когда правильно оформленное число принимают за достаточную историю его происхождения.

RFC 2030 вышла в октябре 1996 года. Она сохранила формат сообщения NTP и арифметику запроса и ответа, но убрала значительную часть состояний и алгоритмов, которыми полный NTP сравнивал несколько источников и сопротивлялся неисправным. Малые устройства получили доступную реализацию. Удалённая ответственность перешла в топологию и эксплуатацию.

Упрощению назначили место

Документ настоятельно рекомендует использовать SNTP только на крайних точках подсети синхронизации. Клиент должен быть листом на наивысшем stratum; ни один другой клиент NTP или SNTP не должен зависеть от него. Ошибка листа заканчивается локально. Ошибка промежуточного узла становится хронологией всей нижней ветви.

Корневое исключение тоже узко: сервер SNTP на stratum 1, напрямую подключённый к надёжному радио- или модемному эталону, когда иной источник отсутствует. Для нормальной надёжности первичного сервера RFC называет избыточные эталоны, разные сетевые пути и алгоритмы под конкретное применение. Множество потребителей не создаёт множества оснований.

Четыре отметки ограничивают одну поездку

T1 — отправка клиентом, T2 — приём сервером, T3 — отправка ответа, T4 — его приём клиентом. Исправленная оценка задержки: d = (T4-T1) - (T3-T2), смещения: t = ((T2-T1) + (T3-T4))/2. Verified Errata 517 исправляет переставленные знаки в напечатанной формуле задержки RFC 2030.

Поле originate в ответе должно равняться transmit запроса. Это связывает два конкретных пакета. Оно не доказывает симметрию маршрута, качество опорных часов, оператора адреса или повторение того же процесса при следующем запросе.

LI=3 объявляет часы сервера несинхронизированными и требует отбросить сообщение независимо от остальных полей. Полезны также stratum, ненулевой transmit и совпадение originate. Однако отсутствие причины для отказа не является сертификатом здоровья. Поля reference остаются заявлениями сервера.

Stateless-служба переносит память наружу

Запрос SNTP мог обнулить почти все поля. Сервер отвечал без постоянного состояния на клиента; RFC сравнила схему с простым stateless RPC. Это хорошая минимальная общая часть.

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

Принцип Lu Heng о минимальной исходной спецификации помогает разделить роли. Формат и детерминированные проверки общие; разнообразие источников и failover остаются локальным выбором. Приоритет работающего кода дополнительно разделяет публикацию документа, реализацию, настройку и наблюдаемое принятие.

Первый ответ победил, не объяснив причину

Anycast-клиент RFC 2030 посылал запрос в broadcast- или multicast-группу. Несколько серверов могли ответить со своих unicast-адресов; клиент выбирал первый и продолжал с ним.

Результат мог зависеть от маршрута, очереди, нагрузки, потери конкурирующего пакета, области multicast или джиттера. Порядок прибытия не содержит своей причины. Общую историю разрыва между адресом услуги и конкретным сервером уже рассказывала RFC 1546. Узкий вклад RFC 2030 — превращение гонки обнаружения во временную unicast-привязку.

Предусмотренное расширение аутентификации для multicast и anycast должно было публиковаться отдельно и называлось provisional. Его нельзя задним числом считать готовым доказательством идентичности первого ответчика.

Лист был границей доказательства

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

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

RFC 2030 сделала один ответ понятным. Она не превратила его в консенсус.

Источники