Contents
Was ist bonding?
Bonding bietet die Möglichkeit, mehrere Netzwerkkarten zu einer zu bündeln. Damit ergeben sich Möglichkeiten wie Redundanz oder “load balancing”.
Wo setze ich bonding ein?
Überall wo man Redundanz oder Load Balancing benötigt. Es ist ein einfacher und sicherer Weg für ein Hochverfügbarkeitsnetz.
Welche “modes” gibt es?
mode=0 – balance-rr
Voraussetzung:
- Switches die Trunking unterstützen
Der Default des Modules. In diesem Modus werden die Pakete von der ersten bis zur letzten verfügbaren Netzwerkkarte im bond verteilt (round-robin). Der Vorteil: Jede Karte hat die gleiche last. Fällt eine Karte aus wird die Last auf alle anderen verteilt. Jedoch muss das Netzwerk trunking unterstützen ( Router wie Cisco 5500 mit EtherChannel Support z.B.).
mode=1 – active-backup
Voraussetzung:
- miitool Support
In diesem Modus ist nur eine Netzwerkkarte aktiv. Fällt diese aus, wird die nächste verfügbare Netzwerkkarte eingebunden. Wichtig: In diesem Modus wird ein ARP-Broadcast ausgesendet. Die Switches können so die neue Route in ihrem ARP-Cache festhalten. In der Regel sollte es keinen oder sehr wenig Paketverlust geben.
mode=2 – balance-xor
Voraussetzung:
- miitool Support
Pakete laufen immer über die gleiche MAC-Adresse. Fällt eine Netzwerkkarte aus, wird die Last auf alle anderen verfügbaren verteilt. Der Vorteil: Ein Endgerät hat immer den gleichen Weg zum Host. Der Nachteil: Nicht jede Netzwerkkarte hat die gleiche Auslastung.
mode=3 – broadcast
Voraussetzung:
- miitool Support
Dieser Modus sendet jedes Paket auf jedem Interface. Der Vorteil: Absolute Redundanz. Der Nachteil: Kein Loadbalancing und Switches können verwirrt werden.
mode 4 – 802.3ad (oder 802.1ax)
Voraussetzung:
- miitool Support
- Switches mit Support für 802.3ad oder 802.1ax (Cisco)
Link Aggregation ist ein begriff für Kanalbündelung. Für diesen Modus benötigt man spezielle Switches (einige Cisco Switches unterstützen diesen Standard).
mode 5 – balance-tlb (Adaptive Transmit Load Balancing)
Voraussetzung:
- miitool Support
- ethtool Support
Die Last wird auf alle aktiven Slaves verteilt. Die Auslastung einer Netzwerkkarte wird mit ethtool ermittelt. Indikator ist die Menge des ausgehenden Datenverkehrs relativ zur Bandbreite.
mode 6 – balance-alb (Adaptive Load Balancing)
Voraussetzung:
- miitool Support
- ethtool Support
balance-alb enthält balance-tlb und receive load balancing (rlb) für IPv4. Der ankommende Datenverkehr wird wird durch ARP-Negotiation den entsprechendem Interface zugeordnet.
Weitere Modulparameter
miimon (in ms)
miimon definiert, in welchem Interval überprüft werden soll ob die Netzwerkkarte noch einen Link hat. Ein Wert von 100 hat sich als gut bewährt. Ein Wert kleiner gleich 10 sollte nicht gewählt werden da sonst zu viel Systemlast produziert wird.
downdelay (in ms)
Mit diesem Parameter kann eine Wartezeit definiert werden bis ein Interface heruntergefahren wird. Sollten Verbindungen nur kurz abbrechen ist es oft sinnvoller einen geringen Paketverlust in Kauf zu nehmen.
updelay (in ms)
Mit diesem Parameter kann eine Wartezeit definiert werden bis ein Interface hochgefahren wird. Manche Switches melden Verbindungen zu früh als Aktiv und können noch keine Pakete annehmen. Oft ist es sinnvoll, 2-3 Sekunden zu warten, bevor eine Netzwerkkarte wieder aktiviert wird.
arp_interval (in ms)
Der Default ist 0 (disabled). Wenn miitool nicht unterstützt wird, kann mittels ARP überprüft werden, ob noch ein Link besteht (ARPing). arp_interval definiert, in welchem Abstand überprüft werden soll, ob noch ein Link besteht.
arp_ip_target (in DDD.DDD.DDD.DDD)
Diese Option gibt die Zieladresse an, zu welcher ein ARP-Request gesendet wird um den Linkstatus zu ermitteln.
Die Konfiguration
Zuerst muss die Datei “/etc/modprobe.conf” angepasst werden. Ich verwende den vi. Folgende Zeilen müssen hinzugefügt werden: [code=""""""""""""""""""""]alias bond0 bonding options bond0 miimon=80 mode=5[/code] Danach muss die Datei “/etc/sysconfig/network-scripts/ifcfg-bond0″ mit folgendem Inhalt erstellt werden. [code=""""""""""""""""""""] DEVICE=bond0 IPADDR=
Sonstiges
Der aktuelle Status steht in “/proc/net/bonding/bond0″. [code=""""""""""""""""""""]linux:~# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.4.0 (October 7, 2008) Bonding Mode: transmit load balancing Primary Slave: None Currently Active Slave: eth1 MII Status: up MII Polling Interval (ms): 80 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: eth1 MII Status: up Link Failure Count: 0 Permanent HW addr: c8:0a:a9:32:ea:69 Slave Interface: eth0 MII Status: up Link Failure Count: 0 Permanent HW addr: c8:0a:a9:32:ea:68[/code]
Fehler:
Sollte eine Verbindung abbrechen und zu schnell wieder aktiviert werden, kann es vorkommen dass zu viele Pakete verloren gehen weil Switches die MAC-Adressen nicht schnell genug umstellen können.
