Протоколы Internet


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


(l) и вычисляемом с использованием rtt и дисперсии.

Дисперсия партнера (e) содержит вклады от ошибок измерения (r) и накопления ошибок дрейфа (skew-error).

Каждый раз, когда соответствующие переменные партнеров изменяются, значения дисперсии корректируются. Ниже приводятся основные определения переменных и формулы их вычисления:

q = peer.offset,

d = peer.delay,

e = peer.dispersion = r + jt + es,

l = e + |d|/2,

где d = rtt, q - сдвиг часов, jt - накопление сбоя, j = ntp.maxskew/ntp.maxage, t - момент времени передачи исходной временной метки (на основе t вычисляется q и d), e

s

- дисперсия фильтра. Переменные, относящиеся к партнеру i, определяются следующим образом:

q i = j i,

d i = peer.rootdelay + d i,

e i = peer.rootdispersion + e

i + j ti

(максимальная дисперсия часов партнера),

li= ei + |di|/2,

Окончательно, предполагая, что для синхронизации выбран i-ый партнер, система переменных определяется следующим образом:

q = комбинированное окончательное смещение (combined final offset),

d = di,

e = ei + ex + q,

l = li,

где ex дисперсия выбора (select dispersion).

Приводимые ниже тексты программ, реализующие вычисления переменных, записаны на условном языке, напоминающем СИ.

Процедура передачи

Процедура передачи запускается, когда таймер партнера станет равным нулю. В режиме клиента с широковещательным сервером сообщения вообще не посылаются. В режиме сервера сообщения посылаются только в качестве отклика на полученные запросы.

Нижеприведенный фрагмент программы инициализирует пакетный буфер и копирует пакетные переменные.

pkt.peeraddr

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

pkt.peerport

pkt.hostaddr

pkt.hostport

pkt.leap

pkt.version

pkt.mode

pkt.stratum

pkt.poll

pkt.precision

pkt.rootdelay

if (sys.leap = 112 or (sys.clock - sys.reftime) > ntp.maxage)

skew

else

skew j (sys.clock - sys.reftime);

{pkt.rootdispersion

pkt.refid

pkt.reftime

Временная метка передачи pkt.xmt будет использована позднее, для того чтобы проконтролировать отклик. Таким образом, программа должна сохранить точное переданное значение. Кроме того, порядок копирования временных меток должен быть выбран так, чтобы не понизить точность.

pkt.org

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

<


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



Книжный магазин