Currently, netfront will send a gratuitous ARP when resumed
at the end of a live migration/resume op. However, there are other situations
when it is necessary to send a gratuitous ARP; one good example is when you
bond NICs in Dom0 for availability and plug the bond into the bridge; in this
case, when a failover from primary to backup NIC occurs, you need to send ARPs
for all the domains VIFs on the backup link to get traffic routed correctly.
Now, there are a number of ways of doing this (including
using ebtables in Dom0 to track IP-MAC address translations) but it seems to me
that the simplest would be to have a way to poke the netfront driver to send an
ARP on demand (especially given that fact that it already needs/has this
functionality).
I’ve prototyped something fairly simple & gross
based on having netfront setup a xenstore watch on a leaf in the domains vif
directory in xenstore (that is, device/vif/send_arp); when the watch fires, all
netfront instances send the fake ARP just like they do at the end of
migration/resume. All you need to do from dom0 then is modify the leaf with
xenstore-write/xenstore-rm.
I accept that this is not very nice and we should probably
have a more organized/documented way to do this but I’m not sure what
would be appropriate; any suggestions?
Thanks
Simon