Не работает синхронизация времени PTP, почему всегда выбирается лучший мастер-час как локальный?

Вопрос или проблема

Я пытаюсь синхронизировать время с помощью PTP; я настроил устройство Trimble для работы с PTP. Однако, когда я использую LinuxPTP с приведенной ниже конфигурацией, локальные часы всегда выбираются как лучшие мастер-часы.

ptp4l[892.103]: локальные часы 00032d.fffe.55bd3b выбраны как лучшие мастер-часы

Мне интересно, почему Trimble устройство не выбирается в качестве мастер-часов.

Устройства подключены через SFP/оптоволоконные кабели.

  • Файл конфигурации PTP – /etc/linuxptp/ptpv2.conf
    [global]
    verbose         1  
    domainNumber    24
    clockClass      6
    priority1       128
    priority2       128
    [enp11s0]
    
  • Запуск с sudo следующим образом и вывод в консоль.
    $ sudo ptp4l -f /etc/linuxptp/ptpv2.conf 
    ptp4l[886.038]: выбран /dev/ptp7 как PTP часы
    ptp4l[886.039]: порт 1 (enp11s0): ИНИЦИАЛИЗАЦИЯ к СЛУШАНИЮ на INIT_COMPLETE
    ptp4l[886.039]: порт 0 (/var/run/ptp4l): ИНИЦИАЛИЗАЦИЯ к СЛУШАНИЮ на INIT_COMPLETE
    ptp4l[886.039]: порт 0 (/var/run/ptp4lro): ИНИЦИАЛИЗАЦИЯ к СЛУШАНИЮ на INIT_COMPLETE
    ptp4l[892.103]: порт 1 (enp11s0): СЛУШАНИЕ к МАСТЕРУ на ANNOUNCE_RECEIPT_TIMEOUT_EXPIRES
    ptp4l[892.103]: локальные часы 00032d.fffe.55bd3b выбраны как лучшие мастер-часы
    ptp4l[892.103]: порт 1 (enp11s0): принимаю роль главного мастера
    
  • Я также захватил сообщение Announce с помощью Wireshark, чтобы посмотреть, поможет ли это в отладке.
    Frame 9466: 78 байт по проводу (624 бита), 78 байт захвачено (624 бита) на интерфейсе enp11s0, id 0
    Ethernet II, Src: Trimble_70:07:6a (00:17:47:70:07:6a), Dst: IEEEI&MS_00:00:00 (01:1b:19:00:00)
    Precision Time Protocol (IEEE1588)
        0000 .... = majorSdoId: Unknown (0x0)
        .... 1011 = messageType: Announce Message (0xb)
        0000 .... = minorVersionPTP: 0
        .... 0010 = versionPTP: 2
        messageLength: 64
        domainNumber: 24
        minorSdoId: 0
        flags: 0x003c
            0... .... .... .... = PTP_SECURITY: Ложь
            .0.. .... .... .... = PTP profile Specific 2: Ложь
            ..0. .... .... .... = PTP profile Specific 1: Ложь
            .... .0.. .... .... = PTP_UNICAST: Ложь
            .... ..0. .... .... = PTP_TWO_STEP: Ложь
            .... ...0 .... .... = PTP_ALTERNATE_MASTER: Ложь
            .... .... .0.. .... = SYNCHRONIZATION_UNCERTAIN: Ложь
            .... .... ..1. .... = FREQUENCY_TRACEABLE: Истина
            .... .... ...1 .... = TIME_TRACEABLE: Истина
            .... .... .... 1... = PTP_TIMESCALE: Истина
            .... .... .... .1.. = PTP_UTC_REASONABLE: Истина
            .... .... .... ..0. = PTP_LI_59: Ложь
            .... .... .... ...0 = PTP_LI_61: Ложь
        correctionField: 0.000000 наносекунд
            correction: Ns: 0 наносекунд
            correctionSubNs: 0 наносекунд
        messageTypeSpecific: 0
        ClockIdentity: 0x001747fffe70076a
            MAC Vendor: Trimble
        SourcePortID: 1
        sequenceId: 28828
        controlField: Другое сообщение (5)
        logMessagePeriod: -3
        originTimestamp (seconds): 0
        originTimestamp (nanoseconds): 0
        originCurrentUTCOffset: 37
        priority1: 128
        grandmasterClockClass: 6
        grandmasterClockAccuracy: Время точно в пределах 100 нс (0x21)
        grandmasterClockVariance: 20061
        priority2: 128
        grandmasterClockIdentity: 0x001747fffe70076a
        localStepsRemoved: 0
        TimeSource: GPS (0x20)
    
  • Команда синхронизации
    phc2sys -w -m -s enp11s0 -c CLOCK_REALTIME
    

Когда я проверяю некоторые другие конфигурации в Интернете, их журналы показывают правильный выбор часов, но мои всегда выбирают лучшие мастер-часы как локальные часы, и они не синхронизируют время с мастер/граничными часами (в данный момент я использую устройство Trimble 1570001820 с GPS).

Другие заметки:

  • NTP отключен
  • Оборудование способно обрабатывать PTP, и установлены последние драйвера.

Алгоритм выбора лучших мастер-часов (BMCA) работает следующим образом:

  1. Приоритет 1
  2. Класс часов
  3. Точность часов
  4. Варьирование смещения часов
  5. Приоритет 2
  6. Идентичность часов
  7. Удаленные шаги

