CARP (Common Address Redundancy Protocol)

Max Laier max at love2party.net
Wed Nov 5 09:50:22 PST 2003


You might be aware that OpenBSD has introduced a 2-clause BSD-licensed
high availability and load balancing protocol called CARP:
http://marc.theaimsgroup.com/?l=openbsd-misc&m=106642790513590&w=2
http://www.deadly.org/article.php3?sid=20031018101733

I have a working patchset to bring CARP to FreeBSD-Current and would
like to hear you opinon: http://pf4freebsd.love2party.net/carp.html

CARP shows itself as virtual interfaces carpX and works a bit like
vlan interfaces. For comunication between the servers which share a
common address it uses a multicast group.

It supports both IPv4 and IPv6 common addresses and should work on
ETHERNET, FDDI and TOKENRING nets - later two untested, though.

Standing problems:
 - IPv4:
   * Server can't access the common address while MASTER for it.
     OpenBSD has a workaround for this, but we can't add host routes
     with virtual interfaces as gateway, so we need another fix.
 - IPv6:
   * Traffic to the common address on the server is always threated
     locally, even when in BACKUP state.
   * in6_ifattach() will error out - this seems to have no ill
     effects and can easily be fixed by selecting a special if_type
     for CARP interfaces.
 - Locking?!?
 - You tell me!

Tests:
 Very basic tests for IPv4 and IPv6 performed with OpenBSD as a "known
 good" peer. I have very limited test environment at the moment.
 
Code:
 http://pf4freebsd.love2party.net/carp.diff
 Perforce: branch mlaier_carp

-- 
Best regards,
 Max Laier                    mailto:max at love2party.net



More information about the freebsd-current mailing list