10. Процедура (алгоритм) фильтрации времени
Процедура (алгоритм) фильтрации времени является частью процедур, применяемых в прикладном программном NTPv4-модуле удалённого сервера. Эту процедуру реализует прикладной процесс clock_filter()
, который фильтрует поток протокольных данных с целью выбора эталонных источников времени, обеспечивающих наиболее точное время. Данная процедура обеспечивает вычисление значений переменных (рис.16), среди которых сдвиг θ
, задержка δ
, дисперсия ε
, джиттер ψ
и время прибытия NTPv4-сообщения t
. Эти данные используются алгоритмами обработки входного трафика с целью определения наилучшего и окончательного сдвига, который, в свою очередь, используется для корректировки системных часов. Они также используются для определения функционального состояния сервера времени и его пригодности выступать в роли источника синхронизации.
Процедура фильтрации времени сохраняет наборы самых последних значений взаимосвязанных переменных (θ
, δ
, ε
, t
) в схеме фильтра, который функционирует как 8-разрядный регистр сдвига. Наборы значений переменных сохраняются в том порядке, в котором прибыли NTPv4-сообщения. В данном случае, переменная t
— значение счётчика секунд в момент приёма NTPv4-сообщения, и поэтому она отличается от переменой tр
прикладного NTPv4-модуля удалённого сервера.
Используемая схема фильтрации призвана обеспечить достаточное количество источников синхронизации для последующего анализа, а также удаление устаревших данных. В начале, наборы переменных для всех состояний устанавливаются в форме временного (фиктивного) набора (0, MAXDISP, MAXDISP, 0). После поступления корректных NTPv4-сообщений наборы значений переменных записываются в память фильтра, что влечёт за собой удаление наборов устаревших значений, и поэтому в фильтре остаются только разрешённые наборы переменных. Если в регистре достижимости три бита низшего порядка являются нулевыми, указывая на то, что три интервала опроса, в течении которых поступили некорректные NTPv4-сообщения, истекли, то тогда процедура опроса обращается к процедуре фильтрации времени, реализуемая фильтром, в памяти которого записан фиктивный набор переменных, как если бы последний был получен из сети. Если такая ситуация остаётся на протяжении восьми интервалов опрос, то тогда регистр переустанавливается в исходное состояние.