Choosing bonding mode between RHEL server and two separate switches

bondingrhel6

I have one RHEL 6 server with two NIC ports (each Port is connected to different switch). I need to create bonded interface from those two physical ports.

Which bonding mode should I use? I don't want to use mode 1, active /backup won't help me with performance.

Please be informed that two switches are totally separated switches. (no stacking, no cascading).

Thanks in advance.

Best Answer

Well your valid options are:

balance-rr or 0 — Sets a round-robin policy for fault tolerance and load balancing. Transmissions are received and sent out sequentially on each bonded slave interface beginning with the first one available.

active-backup or 1 — Sets an active-backup policy for fault tolerance. Transmissions are received and sent out via the first available bonded slave interface. Another bonded slave interface is only used if the active bonded slave interface fails.

balance-xor or 2 — Sets an XOR (exclusive-or) policy for fault tolerance and load balancing. Using this method, the interface matches up the incoming request's MAC address with the MAC address for one of the slave NICs. Once this link is established, transmissions are sent out sequentially beginning with the first available interface.

broadcast or 3 — Sets a broadcast policy for fault tolerance. All transmissions are sent on all slave interfaces.

802.3ad or 4 — Sets an IEEE 802.3ad dynamic link aggregation policy. Creates aggregation groups that share the same speed and duplex settings. Transmits and receives on all slaves in the active aggregator. Requires a switch that is 802.3ad compliant.

balance-tlb or 5 — Sets a Transmit Load Balancing (TLB) policy for fault tolerance and load balancing. The outgoing traffic is distributed according to the current load on each slave interface. Incoming traffic is received by the current slave. If the receiving slave fails, another slave takes over the MAC address of the failed slave.

balance-alb or 6 — Sets an Active Load Balancing (ALB) policy for fault tolerance and load balancing. Includes transmit and receive load balancing for IPV4 traffic. Receive load balancing is achieved through ARP negotiation.

You've already eliminated active-backup since it doesn't give you the performance gains you're after.

broadcast won't give you performance gains, and 802.3ad is out since you can't do that with disparate switches.

So that leaves you with balance-rr, balance-xor, balance-tlb or balance-alb. Without knowing your workload, you'll be best off to test each method to see which gives you the best performance for your workload.

Don't forget you can tweak xmit_hash_policy as well which may improve your performance in balance-xor mode.