Ethernet bonding Konfiguration IEEE 802.3ad (LACP)
Bei Ethernet bonding geht es um ein Verfahren zur Bündelung mehrerer physikalischer LAN-Schnittstellen zu einem logischen Kanal. LACP (=Link Aggregation Control Protocol) ist ein Netzwerkprotokoll nach IEEE 802.3ad zur dynamischen Bündelung von physikalischen Netzwerkverbindungen.
Außerdem sind folgende Bezeichnungen gängig:
- Bonding, im Linux Umfeld.
- Etherchannel, bei Cisco.
- Link Aggregation (LAG), bei IEEE
- Port Aggregation, bei Hewlett-Packard.
- Trunking, bei Sun Microsystems, aber auch bei anderen Herstellern.
- Bündelung, als deutscher Begriff für die Ethernet-Kanal-Bündelung.
Ziele der Bündelung sind im Allgemeinen eine höhere mögliche Übertragungsgeschwindigkeit und/oder höhere Verfügbarkeit.
Grundlegende Verfahren:
- Roundrobin: Hier werden alle zur Verfügung stehenden Leitungen abwechselnd der Reihe nach benutzt.
- DA-Trunking: Hier wird anhand des Modulo der Destination-MAC-Adresse die elementare Schnittstelle gewählt.
- SA-Trunking: Hier wird anhand des Modulo der Source-MAC-Adresse die elementare Schnittstelle gewählt.
- SA-DA-Trunking: Hier wird anhand des Modulo der Source-MAC-Adresse und der Destination-MAC-Adresse die elementare Schnittstelle gewählt.
- Adaptives-Trunking: Hier wird erst bei 100% Auslastung der ersten elementaren Schnittstelle eine weitere zugeschaltet.
- Dynamisches-Trunking: Mit Hilfe des proprietären PAgPs, oder des IEEE konformen LACP lassen sich dynamische Etherchannels definieren.
Links
Verfahren bei Linux
Modus Name | Nummer | Switch-config-Änderung nötig? | Ziel | Funktion |
---|---|---|---|---|
balance-rr | 0 | N | load balancing und Fehlertoleranz | Pakete werden gleichmäßig im round-robin-Verfahren über die Slaves verteilt |
active-backup | 1 | N | Fehlertoleranz | Nur der Primary ist aktive, Slaves werden nur aktiv falls dieser ausfällt; in diesem Fall wird gratuitous ARPs auf dem Slave ausgeführt und wieder auf den Primary zurückgeschaltet sobald dieser verfügbar wird. |
balance-xor | 2 | N | load balancing und Fehlertoleranz | Pakete werden nach einer einer XOR-Policy (xmit_hash_policy) über die Schnittstellen verteilt |
broadcast | 3 | N | Fehlertoleranz | Pakete werden über alle Schnittstellen rausgesendet |
802.3ad | 4 | J | load balancing | mehrere Schnitstellen mit gleichen Charakteristiken (Geschwindigkeit/Duplex-mode) werden zu einem Bündel konfiguriert. Achtung: unterschiedliche Switche setzen den 802.3ad mode u.U. anders um. |
balance-tlb | 5 | N | adaptives load balancing und Fehlertoleranz | mehrere Schnitstellen werden zu einem Bündel konfiguriert, je nachdem ob tlb_dynamic_lb auf 0 oder 1 gesetzt ist, wird der Datenverkehr nach Hash-Funktion oder Last (relativ zum maximal-speed) verteilt. Ausfälle von Slaves werden durch übernahme der MAC aufgefangen. |
balance-alb | 6 | N | adaptives load balancing und Fehlertoleranz | wie balance-tlb, nur das auch der empfangene Traffic über die Slaves ausbalanciert wird, durch Umschreibung der ARP-Antworten bzw. Aushandlung. |
Einstellungen
aptitude install ifenslave-2.6
Bei neueren System heißt das Paket etwas anders:
aptitude install ifenslave
Beispiel: Zwei Netzwerkkarten em1 und em2, im Fehlerfall (Switchausfall, Kabel gezogen etc.) soll vom master (em1) auf die zweite Karte (em2) umgeswitcht werden.
Die Datei /etc/network/interfaces
könnte so aussehen:
auto em1 iface em1 inet manual bond-master bond0 bond-primary em1 bond-mode active-backup auto em2 iface em2 inet manual bond-master bond0 bond-primary em1 bond-mode active-backup auto bond0 iface bond0 inet static address x.x.x.x netmask 255.255.255.0 network y.y.y.0 broadcast y.y.y.255 gateway y.y.y.1 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers z1.z1.z1.z1 z2.z2.z2.z2 bond_mode active-backup bond-slaves none bond_miimon 100 # monitoring frequency in ms bond_downdelay 200 # wait time before disabling or enabling an interface in ms bond_updelay 200
Primary anzeigen:
cat /sys/class/net/bond0/bonding/primary
Slaves anzeigen:
cat /sys/class/net/bond0/bonding/slaves
Aktiver Slave:
cat /sys/class/net/bond0/bonding/active_slave
#! /bin/sh echo "Slaves = $(cat /sys/class/net/bond0/bonding/slaves)" echo "Primary = $(cat /sys/class/net/bond0/bonding/primary)" echo "Active Slave = $(cat /sys/class/net/bond0/bonding/active_slave)" r=$(pidof dhclient) test -n "$r" && ps $r r=$(pidof wpa_supplicant) test -n "$r" && ps $r
cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: fault-tolerance (active-backup) Primary Slave: em1 (primary_reselect always) Currently Active Slave: em1 MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 200 Down Delay (ms): 200 Slave Interface: em1 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 1 Permanent HW addr: 84:2b:2b:de:ad:a0 Slave queue ID: 0 Slave Interface: em2 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 1 Permanent HW addr: 84:2b:2b:de:ad:a2 Slave queue ID: 0
Ein Um- und zurückschwenken auf die Slave-Leitung und wieder zurück sieht so aus:
bnx2 0000:01:00.0 em1: NIC Copper Link is Down bond0: link status down for active interface em1, disabling it in 200 ms bond0: link status definitely down for interface em1, disabling it bond0: making interface em2 the new active one bnx2 0000:01:00.0 em1: NIC Copper Link is Up, 1000 Mbps full duplex bond0: link status up for interface em1, enabling it in 200 ms bond0: link status definitely up for interface em1, 1000 Mbps full duplex bond0: making interface em1 the new active one
siehe auch: https://wiki.debian.org/Bonding
- 2 oder mehr Bonding-Geräte: modprobe bonding max_bonds=2
Anwendung bei Windows