Beschreibung
Zur Erhöhung der Ausfallsicherheit oder um mehr Bandbreite zu bekommen, kann man mehrere Ethernet-Interfaces zu einem logischen Interface bündeln. Diese Schnittstellen können sich auf verschiedenen Adapterkarten befinden und von verschiedenen Herstellern stammen. Nach meiner Erfahrung ist es mit gleichen Interfaces allerdings einfacher.
Es gibt sechs Modi für Bonding:
balance-rr oder 0
Round-Robin: Die Pakete werden der Reihe nach über die Slave-Interfaces übertragen. Alle Interfaces müssen auf dem selben Switch angeschlossen sein. Die Switchports müssen zu eine Trunk zusammengefasst werden. Bei Cisco® heisst das Etherchannel, bei anderen Herstellern Trunk Group oder einfach Trunk.
Dieser Modus beinhaltet Lastverteilung und Fehlertoleranz.active-backup oder 1
Aktiv-Backup: Es ist immer nur ein Interface des Bündels aktiv. Beim Ausfall des aktiven Slaves übernimmt der nächste Slave. Nur auf dem aktiven Anschluss ist die MAC-Adresse des Bündels sichtbar. Die Bandbreiten der Interfaces können unterschiedlich sein.
Dieser Modus beinhaltet keine Lastverteilung, sondern nur Fehlertoleranz.balance-xor oder 2
XOR: Das Interface für die Übertragung wird über eine Exklusiv-Oder-Verknüpfung der MAC-Adresse des Ziels mit der MAC-Adresse der Quelle ermittelt. Alle Interfaces müssen auf dem selben Switch angeschlossen sein. Die Switchports müssen zu eine Trunk zusammengefasst werden.
Dieser Modus beinhaltet Lastverteilung und Fehlertoleranz.broadcast oder 3
Broadcast: Alle Pakete werden auf allen Interfaces übertragen. Alle Interfaces müssen auf dem selben Switch angeschlossen sein. Die Switchports müssen zu eine Trunk zusammengefasst werden.
Dieser Modus beinhaltet keine Lastverteilung, sondern nur Fehlertoleranz.802.3ad oder 4
IEEE 802.3ad oder LACP: Das Bündel wird über das Link Aggregation Control Protocol dynamisch erzeugt. Alle Interfaces müssen die gleichen Einstellungen für Geschwindigkeit und Duplex-Modus haben. Alle Interfaces werden gemäß der Spezifikationen des 802.3ad-Standards genutzt. Alle Interfaces müssen auf dem selben Switch angeschlossen sein. Der Switch muss 802.3ad (LACP) unterstützen und die Ports entsprechend konfiguriert sein.
Dieser Modus beinhaltet Lastverteilung und Fehlertoleranz.balance-tlb oder 5
Adaptive transmit load balancing: Für diesen Modus ist keine Konfiguration des/der Switches notwendig. Anschluss an mehrere Switches ist möglich. Die Verteilung der Pakete erfolgt anhand der aktuellen Interface-Auslastung (in Abhängigkeit von der Bandbreite des Interfaces). Ankommende Pakete werden über das aktuell aktive Interface angenommen. Im Fehlerfall übernimmt ein anderer Slave die MAC-Adresse des ausgefallenen Interfaces.
Dieser Modus beinhaltet Lastverteilung und Fehlertoleranz.balance-alb oder 6
Adaptive load balancing: Für diesen Modus ist keine Konfiguration des/der Switches notwendig. Anschluss an mehrere Switches ist möglich. Zusätzlich zur Sende-Lastverteilung (tlb) erfolgt Empfangs-Lastverteilung für Pakete gemäß IPV4. Die Sende-Verteilung der Pakete erfolgt anhand der aktuellen Interface-Auslastung (in Abhängigkeit von der Bandbreite des Interfaces).
Die Empfangs-Verteilung der Pakete erfolgt der Reihe nach über alle Interfaces des Bündels unter Berücksichtigung der Bandbreite. Die Zuordnung der Interfaces wird über ARP-Negotiation geregelt.
Dieser Modus beinhaltet Lastverteilung und Fehlertoleranz.
Einrichtung
Jedes Interface des Bündels wird zuerst mit YaST für DHCP eingerichtet. Dadurch wird im Verzeichnis /etc/sysconfig/network für jedes Interface eine Datei (ifcfg-eth-<MAC-Adresse>) angelegt. Der Inhalt sieht dann etwa so aus:
MTU=''
NAME='D-Link DFE-530TX rev B'
REMOTE_IPADDR=''
STARTMODE='auto'
UNIQUE='rBUF.GtN+arZDK79'
USERCONTROL='no'
_nm_name='bus-pci-0000:00:0c.0'
Das Interessante an diesen Dateien ist ausschließlich die PCI-Bus-ID (bus-pci-0000:00:0c.0).
Im nächsten Schritt wird eine Datei ifcfg-bond0 für die Konfiguration des Bündels angelegt:
BROADCAST='172.16.32.255'
IPADDR='172.16.32.10'
MTU=''
NETMASK='255.255.255.0'
NETWORK='172.16.32.0'
REMOTE_IPADDR=''
STARTMODE='onboot'
BONDING_MASTER="yes"
BONDING_MODULE_OPTS="mode=802.3ad lacp_rate=fast miimon=100 use_carrier=0"
BONDING_SLAVE0='bus-pci-0000:00:0c.0'
BONDING_SLAVE1='bus-pci-0000:00:0d.0'
Diese Konfiguration bündelt zwei Interfaces mit LACP (IEEE 802.3ad). Wenn auf dem Switch LACP unterstützt wird und das Protokoll aktiviert ist, ist das die einfachste Möglichkeit, da keine weitere Konfiguration auf dem Switch notwendig ist.
Für den Modus balance-rr
sehen die Modul-Optionen wie folgt aus:
Das funktioniert allerdings nur, wenn der Treiber der NIC netif_carrier_on/off
unterstützt. Im Zweifelsfall muss man das im Sourcecode des Treibers nachschauen. Wenn das nicht der Fall ist, dann muss die Option use_carrier
auf 0 gesetzt werden. Die Überwachung des Carriers ist effizienter und der empfohlene Modus.
Die Konfigurationsdateien der physikalischen Interfaces können nun gelöscht werden.
Nun muss noch im Verzeichnis /etc/sysconfig/network die Datei routes angelegt werden. In diese Datei kommt z. B. folgender Eintrag für die Default-Route:
Das war's dann auch schon. Netzwerk neu starten und das Bündel rennt. ;-)
Die Adressen, PCI-Bus-IDs usw. müssen natürlich an die jeweiligen Gegebenheiten angepasst werden. Für weitere Bündel gilt das gleiche Vorgehen. Nur der Name der Datei muss mit der fortlaufenden Nummer am Ende angepasst werden.