Summary
Bonding is een technologie waarmee meerdere ethernet-achtige interfaces samengevoegd kunnen worden tot één virtuele verbinding, waardoor hogere datasnelheden worden behaald en failover wordt geboden.
Waarschuwing Interface bonding maakt geen interface met een hogere linksnelheid. Interface bonding maakt een virtuele interface die verkeer over meerdere interfaces kan verdelen. Meer details vindt u op de pagina LAG interfaces and load balancing.
Info MikroTik-apparaten met een Marvell Prestera-switch en de switchchips 88E6393X, 88E6191X of 88E6190 ondersteunen bridge hardware offloading met bonding-interfaces.
Alleen de bonding-modi 802.3ad (LACP), balance-xor (statische LAG) en active-backup worden hardwarematig offloaded; andere bonding-modi gebruiken de CPU-bronnen.
MikroTik-apparaten met een Marvell Prestera switch gebruiken altijd Layer2+Layer3+Layer4 als transmit hash policy, terwijl de switchchips 88E6393X, 88E6191X en 88E6190 beperkt zijn tot een Layer2 transmit hash. Het handmatig wijzigen van de transmit hash policy terwijl HW offloading wordt gebruikt heeft geen effect.
Meer details vindt u bij Marvell Prestera switch chip features.
Snelle installatiegids
Laten we aannemen dat we twee Ethernet-interfaces op elke router (Router1 en Router2) hebben en de maximale datasnelheid tussen deze twee routers willen behalen. Volg hiervoor deze stappen:
-
Zorg ervoor dat u geen IP-adressen heeft op interfaces die als slave aan een bonding-interface worden toegevoegd.
-
Voeg op Router1 een bonding-interface en een IP-adres toe:
/interface/bonding/add slaves=ether1,ether2 name=bond1 /ip/address/add address=172.16.0.1/24 interface=bond1 -
Doe hetzelfde op Router2:
/interface/bonding/add slaves=ether1,ether2 name=bond1 /ip/address/add address=172.16.0.2/24 interface=bond1 -
Test de verbinding vanaf Router1:
[admin@Router1] > ping 172.16.0.2 SEQ HOST SIZE TTL TIME STATUS 0 172.16.0.2 56 64 0ms 1 172.16.0.2 56 64 0ms 2 172.16.0.2 56 64 0ms sent=3 received=3 packet-loss=0% min-rtt=0ms avg-rtt=0ms max-rtt=0ms
Waarschuwing De bonding-interface heeft een paar seconden nodig om connectiviteit met zijn peers te krijgen.
Link Monitoring
Het is essentieel om een van de beschikbare opties voor linkmonitoring in te schakelen. Als in het bovenstaande voorbeeld een van de gebundelde links zou uitvallen, zou de bonding-driver pakketten over de defecte link blijven verzenden, wat tot netwerkdegradatie leidt. RouterOS-bonding ondersteunt momenteel twee methoden om de linkstatus van slave-apparaten te monitoren: MII- en ARP-monitoring. Vanwege beperkingen in de bonding-driver is het niet mogelijk om beide methoden tegelijkertijd te gebruiken.
ARP-monitoring
ARP-monitoring bepaalt de linkstatus door ARP-queries te versturen en de antwoorden te gebruiken als indicatie dat de link operationeel is. De ARP-antwoorden worden niet gevalideerd: elk pakket dat door de slave-interface wordt ontvangen markeert die interface als actief. Deze aanpak geeft de zekerheid dat er daadwerkelijk verkeer over de links loopt.
Wanneer u de modi balance-rr of balance-xor gebruikt, moet de aangesloten switch zo geconfigureerd zijn dat pakketten gelijkmatig over alle linkpaden worden verdeeld. Anders worden alle ARP-antwoorden van het doel op dezelfde slave-interface ontvangen, waardoor de andere gebonden links als mislukt kunnen lijken.
ARP-monitoring wordt ingeschakeld door drie eigenschappen te configureren: link-monitoring, arp-ip-targets en arp-interval. Er kunnen meerdere ARP-doeladressen worden opgegeven, wat vooral nuttig is in high availability-opstellingen. Vertrouwen op één enkel doel creëert een mogelijk faalpunt; het configureren van extra doelen verhoogt de betrouwbaarheid van het ARP-monitoringmechanisme.
Om ARP-monitoring op Router1 in te schakelen:
/interface/bonding/set [find name=bond1] link-monitoring=arp arp-ip-targets=172.16.0.2
En op Router2:
/interface/bonding/set [find name=bond1] link-monitoring=arp arp-ip-targets=172.16.0.1
De waarde van arp-interval staat in RouterOS standaard op 100 ms en hoeft in dit voorbeeld niet gewijzigd te worden. Om te controleren of de linkmonitoring correct werkt, koppelt u een van de kabelverbindingen los. Mogelijk ziet u enkele ping-timeouts totdat de ARP-monitoring het uitvallen van de link detecteert.
[admin@MikroTik] > /ping 172.16.0.2
SEQ HOST SIZE TTL TIME STATUS
0 172.16.0.2 56 64 0ms
1 172.16.0.2 56 64 0ms
2 172.16.0.2 56 64 0ms
3 172.16.0.2 56 64 0ms
4 172.16.0.2 timeout
5 172.16.0.2 56 64 0ms
6 172.16.0.2 56 64 0ms
sent=7 received=6 packet-loss=14% min-rtt=0ms avg-rtt=0ms max-rtt=0ms
Let op ARP-monitoring vereist niet dat er een IP-adres op het apparaat is geconfigureerd; het werkt ongeacht het IP-adres dat op een interface is ingesteld.
Gevaar Wanneer ARP-monitoring actief is, verzendt de bonding-slave ARP-verzoeken zonder VLAN-tag, zelfs wanneer er een IP-adres is geconfigureerd op een VLAN-interface binnen hetzelfde subnet als het adres van arp-ip-targets.
MII-monitoring
MII-monitoring bewaakt alleen de status van de lokale interface. MII Type 1 is een methode waarbij de apparaatdriver bepaalt of een link up of down is. Als de apparaatdriver deze optie niet ondersteunt, zal de link altijd als up worden weergegeven. Het belangrijkste nadeel van MII-monitoring is dat het niet kan bepalen of de link daadwerkelijk pakketverkeer kan doorgeven, zelfs niet wanneer de link als up wordt gedetecteerd. MII-monitoring wordt geconfigureerd door de parameters link-monitoring en mii-interval in te stellen.
Om MII Type1-monitoring op Router1 en Router2 in te schakelen:
/interface/bonding/set [find name=bond1] link-monitoring=mii
We laten mii-interval op de standaardwaarde staan (100 ms). Wanneer je een van de kabels loskoppelt, wordt de storing vrijwel onmiddellijk gedetecteerd in vergelijking met ARP link monitoring.
Bonding-modi
802.3ad
De 802.3ad-modus is een IEEE-standaard die ook bekendstaat als LACP (Link Aggregation Control Protocol). Deze zorgt voor automatische configuratie van de aggregatie en vereist minimale switchconfiguratie. De standaard schrijft ook voor dat frames in volgorde worden afgeleverd, zodat verbindingen geen pakketten in verkeerde volgorde zouden moeten krijgen. Bovendien moeten alle apparaten in de aggregatie op dezelfde snelheid en in dezelfde duplexmodus werken.
LACP verdeelt uitgaand verkeer over de actieve poorten op basis van gehashte protocol-headerinformatie en accepteert inkomend verkeer van elke actieve poort. De hash omvat het Ethernet bron- en bestemmingsadres, de VLAN-tag (indien beschikbaar) en het IPv4/IPv6 bron- en bestemmingsadres. De berekeningsmethode hangt af van de parameter transmit-hash-policy. ARP link monitoring wordt niet aanbevolen, omdat ARP reply-pakketten mogelijk maar op één slave-poort aankomen door het transmit hash policy op het LACP-peerapparaat. Dit kan resulteren in ongebalanceerd verzonden verkeer, dus MII link monitoring is de aanbevolen optie.
Waarschuwing De layer-3-and-4 transmit hash-modus is niet volledig compatibel met LACP. Meer details zijn te vinden op https://www.kernel.org/doc/Documentation/networking/bonding.txt
balance-xor
Deze modus verdeelt het uitgaande verkeer over de actieve poorten met behulp van een gehashte protocolheader en accepteert inkomend verkeer van elke actieve poort. De modus lijkt sterk op LACP, behalve dat hij niet gestandaardiseerd is. Deze modus kan worden gebruikt in combinatie met statische Link Aggregation Group (LAG)-interfaceconfiguraties op de aangesloten switch.
balance-rr
Wanneer deze modus is ingesteld, worden pakketten in volgorde verzonden van de eerste beschikbare slave tot de laatste. De balance-rr-modus is de enige bonding-modus die pakketten over meerdere interfaces kan versturen die tot dezelfde TCP/IP-verbinding behoren. Bij het gebruik van meerdere verzendende en meerdere ontvangende links worden pakketten vaak buiten volgorde ontvangen, wat resulteert in hertransmissie van segmenten. Voor andere protocollen zoals UDP is dit geen probleem als de clientsoftware pakketten buiten volgorde kan verdragen. Als er een switch wordt gebruikt om links samen te voegen, is de juiste configuratie van de switchpoorten vereist; veel switches ondersteunen balance-rr echter niet. De Quick setup guide laat het gebruik van de balance-rr-bondingmodus zien. Zoals u kunt zien, is het vrij eenvoudig op te zetten. Balance-rr is ook nuttig voor het bonden van meerdere draadloze links; het vereist echter een gelijke bandbreedte voor alle gebonden links. Als de bandbreedte van een van de gebonden links daalt, is de totale bandbreedte van de bond gelijk aan de bandbreedte van de traagste gebonden link.
active-backup
Deze modus gebruikt slechts één actieve slave om pakketten te verzenden. De secundaire slave wordt pas actief als de primaire slave uitvalt. Het MAC-adres van de bonding-interface wordt op de actieve poort gepresenteerd om verwarring bij de switch te voorkomen. Active-backup is de beste keuze voor high availability-opstellingen met meerdere onderling verbonden switches.
Waarschuwing ARP-monitoring werkt niet correct wanneer beide routerapparaten rechtstreeks met elkaar zijn verbonden. In dergelijke opstellingen moet MII-monitoring worden gebruikt, of moet er een switch tussen de routerapparaten en hun peer worden geplaatst.
broadcast
Wanneer poorten met de broadcast-modus zijn geconfigureerd, verzenden alle slave-poorten dezelfde gegevens naar de bestemming. Deze modus biedt fouttolerantie, maar geen load balancing.
balance-tlb
Deze modus verdeelt het uitgaande verkeer per peer. Elke bonded link kan met verschillende snelheden en duplexinstellingen werken en, anders dan bij andere bonding-modi, is er geen specifieke switchconfiguratie vereist. De beperking van deze modus is dat hij alleen MII-linkmonitoring ondersteunt - ARP-monitoring wordt genegeerd wanneer het is geconfigureerd - en dat inkomend verkeer niet wordt verdeeld. Inkomend verkeer gebruikt de link die als "primary"-interface is aangewezen.
Configuratievoorbeeld
Laten we aannemen dat de router twee links heeft - de maximale bandbreedte van ether1 is 10Mbps en de maximale bandbreedte van ether2 is 5Mbps. De eerste link heeft meer bandbreedte, dus stellen we die in als primaire link:
/interface/bonding/add mode=balance-tlb slaves=ether1,ether2 primary=ether1

