Примеры сетевых топологий


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


[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 <- sys.clock;

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

sort temporary list by increasing [distance index];

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

es <- 0;

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 <- min(e0 + es, NTP.MAXDISPERSE);
end clock-filter procedure

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

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

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


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