Link Aggregation/Link Aggregation Control Protocol: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
Zeile 143: Zeile 143:
In diesem Artikel zeigen wir wie die diversen Hersteller die Frame Verteilung des ausgehenden Traffics implementieren. Diese Informationen erleichtern Ihnen die richtige Konfiguration Ihrer Komponenten für eine effektive Lastverteilung des Netzwerk-Traffics.  
In diesem Artikel zeigen wir wie die diversen Hersteller die Frame Verteilung des ausgehenden Traffics implementieren. Diese Informationen erleichtern Ihnen die richtige Konfiguration Ihrer Komponenten für eine effektive Lastverteilung des Netzwerk-Traffics.  


== 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]] * MAC addresses carried in packets  
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]] * MAC addresses carried in packets  
* IP addresses carried in packets  
* IP addresses carried in packets  
* Port numbers carried in packets
* Port numbers carried in packets


 
Konkret gibt es die folgenden möglichen Kriterien:  
 
* Use a source IP address alone.  
Konkret gibt es die folgenden möglichen Kriterien: * Use a source IP address alone.  
* Use a destination IP address alone.  
* Use a destination IP address alone.  
* Use a source MAC address alone.  
* Use a source MAC address alone.  
Zeile 160: Zeile 158:
* Combine any two or all three of the following elements: ingress port number, source MAC address, and destination MAC address.
* Combine any two or all three of the following elements: ingress port number, source MAC address, and destination MAC address.


 
=== Cisco ===
 
