I'm configuring two ethernet interfaces into an aggregation group to double bandwidth, and I was wondering if bond mode=0 works for all switches? What about dumb switches that don't support LACP? Will this methodology double bandwidth for a single host ("session")?
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.