With heartbeat and keepalived, the redundancy options I have always used work by moving a virtual IP address to a new machine (A layer 3 solution). The new machine sends out a gratuitous arp to tell machines on the network its MAC address is the new MAC for that IP.
Are there any current network redundancy options that use a virtual MAC address (layer 2) that gets moved between machines as well as the virtual IP? This would be useful for certain operating systems that don't understand GARP requests. I did find this keepalivd thread (from a Server Fault user it so happens) but it is back from 2005. Does anyone know the current state of virtual mac failover in Linux?