====== 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: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 ===== * [[https://www.kernel.org/doc/Documentation/networking/bonding.txt|Linux Ethernet Bonding Driver HOWTO]] * [[wp>Channel bonding]] * [[wp>Link aggregation]] * [[wpde>Etherchannel]] * [[http://www.thomas-krenn.com/de/wiki/Link_Aggregation_und_LACP_Grundlagen|Link Aggregation und LACP Grundlagen]] * [[http://www.debianadmin.com/linux-ethernet-bonding-configuration.html|Linux Ethernet Bonding Configuration]] ===== 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 ===== FIXME