Você tem várias soluções Linux para redundância de primeiro salto da LAN para os dois roteadores (o Quagga em si não suporta VRRP, mas você pode usá-lo em conjunto com qualquer um deles sem problemas):
- keepalived (como você já mencionou)
- uCARP - Uma porta Linux do CARP do OpenBSD (Common Address Redundancy Protocol)
- vrrpd - Um daemon VRRP escassamente documentado e praticamente não testado, mas uma opção mesmo assim
Observe que nada disso tem a ver com redundância de BGP, que acredito ser o verdadeiro problema que você está tentando resolver. No entanto, deve ser bem possível executar o VRRP no lado do provedor dos seus dois hosts Quagga e configurar o IP virtual do VRRP como "o seu lado" do seu ISP / 30 atribuído e usá-lo para fazer parceria com seu ISP. O tempo de failover provavelmente seria quase o mesmo (se não apenas um fio mais rápido que) a solução com Linux-HA abaixo. Com isso dito, eu pessoalmente acredito que a solução Linux-HA seria mais limpa e mais simples, mas isso também pode depender da topologia.
Quanto às suas opções com o BGP, existe um rascunho da IETF para o "BGP de várias sessões " que introduz um novo código de capacidade do BGP que visa suportar várias sessões do BGP com o mesmo ponto no mesmo endereço, mas esse rascunho pressupõe que ambas as sessões estar no mesmo dispositivo, no entanto, o rascunho é novo e o suporte para isso provavelmente não está nas revisões atuais do Quagga.
Uma outra opção é usar o Linux-HA para configurar um cluster de pulsação entre suas duas caixas e configurá-lo como tal para que, se o roteador principal falhar, a pulsação reconhecerá isso e ativará o Quagga / BGPd / etc no roteador em espera quando isso acontecer