Hi everyone,
I have a zyxel XGS2210 switch and wanted to set up LACP to a Belkin RT3200 (Linksys E8450) running OpenWrt 22.03.1 r19777-2853b6d652 / LuCI openwrt-22.03 branch git-22.245.77528-487e58a.
The LACP seem to negotiate the link correctly, but the troughput I get is basically none - the web GUI of the switch, very basic, times out most of the time - when it doesn't every page loads few minutes.
Current config on openwrt:
root@openwrt:~# uci show network.bond0
network.bond0=interface
network.bond0.proto='bonding'
network.bond0.ipaddr='172.16.1.1'
network.bond0.netmask='255.255.255.0'
network.bond0.slaves='lan1' 'lan2'
network.bond0.bonding_policy='802.3ad'
network.bond0.min_links='0'
network.bond0.ad_actor_sys_prio='65535'
network.bond0.ad_select='stable'
network.bond0.lacp_rate='slow'
network.bond0.xmit_hash_policy='layer2+3'
network.bond0.all_slaves_active='0'
network.bond0.link_monitoring='off'
network.bond0.delegate='0'
Luci does not seem to allow not to set an IP on the bond, however bond is added to br-lan along with rest of the ports:
network.@device[0]=device
network.@device[0].name='br-lan'
network.@device[0].type='bridge'
network.@device[0].ipv6='0'
network.@device[0].priority='4096'
network.@device[0].ports='bond-bond0' 'lan3' 'lan4'
...
network.lan.device='br-lan'
network.lan.proto='static'
network.lan.ipaddr='192.168.1.1'
So it should be fine, right?
The lacp seem
to work - please correct me if I misunderstand the output:
cat /proc/net/bonding/bond-bond0
Ethernet Channel Bonding Driver: v5.10.146
Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer2+3 (2)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Peer Notification Delay (ms): 0
802.3ad info
LACP rate: slow
Min links: 0
Aggregator selection policy (ad_select): stable
System priority: 65535
System MAC address: d8:ec:5e:44:09:97
Active Aggregator Info:
Aggregator ID: 2
Number of ports: 2
Actor Key: 9
Partner Key: 1
Partner Mac Address: 60:31:97:7a:c2:d7
Slave Interface: lan1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: d8:ec:5e:44:09:97
Slave queue ID: 0
Aggregator ID: 2
Actor Churn State: monitoring
Partner Churn State: monitoring
Actor Churned Count: 0
Partner Churned Count: 0
details actor lacp pdu:
system priority: 65535
system mac address: d8:ec:5e:44:09:97
port key: 9
port priority: 255
port number: 1
port state: 61
details partner lacp pdu:
system priority: 65535
system mac address: 60:31:97:7a:c2:d7
oper key: 1
port priority: 1
port number: 2
port state: 61
Slave Interface: lan2
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: d8:ec:5e:44:09:97
Slave queue ID: 0
Aggregator ID: 2
Actor Churn State: monitoring
Partner Churn State: monitoring
Actor Churned Count: 0
Partner Churned Count: 0
details actor lacp pdu:
system priority: 65535
system mac address: d8:ec:5e:44:09:97
port key: 9
port priority: 255
port number: 2
port state: 61
details partner lacp pdu:
system priority: 65535
system mac address: 60:31:97:7a:c2:d7
oper key: 1
port priority: 1
port number: 1
port state: 61
I can ping switch IP from the openwrt just fine and curl is snappy, forwarding me to the login page:
ping 192.168.2.232
PING 192.168.2.232 (192.168.2.232): 56 data bytes
64 bytes from 192.168.2.232: seq=0 ttl=254 time=1.081 ms
64 bytes from 192.168.2.232: seq=1 ttl=254 time=0.563 ms
64 bytes from 192.168.2.232: seq=2 ttl=254 time=0.541 ms
64 bytes from 192.168.2.232: seq=3 ttl=254 time=0.578 ms
64 bytes from 192.168.2.232: seq=4 ttl=254 time=0.592 ms
curl -v http://192.168.2.232
> GET / HTTP/1.1
> Host: 192.168.2.232
> User-Agent: curl/7.85.0
> Accept: */*
>
< HTTP/1.1 303 See Other
< Location: http://192.168.2.232/login.html
< Content-Length: 0
< Server: Allegro-Software-RomPager (lol)
< X-Frame-Options: SAMEORIGIN
< X-Content-Type-Options: nosniff
< Connection: close
<
I am unable to reach the http or ping from the local network (other hosts connected to the dumb switch connected to the port in the same br-lan as the bond0)
ubuntu@test:~$ ping 192.168.2.232
PING 192.168.2.232 (192.168.2.232) 56(84) bytes of data.
^C
--- 192.168.2.232 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2034ms
ubuntu@test:~$ curl -v http://192.168.2.232
* Trying 192.168.2.232:80...
* connect to 192.168.2.232 port 80 from 192.168.1.23 port 53784 failed: No route to host
* Failed to connect to 192.168.2.232 port 80 after 3085 ms: Couldn't connect to server
* Closing connection
curl: (7) Failed to connect to 192.168.2.232 port 80 after 3085 ms: Couldn't connect to server
My traceroute [v0.95]
transmission (192.168.1.23) -> 192.168.2.232 (192.168.2.232) 2025-06-08T12:44:57+0000
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. (no route to host)
Any ideas what am I doing wrong? Is my routing broken?