Повышение точности синхронизации с помощью прозрачных часов


PDF версия

Статья посвящена проблеме синхронизации часов в сети.

Проблема синхронизации двух устройств не так проста, как может показаться на первый взгляд. При более тщательном рассмотрении становится ясно, что необходимо не только точно фиксировать моменты времени, но и учитывать его промежутки, потраченные на процедуру считывания и записи показаний, на пересылку и коррекцию данных.
Кроме того, следует понять, какова должна быть точность синхронизации (порядка секунд, микросекунд или еще точнее).
Стандарт IEEE-1588 определяет процедуру передачи текущего времени с помощью т.н. прозрачных часов (Transparent Clocks). Однако прежде чем перейти к рассмотрению этого решения, вспомним суть проблемы.

Смещение и задержки

Разность между показаниями двух часов называется смещением. Для обеспечения требуемой точности синхронизации смещение не должно превышать установленный порог.
В первом приближении процесс синхронизации происходит следующим образом: главные часы посылают подчиненным текущие показания. Схематично эта процедура изображена на рисунке 1. Подчиненные часы устанавливают полученное значение с учетом поправки на задержку распространения сигнала и времени установления нового значения.

Рис. 1. Задержка распространения сигнала между двумя устройствами
Симметричные и асимметричные задержки

Главная причина неточности синхронизации двух часов — задержка на передачу сигнала времени и ошибки ее компенсации. В сетях с пакетной передачей (например, Ethernet) между главными и подчиненными часами периодически происходит обмен пакетами, содержащими текущие показания. Это позволяет вычислить смещение в обоих направлениях. Если они равны (т.н. симметричная задержка), то они взаимно уничтожаются при вычислении смещения.
К сожалению, в большинстве систем времена задержки распространения сигнала от главных часов к подчиненным, и наоборот, не равны, особенно если в сети имеются маршрутизаторы или коммутаторы. Более того, эти задержки сложно детерминировать и, следовательно, скорректировать.

Очереди

Коммутаторы и маршрутизаторы увеличивают задержку передачи пакета, поскольку они направляют пакет далее по линии не сразу после его получения. Необходимо некоторое время для того, чтобы выбрать подходящий порт.
Получив пакет, коммутатор помещает его в буфер соответствующего порта, где пакет ожидает своей очереди на передачу (см. рис. 2). Если сеть не перегружена, то время буферизации очень мало. Поскольку длина очереди постоянно меняется, то непостоянна и задержка передачи пакета синхронизации (Packet Delay Variation — PDV).
Именно из-за этой переменной составляющей возникает проблема точной синхронизации.

Рис. 2. Одновременная пересылка двух сообщений коммутатором
Решение проблемы

Поскольку часы физически удалены друг от друга на некоторое расстояние, то сигнал между ними всегда будет распространяться с задержкой, к которой необходимо прибавить время PDV, о котором мы говорили выше.
Очевидный способ коррекции этих задержек — обмен большим количеством пакетов, среди которых отбираются наиболее удачные, пришедшие за минимальное время.
Если критерий точности синхронизации не слишком строг, то этот способ пригоден. Однако для микросекундного диапазона такой подход предполагает существенное увеличение скорости передачи и фильтрации пакетов, а также очень сложные алгоритмы расчета смещения и регулировки подчиненных часов.
Стандарт IEEE-1588 предлагает альтернативные пути.
Во-первых, можно использовать промежуточные коммутаторы (Boundary clock — граничные часы) для передачи сигнала текущего времени. Второй способ заключается в том, что в коммутаторе для каждого пакета измеряется его индивидуальная задержка, которая затем учитывается при вычислении смещения. В этом случае задержка, вносимая самими коммутаторами, становится «прозрачной» при расчете смещения, поэтому устройства с такой функцией получили название transparent clock — «прозрачные часы».

Пакеты с временной отметкой

Стандарт IEEE-1588 редакции 2008 г. поддерживает очень высокую скорость обмена пакетами. Однако и этого не достаточно для полноценного решения проблемы синхронизации в субмикросекундном диапазоне.
В связи с этим было предложено обратиться к матрицам FPGA, с помощью которых можно избавиться от задержек, вносимых стеком ОС, и тем самым уменьшить общее время PDV.
Стандартом определено два метода фиксации времени: пакеты Sync и Delay_Request (сообщение о событии). Это два типа пакетов, которые используются для измерения задержки распространения между главными и подчиненными часами. Пакеты Sync направляются от главных часов к подчиненным, а Delay_Request — в обратном направлении.

Алгоритмы обмена пакетами

