Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
aurelg opened this issue Jan 14, 2018 · 0 comments
Open

Comments

@aurelg
Copy link

aurelg commented Jan 14, 2018

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant