as older posts didn’t go into the correct direction (can be seen here and here), I’d like to start that topic again.
Theory:
a) SoC is connected to 3 GbE-lanes:
eth0 (lan0-lan3) connected to port 5
eth1 (wan) - SoC-connection not visible to switch configuration
eth2 (lan4) connected to port 6
As eth1 should be used for up to 1GbE WAN-connection one could use eth0 and eth2 to bond/aggregate traffic.
I do not expect the benefit to be utmost high, but hey, it should be better than just separating traffic via VLANs.
Reason to do so for me is to connect a smart switch to get higher connection speeds.
b) Existing package kmod-bonding:
Kernel supports bonding (existing /lib/modules/4.4.119-[…]/bonding.ko)
Searching google for ““kmod-bonding” openwrt” there is only a couple of entries:
So it seems to me no one ever had an openwrt device capable of using that
First try was to just use rc.local to echo necessary commands:
ifconfig bond0 down
echo 802.3ad > /sys/devices/virtual/net/bond0/bonding/mode
echo fast > /sys/devices/virtual/net/bond0/bonding/lacp_rate
echo layer3+4 > /sys/devices/virtual/net/bond0/bonding/xmit_hash_policy
ifconfig bond0 up
echo +eth0 > /sys/devices/virtual/net/bond0/bonding/slaves
echo +eth2 > /sys/devices/virtual/net/bond0/bonding/slaves
reboot -> syslog:
2018-04-17T02:43:17+02:00 info kernel[]: [ 32.219033] bond0: Setting LACP rate to fast (1)
2018-04-17T02:43:17+02:00 info kernel[]: [ 32.219325] bond0: Setting xmit hash policy to layer3+4 (1)
2018-04-17T02:43:17+02:00 info kernel[]: [ 32.229780] 8021q: adding VLAN 0 to HW filter on device bond0
2018-04-17T02:43:17+02:00 info kernel[]: [ 32.231708] bond0: Adding slave eth0
2018-04-17T02:43:17+02:00 err kernel[]: [ 32.231717] bond0: Error: Device is in use and cannot be enslaved
2018-04-17T02:43:17+02:00 err kernel[]: [ 32.237849] bond0: option slaves: unable to set because the bond device is up
2018-04-17T02:53:28+02:00 info kernel[]: [ 30.138315] bond0: Adding slave eth2
2018-04-17T02:53:28+02:00 err kernel[]: [ 30.138326] bond0: eth2 is up - this may be due to an out of date ifenslave
2018-04-17T02:53:28+02:00 info kernel[]: [ 30.162580] IPv6: ADDRCONF(NETDEV_UP): bond0: link is not ready
2018-04-17T02:53:28+02:00 info kernel[]: [ 30.162592] 8021q: adding VLAN 0 to HW filter on device bond0
So it seems ifenslave might be necessary in order to get this working, but infenslave is not available in openwrt/turris repo - do I need to build it myself?
Just blind shot but have you tried to bring device eth0 and eth2 down before enslaving them?
To my understanding doing same with ip utils is something like:
ip l add bond0 type bond
ip l set master bond0 dev eth0
ip l set master bond0 dev eth2
Skipping bond configuration of course.
I am still convinced that ifenslave is not required. Rather I would say that it’s just an old error message from kernel. I suspect that it might have been possible to enslave link that is up in old versions but that at some point changed. So clever coder added this message but that was probably just long time ago when ifenslave was relevant. At least that is my hunch.
ifconfig bond0 down
echo 802.3ad > /sys/devices/virtual/net/bond0/bonding/mode
echo fast > /sys/devices/virtual/net/bond0/bonding/lacp_rate
echo layer3+4 > /sys/devices/virtual/net/bond0/bonding/xmit_hash_policy
ifconfig eth0 down
ifconfig eth2 down
ifconfig bond0 up
ifconfig eth0 up
ifconfig eth2 up
Unfortunately I cannot see logfiles to check what went wrong as I cannot access the device anymore.
Interesting idea, but I am rather investing in fully managed switches in gbit than 10gbit unmanaged fan equiped switches. Makes no sense to me when I have no 10gbe NIC or anything. But years will pass and 10gbit will happen. Cetin is slowly making 500/50gbe bonded lanes for homes a reality. when we get over 1gbe we will need at least n-base-T. But back to topic. Since I do have switch with LAG and LACP I would be glad to use 2 ports as one. Even though this is just to accomodate for connection to WAN and HDD at the same time.
i agree that it would be nice to have bonding working.
on the other hand;
there are numerous fanless, managed nbase-t switches available for small budget.
first consumer mainboard with 10gig onboard was already a few years ago …
If I didn’t already buy my complete hardware and or had more nbase-t ports available, this adapter would be an option for me.
But as I don’t want to spend another 400€ on another switch, simple bonding would be much more (cost) effective
I am finaly going with LAG (2x) between switches and STP with one active line to router and one blocked.
Anyway There is no good reason to have NAS on router. It is terible decision in more complex network built on enterprise grade network devices.
So with no bonding I can do quite well still.
Another question rising from this is how to do some QOS on router turris omnia in order to not alow any bottleneck for internet devices. With my down and up link it is no concern but I do want to set it well.
qos: install luci-app-sqm and make one instance of piece_of_cake on your wan interface with down/up values about 10% below your measured maximum transferspeed.
There’s only use for 2 GBit/s accumulated ethernet network speed (putting aside TO NAS solution which is bad idea as you correctly pointed out) on TO:
1 GBit/s for WAN
1 GBit/s for WLAN (gross rates of 5 GHz wave 2 with multiple users accumulating traffic should be somewhat below 1 GBit/s, adding the traffic for 2,4 GHz users you would be around 1 GBit/s)
So there’s actually no need 5 GBit/s in normal setups.
Therefore bonding would be completely satisfying our needs.
The only setup going beyond 2 GBit/s I could imagine would be installing two 5 GHz wave2-cards and maxing them out with MU-MIMO. But in those cases you would normally better get some more access points…
Btw: maxing out the USB3-ports is bad idea on TO if you have 2,4 GHz WLAN-card installed…
It looks like if the first end-user item is on its way: QNAP QNA-UC5G1T using a Marvell Technology, Inc. | Essential technology, done right . But it has yet to prove vlan-support (etc; no docs available) and seems to be in need of a dedicated driver (which I do not now how we should get it into TO).
But anyhow I deem it really unnecessary to have link speeds beyond 2GBE (see above).