How does the balance-xor bonding exactly work?

From the wiki page http://wiki.mikrotik.com/wiki/Manual:Interface/Bonding I get following

balance-xor

This mode balances outgoing traffic across the active ports based on hashed protocol header information and accepts incoming traffic from any active port. Mode is very similar to LACP except that it is not standardized and works with layer-3-and-4 hash policy.

So this means it does the xor over the whole IP header?

But if I check what the Linux kernel guys understands under XOR (http://www.linuxfoundation.org/collaborate/workgroups/networking/bonding, http://en.wikipedia.org/wiki/Link_aggregation
) I get following:


Transmit based on [(source MAC address XOR’d with destination MAC address) modulo slave count]. This selects the same slave for each destination MAC address. This mode provides load balancing and fault tolerance.

Which one is now correct?

ps: A table which monitoring is possible for which mode would be nice on the wiki page

Both are correct depending on which hash policy is selected. If hash policy is layer2 then it is as you quoted from linux manual.

ah thx. the transmit-hash-policy is not only for the 802.3ad - i overlooked that

that means I can use balance-xor with transmit-hash-policy layer-2-and-3 / layer-3-and-4 and arp as link-monitoring over 2 eoip tunnels which is not possible 802.3ad. thats cool thx.