В настоящее время существует множество источников, в которых подробно рассмотрены механизмы обмена пакетами синхронизации. Мы рассмотрим лишь общий принцип.
Подчиненные часы могут рассчитать свое смещение по четырем отметкам времени.
Поскольку вычисления производятся подчиненными часами, то главные периодически посылают дополнительные пакеты с данными, полученными в главных часах.
Стандарт IEEE-1588 редакции 2008 г. определяет два метода обмена пакетами, содержащими текущие показания часов. Оба метода основаны на фиксации точного момента, когда пакет был послан часами в сеть, и реализуются на FPGA.
Рассмотрим одноступенчатый алгоритм. Главные часы записывают момент отправки в тело пакета, а подчиненные часы фиксируют точный момент, когда они получили пакет. Смещение вычисляется в подчиненных часах напрямую.
Второй, двухступенчатый, алгоритм предполагает наличие некоего датчика, который фиксирует моменты отправки и принятия пакета. В этом случае главные часы отсылают в подчиненные данные о моменте передачи пакета.
Этот алгоритм больше похож на обмен пакетами Sync и Delay_Request, чем предыдущий. Для наглядности рассмотрим рисунок 3. Когда сообщение о событии отсылается центральным процессором в сеть, FPGA фиксирует точный момент этого события и посылает данные в сеть.

Рис. 3. Двухступенчатый алгоритм синхронизации

Помимо двух пакетов от ЦП, подчиненные часы получают два пакета с матрицы FPGA моментами: Follow_Up (момент отправки синхронизационного пакета) и Delay_Response (момент получения главными часами пакета Delay_Request). Таким образом, для вычисления текущего времени имеются четыре точки.

Прозрачность коммутатора

Любой коммутатор вносит задержку распространения сигнала. Однако существует разница между обычными коммутаторами и коммутаторами с функцией фиксации времени. Прозрачным коммутаторам не требуется знать точное время, они лишь измеряют промежуток времени, в течение которого сообщение о событии находилось в коммутаторе. Этот промежуток измеряется матрицей FPGA, фиксирующей моменты получения сообщения и его отправки в порт.
Длительности задержки для пакетов Sync и Delay_Request запоминаются в прозрачных часах. Когда приходят соответствующие пакеты Follow_Up и Delay_Response, прозрачные часы изменяют информацию в них с учетом этих задержек. Таким замысловатым образом информация о задержке в очереди поступает в подчиненные часы. Эти задержки учитываются в расчете и либо слабо, либо вовсе не влияют на точность синхронизации.

Влияние задержек

Рассмотрим погрешность синхронизации, связанную с задержкой пакета в очереди.
Для этого сначала синхронизуем часы без коммутатора напрямую (с помощью только переходных кабелей).
Самый удобный способ сравнить время на подчиненных часах со временем на главных осуществляется с помощью выходного сигнала, содержащего 1 импульс в секунду. Для измерения смещения между сигналами часов используется счетчик, осциллограф или встроенное в главные часы устройство, измеряющее временные интервалы. Измерения следует производить в течение длительного интервала, чтобы повысить их точность. Результат измерений обычно представляется в виде среднего значения ошибки и ее отклонения.

Очереди в двух коммутаторах

Поскольку очередь образуется тогда, когда, по крайней мере, две линии соединяются в одну, то два коммутатора, соединенных одной линией, также создадут очереди и задержки. В этом случае коммутаторы должны быть стандартными и класса Enterprise.
Изначально трафик формируется только синхронизационными пакетами между часами.
Затем активируются абоненты, и точность подчиненных часов измеряется еще раз (см. рис. 4). Таким образом учитывается ряд факторов, влияющих на точность хода часов, например схемы очередности в коммутаторе, природа потока данных (трафика), чувствительность подчиненных часов к PDV.

Рис. 4. Схема для измерения задержки, вносимой двумя коммутаторами

Далее стандартные коммутаторы класса Enterprise заменяются прозрачными часами, и измерения повторяются (без информационного трафика и в его присутствии). Результаты пяти перечисленных измерений приведены в таблице 1.

Таблица 1. Точность хода подчиненных часов

Конфигурация

Без трафика

С трафиком

Среднее,

НС

Станд. отклонение (р-р), нс

Среднее,

НС

Станд. отклонение (р-р), нсние

Исполь зование полосы 100 Base-T, %

Переходный кабель

60

7 (85)

2 стандартных коммутатора

58

59 (3000)

24715

82190 (1-Ю6)

4

2 прозрачных часов

76

10 (126)

76

9 (85)

97

Видно, что при отсутствии информационного трафика ухудшение точности хода подчиненных часов незначительно зависит от типа используемых устройств. Однако влияние информационного трафика велико.
С другой стороны, видно, что с прозрачными часами и почти 100-% загрузкой сети синхронизация практически не сбилась. Измерения различаются менее чем на 100 нс и только на 15 нс отклоняются от основных измерений напрямую. При использовании стандартных коммутаторов точность, на­оборот, низка.

Заключение

Переходя на стандарт IEEE-1588, следует четко определиться с уровнем точности синхронизации, который требуется для работы системы, и проверить работу подчиненных часов без использования устройств, соответствующих этому стандарту.
Также следует учитывать, что в технической документации производитель указывает лучшие результаты, т.е. полученные, скорее всего, в отсутствие трафика.
После установки подчиненных часов стандарта IEEE-1588 следует убедиться, что их реальные характеристики удовлетворяют требованиям сети.

Литература
1. Paul Skoog. Using IEEE-1588 transparent clocks to improve system time synchronization accuracy//www.embedded.com/columns/archive/?howMany=100&sort=publish_date+sort+desc&content_type=ti.

 

Оставьте отзыв

Ваш емейл адрес не будет опубликован. Обязательные поля отмечены *