storm-test | mesh-no-stp | mesh-no-stp-lesser
try to survive without stp
we are here assuming simple L2 switchen, with STP disabled. you might use any L2 switch without STP –or– managed enough to manually disable STP, as we did here with GNS3 Etherswitches.
this poor-man’s load-balance architecture is good enough for a cluster of some kind, when there’s no additional or indirect link between the switchen.
ESW doesn’t offer LACP nor VSS nor MLAG/mlacp. balancing without HA is the best we can get here.
we’ve tried balance-rr mode but there’s packet loss.
it expects an aggregate on the other end, not sure which one.
anyhow we are stuck without true and redundant link aggregation because:
the balance-xor, alb and tlb modes seem to balance (not failover) fine and bring similar results.
the default for tlb is dynamic but we don’t need that, as all links are equal.
the architecture described above does not necessarily provoke a full-blown storm, as the leaf-nodes do not forward packets, even broadcast packets. worst thing you would see is duplicate broadcast packets on the leaf-nodes because of the multiple pathes. beware however, if you add yet another path between ESW1 and ESW2, you would provoke a storm indeed.

2 x Etherswitch (c3725 with NM-16ESW) 3 x Slackware Linux (15.0 64-bit)
with L1 links as such
esw1 fa1/0 -- slackware1 eth1 esw2 fa1/0 -- slackware1 eth2 esw1 fa1/1 -- slackware2 eth1 esw2 fa1/1 -- slackware2 eth2 esw1 fa1/2 -- slackware3 eth1 esw2 fa1/2 -- slackware3 eth2 esw1 fa1/4 -- esw2 fa1/4
disable STP completely for the overall default vlan
on both etherswitches
(config) no banner exec no spanning-tree vlan 1
eventually force the interface to show up as connected e.g.
(exec) show interfaces status
(config) int range fa1/0 - 1 shutdown no shutdown
on all the slackware nodes
echo alias bond0 bonding > /etc/modprobe.d/bonding.conf modprobe bonding echo balance-xor > /sys/class/net/bond0/bonding/mode #echo balance-tlb > /sys/class/net/bond0/bonding/mode #echo balance-tlb > /sys/class/net/bond0/bonding/mode #echo 0 > /sys/class/net/bond0/bonding/tlb_dynamic_lb echo layer3+4 > /sys/class/net/bond0/bonding/xmit_hash_policy ifconfig bond0 10.5.5.1/24 up #ifconfig bond0 10.5.5.2/24 up #ifconfig bond0 10.5.5.3/24 up echo +eth1 > /sys/class/net/bond0/bonding/slaves echo +eth2 > /sys/class/net/bond0/bonding/slaves ifconfig eth1 up ifconfig eth2 up #ethtool -s eth1 speed 10 duplex full autoneg off #ethtool -s eth2 speed 10 duplex full autoneg off
check
cat /proc/net/bonding/bond0
sniff the link between the two switchen. there should be no storm unless you add a secondary link or an indirect path between the switchen.
# from node2 or 3
    ping -c1 10.5.5.1
    ping -b -c1 10.5.5.255
since we have multiple pathes, there should be duplicate broadcast packets on the end nodes.
# node1
tcpdump -i any
# from node2 or 3
    ping -c1 10.5.5.1
    ping -b -c1 10.5.5.255
see mesh-no-stp-load
see mesh-no-stp-ha
https://www.kernel.org/doc/html/latest/networking/bonding.html