Handleiding

Bonding en LACP

Meerdere kabels als één interface, voor doorvoer of voor redundantie.

Bonding voegt twee of meer poorten samen tot één interface. Je doet dat voor één van twee redenen: meer doorvoer tussen twee apparaten, of doorgaan als er een kabel of een poort uitvalt. Welke van de twee je krijgt hangt af van de modus die je kiest, en in de praktijk vaak ook van het verkeer.

Waar je het vindt

In geavanceerd, onder Bridge en poorten, in de groep Bonding / LACP. De wizard vraagt er niet naar; dit is iets wat je bewust toevoegt.

Je voegt een bond toe en vult vier dingen in: een naam (standaard bond1), een modus, de poorten die erin gaan, en of de bond in de bridge moet.

De modi

  • 802.3ad (LACP), de standaard. De twee kanten praten met elkaar en spreken af welke links meedoen. Dit is de modus die je wilt als het apparaat aan de andere kant LACP ondersteunt, want alleen dan weten beide kanten wanneer een link eruit ligt. Het script zet er transmit-hash-policy=layer-2-and-3 en lacp-rate=1sec bij.
  • balance-xor: verdeelt verkeer over de links met dezelfde hash, maar zonder overleg met de andere kant. Bruikbaar tegenover een switch die wel statische link aggregation kent en geen LACP. Krijgt ook transmit-hash-policy=layer-2-and-3.
  • active-backup: één link draagt alles, de andere staat klaar. Geen extra doorvoer, wel de eenvoudigste vorm van redundantie, en de enige die werkt tegenover een apparaat dat helemaal niets van bonding weet.
  • balance-rr: pakketten om en om over de links. Het geeft één verbinding wel meer snelheid, maar levert pakketten buiten volgorde af, waar TCP slecht tegen kan. Alleen zinvol in een gecontroleerde opstelling.
  • broadcast: alles over alle links tegelijk. Geen doorvoer, maximale redundantie, en nooit wat je bedoelde tenzij je het echt bedoelde.
  • balance-tlb en balance-alb: verdelen verkeer zonder dat de andere kant iets hoeft te doen, tlb alleen uitgaand en alb ook inkomend. Ze leunen op ARP-trucs en zijn gevoeliger voor rare gevallen dan LACP.

Voor elke modus geldt link-monitoring=mii: de bond kijkt of de poort fysiek link heeft. Een kabel die er wel in zit maar niets doorgeeft, merkt hij dus niet; daarvoor heb je LACP nodig, of Netwatch.

Welke poorten

Kies de poorten in het veld Poorten. Ze worden automatisch uit de lijst bridge-poorten gehaald, want een poort kan niet tegelijk lid van een bond en lid van de bridge zijn. De noodpoort mag er niet in: dat is een fout, en terecht, want dan is je noodtoegang afhankelijk van precies de laag die je met een noodpoort wilde omzeilen.

Gebruik poorten die op elkaar lijken. Twee poorten van dezelfde snelheid op dezelfde chip gedragen zich voorspelbaar; een koperpoort en een SFP met verschillende eigenschappen doen dat minder.

In de bridge of niet

De schakelaar in de bridge staat aan. De bond wordt dan lid van de bridge en gedraagt zich verder als een gewone LAN-poort. Zet hem uit als de bond een eigen adres moet krijgen, bijvoorbeeld voor een directe verbinding naar een server of een tweede router.

Let op bij VLANs: de poorttoewijzing in het onderdeel VLANs kent alleen fysieke poorten, geen bonds. Een bond in de bridge krijgt daardoor de behandeling van een access-poort op de eerste VLAN. Moet je bond een trunk zijn, voeg dan de regels voor /interface bridge port en /interface bridge vlan voor die bond met de hand toe na het plakken.

Wanneer het helpt en wanneer niet

Het helpt als er veel verbindingen tegelijk over de lijn gaan: een trunk tussen twee switches, een uplink naar een virtualisatiehost, een NAS waar tien mensen tegelijk op werken. Het verkeer wordt verdeeld op een hash over MAC- en IP-adressen, dus verschillende paren komen op verschillende links terecht.

Het helpt niet voor één enkele overdracht. Kopieer je één groot bestand van één werkplek naar één NAS, dan zit dat verkeer in één stroom, dus op één link, en haal je de snelheid van één kabel. Twee keer 1 Gbit/s is geen 2 Gbit/s voor één kopieeractie. Wil je dat wel, dan is één snellere poort de echte oplossing.

Het helpt ook niet tegen een defecte switch of een stroomstoring: beide kabels gaan naar hetzelfde apparaat. Voor dat soort uitval kijk je naar hoge beschikbaarheid.

Wat het script ervan maakt

Je krijgt een regel /interface bonding add name=bond1 mode=802.3ad slaves=ether7,ether8 transmit-hash-policy=layer-2-and-3 link-monitoring=mii lacp-rate=1sec, en als de bond in de bridge gaat een bijbehorende /interface bridge port add. Controleer achteraf met /interface bonding monitor bond1 of alle links actief zijn.

Wat er misgaat

  • De andere kant is niet ingesteld. Dit is de meest voorkomende fout. Bonding werkt alleen als beide kanten het weten; de configurator ziet het apparaat aan de andere kant niet en kan dit niet voor je controleren. Stel eerst de andere kant in, of gebruik active-backup als die kant niets kan.
  • Een lus tijdens het opbouwen. Zolang de ene kant twee losse poorten ziet en de andere kant een bond, heb je twee parallelle paden. Spanning tree vangt dat meestal op, maar prik de tweede kabel er pas in als beide kanten klaar staan.
  • De snelheid verdubbelt niet. Kijk naar wat er over de lijn gaat. Eén stroom blijft op één link.

Verder lezen: Bridge en poorten voor de bridge eromheen, VLANs voor tagged verkeer, en Hoge beschikbaarheid voor redundantie op apparaatniveau.

Meteen proberen? Open de configurator