В целом проблема сохранилась и оформилась в такую картину.
Сеть не "моргает", в т.ч. BFD не регистрирует потерь, соседи в сстоянии Full. Нагрузка на CPU не превышает 5%, памяти достаточно. При этом сразу после запуска/перезапуска FRR все выглядит предсказуемо, OSPF DB соответствует конфигурации.
Но... ровно через час (буквально до секунды) и без единой записи в логи происходит следующее:
При этом OSPF Neighbors без изменений, сосед в Full, в BFD интерфейс Up.
Из замеченного: в Thread statistics for ospfd появляется ospf_maxage_lsa_remover.
Лечится (ну если можно так назвать) через FRR/Global Settings - Force Service Restart (ну тут в логах все красиво), после чего все работает... ровно час.
Конфиг:
Немного помогает добавление альтернативных маршрутов, тогда при отвале одного включается другие, правда иногда ассиметрично, при том, что косты расставлены корректно и для каждого конечного маршрута однозначно. Т.е. ручной рассчет дейкстры не совпадает с выбранным маршрутизатором. Да собственно и в OSPF external routing table виден результирующий кост, который больше, чем живые альтернативы.
Уже обновлял PFSense и FRR, играл с FW и MTU/MSS, медитировал на BFD и OSPF пакеты на интерфейсах...
Идеи закончились. Угнетает тишина в логах при потере маршрутов. Готов возвращаться на статику (BGP не предлагать).
Буду благодарен за любые конструктивные идеи.