2015-12-29 10 views
0

Скажем, у меня два компьютера - один находится в Лос-Анджелесе, а другой находится в Бостоне. Существуют ли какие-либо известные протоколы или команды linux, которые могли бы синхронизировать оба этих компьютерных часовых устройства с точностью до 1 мс и НЕ использовать GPS вообще? У меня создается впечатление, что нет ответа (What's the best way to synchronize times to millisecond accuracy AND precision between machines?)Возможно ли синхронизировать два компьютера с точностью более 1 мс с использованием любых интернет-протоколов?

В качестве альтернативы существуют ли какие-либо стандартные протоколы (например, NTP), в которых относительная разница во времени может быть точно определена между этими двумя компьютерами, даже если синхронизация по времени отключена?

Мне просто интересно, есть ли свободные или недорогие способы улучшить точность времени 1 мс, не прибегая к GPS.

Спасибо

ответ

1

Я не знаю любого известного протокола (возможно, есть), но может предложить метод, аналогичный скорости измерения путь ученых около того света:

Есть процесс на обоих серверы «пинговали» другой сервер и ожидали ответа, а также время, затрачиваемое на ответ. Затем периодически начинайте пингинг, когда вы ожидаете, что последний пинг войдет. Усредняя (и отбрасывая любые отдаленные сэмплы), вы будете иметь два сервера через некоторое время «отбиваясь» в том же ритме. Они могут также рассказать, сколько времени между каждым «ритмом» берется для каждого из них с очень высокой точностью, деля счетчик биений в (длинный) период времени.

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

И последнее, но не менее важное: большинство операционных систем дают неядерному пользователю возможность действовать только по крайней мере в 32 миллисекунды точности, то есть вы не можете ожидать, что что-то произойдет точно в течение менее миллисекунд, чем это. Единственный способ преодолеть это - иметь «родную» DLL, которая может реагировать и работать с часами. Это тоже даст вам определенную скорость реакции, в зависимости от системы (аппаратное и программное обеспечение).

О системах реального времени и о «сервере», о котором вы говорите (Windows? Linux? Встроенное программное обеспечение на микрочипе? Что-то еще?)