Содержание

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents


В стандартные дистрибутивы и репозитории ОС ОН Орёл 2.12 до версии 2.12.10 были включены две службы точного времени:

  • Серверная служба NTP (ntpd) (представлена пакетами ntp и ntpdate);
  • Клиентская служба timedatectl / systemd-timesyncd.service.

Подробнее про них можно прочитать по ссылке. Кроме того, по той же ссылке можно ознакомиться с  базовыми терминами, связанными с организацией служб времени в компьютерах

Начиная с версии ОС ОН Орёл 2.12.10 помимо указанных выше служб в репозитории стал доступен пакет linuxptp, содержащий следующие службы:

  • ptp4l - служба протокола времени высокой точности;
  • phc2sys - служба синхронизации часов;
  • timemaster - служба координации, обеспечивающая совместную работу традиционной службы времени ntp и службы времени высокой точности ptp

    .


    Info

    Данная статья применима к:

    • Орёл 2.12.10


    Warning
    Службы ntp и PTP несовместимы со службой timedatectl.


    Начиная с версии ОС ОН Орёл 2.12.10 помимо указанных выше служб в репозитории стал доступен пакет linuxptp, содержащий следующие службы:

    • ptp4l - служба протокола времени высокой точности, реализующая работу по протоколу времени высокой точности PTP (Precision Time Protocol) в соответствии со стандартом  IEEE 1588. Точность протокола зависит от того, как устанавливаются метки времени в пакетах IEEE 1588. При установке отметок времени программным путём, когда на точность влияют прерывания, загрузка процессора, и иные факторы, обеспечивается точность 1-100 микросекунд. Аппаратная поддержка обеспечивает точность до единиц микросекунд;
    • phc2sys - служба синхронизации часов;
    • timemaster - служба координации, обеспечивающая совместную работу традиционной службы времени ntp и службы времени высокой точности ptp.

    Проверка оборудования

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

    Проверить, поддерживает ли сетевая карта аппаратные отметки времени можно из командной строки с помощью команды ethtool из пакета ethtool (пакет ethtool придётся установить, если он не был установлен ранее):

    Command

    sudo apt install ethtool
    sudo ethtool -T eth0

    Примерный вывод команды для сетевой карты, поддерживающей аппаратные отметки:

    Expand
    $ sudo ethtool -T eth0
    Time stamping parameters for eth0:
    Capabilities:
    hardware-transmit (SOF_TIMESTAMPING_TX_HARDWARE)
    software-transmit (SOF_TIMESTAMPING_TX_SOFTWARE)
    hardware-receive (SOF_TIMESTAMPING_RX_HARDWARE)
    software-receive (SOF_TIMESTAMPING_RX_SOFTWARE)
    software-system-clock (SOF_TIMESTAMPING_SOFTWARE)
    hardware-raw-clock (SOF_TIMESTAMPING_RAW_HARDWARE)
    PTP Hardware Clock: 0
    Hardware Transmit Timestamp Modes:
    off (HWTSTAMP_TX_OFF)
    on (HWTSTAMP_TX_ON)
    Hardware Receive Filter Modes:
    none (HWTSTAMP_FILTER_NONE)
    all (HWTSTAMP_FILTER_ALL)
    ptpv1-l4-sync (HWTSTAMP_FILTER_PTP_V1_L4_SYNC)
    ptpv1-l4-delay-req (HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ)
    ptpv2-l4-sync (HWTSTAMP_FILTER_PTP_V2_L4_SYNC)
    ptpv2-l4-delay-req (HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ)
    ptpv2-l2-sync (HWTSTAMP_FILTER_PTP_V2_L2_SYNC)
    ptpv2-l2-delay-req (HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ)
    ptpv2-event (HWTSTAMP_FILTER_PTP_V2_EVENT)
    ptpv2-sync (HWTSTAMP_FILTER_PTP_V2_SYNC)
    ptpv2-delay-req (HWTSTAMP_FILTER_PTP_V2_DELAY_REQ)

    Установка пакета

    Пакет linuxptp доступен в репозитории Орёл (начиная с версии 2.12.10) и может быть установлен с помощью графического менеджера пакетов или из командной строки командой

    Command
    sudo apt install linuxptp

    Настройка службы timemaster

    Конфигурация службы timemaster находится в файле /etc/linuxptp/timemaster.conf.
    Подробно возможные параметры настройки описаны в электронной справочной системе:

    Command

    man timemaster

    Включение службы домена точного времени (ptp_domain)

    Для включения службы времени высокой точности ptp4l раскомментировать в файле настроек /etc/linuxptp/timemaster.conf секцию [ptp_domain 0] (в примере - настройка домена точного времени, использующего интерфейс eth0):

    Info

    [ptp_domain 0]
    interfaces eth0
    delay 10e-6

    Домен точного времени обслуживается сервисом ptp4l, настройка этого сервиса описана ниже.

    Включение и настройка службы ntp

    Для включения службы ntp  в файле настроек /etc/linuxptp/timemaster.conf в секции [timemaster] нужно указать службу ntpd вместо cronyd:

    Info

    [timemaster]
    ntp_program chronyd
    ntp_program ntpd

    После внесения этих изменений служба timemaster сможет самостоятельно запускать службу ntpd под своим контролем, поэтому самостоятельный запуск службы ntpd следует отключить:

    Command

    sudo systemctl mask ntp

    Настройка автоматического запуска timemaster

    Кроме настройки конфигурационного файла нужно разрешить автоматический запуск службы timemaster при старте системы:

    Command
    sudo systemctl enable timemaster

    Настройка службы ptp4l

    Служба ptp4l представляет собой реализацию протокола времени высокой точности и по умолчанию настроена на работу с сетевыми картами, поддерживающими аппаратные отметки времени (time stamping).
    Как проверить наличие в сетевой карте аппаратной поддержки описано выше.
    Конфигурация службы ptp4l хранится в файле /etc/linuxptp/ptp4l.conf, описание которого доступно в справочной системе:

    Command
    man pdp4l


    Если используются сетевые карты без аппаратной поддержки отметок времени, то в конфигурации службы ptp4l (файл /etc/linuxptp/ptp4l.conf) нужно заменить аппаратную поддержку на программную:

    Info

    time_stamping hardware

    time_stamping software

    Настройка службы phc2sys

    Служба phc2sys настроек не требует, и если в системе имеется с чем синхронизировать системные часы RTC, phc2sys запустится автоматически с нужными параметрами.
    При работе с сетевыми картами, не поддерживающими аппаратные отметки времени служба phc2sys не запускается.

    Запуск всех служб

    После завершения настройки запуск всех служб осуществляется командой

    Command

    sudo systemctl start timemaster


    Служба timemaster сама запустит запустит все остальные сервисы, в итоге статус нормально и полностью запущенной службы при наличии аппаратной поддержки выглядит примерно так:

    Expand

    $ sudo systemctl status timemaster
    timemaster.service - Synchronize system clock to NTP and PTP time sources
    Loaded: loaded (/lib/systemd/system/timemaster.service; disabled; vendor preset: enabled)
    Active: active (running) since Mon 2019-04-22 15:51:02 MSK; 2s ago
    Docs: man:timemaster
    Main PID: 2508 (timemaster)
    Tasks: 5 (limit: 4608)
    CGroup: /system.slice/timemaster.service
    ├─2508 /usr/sbin/timemaster -f /etc/linuxptp/timemaster.conf
    ├─2509 /usr/sbin/ntpd -u ntp:ntp -g -n -c /var/run/timemaster/ntp.conf
    ├─2510 /usr/sbin/ptp4l -l 5 -f /var/run/timemaster/ptp4l.0.conf -H -i eth0
    └─2511 /usr/sbin/phc2sys -l 5 -a -r -R 1.00 -z /var/run/timemaster/ptp4l.0.socket -n 0 -E ntpshm -M 0
    .....