zehome / MLVPN

Multi-link VPN (ADSL/SDSL/xDSL/Network aggregation / bonding)
http://www.mlvpn.fr/
BSD 2-Clause "Simplified" License
518 stars 127 forks source link

Linux / aggregating two DSL connection / packet loss on one interface #107

Open aurelg opened 6 years ago

aurelg commented 6 years ago

Thank you very much for mlvpn.

I compiled 2.3.2 from source both on the client (raspberry pi running raspbian) and the server (VPS server running Ubuntu Xenial 16.04.3). I then followed the guide "Linux with two ADSL uplinks for agregation and failover". It's almost working:

Here are the logs when I start mlvpn, keeping only INFO:

2018-01-14T19:08:38 [INFO/config] new password set 2018-01-14T19:08:38 [INFO/config] reorder_buffer_size changed from 0 to 64 2018-01-14T19:08:38 [INFO/config] dsl1 tunnel added 2018-01-14T19:08:38 [INFO/config] dsl2 tunnel added 2018-01-14T19:08:38 [INFO] created interface `mlvpn0' 2018-01-14T19:08:38 [INFO] dsl1 bind to 192.168.1.253 2018-01-14T19:08:38 [INFO] dsl2 bind to 192.168.2.253 2018-01-14T19:08:38 [INFO/protocol] dsl1 authenticated rtun [dsl1] is up mlvpn0 setup 2018-01-14T19:08:38 [INFO/protocol] dsl2 authenticated rtun [dsl2] is up

2018-01-14T19:08:35 [INFO/config] new password set 2018-01-14T19:08:35 [INFO/config] reorder_buffer_size changed from 0 to 64 2018-01-14T19:08:35 [INFO/config] adsl1 tunnel added 2018-01-14T19:08:35 [INFO/config] adsl2 tunnel added 2018-01-14T19:08:35 [INFO] created interface `mlvpn0' 2018-01-14T19:08:35 [INFO] adsl1 bind to [public IP of the server] 2018-01-14T19:08:35 [INFO] adsl2 bind to [public IP of the server] 2018-01-14T19:08:38 [INFO/protocol] adsl1 new connection -> [public IP DSL1]:54407 2018-01-14T19:08:38 [INFO/protocol] adsl1 authenticated 2018-01-14T19:08:38 [INFO/protocol] adsl2 new connection -> [public IP DSL2]:38593 2018-01-14T19:08:38 [INFO/protocol] adsl2 authenticated

Everything seems to be fine.

However, when I type the last command (wget -4 -O/dev/null http://proof.ovh.net/files/10Gio.dat), I have the following messages in the logs (keeping only INFO):

2018-01-14T19:08:44 [INFO/rtt] dsl1 packet loss reached threashold: 50%/50% 2018-01-14T19:08:44 [INFO/rtt] dsl2 packet loss reached threashold: 50%/50% 2018-01-14T19:08:44 [INFO] all tunnels are down or lossy but fallback is not available 2018-01-14T19:08:45 [INFO/rtt] dsl2 packet loss acceptable again: 0%/50%

2018-01-14T19:08:45 [INFO/rtt] adsl1 packet loss reached threashold: 50%/50%

Here, the dsl2 connection comes back, but not dsl1. The download speed is that of dsl2 alone. Sometimes, dsl1 comes back, but not dsl2, and the download speed is that of dsl1 alone. I tried several MTUs (1452, 1444, 1400, 1000, 800), just in case, with no luck.

Here are some details about my configuration:

[general] statuscommand = "/etc/mlvpn/mlvpn0_updown.sh" mode = "client" mtu = 1400 tuntap = "tun" interface_name = "mlvpn0" timeout = 30 password = "[supersecretpass]" cleartext_data = 0 reorder_buffer_size = 64 loss_tolerence = 50

[dsl1] bindhost = "192.168.1.253" remotehost = "[public IP of the server]" remoteport = 5080

[dsl2] bindhost = "192.168.2.253" remotehost = "[public IP of the server]" remoteport = 5081

[general] statuscommand = "/etc/mlvpn/mlvpn0_updown.sh" tuntap = "tun" mode = "server" interface_name = "mlvpn0" timeout = 30 password = "supersecretpass]" reorder_buffer_size = 64 loss_tolerence = 50 mtu = 1400

[filters]

[adsl1] bindhost = "[public IP of the server]" bindport = 5080

[adsl2] bindhost = "[public IP of the server]" bindport = 5081

ip route show table main: default via [public IP of the server] dev mlvpn0 [public IP of the server] dev mlvpn0 scope link 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.253 # DSL1, eth0 alias 192.168.2.0/24 dev eth0 proto kernel scope link src 192.168.2.253 # DSL2, eth0 alias 192.168.3.0/24 dev eth0 proto kernel scope link src 192.168.3.254 # LAN, eth0 ip route show table adsl1: default via 192.168.1.254 dev eth0 192.168.1.0/24 dev eth0 scope link ip route show table adsl2: default via 192.168.2.254 dev eth0 192.168.2.0/24 dev eth0 scope link

default via [gateway for this VPS] dev ens3 10.8.0.0/30 via 10.8.0.2 dev tun0 # I have an openvpn server running on this server, should fix this 10.8.0.0/24 via 10.8.0.2 dev tun0 # I have an openvpn server running on this server 10.8.0.2 dev tun0 proto kernel scope link src 10.8.0.1 # same [gateway for this VPS] dev ens3 scope link 192.168.3.0/24 dev mlvpn0 scope link # this is relevant to mlvpn (192.168.3.0/24 is the LAN) :)

I'll be happy to provide anyone with extra information. Just ask. Once it's fixed, I'll be happy to work with you on the documentation. :)