# Redundant routing with CARP and multiple edges



## eichornia (Feb 10, 2015)

Hi guys,

Been using FreeBSD to power my smaller POPs for a while now, it all works great (and is a great alternative to costly Juniper gear.)

I'm trying to create this topology for redundancy now,


```
upstream0 -> er0 -------------------------------------
              |ibgp               |                |
              | +               dist0             dist1 ----> servers
              |carp               |                |
upstream1 -> er1 -------------------------------------
```

er0 and er1 are FreeBSD boxes running net/openbgpd / net/bird, and handle a full table each from the ISPs. IPs are originated from a route-server outside this topology.

My question is, how would I go about configuring redundancy on the distribution (layer 3) switches to the carp enabled boxes? They're basic, and only use a default route to the ers.

They each have a link to the FreeBSD systems, and reading the docs, it does't look like an aggregated interface (Junos terms, lagg(4) here most likely) is the best idea.

The pure Juniper way to do this would be using a mc-lag, so I'm a bit confused what the recommended way to do it using FreeBSD is. CARP generates a virtual gateway IP between the two systems, certainly -- but how should the switches be connected?

The two 'dist' switches are Juniper EX4200s in this case.


----------



## tetragir (Feb 16, 2015)

Hello,

Excuse me, I'm more of a networking guy, so I'm going to answer from that point of view.
In my understanding, you have a virtual IP with CARP, and also 1-1 IP addresses on each er0 and er1 box. If CARP works like HSRP, then you need to set the distribution switches to forward the packets to the virtual IP. That way, if one of the ers falls out, the other takes the forwarding of the packets from the virtual IP.
Link aggregation is another topic, it only means the aggregation of more than 1 physical interface.


----------

