MLVPN icon indicating copy to clipboard operation
MLVPN copied to clipboard

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

Open aurelg opened this issue 7 years ago • 0 comments

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:

  • I can ping the public IP of the server from the client, from both interface (ie. source routing is working)
  • I can ping the LAN IP of the client from my server
  • I can even ping & download, but there's no speedup compared to a single connection (more on that below)

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

  • client:

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

  • server:

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):

  • client:

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%

  • server:

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:

  • client mlvpn0.conf:

[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

  • server mlvpn0.conf:

[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

  • routes on the client:

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

  • routes on the server:

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. :)

aurelg avatar Jan 14 '18 19:01 aurelg