Does linux balance-rr (bond mode=0) work with all switches?
The document on Linux bonding is worth the read, it goes into what sort of support you need from switches for various bonding methods. In this case:
The balance-rr, balance-xor and broadcast modes generally require that the switch have the appropriate ports grouped together. The nomenclature for such a group differs between switches, it may be called an "etherchannel" (as in the Cisco example, above), a "trunk group" or some other similar variation.
So you will need to group the ports on your switch (often just creating a LAG). Gets a bit more involved sometimes though if you want to plug the same bond into multiple switches.
If you don't want the switches involved you probably want balance-alb
which includes both transmit and receive balancing:
The active-backup, balance-tlb and balance-alb modes do not require any specific configuration of the switch.
From my experience, actually balance-rr and balance-xor works just fine without any further switch configuration on any other switches than Cisco (OTOH I always have bizarre problems with Cisco switches...).
balance-rr performance is OK with 2 ports, but sucks with more; CIFS doesn't play well with balance-rr, either. BUT balance-rr is the only mode were one single TCP connection can actually reach 2 Gb/s; in all other modes, one given connection will always go through one particular port, so you'll need as many connections as you have ports to saturate your network.