Ysurac / openmptcprouter

OpenMPTCProuter is an open source solution to aggregate multiple internet connections using Multipath TCP (MPTCP) on OpenWrt
https://www.openmptcprouter.com/
GNU General Public License v3.0
1.86k stars 269 forks source link

WANs on native VLAN not working, system log filled with errors (v0.60beta1-6.1) #2975

Closed peterxxl closed 10 months ago

peterxxl commented 1 year ago

Expected Behavior

new install with vanilla config with minor changes (configure 3 WANs, timezone, LAN IP) 0.61 with new kernel on x86_64 VPS upgraded according to the tutorial

this is new machine I recently purchased from Amazon so I am trying it with the new version Amazon link to the machine

I am running the stable version on RPi4 for half a year now without hiccup - I have acquired the new x86_64 hardware to bump up the performance

Current Behavior

limited testing, but experiencing this so far:

WANs don't work on native VLAN, neither DHCP not static IP. it only works when VLAN is anything but 1 (or empty - default), the unit has 6 physical ports

kernel log gets filled with hundreds of these messages

[ 1334.929371] MPTCP: addr_signal error, rm_addr=4
[ 1334.929468] MPTCP: addr_signal error, rm_addr=4
[ 1334.929509] MPTCP: addr_signal error, rm_addr=4
[ 1334.929550] MPTCP: addr_signal error, rm_addr=4
[ 1334.929590] MPTCP: addr_signal error, rm_addr=4
[ 1334.929646] MPTCP: addr_signal error, rm_addr=4
[ 1334.929686] MPTCP: addr_signal error, rm_addr=4
[ 1334.929726] MPTCP: addr_signal error, rm_addr=4
[ 1334.929778] MPTCP: addr_signal error, rm_addr=4
[ 1334.929817] MPTCP: addr_signal error, rm_addr=4
[ 1334.929884] MPTCP: addr_signal error, rm_addr=4
[ 1334.929942] MPTCP: addr_signal error, rm_addr=4
[ 1335.094446] MPTCP: addr_signal error, rm_addr=4
[ 1335.094585] MPTCP: addr_signal error, rm_addr=4
[ 1335.094635] MPTCP: addr_signal error, rm_addr=4
[ 1335.094680] MPTCP: addr_signal error, rm_addr=4
[ 1335.094764] MPTCP: addr_signal error, rm_addr=4
[ 1335.094805] MPTCP: addr_signal error, rm_addr=4
[ 1335.094866] MPTCP: addr_signal error, rm_addr=4
[ 1335.095119] MPTCP: addr_signal error, rm_addr=4
[ 1335.095167] MPTCP: addr_signal error, rm_addr=4
[ 1335.095348] MPTCP: addr_signal error, rm_addr=4
[ 1335.095390] MPTCP: addr_signal error, rm_addr=4
[ 1335.095592] MPTCP: addr_signal error, rm_addr=4

Specifications

Kernel Version:6.1.46 Model:YANLING YL-CLU6L-V1 Architecture:Intel(R) Core(TM) i3-10110U CPU @ 2.10GHz

Ysurac commented 1 year ago

First, we can check the configuration: When you have VLAN set, what do you have, using SSH on the router, in uci show network and ip a ? There is many ports on this computer, sometimes VLANs are used internally for each port of a internal switch so they can't be set again.

peterxxl commented 1 year ago

Hello

Here are the results of those commands.

eth1 to eth4 (WAN1 to WAN4) don't need VLAN (each is one cable with untagged traffic plugged in physical port on the device), but without it, it doesn't work, so I have to go thru switch first to tag the traffic on them.

