bonding without switch link aggregation

I have some linux machines that I am trying to increase the throughput to on a single connection. They connect to a switch with two 1GbE lines and the switch does not have Link Aggregation support for these machines. I have tried bonding with balance-rr, balance-alb, but the machines can only receive at 1 Gbps. However, with the bonding, the machines can send to two other machines at 1 Gbps each, totaling 2 Gbps, but each machine can still only receive at 1 Gbps.

These are very powerful machines and CPU usage is low, I have also increased socket sizes, queue length, etc to no avail.

balance-alb says it doesn't need special switch support but I still only receive at 1 Gbps. Is there any other option or way to get it working? Has anyone heard of or implemented IP aggregation for this purpose? What about manually assigning the table to have two ports have the same IP address. Or if the router doesn't like two ports with 1 MAC address, what about creating VLANs to trick it? two switches (with VLAN) and have the same MAC address on each switch to simulate LAG? Does LINUX have an option to combine two ethernet lines with different mac addresses? IP aggregation?

using intel NICs with e1000 drivers which i'm told support balance-alb.

hi,

wow, this is new :slight_smile:
can i have that balance-alb link? seems interesting.

i'm not clear about this

is that a typo or perhaps you do have any other idea?

heh sorry, yeah that was a typo.

scroll down to mode 6, balance alb
LiNUX Horizon - Bonding (Port Trunking)
Tips and Tuning for Ethernet Bonding With Linux

hey, thanks for the link :slight_smile:

btw,
i'm not too sure about your setup, but i'm thinking like this - so please do CMIIW :

machine1 ====== sw0 ------- machine2
                   ------- machine3

or, perhaps like this?

machine1 ===== sw0 ===== machine2

It is like your second diagram. Each machine has two 1gbE lines going into it.

I've found some stuff on TCP socket striping in the application or session layer that make the program thinks it has opened one socket, but the program opens more. Has anyone had experience with it? It could be easily spoofed to switch the IP it is sent to. Something with iproute, but I think it only alternates with TCP flow.