Link Aggregation/Algorithmen: Unterschied zwischen den Versionen
K Textersetzung - „Man-Pages“ durch „Man-Page“ |
|||
(44 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
; | '''topic''' - Beschreibung | ||
* Der Standard gibt im Kapitel 5.2.4 Frame Distributor allerdings keine genauen Vorgaben wie die Ethernet Frames verteilt werden müssen | == Beschreibung == | ||
; Link Aggregation nach IEEE 802.1AX-2008 | |||
; Verteilung von Netzwerk-Traffic über mehrere Links | |||
* Der Standard gibt im Kapitel 5.2.4 Frame Distributor allerdings keine genauen Vorgaben, wie die Ethernet Frames verteilt werden müssen | |||
== | === MAC-based load balancing === | ||
; Beispiel | |||
* vier aktive Links | |||
; Daten werden von Quell- zur Ziel-MAC-Adresse übertragen | |||
Quell-MAC-Adresse: 0x0000A4F8B321 - das letzte Byte ist 0x21 (= Binär 00100001) - die letzten drei Bits sind also 001 | |||
Ziel-MAC-Adresse: 0x0000A2123456 - das letzte Byte ist 0x56 (= Binär 01010110) - die letzten drei Bits sind also 110 | |||
; Formel zur Auswahl des Links | |||
: {(001 XOR 110) MOD 4} | |||
: 001 XOR 110 = 111 (binär) = 7 (dezimal) | |||
: 7 MOD 4 (dezimal) = 3 (dezimal) | |||
; Link Nummer 3 wird verwendet | |||
== Implementierungen == | == Implementierungen == | ||
Zeile 19: | Zeile 25: | ||
=== 3Com === | === 3Com === | ||
3Com beschreibt im Kapitel Load Sharing Criteria for Link Aggregation Groups des Switch 4500G Family Configuration Guide die möglichen Kritierien zur Lastverteilung. Sie können z.B. beim 3com 4500G eine der folgenden Kriterien (oder eine beliebige Kombination davon) auswählen:[https://www.thomas-krenn.com/de/wiki/Link_Aggregation_Lastverteilungs-Algorithmen#cite_note-1 [1]] | * 3Com beschreibt im Kapitel Load Sharing Criteria for Link Aggregation Groups des Switch 4500G Family Configuration Guide die möglichen Kritierien zur Lastverteilung. | ||
* MAC | * Sie können z. B. beim 3com 4500G eine der folgenden Kriterien (oder eine beliebige Kombination davon) auswählen:[https://www.thomas-krenn.com/de/wiki/Link_Aggregation_Lastverteilungs-Algorithmen#cite_note-1 [1]] | ||
* IP | * MAC-Adressen, die in Paketen übertragen werden | ||
* | * IP-Adressen in den Paketen | ||
* In den Paketen enthaltene Portnummern | |||
; Kriterien | ; Kriterien | ||
* | * Verwenden Sie nur eine Quell-IP-Adresse. | ||
* | * Verwenden Sie nur eine Ziel-IP-Adresse. | ||
* | * Verwenden Sie nur eine MAC-Quelladresse. | ||
* | * Alleinige Verwendung einer Ziel-MAC-Adresse. | ||
* | * Kombinieren Sie eine Quell-IP-Adresse und eine Ziel-IP-Adresse. | ||
* | * Kombinieren Sie eine Quell-IP-Adresse und eine Quell-Portnummer. | ||
* | * Kombinieren Sie eine Ziel-IP-Adresse und eine Ziel-Portnummer. | ||
* | * Kombinieren Sie zwei oder alle drei der folgenden Elemente: Eingangs-Portnummer, Quell-MAC-Adresse und Ziel-MAC-Adresse. | ||
=== Cisco === | === Cisco === | ||
Zeile 56: | Zeile 63: | ||
* für unbekannten Unicast/Multicast/Broadcast: <br/><div style="margin-left:1cm;margin-right:0cm;">Selected_trunk_member = (3_LSB_Src_MAC Xor 3_LSB_Dst_MAC) % number_of_trunk_members_in_trunk_ID</div> | * für unbekannten Unicast/Multicast/Broadcast: <br/><div style="margin-left:1cm;margin-right:0cm;">Selected_trunk_member = (3_LSB_Src_MAC Xor 3_LSB_Dst_MAC) % number_of_trunk_members_in_trunk_ID</div> | ||
6_LSB und 3_LSB stehen jeweils für die sechs bzw. drei 'Least Significant Bits' (also die letzten sechs bzw. drei Bits). Die Funktionsweise einer solchen MAC-basierten Lastverteilung sind [https://www.thomas-krenn.com/de/wiki/Link_Aggregation_Lastverteilungs-Algorithmen#Beispiel_MAC-based_load_balancing weiter unten] im Bereich Nortel erklärt. | 6_LSB und 3_LSB stehen jeweils für die sechs bzw. drei 'Least Significant Bits' (also die letzten sechs bzw. drei Bits). Die Funktionsweise einer solchen MAC-basierten Lastverteilung sind [https://www.thomas-krenn.com/de/wiki/Link_Aggregation_Lastverteilungs-Algorithmen#Beispiel_MAC-based_load_balancing weiter unten] im Bereich Nortel erklärt. | ||
=== Nortel === | === Nortel === | ||
Nortel bietet Link Aggregation unter der Bezeichnung [http://en.wikipedia.org/wiki/Multi-link_trunking Multi-Link Trunking (MLT)]. Bei den Ethernet Routing Switches der 5000 Series können Sie zwischen folgenden Load-Balancing Alorithmen wählen:[https://www.thomas-krenn.com/de/wiki/Link_Aggregation_Lastverteilungs-Algorithmen#cite_note-5 [5]] | ; Nortel bietet Link Aggregation unter der Bezeichnung [http://en.wikipedia.org/wiki/Multi-link_trunking Multi-Link Trunking (MLT)]. | ||
* MAC-based (basic) load balancing | * Bei den Ethernet Routing Switches der 5000 Series können Sie zwischen folgenden Load-Balancing Alorithmen wählen:[https://www.thomas-krenn.com/de/wiki/Link_Aggregation_Lastverteilungs-Algorithmen#cite_note-5 [5]] | ||
* IP-based (advanced) load balancing | ** MAC-based (basic) load balancing | ||
** IP-based (advanced) load balancing | |||
Nortel verwendet dabei folgenden Algorithmus: | ; Nortel verwendet dabei folgenden Algorithmus | ||
: {(A XOR B) MOD x} | |||
Die Variablen A und B haben dabei folgende Bedeutungen | |||
* im MAC-based (basic) load balancing mode: <br/><div style="margin-left:1cm;margin-right:0cm;">A und B stehen für die letzten drei (least significant) Bits in der Quell- und Ziel-MAC-Adresse. </div><br/><div style="margin-left:1cm;margin-right:0cm;">x steht für die Anzahl der aktiven MLT Links.</div> | |||
Die Variablen A und B haben dabei folgende Bedeutungen | |||
* im IP-based (advanced) load balancing mode <br/><div style="margin-left:1cm;margin-right:0cm;">A und B stehen für die letzten drei (least significant) Bits in der Quell- und Ziel-IP-Adresse. </div><br/><div style="margin-left:1cm;margin-right:0cm;">x steht für die Anzahl der aktiven MLT Links.</div> | * im IP-based (advanced) load balancing mode <br/><div style="margin-left:1cm;margin-right:0cm;">A und B stehen für die letzten drei (least significant) Bits in der Quell- und Ziel-IP-Adresse. </div><br/><div style="margin-left:1cm;margin-right:0cm;">x steht für die Anzahl der aktiven MLT Links.</div> | ||
=== Linux === | === Linux === | ||
Linux unterstützt zwei mögliche Frame Distribution Algorithms | ; Linux unterstützt zwei mögliche Frame Distribution Algorithms | ||
* ''transmit hash policy to use for slave selection'' | |||
* Diese können den ''xmit_hash_policy'' Parameter konfiguriert werden | |||
; | ; Werte für ''xmit_hash_policy'' | ||
* layer2 (vor Bonding Version 2.6.3 der einzige Algorithmus, ab Bonding Version 2.6.3 Standardeinstellung) | * layer2 (vor Bonding Version 2.6.3 der einzige Algorithmus, ab Bonding Version 2.6.3 Standardeinstellung) | ||
* layer3+4 (optionaler Algorithmus, verfügbar ab Bonding Version 2.6.3) | * layer3+4 (optionaler Algorithmus, verfügbar ab Bonding Version 2.6.3) | ||
# https://www.thomas-krenn.com/de/wiki/Link_Aggregation_Lastverteilungs-Algorithmen#cite_note-6 | |||
; Hinweis | ; Hinweis | ||
* Diese Informationen beziehen sich auf den Linux Bonding Treiber | |||
* Ab Linux Kernel 3.3 gibt es zusätzlich das Teaming Device im Userspace | |||
=== layer2 === | === layer2 === | ||
Zeile 91: | Zeile 104: | ||
; Dieser Algorithmus verwendet Informationen von höheren Protokollschichten, sofern verfügbar. | ; Dieser Algorithmus verwendet Informationen von höheren Protokollschichten, sofern verfügbar. | ||
* Das ermöglicht die Verteilung von Traffic zwischen zwei direkten Netzwerk-Peers über mehrere Links (Slaves). | * Das ermöglicht die Verteilung von Traffic zwischen zwei direkten Netzwerk-Peers über mehrere Links (Slaves). | ||
* Sind beispielsweise zwei Router so miteinander verbunden, werden die Ethernet Frames verteilt, da Informationen von höheren Protokollschichten (z.B. IP Adressen) in den Algorithmus einbezogen werden. | * Sind beispielsweise zwei Router so miteinander verbunden, werden die Ethernet Frames verteilt, da Informationen von höheren Protokollschichten (z. B. IP Adressen) in den Algorithmus einbezogen werden. | ||
* Würden nur die MAC-Adressen (wie bei layer2) verwendet, ginge der Traffic immer über den selben Link (Slave). | * Würden nur die MAC-Adressen (wie bei layer2) verwendet, ginge der Traffic immer über den selben Link (Slave). | ||
* Eine einzelne Verbindung (von IP Adresse A zu IP Adresse B) geht aber nach wie vor immer nur über einen einzelnen Link. | * Eine einzelne Verbindung (von IP Adresse A zu IP Adresse B) geht aber nach wie vor immer nur über einen einzelnen Link. | ||
Zeile 111: | Zeile 124: | ||
* Andere Implementierungen von 802.3ad können diese Non-Compoliance tolerieren oder auch nicht. | * Andere Implementierungen von 802.3ad können diese Non-Compoliance tolerieren oder auch nicht. | ||
== FreeBSD == | === FreeBSD === | ||
FreeBSD verwendet einen Hash des Protokoll Headers. Der Hash beinhaltet dabei:[https://www.thomas-krenn.com/de/wiki/Link_Aggregation_Lastverteilungs-Algorithmen#cite_note-7 [7]] | FreeBSD verwendet einen Hash des Protokoll Headers. Der Hash beinhaltet dabei:[https://www.thomas-krenn.com/de/wiki/Link_Aggregation_Lastverteilungs-Algorithmen#cite_note-7 [7]] | ||
* Ethernet Quell- und Zieladresse (MAC Adresse des Senders und MAC Adresse des Empfängers) | * Ethernet Quell- und Zieladresse (MAC Adresse des Senders und MAC Adresse des Empfängers) | ||
Zeile 117: | Zeile 130: | ||
* IPv4/IPv6 Quell- und Zieladresse (falls verfügbar) | * IPv4/IPv6 Quell- und Zieladresse (falls verfügbar) | ||
[[ | |||
== Sicherheit == | |||
[[Kategorie: | |||
== Siehe auch == | |||
# [[Link Aggregation]] | |||
=== Dokumentation === | |||
==== RFC ==== | |||
==== Man-Page ==== | |||
==== Info-Pages ==== | |||
=== Links === | |||
==== Projekt ==== | |||
==== Weblinks ==== | |||
# https://www.thomas-krenn.com/de/wiki/Link_Aggregation | |||
# https://www.thomas-krenn.com/de/wiki/Link_Aggregation_und_LACP_Grundlagen | |||
[[Kategorie:Link Aggregation]] |
Aktuelle Version vom 6. November 2024, 12:33 Uhr
topic - Beschreibung
Beschreibung
- Link Aggregation nach IEEE 802.1AX-2008
- Verteilung von Netzwerk-Traffic über mehrere Links
- Der Standard gibt im Kapitel 5.2.4 Frame Distributor allerdings keine genauen Vorgaben, wie die Ethernet Frames verteilt werden müssen
MAC-based load balancing
- Beispiel
- vier aktive Links
- Daten werden von Quell- zur Ziel-MAC-Adresse übertragen
Quell-MAC-Adresse: 0x0000A4F8B321 - das letzte Byte ist 0x21 (= Binär 00100001) - die letzten drei Bits sind also 001 Ziel-MAC-Adresse: 0x0000A2123456 - das letzte Byte ist 0x56 (= Binär 01010110) - die letzten drei Bits sind also 110
- Formel zur Auswahl des Links
- {(001 XOR 110) MOD 4}
- 001 XOR 110 = 111 (binär) = 7 (dezimal)
- 7 MOD 4 (dezimal) = 3 (dezimal)
- Link Nummer 3 wird verwendet
Implementierungen
- Hersteller implementieren die Frame-Verteilung des ausgehenden Traffics unterschiedlich
- Diese Informationen erleichtern Ihnen die richtige Konfiguration Ihrer Komponenten für eine effektive Lastverteilung des Netzwerk-Traffics.
3Com
- 3Com beschreibt im Kapitel Load Sharing Criteria for Link Aggregation Groups des Switch 4500G Family Configuration Guide die möglichen Kritierien zur Lastverteilung.
- Sie können z. B. beim 3com 4500G eine der folgenden Kriterien (oder eine beliebige Kombination davon) auswählen:[1]
- MAC-Adressen, die in Paketen übertragen werden
- IP-Adressen in den Paketen
- In den Paketen enthaltene Portnummern
- Kriterien
- Verwenden Sie nur eine Quell-IP-Adresse.
- Verwenden Sie nur eine Ziel-IP-Adresse.
- Verwenden Sie nur eine MAC-Quelladresse.
- Alleinige Verwendung einer Ziel-MAC-Adresse.
- Kombinieren Sie eine Quell-IP-Adresse und eine Ziel-IP-Adresse.
- Kombinieren Sie eine Quell-IP-Adresse und eine Quell-Portnummer.
- Kombinieren Sie eine Ziel-IP-Adresse und eine Ziel-Portnummer.
- Kombinieren Sie zwei oder alle drei der folgenden Elemente: Eingangs-Portnummer, Quell-MAC-Adresse und Ziel-MAC-Adresse.
Cisco
- Cisco Switche unterstützen je nach Modell bis zu neun unterschiedliche Frame Distribution Types.
- Diese können Sie über das distribution-type Kommando konfigurieren.
- Unterstützte Frame Distribution Types [2]
- src-mac — Source MAC addresses
- dst-mac — Destination MAC addresses
- src-dst-mac — Source and destination MAC addresses
- src-ip — Source IP addresses
- dst-ip — Destination IP addresses
- src-dst-ip — Source and destination IP addresses (Default)
- src-port — Source Layer 4 port
- dst-port — Destination Layer 4 port
- src-dst-port — Source and destination Layer 4 port
Im Infiniband-Bereich gibt es einen weiteren Modus:[3]
- round robin
Intel Modular Server Ethernet Switch
Der Intel Modular Server Ethernet Switch verwendet eine MAC-basierte Lastverteilung:[4] * für bekannten Unicast:
- für unbekannten Unicast/Multicast/Broadcast: Selected_trunk_member = (3_LSB_Src_MAC Xor 3_LSB_Dst_MAC) % number_of_trunk_members_in_trunk_ID
6_LSB und 3_LSB stehen jeweils für die sechs bzw. drei 'Least Significant Bits' (also die letzten sechs bzw. drei Bits). Die Funktionsweise einer solchen MAC-basierten Lastverteilung sind weiter unten im Bereich Nortel erklärt.
Nortel
- Nortel bietet Link Aggregation unter der Bezeichnung Multi-Link Trunking (MLT).
- Bei den Ethernet Routing Switches der 5000 Series können Sie zwischen folgenden Load-Balancing Alorithmen wählen:[5]
- MAC-based (basic) load balancing
- IP-based (advanced) load balancing
- Nortel verwendet dabei folgenden Algorithmus
- {(A XOR B) MOD x}
Die Variablen A und B haben dabei folgende Bedeutungen
- im MAC-based (basic) load balancing mode: A und B stehen für die letzten drei (least significant) Bits in der Quell- und Ziel-MAC-Adresse.x steht für die Anzahl der aktiven MLT Links.
- im IP-based (advanced) load balancing mode A und B stehen für die letzten drei (least significant) Bits in der Quell- und Ziel-IP-Adresse.x steht für die Anzahl der aktiven MLT Links.
Linux
- Linux unterstützt zwei mögliche Frame Distribution Algorithms
- transmit hash policy to use for slave selection
- Diese können den xmit_hash_policy Parameter konfiguriert werden
- Werte für xmit_hash_policy
- layer2 (vor Bonding Version 2.6.3 der einzige Algorithmus, ab Bonding Version 2.6.3 Standardeinstellung)
- layer3+4 (optionaler Algorithmus, verfügbar ab Bonding Version 2.6.3)
- Hinweis
- Diese Informationen beziehen sich auf den Linux Bonding Treiber
- Ab Linux Kernel 3.3 gibt es zusätzlich das Teaming Device im Userspace
layer2
Verwendet ein XOR der Ethernet Quell- und Zieladresse (MAC Adresse des Senders und MAC Adresse des Empfängers):
- Netzwerktraffic, der von diesem Linux-Rechner zu einem bestimmten anderen Rechner übertragen wird geht dabei immer über den gleichen Link (Slave).
- Netzwerktraffic zu unterschiedlichen Gegenstellen (unterschiedliche MAC Zieladressen) wird auf alle Links (Slaves) verteilt. Dieser Algorithmus ist vollständig 802.3ad compliant.
layer3+4
- Dieser Algorithmus verwendet Informationen von höheren Protokollschichten, sofern verfügbar.
- Das ermöglicht die Verteilung von Traffic zwischen zwei direkten Netzwerk-Peers über mehrere Links (Slaves).
- Sind beispielsweise zwei Router so miteinander verbunden, werden die Ethernet Frames verteilt, da Informationen von höheren Protokollschichten (z. B. IP Adressen) in den Algorithmus einbezogen werden.
- Würden nur die MAC-Adressen (wie bei layer2) verwendet, ginge der Traffic immer über den selben Link (Slave).
- Eine einzelne Verbindung (von IP Adresse A zu IP Adresse B) geht aber nach wie vor immer nur über einen einzelnen Link.
Die Formel für unfragmentierte TCP und UDP Pakete lautet:
- Für fragmentierte TCP oder UDP Pakete und anderen IP Protokoll Traffik werden die Quell- und Ziel-Port Informationen ausgelassen.
- Für non-IP Traffik wird die Formel wie bei layer2 transmit hash policy verwendet.
Diese Policy zielt darauf ab, das Verhalten von bestimmen Switchen (Cisco Switche mit PFC2 sowie einige Foundry and IBM Produkte) nachzuahmen.
- Dieser Algorithmus ist nicht vollständig 802.3ad compliant
- Eine einzelne TCP oder UDP Konversation, die sowohl fragmentierte als auch unfragmentierte Pakete enthält, kann dazu führen, dass Pakete über zwei unterschiedliche Interfaces laufen.
- Das kann zu einer out-of-order Zustellung führen.
- Die meisten Traffic-Types haben allerdings nicht diese Eigenschaften.
- TCP wird selten fragmentiert. Und der meiste UDP Traffic ist nicht in derartigen erweiterten Konversationen enthalten.
- Andere Implementierungen von 802.3ad können diese Non-Compoliance tolerieren oder auch nicht.
FreeBSD
FreeBSD verwendet einen Hash des Protokoll Headers. Der Hash beinhaltet dabei:[7]
- Ethernet Quell- und Zieladresse (MAC Adresse des Senders und MAC Adresse des Empfängers)
- VLAN-tag (falls verfügbar)
- IPv4/IPv6 Quell- und Zieladresse (falls verfügbar)