root@OpenMPTCProuter:~# uci show network
network.loopback=interface
network.loopback.proto='static'
network.loopback.ipaddr='127.0.0.1'
network.loopback.netmask='255.0.0.0'
network.loopback.multipath='off'
network.loopback.device='lo'
network.loopback.metric='8'
network.globals=globals
network.globals.ula_prefix='fd68:d97c:4c46::/48'
network.globals.multipath='enable'
network.globals.mptcp_path_manager='fullmesh'
network.globals.mptcp_scheduler='blest'
network.globals.congestion='bbr'
network.globals.mptcp_checksum='0'
network.globals.mptcp_debug='0'
network.globals.mptcp_syn_retries='2'
network.globals.mptcp_subflows='8'
network.globals.mptcp_add_addr_accepted='1'
network.globals.mptcp_add_addr_timeout='120'
network.globals.mptcp_pm_type='0'
network.globals.mptcp_disable_initial_config='0'
network.globals.mptcp_force_multipath='1'
network.globals.mptcpd_enable='0'
network.globals.mptcp_fullmesh_num_subflows='1'
network.globals.mptcp_fullmesh_create_on_err='1'
network.globals.mptcp_ndiffports_num_subflows='1'
network.lan=interface
network.lan.proto='static'
network.lan.ipaddr='10.2.0.1'
network.lan.netmask='255.255.255.0'
network.lan.device='eth0'
network.lan.ifname='eth0'
network.lan.metric='9'
network.lan.ipv6='0'
network.lan.delegate='0'
network.lan.addlatency='0'
network.lan.txqueuelen='2000'
network.lan.multipath='off'
network.lan.ip4table='lan'
network.lan.defaultroute='0'
network.lan.peerdns='0'
network.lan.label='LAN'
network.lan_rule=rule
network.lan_rule.lookup='lan'
network.lan_rule.priority='100'
network.wan2=interface
network.wan2.device='eth2.52'
network.wan2.proto='dhcp'
network.wan2.ip4table='wan'
network.wan2.multipath='on'
network.wan2.defaultroute='0'
network.wan2.metric='11'
network.wan2.peerdns='0'
network.wan2.ipv6='0'
network.wan2.label='52'
network.wan3=interface
network.wan3.device='eth3.53'
network.wan3.proto='dhcp'
network.wan3.ip4table='wan'
network.wan3.multipath='on'
network.wan3.defaultroute='0'
network.wan3.metric='12'
network.wan3.peerdns='0'
network.wan3.ipv6='0'
network.wan3.label='53'
network.wan4=interface
network.wan4.device='eth4.54'
network.wan4.proto='dhcp'
network.wan4.ip4table='wan'
network.wan4.multipath='on'
network.wan4.defaultroute='0'
network.wan4.ipv6='0'
network.wan4.peerdns='0'
network.wan4.metric='13'
network.wan4.label='54'
network.wan5=interface
network.wan5.device='eth5.55'
network.wan5.proto='dhcp'
network.wan5.ip4table='wan'
network.wan5.multipath='on'
network.wan5.defaultroute='0'
network.wan5.ipv6='0'
network.wan5.peerdns='0'
network.wan5.metric='14'
network.wan5.label='55'
network.wan6=interface
network.wan6.device='eth5.56'
network.wan6.proto='dhcp'
network.wan6.ip4table='wan'
network.wan6.multipath='on'
network.wan6.defaultroute='0'
network.wan6.ipv6='0'
network.wan6.peerdns='0'
network.wan6.metric='15'
network.wan6.label='56'
network.wan7=interface
network.wan7.device='eth5.61'
network.wan7.proto='dhcp'
network.wan7.ip4table='wan'
network.wan7.multipath='on'
network.wan7.defaultroute='0'
network.wan7.ipv6='0'
network.wan7.peerdns='0'
network.wan7.metric='16'
network.wan7.label='61'
network.wan8=interface
network.wan8.device='eth5.62'
network.wan8.proto='dhcp'
network.wan8.ip4table='wan'
network.wan8.multipath='on'
network.wan8.defaultroute='0'
network.wan8.metric='17'
network.wan8.peerdns='0'
network.wan8.ipv6='0'
network.wan8.label='62'
network.wan1=interface
network.wan1.device='eth1.51'
network.wan1.proto='dhcp'
network.wan1.ip4table='wan'
network.wan1.multipath='master'
network.wan1.defaultroute='0'
network.wan1.addlatency='0'
network.wan1.metric='10'
network.wan1.peerdns='0'
network.wan1.ipv6='0'
network.wan1.label='51'
network.wan1_dev=device
network.wan1_dev.name='eth1.51'
network.wan1_dev.txqueuelen='1000'
network.omrvpn=interface
network.omrvpn.device='tun0'
network.omrvpn.proto='none'
network.omrvpn.ip4table='vpn'
network.omrvpn.multipath='off'
network.omrvpn.leasetime='12h'
network.omrvpn.type='tunnel'
network.omrvpn.txqueuelen='100'
network.omrvpn.metric='1500'
network.tun0=device
network.tun0.name='tun0'
network.tun0.mtu='1500'
network.omr6in4=interface
network.omr6in4.proto='6in4'
network.omr6in4.ip4table='vpn'
network.omr6in4.multipath='off'
network.omr6in4.ipaddr='10.255.255.2'
network.omr6in4.peeraddr='10.255.255.1'
network.omr6in4.gateway='fe80::a00:1/126'
network.omr6in4.ip6addr='fe80::a00:2/126'
network.omr6in4.auto='0'
network.omr6in4.metric='1201'
network.lan_dev=device
network.lan_dev.name='eth0'
network.wan2_dev=device
network.wan2_dev.name='eth2.52'
network.wan3_dev=device
network.wan3_dev.name='eth3.53'
network.wan3_dev.txqueuelen='1000'
network.wan4_dev=device
network.wan4_dev.name='eth4.54'
network.wan4_dev.txqueuelen='1000'
network.wan5_dev=device
network.wan5_dev.name='eth5.55'
network.wan5_dev.txqueuelen='1000'
network.wan6_dev=device
network.wan6_dev.name='eth5.56'
network.wan6_dev.txqueuelen='1000'
network.wan7_dev=device
network.wan7_dev.name='eth5.61'
network.wan7_dev.txqueuelen='1000'
network.wan8_dev=device
network.wan8_dev.name='eth5.62'
network.wan8_dev.txqueuelen='1000'
root@OpenMPTCProuter:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ip6tnl0@NONE: <NOARP> mtu 1452 qdisc noop state DOWN group default qlen 1000
    link/tunnel6 :: brd :: permaddr 2a9a:ece7:44cf::
