Network bonding mode balance-rr / 802.3ad layer3+4 on Linux

What is the difference between balance-rr and 802.3ad with xmit_hash_policy set to layer3+4.

https://www.kernel.org/doc/Documentation/networking/bonding.txt

layer3+4: This algorithm is not fully 802.3ad compliant. A single TCP or UDP conversation containing both fragmented and unfragmented packets will see packets striped across two interfaces. This may result in out of order delivery. Most traffic types will not meet this criteria, as TCP rarely fragments traffic, and most UDP traffic is not involved in extended conversations. Other implementations of 802.3ad may or may not tolerate this noncompliance.


802.3ad with xmit_hash_policy set to layer3+4 is a bonding mode that is one of the standard, sensible, and widely used ones. Like many others it doesn't allow >100% throughput for a single TCP connection. In practice the fragmented packet disclaimer you quoted is not relevant as far as I've seen.

balance-rr is a very specific and rarely used balancing mode. It's mainly useful for a dedicated backup-restore subnet. When maintained with the joint network and system admin staff, with the switch specifically set up and all the servers/routers specifically set up, with a little bit of testing, you could achieve >100% throughput for a single TCP connection. Don't expect 200% though. (Remember to test both directions, unless you like your restores very slow). If a link gets down, the remaining one(s) will function.

You've already linked to a detailed technical description, so I've figured out you'd like a high-level answer.