Предположим, что на компьютере установлены точные часы, которые не инициализированы. То есть время на часах компьютера - это реальное время плюс некоторое постоянное смещение. Компьютер имеет подключение к сети , и мы хотим использовать это соединение для определения смещения постоянного .
Простой способ состоит в том, что компьютер отправляет запрос на сервер времени, отмечая местное время . Сервер времени получает запрос в момент времени и отправляет ответ, содержащий обратно клиенту, который получает его в момент времени . Тогда , т. .
Если время передачи по сети и время обработки на сервере симметричны, то . Насколько я знаю, NTP , протокол синхронизации времени, используемый в дикой природе, работает на этом предположении.
Как повысить точность, если задержки не симметричны? Есть ли способ измерить эту асимметрию в типичной интернет-инфраструктуре?
источник
Ответы:
Невозможность измерить асимметрию
Нет, вы не можете измерить асимметрию. Рассмотрим эти две схемы связи: первая с отрицательным смещением часов и равными задержками, а вторая без смещения часов и полностью асимметричных задержек (но с одинаковым временем прохождения сигнала в обоих направлениях).
Важно отметить, что с точки зрения как ПК, так и сервера эти два взаимодействия абсолютно идентичны. Они получают сообщения одновременно. Они отправляют сообщения одновременно.
Вы можете создавать больше дел, «захватывая» временную шкалу ПК и «скользя» по ней, удерживая точки отправки / получения сообщений фиксированными относительно их соответствующих временных шкал. Асимметрия, которую вы вызываете, точно сводится на нет смещением часов. Фактически, вы можете даже заставить сообщения отправляться НАЗАД ВРЕМЕНИ в одну сторону (при условии, что время прохождения туда-обратно все равно), а сервер / клиент ЕЩЕ НЕ может сказать!
Поэтому невозможно измерить асимметрию задержки. В худшем случае, когда у вас нет никакой информации, кроме односторонних задержек, положительных и суммирующих с временем прохождения сигнала туда и обратно, точность синхронизации часов ограничивается временем прохождения сигнала туда и обратно.
Может ли промежуточная инфраструктура помочь?
Может ли промежуточная инфраструктура помочь, будет сильно зависеть от вашей теоретической модели ситуации.
Если асимметрия постоянна и промежуточная инфраструктура является маршрутизаторами на пути связи между вами и сервером, то нет. Даже если бы каждый маршрутизатор синхронизировал свои часы с соседним маршрутизатором, ошибки могли бы сложиться так же, как если бы вы синхронизировались с сервером через связь через маршрутизаторы.
В реальном мире вы можете рассчитывать на то, что задержки будут несколько симметричными по архитектурным соображениям, повторяющиеся синхронизации для уменьшения асимметрии из-за задержек в очереди (и т. Д.) И множественные каналы связи для уменьшения других видов асимметрии.
Если вы поместите предположения вашей модели где-то посередине (потому что, конечно, интересно исследовать пространство модели), я ожидаю, что результат также должен быть где-то посередине.
источник
Рассмотрим сеть серверов времени , как известно, синхронно, , и клиентская машина .Pθ={A,B,C} P
Пусть будет временем одностороннего полета от машины к машине с возможностью того, что . X Y T X Y ≠ T Y XTXY X Y TXY≠TYX
Пустьбыть мерой асимметрии между машиной X и Y .ΔXY=|TXY−TYX| X Y
Теперь предположим, что асимметрия между двумя синхронными машинами может быть измерена, если синхронные машины согласятся отправлять односторонние сообщения друг другу одновременно. Разница во времени прибытия составляет между этими машинами, то есть:Δ
можно измерить.
Теперь рассмотрим время пролета цепей:
C A BP→A→B→P , обозначаемый ,CAB
C B AP→B→A→P , обозначается .CBA
Рассмотрим клиентскую машину для одновременного запуска обеих этих цепей и измеряем разницу во времени прибытия, :xP x
И и известны по ранее упомянутым измерениям, поэтому перемещаем неизвестные в левую часть:Δ Бx ΔAB
Аналогично, для и можно показать, что:{ C B C , C C B }{CAC,CCA} {CBC,CCB}
Осматривая внимательно, мы отмечаем, что . Левые части содержат значения, известные из измерений, правые части содержат 3 неизвестных в 3 уравнениях.ΔXY≡ΔYX
Решая одновременно,
где,
источник
Если вы контролируете только конечные точки. Ты не можешь Смотри ответ Крейга.
Так что ты можешь сделать? Отправить действительно хорошие часы по почте. ;)
Или, если у вас есть контроль над всеми узлами между ними, вы можете проверить время обработки каждого пакета и рассчитать задержку между каждой последовательной парой, которая должна быть симметричной, если они используют один и тот же физический носитель в обоих направлениях.
Возможно, вам придется учитывать общую относительность и помнить, что одновременность не существует.
источник
клиент после получения обратного пакета имеет все 4 значения и вычисляет фактическое смещение. как только относительное смещение вычислено между клиентом и сервером, смещение «абсолютного времени» может быть синхронизировано, т.е. клиент может точно оценить точное смещение сервера, измеренное относительно его локального смещения времени, то есть «дельта».
в сетях время задержки обусловлено двумя основными факторами, в основном задержкой и пропускной способностью.
Основной алгоритм для повышения точности расчета смещения, используемого в NTP (и может корректировать некоторую степень случайной задержки в сети), состоит в том, чтобы повторять процесс несколько раз и использовать «вершину диаграммы рассеяния клина». это можно увидеть на «алгоритме фильтрации часов» на слайде 10 этого PPT по NTP Дэвида Миллса. см. также алгоритм фильтрации часов по Миллсу. (обратите внимание, что он все еще может использоваться между одним сервером и клиентом, хотя общий код написан для нескольких серверов.) Это часть «алгоритмов смягчения», описанных в архитектуре и алгоритмах NTP .
источник
Если бы мы только могли отправлять пакеты вовремя
Предположения:
источник
Вот идея, которая звучит абсолютно убедительно для меня и, следовательно, может быть совершенно неверной.
1] Я думаю, что предположения являются естественными и необходимыми. Они могут быть оправданы надеждой, что соответствующие величины не изменятся слишком сильно в течение нашей попытки синхронизации.
источник