В вашем случае приоритет 1 у двух часов одинаковый (128), и класс часов тоже одинаковый (6). Я не вижу точности и вариации ваших локальных часов в предоставленных вами данных, но предполагаю, что они тоже должны быть одинаковыми (или лучше) (0x21 и 20061). Приоритет 2 такой же (128).

Таким образом, все значения, которые можно видеть в вашем вопросе, идентичны, что означает, что оба часа считаются «одинаково хорошими», и ни один из них не является «лучшим» мастером.

Таким образом, идентичность часов (которая представляет собой EUI-64, сформированное из EUI-48 MAC-адреса интерфейса часов) используется в качестве средства разрешения споров. Идентификатор часов Trimble 001747.fffe.70076a, в то время как идентичность ваших локальных часов 00032d.fffe.55bd3b, что меньше 001747.fffe.70076a.

Таким образом, ваши локальные часы «выигрывают» BMCA.

Общий совет – дать предстоящему главному мастеру наименьший приоритет 1 (например, 0). Если у вас несколько главных часов, у всех должен быть одинаковый приоритет 1, чтобы то, кто станет главным мастером, решалось исключительно по качеству часов. Обычно также стоит давать им разные приоритеты 2, чтобы, если все имеют одинаковое качество часов, вы могли контролировать, кто станет мастером, а не позволять этому решаться более или менее «случайно» по MAC-адресу.

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

Я работаю в среде медиастаринфраструктуры, где наша цепочка синхронизации обычно выглядит следующим образом:

  • 2 резервных генератора часов с приоритетом 1 = 0.
  • Каждый генератор часов подключен к как минимум одному “PTP Follower” коммутатору.
  • 2 резервных “PTP Follower” коммутатора с приоритетом 1 = 10.
  • Два PTP Follower взаимосвязаны, желательно с более чем 1 резервным соединением.
  • Разные поставщики коммутаторов дают разные советы относительно того, следует ли внедрять PTP на Spine или на Leaves. В зависимости от поставщика коммутаторов, либо каждый PTP Follower подключен ко всем Spine, либо ко всем Leaves. Если подключен к Spine, Spine получает приоритет 20, а Leaves – 30; если подключен к Leaves, все наоборот.
  • Если имеются коммутаторы агрегации, подключенные к Leaves, они получают приоритет 1 = 40.
  • И так далее …

И, наконец, как правило, хорошая практика – полностью отключить функциональность мастер-часов на всех устройствах, которые вы не хотите сделать мастером с самого начала. Таким образом, все устройства, которые должны быть подчинены мастер-часам, должны быть сконфигурированы в режим «только слейв».

Пример архитектуры PTP сети

Ответ или решение

Когда вы настраиваете синхронизацию времени через PTP (Precision Time Protocol) и наблюдаете, что локальные часы всегда выбираются как лучший мастер, это говорит о том, что устройства рассматриваются как равнозначные с точки зрения алгоритма выбора лучшего мастер-часа (BMCA). В данном случае важно рассмотреть параметры конфигурации и присвоенные значения приоритетов часов.

  1. Приоритет 1 и 2: В вашей конфигурации вы установили priority1 и priority2 обоих устройств (локального и Trimble) на 128. Согласно алгоритму BMCA, если приоритеты равны, система будет рассматривать другие характеристики часов. Следует выдавать более низкие значения приоритета для часов, которые вы хотите видеть в роли мастера. Рекомендуем установить priority1 для Trimble на значение ниже 128, например, на 0 или 10, чтобы он был выбран как лучший мастер.

  2. Класс часов: У вас clockClass установлен на 6 для обоих устройств. Это значит, что их класс не дает преимущества одному из них. Рассмотрите возможность изменения класса часов у менее приоритетного устройства.

  3. Точность и дисперсия: Если точность и дисперсия локальных часов лучше или равны значениям, передаваемым Trimble, это приведет к тому, что локальные часы будут отбираться. Убедитесь, что grandmasterClockAccuracy и grandmasterClockVariance у Trimble лучше, чем у локального устройства. Если вы не можете получить эти параметры локальных часов, стоит обратиться к документации или команде поддержки вашего оборудования.

  4. Идентификаторы часов: Как Вы уже заметили, идентификаторы (Clock Identity) обеих систем различаются. При использовании BMCA, когда все остальные параметры совпадают, выбор делается на основании идентификаторов: меньший идентификатор победит. Убедитесь, что идентификаторы ваших устройств настроены таким образом, чтобы разрешать правильный выбор мастера.

  5. Режим "только ведомый": Если некоторые устройства не должны становиться мастерами, следует отключить их возможность выступать в этой роли. Для этого в конфигурации нужно явно указать режим "только ведомый" для этих устройств.

  6. Отладка с помощью Wireshark: Вы уже начали использовать Wireshark для анализа сообщений PTP. Если вы продолжаете не видеть сообщений от Trimble, тоже стоит проверить, действительно ли устройство активно и правильно отвечает на запросы.

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

  • Установите priority1 для Trimble на 0.
  • Убедитесь, что класс, точность и дисперсия ваших локальных часов меньше (или хуже) своих значений.
  • Настройте остальные устройства в режиме "только ведомый", чтобы избежать нежелательных выборов мастер-часа.

После внесения изменений, перезапустите ptp4l и проверьте, будет ли теперь Trimble выбрана как лучший мастер.

Оцените материал
Добавить комментарий

Капча загружается...