Drie switches in een driehoek, of een rij switches waarvan de laatste terug naar de eerste gaat: dat is een ring. De bedoeling is duidelijk. Gaat er één kabel stuk, dan is elke switch nog via de andere kant bereikbaar. Het werkt alleen als het spanning tree-protocol precies één pad openzet en de rest dichthoudt, en als jij bepaalt welke switch daarbij het middelpunt is.
Wat de tool doet
Bij Bridge & poorten staat het veld Spanning tree, met de keuzes RSTP, STP, MSTP en uit. RSTP is de standaard en komt in het script terecht als /interface bridge add name=bridge protocol-mode=rstp. Dat gebeurt op elk apparaat in de site, ook op de router.
Teken je op het netwerkbord de ring, dan maakt de tool van elke kabel tussen twee apparaten een trunk met alle VLANs van de site tagged. Dat is voor een ring precies goed: elk pad moet dezelfde VLANs dragen, anders valt bij een kabelbreuk niet het netwerk uit maar één VLAN, wat veel lastiger te vinden is.
De tool merkt de ring ook op. Bij de controles over de hele site verschijnt: de kabel van de ene switch naar de andere maakt een lus, RSTP blokkeert dan een van de paden, het werkt maar sneller wordt het niet. Dat is geen fout, dat is de bevestiging dat je bord klopt met wat je bedoelde.
Hoe RSTP een pad kiest
In drie stappen, in deze volgorde:
- Er wordt een root bridge gekozen. Dat is de switch met de laagste bridge-ID, en die ID is de prioriteit gevolgd door het MAC-adres van de bridge. Iedereen begint op prioriteit 0x8000, dus zonder ingrijpen wint het laagste MAC-adres.
- Elke andere switch kiest zijn root port: de poort met de laagste opgetelde kosten naar de root. Kosten hangen aan de snelheid, dus een 10G-pad telt lichter dan een 1G-pad.
- Per kabel wijst één kant zich aan als designated port. De poort aan de andere kant die geen root port en geen designated port is, gaat in discarding: dat is de blokkerende poort.
Een voorbeeld met drie switches op 10G, waarbij sw-01 de root is:
| Apparaat | Poort | Naar | Rol | Status |
|---|---|---|---|---|
| sw-01 (root) | sfp-sfpplus1 | sw-02 | designated | forwarding |
| sw-01 (root) | sfp-sfpplus2 | sw-03 | designated | forwarding |
| sw-02 | sfp-sfpplus1 | sw-01 | root port | forwarding |
| sw-02 | sfp-sfpplus2 | sw-03 | designated | forwarding |
| sw-03 | sfp-sfpplus1 | sw-01 | root port | forwarding |
| sw-03 | sfp-sfpplus2 | sw-02 | alternate | discarding |
De blokkerende poort zit dus op de kabel het verst van de root, en welke van de twee kanten blokkeert wordt beslist door het laagste MAC-adres. Valt er een kabel weg, dan komt die poort binnen een seconde in forwarding. Dat is het verschil tussen RSTP en het oude STP, dat er dertig seconden over deed.
Zet de root zelf vast
Hier houdt de tool op. Er is geen veld voor bridge-prioriteit, en het script zet er ook geen. Zonder ingrijpen is de root de switch met het laagste MAC-adres, en dat is net zo vaak de goedkoopste switch in een meterkast als de dikke core-switch waar alles op uitkomt. Het netwerk werkt dan wel, maar al het verkeer loopt een omweg en je weet niet welke poort bij een storing dichtgaat.
Zet het daarom met de hand, na het plakken van het script, op de switch die je als middelpunt wilt:
/interface bridge set bridge priority=0x1000
En op de switch die het moet overnemen als de eerste uitvalt:
/interface bridge set bridge priority=0x2000
Noteer dat op het overdrachtsblad. Het is twee regels, en zonder die twee regels is je hele ring een gok.
Let op het MAC-adres van de bridge
Omdat de bridge-ID het MAC-adres bevat, verandert de uitkomst van de verkiezing als dat adres verandert. RouterOS leent standaard het adres van de eerste poort in de bridge, dus een poort die je later uit de bridge haalt kan de root-verkiezing opnieuw laten lopen. In Bridge & poorten staat daarom MAC-adres van de bridge: kies Vastzetten op de MAC van de eerste LAN-poort en het script legt dat adres bij het plakken vast. In een ring is dat geen detail.
Wat je controleert na het plakken
/interface bridge monitor bridgeop elke switch. Alle switches moeten dezelfde root-bridge noemen, en dat moet de switch zijn waar jij prioriteit 0x1000 op hebt gezet./interface bridge port printlaat per poort de rol en de status zien. Je verwacht precies één poort in discarding in de hele ring.- Trek daarna één kabel uit de ring los en kijk of alles bereikbaar blijft. Een ring die je nooit getest hebt is geen ring, het is een aanname.
- Controleer dat de hardware-offload nog aan staat op de ringpoorten: dat zie je aan de H in dezelfde lijst.
Een ring zonder RSTP
Zet je spanning tree op uit en laat je de ring liggen, dan gebeurt het volgende. Eén broadcast, bijvoorbeeld een ARP-vraag, gaat de ring rond en komt terug bij de switch die hem verstuurde. Die stuurt hem opnieuw rond. Er is geen TTL op laag 2, dus dat stopt niet. Binnen seconden staan alle lijnen vol, staat de MAC-tabel van elke switch te flapperen omdat hetzelfde adres van twee kanten binnenkomt, en loopt de CPU vast.
Het vervelende is de manier waarop je het merkt: alles is tegelijk onbereikbaar, ook Winbox, ook het access point waar je op zit, ook de switch die je zou moeten repareren. Je lost het op door een kabel uit de ring fysiek los te trekken, niet vanaf je bureau.
Laat spanning tree dus aan staan, ook als je zeker weet dat er geen lus in zit. De prijs is een paar BPDU's per twee seconden. De prijs van de andere keuze is een avond in een meterkast.
Over MSTP
MSTP staat in de lijst en komt als protocol-mode=mstp in het script, maar de tool genereert geen MST-regio: geen regionaam, geen revisie, geen instanties die VLANs over verschillende bomen verdelen. Kies je MSTP omdat je per VLAN een ander pad wilt, dan moet je die configuratie er zelf onder zetten. Voor een ring van drie tot tien switches met dezelfde VLANs overal doet RSTP wat je nodig hebt.
Verder lezen: Bridge en poorten, Controles op de bekabeling en Twee kantoren, één ontwerp.