Если я правильно понимаю IEEE1588, то Windows тут ни при чем (роутеры тоже): В Ethernet контроллере есть специальные аппаратные механизмы, которые помогают осуществить синхронизацию, каким бы ни было время обработки пакетов (в разумных пределах, конечно). Принцип, на самом деле не сложен - но если нет аппаратной поддержки, то высокой точности не получишь.
Опыт... Я жду звонок по телефону с целью синхронизации часов. Как только телефон зазвонил, я регистрирую время на своих часах, потом неспешно поднимаю трубку, здороваюсь, "как дела?...", попутно узнаю у звонящего сколько было времени, когда он начал вызов. Из одного времени вычитаю второе и получаю разницу. Т.к. к своим часам доверия меньше, то подвожу их в нужную сторону.
Теперь два вопросика? 1. Если время прохождения вызова фиксированное, то проведя еще одну попытку синхронизации какую я получу разницу? Правильно, нулевую. 2. Если у телефона сижу не я, а нерасторопная бабушка, которая "ась? кого? сейчас?" - зовет меня, а я регистрирую не время звонка, а время когда я оказался у аппарата? Какую точность можно достичь?
IEEE1588 позаботились, чтобы время начала звонка регистрировалось самим телефонным аппаратом и всякие бабушки рояля не играли.
Кста, вопрос реализации - это одно, а дядька с точными часами - это другое)
|