Стандарт IEEE 1588 известен как "Precision Clock Synchronization Protocol for Networked Measurement and Control Systems", или для краткости "PTP". PTP определяет процедуру, позволяющую многим пространственно-распределенным часам реального времени синхронизироваться через "пакетно-совместимые" сети (обычно Ethernet). Технология, заложенная в стандарт, была первоначально разработана фирмой Agilent и использовалась для распределенных измерений и контроля. Задача состояла в том, чтобы синхронизовать по времени сетевые измерительные устройства так, что бы они могли записывать измеряемые значения с точным системным штампом времени. На основе этого штампа времени измеренные значения впоследствии могли быть соотнесены друг с другом. Принцип синхронизации В Ethernet сетях непредсказуемые коллизии в процедуре CSMA/CD могут быть причиной того, что доставка пакета будет задержана, или пакет полностью исчезнет. По этой причине IEEE 1588 определяет специальную процедуру "синхронизации часов".  | | Сначала один узел (мастер времени) передает "Sync" телеграмму, которая содержит предполагаемое время передачи. Точное время передачи определяется по часам и передается в следующем сообщении "Follow Up". На основании первой и второй телеграммы и своих собственных часов получатель может вычислить разницу во времени между своими часами и часами мастера. Для достижения наилучшего результата штамп времени должен генерироваться аппаратно, или как можно ближе к аппаратуре. |
Время передачи телеграмм определяется циклически в следующем процессе передачи между подчиненным и мастером ("delay" телеграммы). Подчиненный узел может затем скорректировать свои часы и адаптироваться к текущим задержкам шины. Конфигурирование PTP сети конфигурируют и сегментируют себя автоматически. Для этого, каждый узел использует алгоритм "лучшего мастера времени" ("best master clock" - BMC) для определения лучших часов в сегменте. Все PTP часы сохраняют свои характеристики в специальном наборе данных. Эти характеристики передаются к другим узлам в телеграмме "Sync". На основе этого другие узлы могут синхронизировать свои наборы данных с характеристиками действующего мастера и соответственно подстроить свои часы. Благодаря циклическому выполнению BMC алгоритма, узлы могут подключаться и удаляться во время рработы (горячее подключение). В протоколе не делается различий между программными и аппаратными часами. Однако, для того чтобы работать с синхронностью в наносекундном диапазоне требуется аппаратная поддержка. Обычно ошибки синхронизации, вызываемые программными флюктуациями, не могут быть устранены. В чисто программном решении (например, в ОС Windows) реальная ошибка может в микро- или миллисекундном диапазоне. |