Facebook разработал открытую PCIe-карту с атомными часами

Компания Facebook опубликовала наработки, связанные с созданием PCIe-платы для организации работы серверов синхронизации точного времени, включающей реализацию миниатюрных атомных часов и GNSS-ресивера. Спецификации, схемы, BOM, Gerber, PCB и CAD-файлы, необходимые для производства платы, опубликованы на GitHub. Плата изначально спроектирована как модульное устройство, допускающее использование различных готовых чипов атомных часов и GNSS-модулей, таких как SA5X, mRO-50, SA.45s и u-blox RCB-F9T. Производство готовых плат на базе подготовленных спецификаций намерена начать компания Orolia.


Плата Time Card развивается как часть более глобального проекта Time Appliance, нацеленного на предоставление компонентов для создания первичных (Time Master) серверов точного времени (Open Time Server, которые могут быть развёрнуты в своей инфраструктуре и использоваться, например, для организации синхронизации времени в датацентрах. Использование обособленного сервера позволяет не зависеть от внешних сетевых сервисов синхронизации точного времени, а наличие встроенных атомных часов предоставляют высокий уровень автономности в случае сбоев получения данных от спутниковых систем (например, из-за погодных условий или атак).

Особенность проекта в том, что для построения первичного сервера точного времени можно использовать обычный сервер на базе архитектуры x86, включающий типовую сетевую карту и плату Time Card. В подобном сервере информация о точном времени принимается со спутников через GNSS, а атомные часы выступают в роли высокостабильного осцилятора, позволяющего поддерживать высокий уровень точности в случае сбоя получения сведений через GNSS. Возможное отклонение от точного времени в случае невозможности получения данных через GNSS в предложенной плате оценивается примерно в 300 наносекунд в сутки.


Для Linux подготовлен драйвер ocp_pt, который планируется включить в основной состав ядра Linux 5.15. В драйвере реализованы интерфейсы PTP POSIX (/dev/ptp2), GNSS через последовательный порт (/dev/ttyS7), атомные часы через последовательный порт (/dev/ttyS8) и два устройства i2c (/dev/i2c-*), через которые может быть организован доступ к возможностям аппаратных часов (PHC). При запуске NTP-сервера (Network Time Protocol) могут использоваться Chrony и NTPd, а при запуске сервера PTP (Precision Time Protocol) – ptp4u или ptp4l в сочетании со стеком phc2sys, обеспечивающим копирование значений времени из атомных часов в сетевую карту.

Согласование работы GNSS-ресивера и атомных часов может производиться как аппаратной, так и программно. Аппаратно функциональность согласующего модуля реализована на основе FPGA, а программный вариант работает на уровне прямого мониторинга состояния GNSS-ресивера и атомных часов из приложений, подобных ptp4l и chronyd.


В качестве причины разработки открытой платы вместо использования имеющихся на рынке готовых решений называется проприетарный характер подобных продуктов, не позволяющий убедиться в корректности реализации, а также несоответствие предлагаемого программного обеспечения требованиям безопасности (в большинстве случаев поставляются устаревшие программы, а доставка исправлений уязвимостей может затянуться на месяцы или даже годы) и ограниченные возможности мониторинга (SNMP) и настройки (предлагаются свои CLI или Web UI).

Release. Ссылка here.