Процедурная характеристика NTPv4-протокола обеспечивает вычисление сдвига времени θ
и задержку петлевого маршрута δ
с помощью самых «свежих» меток времени (рис.12). Несмотря на то, что, в принципе, существует возможность выполнить все вычисления (кроме разностей значений меток времени первого порядка) с использованием арифметических операций над числами с фиксированной точкой, всё равно гораздо проще преобразовать разности первого порядка в удвоенные значения с плавающей точкой и выполнить остальные вычисления с использованием арифметических операций над такими числами. Все последующие рассуждения будут основаны на этом предположении.
В процедуре опроса участвует 8-битовый регистр сдвига p.reach
, который определяет достижимость удалённого сервера времени, а также являются ли полученные от него данные самыми «свежими». Это регистр сдвигается влево на один бит, когда передано NTPv4-сообщение, а крайний правый бит обнуляется. После получения корректных NTPv4-сообщений прикладной процесс packet()
устанавливает крайний правый бит в 1
. Если в этом регистре содержится любое количество ненулевых битов, то тогда считается, что удалённый сервер времени достижим, в противном случае — нет. Так как интервал опроса в прикладном NTPv4-модуле сервера времени может измениться после получения последнего NTPv4-сообщения, инициализируется прикладной процесс poll_update()
, который выполняет задачу определения нового интервала опроса IP-узла.
Статистическая дисперсия ε(t)
представляет собой максимальную ошибку, являющуюся следствием допустимого отклонения частоты и интервала времени с момента передачи последнего NTPv4-сообщения. В начальный момент дисперсия вычисляется следующим образом:
ε(t0 ) = r.ρ + s.ρ + Φ×(T4 - T1 )
то есть измерение было сделано в момент времени t0
, что соответствовало значению счётчика секунд. Переменная r.ρ
— точность, указанная в NTPv4-сообщении, а s.ρ
— точность системных часов, при этом обе переменные измеряются в секундах. Они необходимы для учёта погрешностей при считывании значений системного времени, и в прикладном NTPv4-модуле сервера, и в прикладном NTPv4-модуле клиента.
Затем дисперсия возрастает с постоянной скоростью Φ
, другими словами, в момент времени t
:
ε(t) = ε(t0 ) + Φ×(t - t0 )
По умолчанию Φ = 15 РРМ
, что составляет примерно 1,3 секунды за сутки. В дальнейшем аргумент t
не будет использоваться, а дисперсия будет обозначаться одним символом ε
. Остальные статистические параметры вычисляются с помощью процедуры фильтрации времени.