Hello,

In order to minimize Internet connectivity downtime
I am looking at obtaining connections from 2 ISPs
and running BGP.  However I won't have a publicly
routeable IP block from ARIN.  Each ISP will
allocate some of their addresses and the LAN's
rfc1918 addresses will be NATted.

This presents no real issues for short-lived
connections (i.e. traditional HTTP transactions)
but for longer lived connections (ssh sessions)
some routing change out there on the Internet
could cause an established flow to change it's
(outbound) route via one of the ISPs to the other.
This breaks NAT, or rather the change from one
ISP to the other would change the NATing done
to the flow and break the connection.

What's the best way to solve this problem?

The straightforward solution (idea gleaned from
Simon Slaytor and the thread at
http://marc.info/?l=openbsd-misc&m=122349653116879&w=2)
is to use a separate OpenBSD router running BGP to connect to
each ISP.

                +----Internet----+
                |                |
           +------- -+       +---------+
           |   ISP1  |       |  ISP2   |
           | ROUTER  |       | ROUTER  |
           |         |       |         |
           +---------+       +---------+
                |    Off-site    |
    ============|================|===========
                |    On-site     |
           +---------+       +---------+
           | OpenBGP |       | OpenBGP |
           | ROUTER  |-------| ROUTER  |
           |    A    |       |    B    |
           +---------+       +---------+
                |                |
                |                |
           +-------------------------+
           |     PRIVATE NETWORKS    |
           +-------------------------+

Routers A and B would be configured with an ASN
assigned by ARIN.

Each router, A and B, would prefer it's own
route to the Internet and I would load balance
the traffic from the private networks to the
two routers using carp on the interfaces facing
the private networks.   Because carp will
always deliver any given machine's outbound traffic
to either router A or router B any given machine's
traffic will reach the Internet via a single ISP,
resolving the NAT issue.  (Existing connections will
break should there be a failure and all traffic winds
up routing via a single ISP, but that's life.)

We would turn the BGP dead timers (holdtime)
down low to minimize blackholed traffic.
(I'm thinking 3 seconds.  Comment?)

Naturally we would not advertise our private
networks or the routes between the 2 ISPs.

What do people think of the above setup?

A second question is whether or not it's possible
to run 2 instances of bpgd on a single box, using
separate routing tables and basically merge the
two machines above into 1.  (It would be nice then,
to use the 2nd box as a carp based hot-spare.)
AFAIK all the pieces seem to be in place to for such
an approach, but would it really work?

Thank you for your time.

Regards,

Karl <k...@meme.com>
Free Software:  "You don't pay back, you pay forward."
                 -- Robert A. Heinlein

Reply via email to