3: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
    link/sit 0.0.0.0 brd 0.0.0.0
4: gre0@NONE: <NOARP> mtu 1476 qdisc noop state DOWN group default qlen 1000
    link/gre 0.0.0.0 brd 0.0.0.0
5: gretap0@NONE: <BROADCAST,MULTICAST> mtu 1462 qdisc noop state DOWN group default qlen 1000
    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
6: erspan0@NONE: <BROADCAST,MULTICAST> mtu 1450 qdisc noop state DOWN group default qlen 1000
    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
7: ip6gre0@NONE: <NOARP> mtu 1448 qdisc noop state DOWN group default qlen 1000
    link/gre6 :: brd :: permaddr a21b:8466:3dd2::
8: teql0: <NOARP> mtu 1500 qdisc noop state DOWN group default qlen 100
    link/void 
9: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:e0:97:1d:4f:c4 brd ff:ff:ff:ff:ff:ff
    inet 10.2.0.1/24 brd 10.2.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::2e0:97ff:fe1d:4fc4/64 scope link 
       valid_lft forever preferred_lft forever
10: eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 00:e0:97:1d:4f:c5 brd ff:ff:ff:ff:ff:ff
11: eth2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 00:e0:97:1d:4f:c6 brd ff:ff:ff:ff:ff:ff
12: eth3: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 00:e0:97:1d:4f:c7 brd ff:ff:ff:ff:ff:ff
13: eth4: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 00:e0:97:1d:4f:c8 brd ff:ff:ff:ff:ff:ff
14: eth5: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 00:e0:97:1d:4f:c9 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::2e0:97ff:fe1d:4fc9/64 scope link 
       valid_lft forever preferred_lft forever
167: eth2.52@eth2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state LOWERLAYERDOWN group default qlen 1000
    link/ether 00:e0:97:1d:4f:c6 brd ff:ff:ff:ff:ff:ff
168: eth3.53@eth3: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state LOWERLAYERDOWN group default qlen 1000
    link/ether 00:e0:97:1d:4f:c7 brd ff:ff:ff:ff:ff:ff
169: eth4.54@eth4: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state LOWERLAYERDOWN group default qlen 1000
    link/ether 00:e0:97:1d:4f:c8 brd ff:ff:ff:ff:ff:ff
174: eth1.51@eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state LOWERLAYERDOWN group default qlen 1000
    link/ether 00:e0:97:1d:4f:c5 brd ff:ff:ff:ff:ff:ff
189: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 500
    link/none 
    inet 10.255.255.2 peer 10.255.255.1/32 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::536f:c1ab:f5f3:ac0f/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever
192: ifb4tun0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 32
    link/ether be:80:b5:a4:9d:40 brd ff:ff:ff:ff:ff:ff
205: eth5.55@eth5: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state LOWERLAYERDOWN group default qlen 1000
    link/ether 00:e0:97:1d:4f:c9 brd ff:ff:ff:ff:ff:ff
