NIC Bonding

Was ist das?

Ist eine Technologie mit der man mehrere Netzwerkschnittstellen zu einer Schnittstelle zusammenfasst. Der Zweck ist Failover oder Lastenausgleich. Das hängt von der jeweiligen Einstellung ab, die man verwendet.

 

Wozu brauche ich das?

Privat wahrscheinlich nicht, aber speziell im Serverbereich ist Failover und Lastenausgleich wichtig. Szenario: Nehmen wir an wir haben einen Storage-Server mit 4 x 1 Gbit-Anschlüssen. Was genau der Server hostet ist hier jetzt nicht Gegenstand des Szenaios. Wir müssen...

 

Was wird benötigt?

Ich gehe von einem frisch installierten Debian Jessie aus, welches korrekt installiert ist. Der Server hat mehrere Nics und die Treiber sind korrekt und lauffähig. Uns steht nur noch die Konfiguration des NIC Bonding bevor. Wir müssen das Paket ifenslave installieren.

 

Die Installation

Zunächst muss ifenslave installiert werden. Das geschieht wie gewohnt mit apt-get.

apt-get install ifenslave -y

Danach können wir auch schon mit der Konfiguration beginnen.

 

Die Konfiguration

Die ist tatsächlich ziemlich einfach. Zunächst müssen wir in /etc/modprobe.d/ die Datei aliases anlegen. Dort hinterlegen wir folgenden Inhalt:

alias bond0 bonding 

options bonding mode=1 miimon=100

Wenn das getan ist, dann gehen wir in die Konfigurationsdatei für die Netzwerkschnittstellen, kommentieren die Schnittstellenzeilen für eth0, eth1, eth2 und eth3 aus und fügen dafür folgende Zeilen ein:
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
    bond-slaves eth0 eth1 eth2 eth3
    bond-mode 0
    bond-miimon 100
    bond-updelay 200
    bond-downdelay 200


 

 

Die letzten 5 Zeilen erklärt:

bond-slaves Es werden alle am Bonding beteiligten Netzwerkschnittstellen aufgezählt.
bond-mode Es gibt verschiedene Modi die Nics zu betreiben. Mehr Informationen ganz unten!
bond-miimon 100 Das Bonding-Modul prüft alle 100 ms den Link-Status aller gebundenen NICs.
bond-updelay_200 Die NIC, die als "wieder aktiv" erkannt wird, wird erst nach 200 ms wieder in den Verbund aufgenommen. Lässt man den Delay weg, so wird sie sofort wieder aufgenommen.
bond-downdelay_200 Sollte eine Nic kurz aussetzen oder Übertragungsfehler haben, so wird sie erst nach 200 ms Verzögerung aus dem Verbund entfernt.

Das war es aber auch schon. Nun den Server neu starten und die NIC bond0 sollte dabei sein, wenn man ein ifconfig ausführt. Diese Nic hat nun die gegebene IP bekommen. Eth0 - 3 sind ebenfalls aufgelistet, aber haben keine IP mehr.

 

Welche Bonding Modi gibt es?

Modus  Bezeichnung Zweck Erklärung
0 balance-rr

Loadbalancing & Failover

Die NICs werden abwechselnd, also der Riehe nach verwendet und Aufgaben zugeteilt. Das funktioniert wie Round-Robin wie man es vom DNS kennt.
1 active-backup Failover Eine NIC ist aktiv während die andere bereit steht, um im Falle eines Ausfalls "einzuspringen".
2 balance-xor Loadbalancing & Failover Für jede Gegenstelle im Netzwerk wird eine zu nutzende NIC zugewiesen.
3 broadcast Failover Es wird über alle NICs gleichzeitig das Selbe gesendet. Möglich: Verschiedene Nics an verschiedenen Switches.
4 IEEE 802.3ad Loadbalancing & Failover Die NICs werden dabei gebündelt und treten nach Außen als eine NIC mit einer IP auf. So kann bspw. die Netzwerkleistung verdoppelt oder ver-x-facht werden.
5 balance-tlb Loadbalancing Der adaptive Sendeausgleich. Die zu sendenden Daten werden gerecht auf die NICs aufgeteilt. Antwortpakete können aber nur von einer NIC angenommen werden
6 balance-alb Loadbalancing Wie Mode 5, allerdings wird auch beim Empfang von Paketen ein Lastenausgleich vorgenommen.