Если немного упрощенно изложить задачу, то она следующая. Есть несколько физических серверов с Linux, имеющих по два сетевых адаптера, и два коммутатора, в каждый из которых подключен один из эзернет-портов серверов. Свичи осуществляют коммутацию подсетей 172.16.1.0/24 и 172.16.2.0/24, в каждой из которых у серверов есть ip-адреса. Также на каждом из серверов назначен локальный ip-адрес, не привязанный к конкретному сетевому адаптеру, из диапазона 172.16.0.0/24, с маской /32 (посредством создания бриджа, в который не добавлялись физические интерфейсы).
Нужно выбрать протокол динамической маршрутизации, который позволит обеспечить доступность всех локальных ip в 172.16.0.X с каждого из серверов, с минимальным временем перестроения (желательно не более 10 секунд) в случае частичной потери связности, и присутствующий "из коробки" в пакетах FRR или Bird.
К сожалению, использовать Bonding/LACP в конкретном случае не получится, поэтому приходится искать, как обеспечивать возможность failover уровнем выше.