I'm trying to debug why when I take either carp interface (only 2 in a 2 pair fw) not all carp interfaces fail over. Only that interface switches. If I take one of the physical interfaces down, both carp interfaces switch over.

fw1 -

# uname -a
OpenBSD sabus 3.9 GENERIC#617 i386
# sysctl -a |grep carp
net.inet.carp.allow=1
net.inet.carp.preempt=1
net.inet.carp.log=1
net.inet.carp.arpbalance=0
# ifconfig carp
carp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        carp: MASTER carpdev rl0 vhid 1 advbase 1 advskew 0
        groups: carp egress
        inet 24.97.84.33 netmask 0xfffffff8 broadcast 24.97.84.39
carp1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        carp: MASTER carpdev rl1 vhid 2 advbase 1 advskew 0
        groups: carp
        inet 192.168.1.1 netmask 0xffffff00 broadcast 255.255.255.0
#

# uname -a
OpenBSD sibyl 3.9 GENERIC#617 i386
# sysctl -a |grep carp
net.inet.carp.allow=1
net.inet.carp.preempt=1
net.inet.carp.log=1
net.inet.carp.arpbalance=0
# ifconfig carp
carp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        carp: BACKUP carpdev rl0 vhid 1 advbase 1 advskew 100
        groups: carp
        inet 24.97.84.33 netmask 0xfffffff8 broadcast 24.97.84.39
carp1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        carp: BACKUP carpdev rl1 vhid 2 advbase 1 advskew 100
        groups: carp
        inet 192.168.1.1 netmask 0xffffff00 broadcast 255.255.255.0
#


Below are the results of running tcpdump on rl0 and rl1 when I took down the carp1 interface on fw1.

tcpdump: listening on rl0, link-type EN10MB
12:05:02.090516 CARPv2-advertise 36: vhid=1 advbase=1 advskew=0 (DF) [tos 0x10] 12:05:03.100529 CARPv2-advertise 36: vhid=1 advbase=1 advskew=0 (DF) [tos 0x10] 12:05:04.110504 CARPv2-advertise 36: vhid=1 advbase=1 advskew=0 (DF) [tos 0x10] 12:05:05.120503 CARPv2-advertise 36: vhid=1 advbase=1 advskew=0 (DF) [tos 0x10]

tcpdump: listening on rl1, link-type EN10MB
12:05:45.030533 CARPv2-advertise 36: vhid=2 advbase=1 advskew=0 (DF) [tos 0x10] 12:05:46.040518 CARPv2-advertise 36: vhid=2 advbase=1 advskew=0 (DF) [tos 0x10] 12:05:47.050489 CARPv2-advertise 36: vhid=2 advbase=1 advskew=0 (DF) [tos 0x10] 12:05:48.060524 CARPv2-advertise 36: vhid=2 advbase=1 advskew=0 (DF) [tos 0x10] 12:05:48.650347 CARPv2-advertise 36: vhid=2 advbase=255 advskew=255 (DF) [tos 0x10] 12:05:48.651061 CARPv2-advertise 36: vhid=2 advbase=1 advskew=100 (DF) [tos 0x10] 12:05:50.054365 CARPv2-advertise 36: vhid=2 advbase=1 advskew=100 (DF) [tos 0x10]

That shows that fw1 did change its advbase and advskew and then fw2 started broadcasting with advskew=100.

This time with carp0 (I quickly took carp0 down and backup, since this a production pair.)

# tcpdump -n -i rl0 proto carp
tcpdump: listening on rl0, link-type EN10MB
12:11:12.760495 CARPv2-advertise 36: vhid=1 advbase=1 advskew=0 (DF) [tos 0x10] 12:11:13.770495 CARPv2-advertise 36: vhid=1 advbase=1 advskew=0 (DF) [tos 0x10] 12:11:14.780480 CARPv2-advertise 36: vhid=1 advbase=1 advskew=0 (DF) [tos 0x10] 12:11:15.764630 CARPv2-advertise 36: vhid=1 advbase=255 advskew=255 (DF) [tos 0x10] 12:11:15.765311 CARPv2-advertise 36: vhid=1 advbase=1 advskew=100 (DF) [tos 0x10] 12:11:17.173149 CARPv2-advertise 36: vhid=1 advbase=1 advskew=100 (DF) [tos 0x10] 12:11:18.583128 CARPv2-advertise 36: vhid=1 advbase=1 advskew=100 (DF) [tos 0x10] 12:11:19.993165 CARPv2-advertise 36: vhid=1 advbase=1 advskew=100 (DF) [tos 0x10] 12:11:21.403149 CARPv2-advertise 36: vhid=1 advbase=1 advskew=100 (DF) [tos 0x10] 12:11:22.813090 CARPv2-advertise 36: vhid=1 advbase=1 advskew=100 (DF) [tos 0x10] 12:11:22.813275 CARPv2-advertise 36: vhid=1 advbase=1 advskew=0 (DF) [tos 0x10] 12:11:23.820476 CARPv2-advertise 36: vhid=1 advbase=1 advskew=0 (DF) [tos 0x10] 12:11:24.830472 CARPv2-advertise 36: vhid=1 advbase=1 advskew=0 (DF) [tos 0x10]

# tcpdump -n -i rl1 proto carp
tcpdump: listening on rl1, link-type EN10MB
12:11:13.630576 CARPv2-advertise 36: vhid=2 advbase=1 advskew=0 (DF) [tos 0x10] 12:11:14.640503 CARPv2-advertise 36: vhid=2 advbase=1 advskew=0 (DF) [tos 0x10] 12:11:15.650499 CARPv2-advertise 36: vhid=2 advbase=1 advskew=0 (DF) [tos 0x10] 12:11:16.660508 CARPv2-advertise 36: vhid=2 advbase=1 advskew=0 (DF) [tos 0x10] 12:11:17.670504 CARPv2-advertise 36: vhid=2 advbase=1 advskew=0 (DF) [tos 0x10] 12:11:18.680496 CARPv2-advertise 36: vhid=2 advbase=1 advskew=0 (DF) [tos 0x10] 12:11:19.690496 CARPv2-advertise 36: vhid=2 advbase=1 advskew=0 (DF) [tos 0x10] 12:11:20.700499 CARPv2-advertise 36: vhid=2 advbase=1 advskew=0 (DF) [tos 0x10] 12:11:21.710525 CARPv2-advertise 36: vhid=2 advbase=1 advskew=0 (DF) [tos 0x10] 12:11:22.720555 CARPv2-advertise 36: vhid=2 advbase=1 advskew=0 (DF) [tos 0x10]


If I understand the way carp works when one of the carp interfaces goes down *and* net.inet.carp.preempt=1 then my understanding is that CARP should change advskew on all other carp-enabled interfaces to 240. Which clearly is not happening in my case. :-(


Any ideas/suggestions welcomed.

Regards,
Chad

Reply via email to