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