206: eth5.56@eth5: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state LOWERLAYERDOWN group default qlen 1000
    link/ether 00:e0:97:1d:4f:c9 brd ff:ff:ff:ff:ff:ff
207: eth5.61@eth5: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state LOWERLAYERDOWN group default qlen 1000
    link/ether 00:e0:97:1d:4f:c9 brd ff:ff:ff:ff:ff:ff
208: eth5.62@eth5: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state LOWERLAYERDOWN group default qlen 1000
    link/ether 00:e0:97:1d:4f:c9 brd ff:ff:ff:ff:ff:ff
Ysurac commented 1 year ago

I don't really understand what you mean. It's not working with and without VLANs no ? And why do you have 4 VLANs on eth5 ?

Ysurac commented 1 year ago

I also see it's a I225-V, know to have many issues. Some are fixed by setting "Force link" on the interface, check https://github.com/Ysurac/openmptcprouter/issues/2584

peterxxl commented 1 year ago

With VLANs (VLAN ID 2 or more) it seems to work... it doesn't work when I leave the VLAN field empty (default VLAN) or fill in VLAN 1

in this case it only shows the error in the log which I sent you [ 1334.929942] MPTCP: addr_signal error, rm_addr=4

when I use native VLANs, the interface just goes up and down every 10 seconds or so and never connects

I am just plying with the configurations now, that's why there are 4 VLANs on eth5.... I have 8 internet lines, on rPi4 thy are all on 1 physical interface tagged as VLANs but the performance is not the best ... so the point of setting this device up is there will be 1 WAN per per physical port on ports eth1 till eth4 and the rest will be on VLANs similar to what I have on rPi4

peterxxl commented 1 year ago

I also see it's a I225-V, know to have many issues. Some are fixed by setting "Force link" on the interface, check #2584

I am reading thru this now... seems like the same issue....

Ysurac commented 1 year ago

VLAN 1 is default VLAN of all ports. I hope Force link will solve your issue... Else if you find another workaround tell me, I22x-V chipset is on a lot of mini PCs but it's broken by design (I22x not -V are fixed).

peterxxl commented 1 year ago

Limited testing with preliminary results:

there are 2 workarounds that seem to work for now:

  1. use any other than native VLAN (additional hardware maybe needed for VLAN tagging)
  2. "Force Link" in Network > Interfaces > Edit > Advanced Settings

I am just testing this in my home with limited WAN options ... I will go to my office later to test real world conditions with all 8 WANs running and report back

peterxxl commented 1 year ago

So after few hours of testing, I have it running on my main network for real world stress test. The config is same as posted earlier + the "Force Link" Eth 0 is LAN Eth 1 thru 4 are 4 WANs, each on native VLAN with "Force Link" enabled Eth 5 has 4 VLANs which are another 4 WANs and I have enabled "Force Link" on each just to be sure, even thou it seemed to work without it

The log is still full of MPTCP: addr_signal error, rm_addr=4 but it seem to be working

My main issue now is that I don't see the performance gains I was hoping for as opposed to rPi4.

The speeds on each WAN are quite variable, but usually between 150 and 250 Mbps on download and 20 to 50 Mbps on upload when tested directly.

When running thru OMR, the max. I usually get is 120 down and 80 up. These result are comparable to rPi4 with just one LAN port with 9 VLANs on it. I am thinking VPS might be the slow one here.

I am still using OMR for now instead of using just one WAN ... mainly for redundancy and stability. I was not expecting 1 Gbps+ speeds, but at least 500 Mbps+.

I have tried autorate, but seems to be performing slightly better without it.

How can I test my VPS speed? Is there command on the VPS to test against the same servers like the router to find out where the bottle neck is?

Any recommended settings to increase speed in the 0.60beta1 with 6.1 kernel version? I see lot of the settings I played with in the old release are gone now. Right now, everything is default.

Thanks for all the work you put into this project... it's been a lifesaver in the past year or so...

peterxxl commented 1 year ago

Another update

So the speeds were definitely problem of the VPS... I am on my 6th VPS now. I haven't found many great options in Chile, but in the end the one I am using now (Vultr) was actually on the list. Netflix doesn't seem to be working at all and it's bit expensive, but the speeds can't compare with the previous ones I tried.

I am getting close to 600 Mbps down now on the new hardware... much better.

github-actions[bot] commented 10 months ago

This issue is stale because it has been open 90 days with no activity. Remove stale label or comment or this will be closed in 5 days