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:
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: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.
I've just tested balance-rr with a cisco switch and servers running lxc containers on top of Ubuntu 18.10. This didn't work - for some reason the arp tables never get updated inside the containers. The problem disappears when switching to active-backup.