the “disable stp” mesh attempt

storm-test | mesh-no-stp | mesh-no-stp-lesser

try to survive without stp

descr

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.

warning // lessons learned

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:

  1. none but PAgP is available.
  2. we’re in a mesh and the aggregate would have to be multichassis

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.

architecture

IMAGE HERE

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

cli setup

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

bonding setup

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

storm acceptance

no full-blown storm

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

leaf-node packet duplicates

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

throughput & ha acceptance

see mesh-no-stp-load

see mesh-no-stp-ha

resources

https://www.kernel.org/doc/html/latest/networking/bonding.html


HOME | GUIDES | LECTURES | LAB | SMTP HEALTH | HTML5 | CONTACT
Licensed under MIT