Опубликован: 10.10.2007 | Уровень: специалист | Доступ: платный
Лекция 7:

Сетевой протокол времени NTP

Обозначения

Алгоритмы фильтрации и селекции NTP используют несколько переменных для хранения значений сдвига часов, RTT и дисперсии. Переменные, относящиеся к партнерам, обычно обозначаются строчными греческими буквами, а для первичного эталона времени используются прописные буквы. Эти алгоритмы базируются на параметре, называемом расстояние синхронизации ( \lambda ) и вычисляемом с использованием RTT и дисперсии.

Дисперсия партнера ( \varepsilon ) содержит вклады от ошибок измерения ( \rho ) и накопления ошибок дрейфа (skew-error).

Каждый раз, когда соответствующие переменные партнеров изменяются, значения дисперсии корректируются. Ниже приводятся основные определения переменных и формулы их вычисления:

\theta  = peer.offset,
\\
\delta  = peer.delay,
\\
\varepsilon  = peer.dispersion = \rho  + \varphi \tau  + \varepsilon _{\sigma },
\\
\lambda  = \varepsilon  + |\delta |/2,

где \delta  = RTT, \theta — сдвиг часов, \varphi \tau — накопление сбоя, \varphi  = ntp.maxskew/ntp.maxage, \tau — момент времени передачи исходной временной метки (на основе \tau вычисляется \theta и \delta ), \varepsilon _{\sigma }дисперсия фильтра. Переменные, относящиеся к партнеру i, определяются следующим образом:

\theta _{i} = \varphi _{i},
\\
\delta _{i} = peer.rootdelay + \delta _{i},
\\
\varepsilon _{i} = peer.rootdispersion + \varepsilon _{i} + \varphi \tau _{i} (максимальная\ дисперсия\ часов\ партнера),
\\
\lambda _{i}= \varepsilon _{i} + |\delta _{i}|/2,

Окончательно, предполагая, что для синхронизации выбран i-ый партнер, система переменных определяется следующим образом:

\theta  = комбинированное\ окончательное\ смещение\ (combined\ final\ offset),
\\
\delta  = \delta _{i},
\\
e = \varepsilon _{i} + \varepsilon _{\xi } + \theta ,
\\
\lambda  = \lambda _{i},
\\
где\ \varepsilon _{\xi } — дисперсия\ выбора\ (select\ dispersion).

Процедура получения

Процедура получения выполняется после прихода NTP -сообщения. Она проверяет сообщения, интерпретирует различные режимы и вызывает другие процедуры для фильтрации данных и выбора источника синхронизации. Если номер версии в пакете не соответствует текущей версии, сообщение может быть отброшено. Если получено управляющее сообщение NTP и код режима пакета равен 6 (управление), вызывается процедура управляющего сообщения. IP-адреса отправителя и адресата, а также номера портов устанавливаются соответствующими заданному партнеру. Если соответствия нет, производится новая инсталляция протокольной машины и формируется новая ассоциация.

Пакетная процедура

Пакетная процедура проверяет корректность сообщения, вычисляет задержку/смещение и вызывает другие процедуры для отбора данных и выбора источника синхронизации. При этом проверяется, чтобы переданная временная метка отличалась от последней, полученной от того же партнера. Кроме того, проверяется, чтобы исходная временная метка соответствовала последней метке, посланной тому же партнеру. В случае широковещательного режима (5) RRT =0 и полная точность операции передачи времени будет недостижимой. Однако полученная точность может быть вполне приемлемой для многих целей. Процедура вызова коррекции времени использует в качестве параметра peer.hostpoll ( peer.peerpoll может быть изменено).

Контролируется, чтобы исходная и полученная временные метки не были равны нулю. Если любая из них равна нулю, ассоциация не синхронизирована или потеряла доступ в одном или обоих направлениях.

RTT и временное смещение по отношению к партнеру вычисляется следующим образом.

Пусть i — четное целое число.

ti-3, ti-2, ti-1 и ti — содержимое переменных pkt.org, pkt.rec, pkt.xmt и peer.rec, соответственно. Смещение часов \phi, RTT =\delta и дисперсия \varepsilon ЭВМ по отношению к партнеру равны:

\delta  = (t_{i} - t_{i-3}) - (t_{i-1} - t_{i-2}),
\\
\varphi  = ((t_{i-2} - t_{i-3}) + ( t_{i-1} - t_{i}))/2,
\\
\varepsilon  = (1 << sys.precision) + \varphi  (t_{i} - t_{i-3}),

где, как и прежде, \varphi  = ntp.maxskew/ntp.maxage. << - обозначает сдвиг кода влево. Значение \varepsilon представляет собой максимальную ошибку или дисперсию, связанную с ошибкой измерения на стороне ЭВМ, а также накопление ошибок из-за дрейфа локальных часов за время после отправки последнего сообщения, посланного партнером. Дисперсия корректируется процедурой фильтра часов (clock-filter).

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

Процедура "часовой фильтр" вызывается для вычисления задержки ( peer.delay ), смещения ( peer.offset ) и дисперсии ( peer.dispersion ) для партнера. Спецификация алгоритма часового фильтра не является составной частью протокола NTP. По этой причине описания, приводимые ниже, следует рассматривать как рекомендательные.

Процедура коррекции показаний часов

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

Может так случиться, что локальные часы оказались сброшены. В этом случае вызывается процедура очистки (clear procedure) для каждого из партнеров, чтобы возвратить в исходное состояние фильтр часов, период рассылки и, если необходимо, осуществить выбор нового источника синхронизации.

Процедура расстояния вычисляет базовую (root) задержку \delta, базовую дисперсию \varepsilon и базовое расстояние синхронизации \lambda. ЭВМ не будет синхронизовать выбранного партнера, если расстояние больше, чем ntp. maxdistance.

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

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

Евгений Виноградов
Евгений Виноградов

Прошел экстерном экзамен по курсу перепордготовки "Информационная безопасность". Хочу получить диплом, но не вижу где оплатить? Ну и соответственно , как с получением бумажного документа?

Илья Сидоркин
Илья Сидоркин

Добрый день! Подскажите пожалуйста как и когда получить диплом, после сдичи и оплаты?????

Иван Бузмаков
Иван Бузмаков
Россия, Сарапул
Никита Сомов
Никита Сомов
Россия, Удмуртская республика