Subject: Re: Bonding in active-backup mode with arp monitoring on Xen

From: Jay Vosburgh <[email-masked]>
Date: Tue, 30 Oct 2007 14:48:29 -0700

Tsutomu Fujii <[email-masked]> wrote:
[...]
>The network structure is the following.
>
>+-------------------------------+
>|        virtual I/F(eth0)      | <- have IP address.
>+-------------------------------+
>|      virtual bridge(xenbr0)   |
>+-------------------------------+
>|         bonding(bond0)        | <- don't have IP address
>+--------------+-+--------------+
>|phy I/F(peth0)| |phy I/F(peth1)|
>+--------------+ +--------------+
[...]
>How about removing bond_has_ip() from the condition for calling
>bond_arp_send_all() to use bonding with xen?
>When I removed bond_has_ip(), the resulting kernel worked fine and
>active-backup mode works with arp monitoring.

	I looked at this a bit.  I believe that when you remove the
bond_has_ip() test, the ARP probes sent out will be of the form "ARP
who-has A.B.C.D tell 0.0.0.0", which the linux kernel will interpret as
IPv4 Duplicate Address Detection probes (as a special case in
arp_process()), and generate some type of reply.  That reply appears to
be enough to keep the ARP monitor happy.

	I'm not sure if this is a solution that will work for any peer
(some peers may not reply to an ARP with an IP source of all zeros).  At
first glance, there doesn't seem to be much of a downside, but I'll have
to experiment with it a bit to see if the check should be optional or
simply removed entirely.

	-J

---
	-Jay Vosburgh, IBM Linux Technology Center, [email-masked]