== 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. Zu den unterstützten Frame Distribution Type zählen:[https://www.thomas-krenn.com/de/wiki/Link_Aggregation_Lastverteilungs-Algorithmen#cite_note-2 [2]] * src-mac — Source MAC addresses  
Cisco Switche unterstützen je nach Modell bis zu neun unterschiedliche Frame Distribution Types. Diese können Sie über das distribution-type Kommando konfigurieren. Zu den unterstützten Frame Distribution Type zählen:[https://www.thomas-krenn.com/de/wiki/Link_Aggregation_Lastverteilungs-Algorithmen#cite_note-2 [2]] * src-mac — Source MAC addresses  
* dst-mac — Destination MAC addresses  
* dst-mac — Destination MAC addresses  
Zeile 174: Zeile 169:
* src-dst-port — Source and destination Layer 4 port
* src-dst-port — Source and destination Layer 4 port


Im Infiniband-Bereich gibt es einen weiteren Modus:[https://www.thomas-krenn.com/de/wiki/Link_Aggregation_Lastverteilungs-Algorithmen#cite_note-3 [3]]
* round robin


 
=== Intel Modular Server Ethernet Switch ===
Im Infiniband-Bereich gibt es einen weiteren Modus:[https://www.thomas-krenn.com/de/wiki/Link_Aggregation_Lastverteilungs-Algorithmen#cite_note-3 [3]] * round robin
 
 
 
== Intel Modular Server Ethernet Switch ==
 
Der Intel Modular Server Ethernet Switch verwendet eine MAC-basierte Lastverteilung:[https://www.thomas-krenn.com/de/wiki/Link_Aggregation_Lastverteilungs-Algorithmen#cite_note-4 [4]] * für bekannten Unicast: <br/><div style="margin-left:1cm;margin-right:0cm;">Selected_trunk_member = (6_LSB_Src_MAC Xor 6_LSB_Dst_MAC)&nbsp;% number_of_trunk_members_in_trunk_ID</div>
Der Intel Modular Server Ethernet Switch verwendet eine MAC-basierte Lastverteilung:[https://www.thomas-krenn.com/de/wiki/Link_Aggregation_Lastverteilungs-Algorithmen#cite_note-4 [4]] * für bekannten Unicast: <br/><div style="margin-left:1cm;margin-right:0cm;">Selected_trunk_member = (6_LSB_Src_MAC Xor 6_LSB_Dst_MAC)&nbsp;% 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)&nbsp;% 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)&nbsp;% 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)]. 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]] * MAC-based (basic) load balancing  
* MAC-based (basic) load balancing  
* IP-based (advanced) load balancing
* IP-based (advanced) load balancing


Nortel verwendet dabei folgenden Algorithmus:  
Nortel verwendet dabei folgenden Algorithmus:  
Zeile 202: Zeile 189:
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 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>
* 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>


=== Beispiel MAC-based load balancing ===
=== Beispiel MAC-based load balancing ===
In diesem Beispiel mit vier aktiven Links werden Daten von der folgenden 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  
In diesem Beispiel mit vier aktiven Links werden Daten von der folgenden 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
* Ziel-MAC-Adresse: 0x0000A2123456 - das letzte Byte ist 0x56 (= Binär 01010110) - die letzten drei Bits sind also 110


Somit lautet hier die Formel zur Auswahl des Links:  
Somit lautet hier die Formel zur Auswahl des Links:  
<div style="margin-left:1cm;margin-right:0cm;">{(001 XOR 110) MOD 4} </div>
<div style="margin-left:1cm;margin-right:0cm;">{(001 XOR 110) MOD 4} </div>
<div style="margin-left:1cm;margin-right:0cm;">001 XOR 110 = 111 (binär) = 7 (dezimal) </div>
<div style="margin-left:1cm;margin-right:0cm;">001 XOR 110 = 111 (binär) = 7 (dezimal) </div>
<div style="margin-left:1cm;margin-right:0cm;">7 MOD 4 (dezimal) = 3 (dezimal)</div>
<div style="margin-left:1cm;margin-right:0cm;">7 MOD 4 (dezimal) = 3 (dezimal)</div>


Zeile 223: Zeile 202:


== Linux ==
== Linux ==
Linux unterstützt zwei mögliche Frame Distribution Algorithms (unter Linux als transmit hash policy to use for slave selection bezeichnet). Diese können Sie seit Bonding Version 2.6.3 über den <tt>xmit_hash_policy</tt> Parameter konfigurieren. Mögliche Werte für <tt>xmit_hash_policy</tt> sind:[https://www.thomas-krenn.com/de/wiki/Link_Aggregation_Lastverteilungs-Algorithmen#cite_note-6 [6]] * layer2 (vor Bonding Version 2.6.3 der einzige Algorithmus, ab Bonding Version 2.6.3 Standardeinstellung)  
Linux unterstützt zwei mögliche Frame Distribution Algorithms (unter Linux als transmit hash policy to use for slave selection bezeichnet). Diese können Sie seit Bonding Version 2.6.3 über den <tt>xmit_hash_policy</tt> Parameter konfigurieren. Mögliche Werte für <tt>xmit_hash_policy</tt> sind:[https://www.thomas-krenn.com/de/wiki/Link_Aggregation_Lastverteilungs-Algorithmen#cite_note-6 [6]] * 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)


 
; Hinweis
 
: Die hier bereitgestellten Informationen beziehen sich auf den Linux Bonding Treiber. Ab [https://www.thomas-krenn.com/de/wiki/Neuerungen_im_Linux_Kernel#Kernel_3.3 Linux Kernel 3.3] gibt es zusätzlich das Teaming Device im Userspace, auf dessen Eigenschaften hier noch nicht eingegangen wird.  
Hinweis: Die hier bereitgestellten Informationen beziehen sich auf den Linux Bonding Treiber. Ab [https://www.thomas-krenn.com/de/wiki/Neuerungen_im_Linux_Kernel#Kernel_3.3 Linux Kernel 3.3] gibt es zusätzlich das Teaming Device im Userspace, auf dessen Eigenschaften hier noch nicht eingegangen wird.  


=== layer2 ===
=== layer2 ===
Verwendet ein XOR der Ethernet Quell- und Zieladresse (MAC Adresse des Senders und MAC Adresse des Empfängers):  
Verwendet ein XOR der Ethernet Quell- und Zieladresse (MAC Adresse des Senders und MAC Adresse des Empfängers):  


Zeile 240: Zeile 216:


=== layer3+4 ===
=== 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.  
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.  



Version vom 31. Dezember 2022, 15:29 Uhr

Link Aggregation - Bündelung mehrerer physischer LAN-Schnittstellen zu einem logischen Kanal

Beschreibung

Link Aggregation
Zweck
  • Erhöhung des Datendurchsatzes
  • Erhöhung der Ausfallsicherheit
Implementierung

Eine verbreitete und herstellerübergreifende Implementierung stellt das Link Aggregation Control Protocol (LACP) dar, welches im Rahmen der IEEE als IEEE 802.3ad, seit dem Jahr 2008 als IEEE 802.1AX bezeichnet, normiert ist.

Proprietäre Lösungen

Neben LACP bestehen noch proprietäre Lösungen zur dynamischen Bündelung, zum Beispiel das PAgP von Cisco, MESH von HP.

  • Weiterhin existieren noch statische Link-Aggregation-Verfahren, die alle mehr oder weniger proprietär sind und somit nicht herstellerübergreifend eingesetzt werden können.
Link Aggregation nach IEEE 802.1AX-2008

Link Aggregation nach IEEE 802.1AX-2008 (früher IEEE 802.3ad) ist ein Standard zur parallelen Bündelung von mehreren Netzwerkverbindungen.

  • Vorteile einer Link Aggregation gegenüber einer herkömmlichen Verbindung über ein einzelnes Kabel sind eine höhere Verfügbarkeit sowie eine höhere mögliche Übertragungsgeschwindigkeit (abhängig von den jeweiligen Lastverteilungs-Algorithmen).
  • In diesem Artikel finden Sie Grundlagen Informationen zu Link Aggregation und LACP, ein konkretes Beispiel dazu im Artikel Link Aggregation beim Modular Server.

Entwicklung

Frühe Implementierungen

Die ersten Implementierungen dieser Technik stammen von Kalpana (heute Cisco)

  • Dienten ausschließlich der Erhöhung des Datendurchsatzes
  • zwischen zwei Ethernet-Switches
  • welche ebenfalls von Kalpana erfunden wurden
Aktuelle Implementierungen

Können auch Server und andere Systeme wie Network Attached Storage (NAS) per Link Aggregation mit höherem Durchsatz an eine Netzwerkstruktur anbinden.

Bezeichnung

Je nach Hersteller oder Kontext werden für die Bündelung von Ethernet-Schnittstellen verschiedene Bezeichnungen als Synonyme für Link Aggregation benutzt:

Option  Beschreibung
Link Aggregation (LA)
Link Aggregation Control Protocol (LACP)
Normierter Begriff bei IEEE
Bündelung Deutscher Begriff für die Ethernet-Kanal-Bündelung
Bonding Linux
Etherchannel Cisco
Port Aggregation Hewlett-Packard
Trunking Brocade, Sun Microsystems und einigen anderen Herstellern
Teaming Novell Netware und Microsoft Windows

Allgemeines

Ein PC ist mittels zweier Ethernet-Verbindungen und der Link Aggregation mit einem zentralen Switch verbunden

Mehrere physische Ethernet-Schnittstellen werden zu einer logischen Endpunktverbindung zwischen zwei Geräten zusammengeschaltet

  • Fullduplex-Verbindungen erforderlich
  • Beispielsweise einem PC mit zwei Ethernet-Schnittstellen, welche parallel mit zwei Ports an einem Netzwerk-Switch verbunden werden.
  • Üblicherweise wird LA bei Datenraten von 1 GBit/s und darüber bei Gigabit-Ethernet eingesetzt.

Durch die parallelen Verbindungen kann, der Anzahl der zusammengefassten Verbindungen entsprechend, der Gesamtdurchsatz höher sein.

  • Ein weiterer Vorteil ist eine erhöhte Verfügbarkeit dieser Art von Verbindung.
  • So können bei einigen Verfahren eine oder mehrere physische Schnittstellen ausfallen, ohne dass der logische Kanal unterbrochen wird, solange zumindest noch eine physische Verbindung besteht.
  • Lediglich der Datendurchsatz vermindert sich entsprechend den fehlenden Verbindungen.

Eigenschaften

Im Netzwerk-Stack ist der Link Aggregation Sublayer innerhalb des Data Link Layers (Sicherungsschicht) implementiert, konkret zwischen dem MAC Client und MAC Sublayern

Eine Link Aggregation Group (LAG) nach IEEE 802.1AX-2008 (früher IEEE 802.3ad) hat folgende Eigenschaften:

  • IEEE 802.3ad Link Aggregation (LAG) what it is, and what it is not (Präsentation von Howard Frazier und anderen, Ottawa 17. April 2007)
  • LAG bietet ein automatisches Recovery bei Ausfällen von einzelnen physischen Links.
  • Solange zumindest ein physischer Link vorhanden ist, bleibt die LAG Verbindung aufrecht.
  • Der Datenverkehr wird frameweise über die physischen Links verteilt.
  • Alle Frames, die zu einer bestimmten Datenkommunikation gehören, werden aber über dieselbe physische Verbindung (Kabel) übertragen.
  • Das gewährleistet die Zustellung der einzelnen Frames einer Datenkommunikation in der richtigen Reihenfolge (verhindert misordering).

Verteilung des Datenverkehrs

Link Aggregation erlaubt die Verteilung von Ethernet Frames auf alle verfügbaren physischen Links einer LAG.

  • Damit übersteigt der mögliche Datendurchsatz die Datenrate eines einzelnen physischen Links.

Für die Verteilung (Frame Distributor) definiert der IEEE Standard allerdings keine konkreten Algorithmen.

Vorgaben
  • Die Reihenfolge von Frames einer bestimmten Datenkommunikation darf nicht vertauscht werden.
  • Frames dürfen nicht dupliziert werden.

Das Original-Zitat aus dem Kapitel 5.2.4 Frame Distributor beschreibt das folgendermaßen:

This standard does not mandate any particular distribution algorithm(s); however, any distribution algorithm shall ensure that, when frames are received by a Frame Collector as specified in 5.2.3, the algorithm shall not cause
a) Misordering of frames that are part of any given conversation, or
b) Duplication of frames.
The above requirement to maintain frame ordering is met by ensuring that all frames that compose a given conversation are transmitted on a single link in the order that they are generated by the MAC Client; hence, this requirement does not involve the addition (or modification) of any information to the MAC frame, nor any buffering or processing on the part of the corresponding Frame Collector in order to reorder frames.

Die Qualität, wie gut die einzelnen Frames verteilt werden und wie hoch der praktische mögliche Datendurchsatz steigt, hängt somit von der konkreten Implementierung der Link Aggregation in einem Switch bzw. Treiber ab.

  • FreeBSD verwendet dazu beispielsweise eine Hash des Protokoll Headers.
  • Der Hash beinhaltet dabei Ethernet/MAC Quell- und Zieladressen, falls verfügbar ein VLAN-tag, sowie IPv4/IPv6 Quell- und Zieladressen.

Weitere Informationen dazu finden Sie im Artikel Link Aggregation Lastverteilungs-Algorithmen.

Bündelungsverfahren

Option  Beschreibung
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 ist im Standard Link Aggregation Control Protocol (LACP) und bei proprietären Verfahren wie PAgP möglich.

Grundlegende Implementierung

Die grundlegende Implementierung einer Kanalbündelung zwischen zwei Ethernet-Switches kommt mit erstaunlich geringen Änderungen (im Vergleich zu einem normalen Switch) aus.

  • Natürlich muss das Management Interface zur Definition des Trunks erweitert werden.
  • Dann ist die Art und Weise, wie ein Switch seine SAT (engl. Vorlage:Lang – Tabelle mit den MAC-Adressen der Absender) erlernt, betroffen, und schließlich werden Broadcasts und Pakete, die an unbekannte Ziel-MAC-Adressen gerichtet sind, vom Trunk gesondert behandelt.
  • Management Interface: Es müssen Menüstrukturen zur Verwaltung der Trunks geschaffen werden.
  • Adress-Lernphase: Empfängt ein Switch auf einem Trunk-Port eine unbekannte Absenderadresse, so wird diese nicht automatisch dem Adressstapel (SAT) dieses Ports zugeordnet, vielmehr versucht der Switch allen Mitgliedern des Trunks eine gleiche Netzlast zuzuordnen und wird daher neue Absenderadressen gleichmäßig auf alle zum Trunk gehörenden Ports verteilen.
  • So erhält also etwa der Port, der momentan die wenigsten Einträge in seiner SAT führt, die neue Adresse.
  • Je nach Implementierung kommen auch andere Verteilungsstrategien zum Einsatz, siehe Abschnitt Bündelungsverfahren.
  • Broadcasts und unbekannte Adressen: Diese werden bei einem Trunk nicht über alle Ports geschickt, sondern pro Trunk nur über eine Leitung, im Allgemeinen wird der Port mit der niedrigsten Port-Nummer gewählt.
  • Je nach Implementierung werden zur Auswahl des Ports auch andere Strategien genutzt, siehe Abschnitt Bündelungsverfahren.

Interessanterweise sind keine weiteren Maßnahmen nötig, um eine einfache Implementierung zu realisieren.

  • Die Implementierung der Transportmechanismen (Vorlage:Lang, Vorlage:Lang usw.) benötigt keine Änderung.
  • Dennoch ist diese grundlegende Implementierung bei weitem nicht optimal und eignet sich eigentlich nur für das Koppeln zweier Netze.
  • Ein Nachteil besteht darin, dass je MAC-Adresse nur ein Port des Trunks benutzt wird – für eine einzelne Station bedeutet es, dass sie keine Vorteile hat – nur das Netz insgesamt profitiert.
  • Weiterhin kann es vorkommen, dass die aktivsten Stationen zufällig alle dem gleichen Port zugeordnet sind, so dass folglich die Last nicht gleichmäßig innerhalb des Trunks verteilt wird.
  • Auch gibt es Bündelungsverfahren, die leistungsstarke Server anbinden können.
  • All diese Fakten haben dazu geführt, dass viele Hersteller verschiedene, aber auch weiterentwickelte Implementierungen anbieten.
  • Diese sind in der Regel nicht miteinander kompatibel.
  • Diese Inkompatibilitäten haben dazu geführt, dass sich das IEEE mit dem Problem befasst und das Link Aggregation Control Protocol (LACP, IEEE 802.3ad) spezifiziert hat.

Link Aggregation: Algorithmen

Link Aggregation nach IEEE 802.1AX-2008 (früher IEEE 802.3ad) ermöglicht die 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.

In diesem Artikel zeigen wir wie die diversen Hersteller die Frame Verteilung des ausgehenden Traffics implementieren. 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 addresses carried in packets

  • IP addresses carried in packets
  • Port numbers carried in packets

Konkret gibt es die folgenden möglichen Kriterien:

  • Use a source IP address alone.
  • Use a destination IP address alone.
  • Use a source MAC address alone.
  • Use a destination MAC address alone.
  • Combine a source IP address and a destination IP address.
  • Combine a source IP address and a source port number.
  • Combine a destination IP address and a destination port number.
  • Combine any two or all three of the following elements: ingress port number, source MAC address, and destination MAC address.

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. Zu den unterstützten Frame Distribution Type zählen:[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:

Selected_trunk_member = (6_LSB_Src_MAC Xor 6_LSB_Dst_MAC) % number_of_trunk_members_in_trunk_ID
  • 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.

Beispiel MAC-based load balancing

In diesem Beispiel mit vier aktiven Links werden Daten von der folgenden 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

Somit lautet hier die Formel zur Auswahl des Links:

{(001 XOR 110) MOD 4}
001 XOR 110 = 111 (binär) = 7 (dezimal)
7 MOD 4 (dezimal) = 3 (dezimal)

Es wird also der Link Nummer 3 verwendet.

Linux

Linux unterstützt zwei mögliche Frame Distribution Algorithms (unter Linux als transmit hash policy to use for slave selection bezeichnet). Diese können Sie seit Bonding Version 2.6.3 über den xmit_hash_policy Parameter konfigurieren. Mögliche Werte für xmit_hash_policy sind:[6] * 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
Die hier bereitgestellten Informationen beziehen sich auf den Linux Bonding Treiber. Ab Linux Kernel 3.3 gibt es zusätzlich das Teaming Device im Userspace, auf dessen Eigenschaften hier noch nicht eingegangen wird.

layer2

Verwendet ein XOR der Ethernet Quell- und Zieladresse (MAC Adresse des Senders und MAC Adresse des Empfängers):

"xmit_hash_policy layer2"

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:

"xmit_hash_policy layer3+4"

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.

Diese 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)


Einzelnachweise


  1. FreeBSD Handbook, Chapter 31 Advanced Networking


Link Aggregation

Static Link Aggregation

Bei der statischen Link Aggregation werden alle Konfigurationsparameter einmalig auf beiden beteiligten Komponenten einer LAG eingerichtet.

Anmerkung
VMware ESX/ESXi 4.0, 4.1 & ESXi 5.0 unterstützen ausschließlich Static Link Aggregation.

Der IEEE Standard beschreibt die Steuerung der Link Aggregation in Kapitel 5.3 Link Aggregation Control ab Seite 23.

Dynamic Link Aggregation - Link Aggregation Control Protocol (LACP)

Das Link Aggregation Control Protocol (LACP) erlaubt darüber hinaus den Austausch von Informationen bezüglich der Link Aggregation zwischen den zwei Mitgliedern einer Link Aggregation.

  • Diese Informationen werden in LACPDUs (Link Aggregation Control Protocol Data Units) verpackt.

Bei LACP kann jeder einzelne Port als Active LACP oder Passive LACP konfiguriert werden:

  • Passive LACP: der Port bevorzugt von sich aus keine LACPDUs zu übertragen.
  • Nur wenn die Gegenstelle Active LACP hat, überträgt der Port LACPDUs (preference not to speak unless spoken to).
  • Active LACP: der Port bevorzugt LACPDUs zu übertragen und somit das Protokoll zu sprechen - unabhängig davon ob die Gegenstelle Passive LACP hat oder nicht (a preference to speak regardless).

LACP bietet gegenüber einer statischen Link Aggregation folgende Vorteile:

  • Ein Ausfall eines physischen Links wird selbst dann erkannt, wenn die Punkt-zu-Punkt Verbindung über einen Media Konverter läuft und damit der Link-Status am Switchport auf Up bleibt.
  • Da LACPDUs auf dieser Verbindung damit ausbleiben, wird dieser Link aus der LAG entfernt.
  • Somit gehen darüber keine Pakete verloren.
  • Die beiden Geräte können sich gegenseitig die LAG Konfiguration bestätigen.
  • Bei statischer Link Aggregation werden Konfigurations- oder Verkabelungsfehler oft nicht so schnell erkannt.

Der IEEE Standard beschreibt LACP im Kapitel 5.4 Link Aggregation Control Protocol (LACP) ab Seite 30.

Anwendungen

Voraussetzungen

Die einzelnen Links einer Link Aggregation Group müssen immer parallele Punkt-zu-Punkt Verbindungen sein.
Anforderungen an verwendeten Links
  • Full-duplex Modus
  • Identische Datenrate
  • Parallele Punkt-zu-Punkt Verbindungen
    • Endstelle immer genau ein Switch oder Server
Link Aggregation mit mehreren Switches
  • Link Aggregation mit mehreren Switches an einem Ende der Link Aggragation wie etwa bei Split Multi-Link Trunking (SMLT) von Nortel ist nicht möglich.
  • Einzige Ausnahme sind virtuelle Switche, die zwar aus mehreren physischen Switchen bestehen, nach außen sich aber wie ein einzelner Switch verhalten (z.B. Cisco Virtual Switching System 1440 (VSS1440)).

Sicherheit

Dokumentation

RFC

Man-Pages

Info-Pages

Siehe auch

Allgemein
Linux

Links

Projekt-Homepage

Weblinks

  1. IEEE 802.x Standards (LAN)
  2. Link Aggregation und LACP Grundlagen (Thomas Krenn Wiki)
  3. Etherchannel und Load Balancing bei Cisco
  4. Port Trunking bei Hewlett-Packard

Einzelnachweise

Testfragen

Testfrage 1

Antwort1

Testfrage 2

Antwort2

Testfrage 3

Antwort3

Testfrage 4

Antwort4

Testfrage 5

Antwort5