I have 4-ports Intel 82571EB Gigabit adapter. It uses e1000e driver. The test machine is running Ubuntu 9.10, clients 9.10/10.04. I tried link aggregation (mode 4) and adaptive load balancing (mode 6). The setup is as follows:
server == 4-port NIC == 4 cat6 cables == Linksys SRW2024 switch == 4 or more clients.
I am testing with iperf and TCP. For mode 4 I setup a LAG in the switch. For mode 6 - no. My tests are:
4 or more clients, all of which have 1 Gbps connections are iperf clients. They run simultaneously. The server already listens for these connections (I had iperf -s running there). The results are the same as the server is running 1 Gbps only and not 4 Gbps combined. If I use one client I get 1 Gbps. If I have 4 or 8 clients the bandwidth per client goes down to 250 or 125 Mbps (these numbers are for illustration purposes only).
Why I can't get 4 Gbps to and out of the server? How I can fix it?
Load balancing across links in a port aggregation group is not done strictly per frame. The switch and the server both use a methodology taking some combination of source mac address, destination mac address, source and/or destination tcp or udp port, etc. into account to prevent out of order packet delivery for a single session.
You might find you'll see the performance you expect if your run multiple iperf sessions on different listening ports with each client connection to a different session...depending on the load balancing methods being employed.
I remember reading somewhere about bonding that it does not scales linearly, so with 4x 1Gbps NICs you should see something around 2.5-2.8 Gbps. If i find the source I'll update my answer.