11.2.3. Процедура (алгоритм) суммирования
Оставшиеся претенденты на роль основных источников синхронизации обрабатываются прикладным процессом clock_combine()
с целью определения наилучших и заключительных значений параметров, которые будут в последующем использоваться процедурой (алгоритмом) корректировки (настройки) времени (часов). Прикладной процесс clock_combine()
обрабатывает статистические значения сдвига и джиттера с целью определения суммарного системного значения сдвига Θ
и системного значения джиттера Ψp
удалённого сервера, при этом статистическому параметру каждого сервера времени присваивается весовой коэффициент на основе вычисления значения обратной величины корневого расстояния синхронизации и нормирования результата.
Суммарное значение Θ
используется прикладным процессом clock_update()
. Первый претендент из списка основных источников синхронизации именуется как системный удалённый сервер времени с идентификатором p
. Джиттер системного удалённого сервера времени Ψp
является компонентом системного джиттера Ψ
. Значение Ψp
всё время используется совместно со значением селективного джиттера Ψs
для определения системного джиттера:
Ψ = [(Ψs )2 + (Ψp )2 ]½
Каждый раз обновление данных синхронизации осуществляется с помощью прикладного процесса clock_update()
, к которому происходит обращение после получения соответствующего NTPv4-сообщения от системного сервера времени. В соответствие с существующим правилом, данные обновления времени (синхронизации) уничтожаются, если время их поступления p.t
было не строго более поздним, чем системное время s.t
последнего обновления данных синхронизации. Передаваемые маркеры IGNOR
, PANIC
, ADJ
и STEP
определяют ответную реакцию прикладного процесса local_clock()
и означают следующее:
IGNOR
Данные обновления времени (синхронизации) были проигнорированы, так как принадлежали «отбракованному» источнику синхронизации.
PANIC
Значение сдвига на много превысило критическое пороговое значение
PANICT
(1000 сек). В связи с этим целесообразно завершить программу обработки и передать диагностическое сообщение системному администратору сети с последующей регистрацией данного события.STEP
Значение сдвига не превысило критическое пороговое значение
PANICT
, но оно значительно больше, чем «пошаговое» пороговое значениеSTEP
(125 мсек). В этом случае, часы «пошагово» сдвигаются к корректному значению сдвига, но так как это означает, что данные всех удалённых серверов времени стали неприемлемыми, все виртуальные синхросоединения должны быть переустановлены, а процедура NTPv4-синхронизации стартует с начала, как и в начальный период функционирования.ADJ
Значение сдвига не превысило «пошаговое» пороговое значение
STEP
и поэтому данные обновления времени (синхронизации) являются корректными. В этом случае, значения системных переменных обновляются на основе значений переменных удалённых серверов времени (рис.22).Системные переменные ⇐ Переменные системного сервера времени s.leap ⇐ p.leap s.stratum ⇐ p.stratum + 1 s.offset ⇐ Θ s.jitter ⇐ Ψ s.rootdelay ⇐ p .δr + δ s.rootdisp ⇐ p.εr + p.ε + p.ψ + Φ×(s.t - p.t) + |Θ| s.refid ⇐ p.refid s.reftime ⇐ p.reftime s.t ⇐ p.t Рис.22. Обновление системных переменных