Вообще говоря, самое лучшее решение, которое можно применить - сделать IP-based failover. Поднять OSPF,
По правде говоря, я внимательно слежу за дискуссией, и чем-то она мне напоминает обсуждение вопроса о том, какую и как лучше взять отвертку, чтобы использовать её в качестве стамески ;) при том, что использовать просто стамеску и проще, и эффективнее, и не вступает в конфликт с техникой безопасности (в отличие от долбания дерева отверткой ;) Честно говоря, я сильно отстал от жизни, и лет 10 как не интересовался тонкими аспектами multipath routing в современных линуксах/бсд/солярисах. Знаю в цисках было. Но я собственно к чему. Аналогичные конструкции лет когда-то строить доводилось; делалось просто, яко железный лом: 2 свича это 2 независимых сегмента эзернет - итого "две шины" условно "правая" и "левая", сокр. R & L. У роутера 2 интерфейса тоже R и L. У каждого из ящиков тоже два - R & L. Мало одного роутера? ставим два, и у второго тоже R и L. Что происходит на уровне L2 эзернет-кадров - а неважно. Я для таких вещей только STP понимаю, чтобы кольца, ну и все его осмысленное применение имхо. А поверх конструкции с двумя "шинами" - R & L - напяливаем тривиальный OSPF (тогда еще был v.2). И все превосходнейше работало. Единственно что, multipath в *nix не было тогда, посему никаких load balancing - просто путем правки OSPF costs +\- 1 делалось так, что у первого ящика любимый маршрут - плечо R, у второго - плечо L. Ну и ниче, bandwidth хватало (а что сильно 100 Mbps не хватает кому? для чего?), и что характерно - даже на деревянных копеечных свичехабах работало. Важная оговорка: приложение на обоих ящиках биндится *исключительно* к ихним lo0 которые оба stub hosts иначе щастья не будет ;) а OSPF hello таймер ставится как угодно коротко, помнится при таймере 10 сек время от обрыва плеча до полного разворота составляло секунд 15 типа того. Что приятно - можно добавить третий параллельный сегмент (а хоть и четвертый) и тоже будет работать.