Hello list,

even I spent some time to BGP and BIRD, I am somehow still a newbie with
the goal to set up a redundant/high available BGP using BIRD in the future.
Initially I thought about putting BIRD onto a Linux system with Corosync
and Pacemaker for high availability. The two machines would be connected
also directly for heartbeat communication. This would be an active/standby
setup - but I'm not sure if this is a good idea (physical layout):

  ISP1 ---+  +--- BIRD 1 --- Switch
          |  |      |    \ /
         Switch     |     X
          |  |      |    / \
  ISP2 ---+  +--- BIRD 2 --- Switch

Note that the "X" is just intersected not connected. This brings obviously
a single point of failure: The first switch. My next idea was doubling the
switch which requires of course two physical cables per ISP:

  ISP 1 --- Switch 1 --- BIRD 1 --- Switch
        \ /          \ /   |    \ /
         X            X    |     X
        / \          / \   |    / \
  ISP 2 --- Switch 2 --- BIRD 2 --- Switch

This seems to be...expensive. Even this idea left me with an active/standby
setup at BIRD. So Pacemaker would start BIRD on one of the two servers and
stop it on the other. During maintainance of the servers the active/standby
would be changed to standby/active - but resets all BGP sessions and seems
to be especially disliked by eventually later peering partners. Correct me,
if I am wrong here, please. I also thought about this setup:

  ISP 1 --- BIRD 1 --- Switch
              |    \ /
              |     X
              |    / \
  ISP 2 --- BIRD 2 --- Switch

This actually requires two running BIRDs but leaves me with the question
how to deal with the IP address on the internal side. So in theory I would
have two virtual standard gateways for connected internal equipment?!

Maybe I'm also totally on the wrong road. The basic plan is two different
ISP connections, two Linux systems running BIRD and Corosync with Pacemaker
to achive high availability - and later some peering partners. I would like
to see a fast automated failover in case a link or a hardware breaks down.

Searching on the Internet brings lots of BSD-based setups with CARP/pfsync
but only less Linux-based ones, somebody noticed keepalived. So is Corosync
and Pacemaker just the wrong attempt?

Are there some recommendations or best practices on physical and software
structure? Do you run similar setups and how do they look like? What are
you using on the software level - except BIRD? And how long does a failover
take for you? Are you running active/active or active/standby?

I am also looking for hardware recommendations: If I am not completely mis-
taken, above requires (depending on the configuration) up to two full BGP
tables in memory...how much is that for IPv4 and IPv6? How about the CPU? I
can read in various documents that BIRD requires less CPU than others, but
what does less mean in a rough absolute value in GiB for above situation?

Thank you for reading my long e-mail and sorry for taking your time! Feel
also free to just send me some pointers in case I missed some documentation
or other useful links.


Greetings,
  Robert

Reply via email to