Inhaltsverzeichnis

Netzwerkkarten bündeln - Bonding

Linux

> for B in /proc/net/bonding/bond*; do echo "${B}"; cat ${B} | grep -E 'Interface:|Permanent HW addr:|address:'; done
/proc/net/bonding/bond0
System MAC address: ce:29:a8:95:f0:3d
Slave Interface: eno12399np0
Permanent HW addr: d4:07:e6:c1:e9:80
    system mac address: ce:28:a9:75:f0:3d
    system mac address: 01:01:01:01:01:01
Slave Interface: eno12409np1
Permanent HW addr: d4:07:e6:c1:e9:81
    system mac address: ce:28:a9:75:f0:3d
    system mac address: 01:01:01:01:01:01
Slave Interface: enp152s0f0np0
Permanent HW addr: 00:60:0b:fa:21:40
    system mac address: ce:28:a9:75:f0:3d
    system mac address: 01:01:01:01:01:01
Slave Interface: enp152s0f1np1
Permanent HW addr: 00:60:0b:fa:21:41
    system mac address: ce:28:a9:75:f0:3d
    system mac address: 01:01:01:01:01:01

von Hand

neues Bond bauen:

> ifenslave bond0 eth0 eth1

die NICs anzeigen, über die das Bond verfühgt:

> ls /sys/class/net/bond0/ | awk -F'_' '/slave_/ {print $2}'

ob die NIC's in den vorhandenen Bond's alle oben sind, kann man so testen:

> fgrep ' Status: ' /proc/net/bonding/bond*
/proc/net/bonding/bond0:MII Status: up
/proc/net/bonding/bond0:MII Status: up
/proc/net/bonding/bond0:MII Status: up
/proc/net/bonding/bond1:MII Status: up
/proc/net/bonding/bond1:MII Status: up
/proc/net/bonding/bond1:MII Status: up
/proc/net/bonding/bond3:MII Status: up
/proc/net/bonding/bond3:MII Status: up
/proc/net/bonding/bond3:MII Status: up

alles anzeigen:

> ifenslave -a
> ifenslave bond0

aktive NIC im Bond wechseln:

> ifenslave -c bond0 eth1

Bond auflösen:

> ifenslave -d bond0 eth0 eth1

nur eine NIC aus dem Bond entfernen:

> ifenslave -d bond0 eth0

Bonding - neue Variante >Ubuntu 8.04

Installation benötigter Pakete

# aptitude update && aptitude install ifenslave net-tools ethtool bmon

Prüfen ob benötigte Module geladen wurden.

# modprobe --list | grep -i bonding

Die Ausgabe sollte bonding.ko enthalten. Sollte das Modul nicht geladen sein, ist wahrscheinlich die alte Variante zur Bonding-Konfiguration notwendig. (siehe Unten)

Alle Interfaces welche zu einem bond-Interface zusammengefasst werden sollen, müssen zunächst deaktiviert werden. Vorher sollte man aber sicherstellen, dass man die im folgenden beschriebene Konfiguration nicht über diese Netzwerkverbindung durchführt!

# ifdown eth0
# ifdown eth1
# ifdown eth...

Anschließend kann das neue Interface in der /etc/network/interfaces angelegt werden.

auto bond0
iface bond0 inet static
   address 10.0.0.10
   netmask 255.255.255.0
   network 10.0.0.0
   broadcast 10.0.0.255
   gateway 10.0.0.1
   dns-nameservers 10.0.0.1
   slaves eth0 eth1
   bond_mode 1
   bond_miimon 100
   bond_updelay 200
   bond_downdelay 200

Um die Netzwerkkarten (jetzt mit Bonding) wieder hoch zu fahren, einfach das Netzwerk neu starten:

# /etc/init.d/networking restart

Bonding Modi

Modus Bezeichnung Zweck Beschreibung
0 balance-rr Lastverteilung & Ausfallsicherheit Die genutzte Netzwerkschnittstelle wird im Round-Robin-Verfahren festgelegt, das heißt die verfügbaren Schnittstellen werden in Senderichtung wechselweise genutzt. In Empfangsrichtung kann max. die Geschwindigkeit einer einzelnen Schnittstelle erreicht werden - je mehr Teilnehmer, umso mehr Upload-Gesamtbandbreite, denn diese werden auf die übrigen freien Schnittstellen aufgeteilt.
1 active-backup Ausfallsicherheit Nur eine Schnittstelle ist aktiv, im Fehlerfalle wird ein der anderen im Verbund genutzt. die Netzwerkkarten können über verschiedene Switches angebunden werden.
2 balance-xor Lastverteilung & Ausfallsicherheit Es wird für jede Gegenstelle im Netzwerk eine zu nutzende Netzwerkschnittstelle zugewiesen, die Zuordnung geschieht über den Modulo der Division zwischen der Formel (Quell-MAC-Adresse XOR Ziel-MAC-Adresse) und der Anzahl der Slave-Schnittstellen.
3 broadcast Ausfallsicherheit Daten werden auf allen Netzwerkschnittstellen gesendet. Die Nutzung mehrerer Switches ist möglich.
4 802.3ad Lastverteilung & Ausfallsicherheit 802.3ad ist ein Standard der IEEE, der die Bündelung mehrerer Schnittstellen mit gleichen Übertragungseinstellungen (Geschwindigkeit und Duplex-Einstellungen) erlaubt, um eine höhere Bandbreite zu erhalten. Es kann nur ein Switch verwendet werden, dieser muss 802.3ad unterstützen. ethtool oder mii-tool wird benötigt.
5 balance-tlb Lastverteilung Es wird für jede Gegenstelle im Netzwerk eine zu nutzende Netzwerkschnittstelle zugewiesen. Das Verfahren hierzu ist jedoch komplexer und effizienter als bei balance-xor. Das Programm ethtool wird benötigt.
6 balance-alb Lastverteilung Erweitertes balance-tlb, zusätzlich zur MAC-basierten Zuordnung der Schnittstellen für ausgehende Verbindungen werden eingehende Verbindungen auf die Schnittstellen verteilt. Das Programm ethtool wird benötigt.