Reply To: Very bad bonding performance

Forums Network Management Linux and Networking Very bad bonding performance Reply To: Very bad bonding performance


Is there any update on this? Did you solve your problem BuddyButterfly?

I am facing the same issue: There are two (or more) ADSL lines, each with a theoretical bandwidth of 16 Mb/s down and 1 Mb/s up. Over each ADSL line an OpenVPN connection is established to a server in a datacenter with a 100Mb/s link. This server acts as a gateway. The OpenVPN connections are bonded together with the linux bonding module mode 0, so that every connection can consume the whole bandwidth.

I’m struggling with this since weeks without finding any viable solution, so maybe someone with more experience can shed some light on this.

First I’m going to provide some speed measurements, which were made downloading a single file over FTP . The file was transferred from the server in the datacenter to the machine on the other side of the VPN, so there were no other stations except Internet routers involved.

  • Over an OpenVPN connection without any bonding: 13,3 Mb/s download with 0,28 Mb/s upload inside the tunnel
  • Over a bond which consists of 1 single VPN connection (pointless but just for testing): 13,2 Mb/s download with 0,28 Mb/s upload inside the tunnel
  • Over a bond which consists of 2 VPN connections: 15 Mb/s download with 0,87 upload inside the tunnel

As you can see, the upload of the machine which was receiving the file is increasing tremendously as soon as a second connection is added to the bond. Why is this happening? Or actually: How can this be solved?

The above numbers are all taken inside the tunnel. Since OpenVPN adds about 30 bytes per packet(!), replys are small and a lot of them are sent, this is increasing the load on the upload about 30% to 50%. The ADSL lines only have 1 Mb/s upload, so I think that my download speed with the bond is not higher because the replys of the receiving machine get dropped since the upload is saturated.

Also the speed of the bonded connection with 2 VPN slaves is very unsteady. Most of the time its about 11-14 Mb/s, sometimes it goes up to 25 Mb/s for a few seconds just to fall down to 2 Mb/s shortly after. I assume that with 25 Mb/s downspeed the machine can’t get out its replys fast enough, because the upload is full, and then the sender is decreasing the rate again. Downloading multiple files at once doesn’t make a difference either… Uploading files on the other hand works fine with about 1,6 Mb/s over two lines.

I already tried tinkering with tcp_reordering, OpenVPN queue length and buffer sizes, all to no avail. OpenVPN is running with “proto udp, auth none, no-iv, no-replay” and without tls-cipher or pings to minimize its overhead. Can it be lowered even more or are there other tunnel solutions which provide a smaller overhead?