Протоколы Internet


Сетевой протокол времени NTP - часть 29


/p>

[qi, di, ei] q{i-1}, d{i-1}, e{i-1}];

/* shift stage right */

ei = ei + ft;

add [li ? ei + {|di|}/2, i] to temporary list;

endfor;

[q0, d0, e0] q, d, e];

/* ввести новую запись */

add [l ? e + {|d|}/2, 0] to temporary list;

peer.update

/* сбросить показание часов */

sort temporary list by increasing [distance ||index];

где [distance ||index] представляет собой объединение полей расстояния и индекса (расстояние занимает старшую позицию). Дисперсия фильтра es вычисляется и включается в дисперсию партнера. Заметим, что временный список для этой цели уже упорядочен.

es

for (i from ntp.shift-1 to 0)

/* вычисление дисперсии фильтра */

if (peer.dispersionindex[i] ? NTP.MAXDISPERSE or |qi

- q0 > NTP.MAXDISPERSE)

es es + NTP.MAXDISPERSE) * NTP.FILTER;

else

es es + |qi

- q0|) * NTP.FILTER;

Смещение партнера q0, задержка d0 и дисперсия e0 выбираются как величины, соответствующие записи с минимальным расстоянием; другими словами, записи, соответствующей первому элементу временного списка (в данной нотации имеет индекс 0).

peer.offset q0;

/* корректировка переменных партнера */

peer.delay d0;

peer.dispersion e0 + es, NTP.MAXDISPERSE);

end clock-filter procedure

Переменные peer.offset и peer.delay представляют смещение шкалы часов и RTT для локальных часов, измеренные относительно часов партнера. Обе они усредняются по большому числу измерений в течение длительного периода времени. Переменная peer.dispersion характеризует максимальную ошибку из-за неточности измерений, дрейфа и вариации записей. Все три переменные используются при выборе часов для синхронизации.

Процедура выбора часов

Процедура выбора часов использует переменные партнера q, d, e и t, она вызывается, когда эти переменные изменились или изменился статус доступности. Процедура включает в себя две составные части: алгоритм пересечения (intersection algorithm) и алгоритм кластеризации (clustering algorithm). Алгоритм пересечения подготавливает список кандидатов партнеров, могущих стать источниками синхронизации и вычисляет доверительный интервал для каждого из них. Алгоритм кластеризации сортирует список кандидатов по кодам слоя и расстояния синхронизации. Системная переменная sys.peer представляет собой указатель на наиболее вероятного кандидата, если таковой имеется, или на нулевую величину в противном случае.




Начало  Назад  Вперед