Voor de switch is geen aanvullende configuratie vereist. De afbeelding hierboven illustreert hoe de balance-tlb-modus werkt. Zoals u kunt zien, kan de router met alle op de switch aangesloten clients communiceren met de totale bandbreedte van beide links (15Mbps). Maar zoals u al weet, balanceert balance-tlb het inkomende verkeer niet. In ons voorbeeld kunnen clients met de router communiceren met de totale bandbreedte van de primaire link, die in onze configuratie 10Mbps is.
balance-alb
De modus is in principe hetzelfde als balance-tlb, maar inkomend IPv4-verkeer wordt ook gebalanceerd. De loadbalancing bij ontvangst wordt bereikt door ARP-onderhandeling. Het bonding-stuurprogramma onderschept lokaal gegenereerde ARP-berichten op hun weg naar buiten en overschrijft het bron-hardwareadres met het unieke adres van een van de slaves in de bond, zodat verschillende peers verschillende hardwareadressen gebruiken. Alleen MII-linkmonitoring wordt ondersteund (ARP-linkmonitoring wordt genegeerd wanneer die is geconfigureerd). Het bijkomende nadeel van deze modus is dat het stuurprogramma van het apparaat het MAC-adres moet kunnen wijzigen. De modus is niet compatibel met de instelling local-proxy-arp.

De bovenstaande afbeelding illustreert hoe de balance-alb-modus werkt. Vergeleken met de balance-tlb-modus kan verkeer van clients ook de secundaire link gebruiken om met de router te communiceren.
Bonding-monitoring
Voor de bonding-modus 802.3ad zijn gedetailleerdere monitoringopties beschikbaar.
/interface/bonding/monitor [find]
mode: 802.3ad active-backup
active-ports: ether4 ether6
ether5
inactive-ports: ether7
lacp-system-id: CC:2D:E0:11:22:33
lacp-system-priority: 65535
lacp-partner-system-id: B8:69:F4:44:55:66
Om afzonderlijke bonding-poorten te bewaken, gebruikt u een monitor-slaves-commando.
/interface/bonding/monitor-slaves bond1
Flags: A - active, P - partner
AP port=ether4 key=17 flags="A-GSCD--" partner-sys-id=D4:CA:6D:12:06:65 partner-sys-priority=65535 partner-key=9 partner-flags="A-GSCD--"
AP port=ether5 key=17 flags="A-GSCD--" partner-sys-id=D4:CA:6D:12:06:65 partner-sys-priority=65535 partner-key=9 partner-flags="A-GSCD--"