With the just-discussed bug fixed in my workspace, the kernel's new IPv4
unicast support for IPMP seems pretty solid. For instance, I can ssh to
the test machine[1] from China, and trigger a failover on the interface
I'm logged in over:
# ifconfig ce0 ether
ce0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
ether 0:3:ba:94:3b:74
# ifconfig ce1 ether
ce1: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 4
ether 0:3:ba:94:3b:75
# arp -a | grep whitestar1-2
ipmp0 whitestar1-2 255.255.255.255 SPLA 00:03:ba:94:3b:74
# ifconfig ce0 failed
# arp -a | grep whitestar1-2
ipmp0 whitestar1-2 255.255.255.255 SPLA 00:03:ba:94:3b:75
As above, the ssh connection is unaffected even though the IP address it
connected through has been remapped to ce1. Bringing back up the
interface triggers "active interface" rebalancing and causes whitestar1-2
to return to its original interface (ce0):
# ifconfig ce0 -failed
# arp -a | grep whitestar1-2
ipmp0 whitestar1-2 255.255.255.255 SPLA 00:03:ba:94:3b:74
#
Similar things can be done by removing or adding interfaces from the
group, or by changing hardware addresses:
# ifconfig ce0 group ""
# arp -a | grep whitestar1-2
ipmp0 whitestar1-2 255.255.255.255 SPLA 00:03:ba:94:3b:75
# ifconfig ce0 group a
# ifconfig ce0 ether 00:03:ba:94:3b:76
# arp -a | grep whitestar1-2
ipmp0 whitestar1-2 255.255.255.255 SPLA 00:03:ba:94:3b:76
Of course, there's a lot more fun to be had, but the above gives the basic
idea. I'll cover this in an overdue blog entry once I have a chance to
catch up on sleep. And then it's on to multicast and broadcast support.
--
meem