Linux – How to achieve 2-gigabit total throughput on Linux using the bonding driver

bondinggigabit-ethernetlinux

For this application I am less concerned with high availability than I am with total throughput. I have one IP address on the server end, and I want to be able to send more than 1-gigabit of traffic out from the server. The server has two 1-gigabit cards and is connected to a pair of switches. The application involves thousands of remote clients around the world connecting to the server (i.e. not a local network).

Currently, bonding is set up using mode 5 (balance-tlb), but the result is that the throughput for each port won't go above 500Mbit/s. How can I get past this limit? Please assume that I have no access to the switches, so I cannot implement 802.3ad.

(I was hoping to add the "bonding" tag, but I cannot add new tags, so "teaming" it is.)

Best Answer

It is unlikely you will achieve 2 gigabit without cooperation at the switch level and even then it might be hard with only a single IP source/destination combination. Most teams are set up for IP hashing which allocates a single NIC path to each source/destination. As such you'll only get 1 gigabit. There are round-robin schemes but you can often find out of order packet arrival that make it undesirable unless both the host and destination support that scheme.