I have a pair of firewalls running 3.8-stable. Traffic is natted outbound on em0/carp179 (except carp traffic is left alone).
Their interfaces are em0 connection to ISP via unmanaged switch carp179 over em0 fxp0 crossover cable to other firewall em1 internal connection to managed switch(es) vlan (x118) over em1 carp (x118) one over each vlan I have set net.inet.carp.preempt=1 on each machine and run with pfsync enabled on fxp0. My pf rules set skip on fxp0, pass carp on both em and on all vlan. Most of the time, everything runs as we'd expect from the really fine OS that OpenBSD is, and the firewalls have always failed over properly on reboot. Occasionally however, maybe once every several weeks, we find that the external carp179 is in the inverse state from all other interfaces - master on one machine while all the other carp interfaces are backup - and vice versa. This messes up traffic attempting to pass through from inside out. It seems that the preempt setting has failed to cause all carp interfaces to the same state. How should I go about trying to discover why this state inconsistency is happening? (It looks like the sysctl says to do something with advskew which is intended to cause all interfaces to failover in the same direction, but which doesn't actually guarantee the result.) If the cause is not known, not fixed, or not fixable, two possible workarounds appear to be * run ifstated, or * run a routing daemon (which one?) to pass traffic between firewalls when necessary. [helmet on, yes I did google, check with the bug tracker, and check recent mailing list traffic] Any (relevent) suggestions? A lengthy pf.conf and ifconfig are available if needed. -- Christopher Vance