linux:ethernet-bonding-konfiguration-ieee-802.3ad-lacp

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
linux:ethernet-bonding-konfiguration-ieee-802.3ad-lacp [2016/01/06 15:24] – [Einstellungen] stlinux:ethernet-bonding-konfiguration-ieee-802.3ad-lacp [2016/01/08 17:43] (aktuell) – [Verfahren bei Linux] st
Zeile 1: Zeile 1:
 +====== 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:
 +<file>
 +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
 +</file>
 +Primary anzeigen: <code bash>cat /sys/class/net/bond0/bonding/primary</code>
 +Slaves anzeigen: <code bash>cat /sys/class/net/bond0/bonding/slaves</code>
 +Aktiver Slave: <code bash>cat /sys/class/net/bond0/bonding/active_slave</code>
 +
 +
 +<code bash>
 +#! /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
 +</code>
 +
 +<code bash>cat /proc/net/bonding/bond0</code>
 +<file>
 +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
 +</file>
 +
 +
 +Ein Um- und zurückschwenken auf die Slave-Leitung und wieder zurück sieht so aus:
 +<file>
 +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
 +</file>
 +
 +
 +siehe auch: https://wiki.debian.org/Bonding
 +
 +  * 2 oder mehr Bonding-Geräte: modprobe bonding max_bonds=2
 +
 +
 +
 +
 +===== Anwendung bei Windows =====
 +
 +FIXME