aqui
Goto Top

Link Aggregation (LAG) im Netzwerk

article-picture

back-to-topEinleitung


Das Bündeln mehrerer, paralleler Links zu einem virtuellen Link mit Link Aggregation nach dem IEEE Standard 802.3ad (seit dem Jahr 2008 IEEE 802.1ax) bietet in Netzwerk Designs zwei wesentliche Vorteile:

  • Bandbreiten- bzw. Kapazitätserhöhung durch Lastverteilung
  • Automatisches Failover, Ausfallredundanz

Es wird daher häufig in Netzwerken verwendet, in denen eine erhöhte Verfügbarkeit gefordert ist (Ausfallsicherheit, Redundanz). Sie kommt immer zusammen mit einer Bandbreitenerhöhung daher, so das man in diesen Netzen gleich 2 Fliegen mit einer Klappe schlägt. Man erhöht die Ausfallsicherheit bei gleichzeitiger Erhöhung der Lastkapazitäten.

Besonders bei der Anbindung kritischer Komponenten mit hohen Traffic Lasten wie Server, NAS, Firewall oder Router sind LAGs eine Option, die Anforderung an die Netzwerk Kapazität und Verfügbarkeit deutlich zu erhöhen und einem Hardware- oder Link Ausfall proaktiv vorzubeugen.

Link Aggregation geht im Netzwerk (fast) immer mit LACP (Link Aggregation Control Protokoll) einher. Das LACP Protokoll sorgt für eine Verteilung der Netzwerk Last auf Hashing Basis entweder der Mac- oder der IP Adressen oder die Kombination beider. Bessere Komponenten nutzen zusätzlich den TCP/UDP Port sowie die VLAN ID zur Hashberechnung um eine granularere Verteilung des Traffics zu erreichen. Die Güte der Lastverteilung ist bei 802.1ax von der Entropie der Mac- oder IP Adressen bzw. Anwendungen im Netz abhängig.

Zu beachten ist das eine Link Aggregation bei Herstellern oftmals unterschiedlich bezeichnet wird. Gemeint ist aber immer dasselbe. Teaming bzw. Bonding im Server Bereich. Cisco bezeichnet LAGs als "Ether Channel" oder "Port Channel". Die Masse der anderen Switch Hersteller als "Trunk", was gelegentlich Verwirrung erzeugt. Auch Hypervisoren wie VmWare, HyperV usw. nutzen eigene, teils proprietäre und zum LACP nicht kompatible Verfahren der Linkbündelung. Es kommt also im Detail immer auf eine korrekte Beschreibung an. Desahlb bezeichnet "LACP LAG" es immer eindeutig.

Ein klassisches, redundantes LAG Standard Netzwerkdesign (Tier 2) sieht z.B. so aus:

lag-design

Die hier als einfaches Beispiel gezeigte Internet Anbindung mit einem singulären Router/Firewall ist bei einem Design mit zweifacher Provider Anbindung (Router oder Firewall Cluster) natürlich doppelt auszulegen. (Infos dazu u.a. auch hier).
Für einen LACP LAG gelten in jedem Falle die folgenden, zwingenden Grundvoraussetzungen:
  • LACP LAGs müssen immer beidseitig konfiguriert werden.
  • LAG Member Links müssen zwingend die gleiche Geschwindingkeit haben. Die Mischung von Glasfaser und Kupfer Links ist dabei erlaubt solange die Link Geschwindigkeit gleich ist. SFP bzw. SFP+ Module können beidseitig ebenso gemischt werden. Relevant ist immer nur die gleiche Member Link Speed.
  • Ein LACP LAG ist nur dann auf 2 Komponenten teilbar wenn die beiden Endkomponenten in einem Full Stack arbeiten oder andere MLAG Protokolle (Multi-chassis Link AGgregation) wie z.B. vPC, Stackwise Virtual (Cisco), MCT (Brocade/Ruckus) usw. dies supporten. MLAG Protokolle sind immer Hersteller proprietär und zw. Herstellern nicht kompatibel. (Siehe dazu auch hier).
  • Nicht Full-Stacking fähige Einzelswitches und solche ohne MLAG Support erlauben kein Aufsplitten von LACP LAGs ! In dem Fall müssen LAGs immer auf dem selben Gerät enden.
Ein LAG Interface wird auf einem Endgerät wie Switch, Router bzw. Firewall, Server / NAS usw. logisch immer wie ein einzelnes Interface gesehen.
Je nach Hersteller und Feature Support schwankt die maximale Anzahl an bündelbaren LAG Member Interfaces. Bei einfachen Switches und Router/Firewalls sind es meist 4. Bessere Systeme supporten 8 bis 12 Interfaces. Ein Blick ins Datenblatt klärt diese Limits.

Das LAG Interface und seine Memberports müssen zwingend identisch konfiguriert sein! Ist das nicht der Fall bleibt ein LACP LAG inaktiv. Deshalb erlauben viele Hersteller eine Konfig von Port Parametern wie VLAN Tagging usw. immer nur auf dem virtuellen LAG Interface. So ist immer absolut sichergestellt das diese Portkommandos sicher auf die Member Interfaces distribuiert werden.

Das folgende Tutorial zeigt Praxisbeispiele des obigen Designs anhand gängiger Hardware Komponenten für kleine und mittlere Netzwerke (KMU Hardware).
Los gehts...


back-to-topLAG mit Firewall am Beispiel pfSense/OPNsense


Für beide Firewall Modelle gelten unbedingt folgende Voraussetzungen:
  • LAG Member Interfaces dürfen im Interface Assignment (Zuordnung) nicht zugeordent sein !
  • LAG Member Interfaces dürfen keine IP und/oder DHCP Bindung haben !
Bei beiden ist die Vorgehensweise identisch, die im Übrigen auch bei allen anderen Firewall und Router Herstellern ähnlich ist.
Man bildet zuerst ein virtuelles LAG Interface (Gruppe) was dann als fertiger LAG über das Interface Assignment als ein virtuelles Interface zugewiesen wird, eine IP bekommt und an einen DHCP Server gebunden wird.
Bei VLAN Nutzung werden diesem Interface dann die entsprechenden VLAN IDs zugewiesen. Analog wie auf einem klassischen Ethernet Interface

back-to-topMember Interface Zuordnung

memneu.

back-to-topLAG Interface Assignment

lagassneu.

back-to-topVLANs auf einem LAG Interface

(Hier nur mit VLAN 10 als Beispiel. Weitere VLANs ggf. hinzufügen.)
vlanneu.


back-to-topLAG mit Sophos UTM Firewall


Auch hier bildet man vorher eine Link Aggregation Gruppe der man die physischen Interfaces zuweist. Dieser Gruppe weist man dann über "Neues Interface ein Interface mit IP und DHCP zu.
sophosutm


back-to-topLAG mit Switches

back-to-topCisco Catalyst (IOS, IOS-XE)

Der Index "1" der Channel Group verweist auf das Port Channel Interface 1
(Anmerkung: Das Kommando switchport trunk allow vlan all erlaubt hier ALLE VLANs auf dem Link. Natürlich kann man das auch nur dediziert erlauben wie z.B. switchport trunk allow vlan add 1,10 nur spezifisch für die VLANs 1 und 10)

back-to-topCisco SG Modellreihe und CBS Business Modelle

lag1
lag2

back-to-topRuckus ICX

Der Ruckus ICX zeigt mit einem Show Kommando die fehlerfreie Funktion des LAGs:
Man sieht im Status "Ope" (= Operational) das beide Ports im LACP Link Aggregation aktiv sind und erkennt die Mac Adresse der Firewall an beiden Memberports (Siehe Screenshot LAG Interface OPNsense oben).

back-to-topMikrotik

Die Mikrotik Link Aggregation (Bonding) wird in einem separaten Tutorial HIER beschrieben.

back-to-topZyxel GS1900

LAG anlegen
zylag
Member Ports hinzufügen
zylagmem
LAG Status
zylagstat

back-to-topHP ProCurve

(Beispiel HPE 5406zl-Switch)
(Beispiel HPE 2910-Switch)

back-to-topHPE V1910

Wichtig !: Unbedingt den Punkt Dynamic LACP auf enable setzen ! Danach werden im GUI einfach die LAG Member Ports markiert, was dann automatisch das LAG Interface BAGG-x erzeugt wobei das x für die Link Aggregation Gruppe steht.
hp1.
LACP ist dann auch aktiv wenn man es auf Dynamic wie oben beschrieben gesetzt hat.
hp2.

back-to-topNetGear ProSafe

ng1neu.
ng2.

back-to-topTP-Link

Der TP-Link hat eine Besonderheit bei der Link Aggregation die man kennen sollte ! (Portgruppen, siehe Handbuch) !
Beispiel hier bei einem 8 Port Modell:
Die Switchports 1 bis 4 sind fest der LAG Gruppe 1 zugewiesen und die Ports 5 bis 8 der Gruppe LAG 2. LAG fähige Ports sind hier gruppiert was auch bei Modellen mit 24 oder 48 Ports der Fall ist.
Nutzt man die Ports 7 und 8 für seinen Aggregation muss man sie zwingend auf Ports der Gruppe LAG-2 legen. Versucht man diese Ports in den LAG-1 zu legen, scheitert die LAG Konfig mit einer Fehlermeldung des Switches !
Ein LAG auf den Ports 4 und 5 ist mit diesem "Gruppenzwang" technisch unmöglich auf diesem Switch, denn dann wäre ein Memberport Mitglied der Gruppe 1 und einer der Gruppe 2 was nicht supportet ist !
Auch andere (Billig) Hersteller haben häufig bei LAGs diese feste Zuweisung auf dedizierte Portgruppen. Darauf sollte man immer achten bei der Switch Konfiguration um keinen Frust aufkommen zu lassen !
tp1.
tp2.

back-to-topQNAP NAS

qnap

back-to-topLinux Systemd LAG mit Bordmittel

Dank an @colinardo für diesen Tip !


back-to-topMLAG (Multi-Chassis Link Aggregation) Designs


Der dem LACP LAG zugrundeliegende Standard IEEE 802.3ad (bzw. neu 802.3ax) erlaubt, wie oben bereits erwähnt, generell kein Aufsplitten der LAG Member Ports auf unterschiedliche Geräte.
Ein LAG ist also immer eine reine Punkt zu Punkt Verbindung von einzelnen Geräten. Der Grund ist das der Standard sehr schlank ist und auf Address Hashing basiert. Zusätzlich besitzt er keinerlei weitergehende Recovering Verfahren sollten Pakete verloren gehen oder in falscher Reihenfolge am Ziel ankommen. Ein Grund auch warum ein LAG kein per Paket Sharing Verfahren ist sondern immer nur Session bezogen.
Aus Redundanz Sicht ist das natürlich ein Nachteil und ist ein Grund warum Hersteller sehr oft sog. MLAG Verfahren in ihre Produkte integriert haben. Dies erlaubt dann ein Splitting der LAG Memberports und redundante Designs die das Folgende erlauben:
mlag
Leider gibt es keinen MLAG Standard in diesem Umfeld, so das MLAG Verfahren nicht kompatibel sind zwischen verschiedenen Herstellern. Zusätzlich ist die Namensgebung oft unterschiedlich wie "Multi Chassis Trunk" (MCT, Ruckus), "Virtual Port Channel" (vPC, Cisco), "vLAG, virtual LAG" usw.
Eines ist aber allen gemeinsam: Ein Switchpaar tauscht untereinander LACP Sessiondaten nach Herstellerverfahren aus und "gaukelt" einem LACP-LAG Endgerät vor das der LAG nur von einem einzigen Gerät kommt.
So ist es einfach möglich auch redundante LAG Netzwerk Designs zu realisieren. MLAGs finden sich nicht nur häufig in Fabric basierten Datacenter Switches mit TRILL oder SPB sondern auch in Campus- und Provider Switches wie z.B. Mikrotik.
MLAG Verfahren sind mit der aktuell aufkommenden Full Stacking Technologie bei Switches etwas in den Hintergrund geraten, denn bei Full- und Horizontal Stacking fähigen Switches sind MLAG Konfigurationen überflüssig geworden. Ein Full Stacking fähiger Switchstack stellt sich physisch als ein einzelnes Gerät dar. Das gilt dann auch für LACP LAGs. Die MLAG Funktion ist also quasi im Stacking inkludiert.
Bei nicht Stacking fähigen Switches hat die MLAG Funktion aber weiter eine sinnvolle Funktion bei Hochverfügbarkeit und Redundanz.


back-to-topWeiterführende Links


Link Aggregation Grundlagen
https://de.wikipedia.org/wiki/Link_Aggregation

Windows Link Aggregation (Teaming)
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/window ...

VmWare ESXi und LACP LAGs
https://rickardnobel.se/lacp-and-esxi-5-1/

Cisco EtherChannel Grundlagen
https://www.youtube.com/watch?v=j6-kadxwIFQ

Linux Link Aggregation (Bonding)
https://administrator.de/tutorial/netzwerk-management-server-mit-raspber ...

Link Aggregation mit Mikrotik
https://administrator.de/contentid/367186#toc-19

MLAG Link Aggregation mit Mikrotik
https://help.mikrotik.com/docs/display/ROS/Multi-chassis+Link+Aggregatio ...

LACP LAGs mit Linux
https://administrator.de/tutorial/link-aggregation-lag-im-netzwerk-15860 ...

Grundlagen Glasfaser Verkabelung
https://www.youtube.com/watch?v=fRKT6Z9rgUw

Content-Key: 1586053518

Url: https://administrator.de/contentid/1586053518

Printed on: November 26, 2022 at 12:11 o'clock

Member: LauneBaer
LauneBaer Dec 06, 2021 at 12:13:02 (UTC)
Goto Top
Vielen Dank für die wie immer schöne Anleitung. Werde ich gleich bookmarken face-smile

Hier ist noch ein "wird" zu viel: face-smile
Zu beachten ist das eine Link Aggregation wird bei Herstellern oftmals unterschiedlich bezeichnet wird.

Member: aqui
aqui Dec 06, 2021 updated at 12:55:28 (UTC)
Goto Top
Danke für die 💐 und den Hinweis ! face-wink
Member: em-pie
em-pie Dec 06, 2021 updated at 13:10:09 (UTC)
Goto Top
Moin,

mal wieder eine gute Anleitung, besten Dank, "Alter Hase" face-smile

Zur Erweiterung könnte man noch das CLI-Set für die ProCurves ergänzen face-smile
Will man eine LAG auf einem HP-Switch (Non-Aruba-OS) per CLI definieren, funktioniert das wie folgt (am Beispiel eines HPE 5406zl-Switches):

Und am Beispiel eines HPE 2910-Switches:

Hier sieht man, dass bei HP ein Trunk eine LAG definiert, wohingegen es bei Cisco (und anderen) einen Port/ eine LAG beschreibt, welche VLANs-Tags transportieren können.

Gruß
em-pie
Member: aqui
aqui Dec 06, 2021, updated at Dec 07, 2021 at 09:43:19 (UTC)
Goto Top
👍 Ist ergänzt !
Member: colinardo
colinardo Dec 07, 2021 updated at 12:23:57 (UTC)
Goto Top
Wie immer TOP @aqui 👍 .Merci!

Und vielleicht noch als Mini-Ergänzung für die Linux-Konsolen-Junkies die die Bonding Konfiguration mit reinen Systemd-Bordmitteln (systemd-networkd) abfackeln möchten (mache ich ganz gerne mal wenn kein extra Networkmanager zum Einsatz kommen soll, da systemd ja meist eh schon vorhanden ist):

Man erstelle die folgenden vier Dateien im Verzeichnis /etc/systemd/network mit den Inhalten

back-to-top/etc/systemd/network/01-bond0.netdev

Bonding Device mit Optionen erstellen, siehe Options-Referenz

back-to-top/etc/systemd/network/02-bond0.network

IP-Einstellungen des Bonding-Interfaces festlegen (Options-Referenz)

back-to-top/etc/systemd/network/03-nic1.network

NIC1 zum Bond hinzufügen

back-to-top/etc/systemd/network/04-nic2.network

NIC2 zum Bond hinzufügen

Nun lade man die systemd Konfiguration neu, starte den systemd-networkd Dienst und aktivere diesen
Danach noch prüfen ob der Bond mit den richtigen Optionen eingerichtet wurde
Wenn nicht das journal prüfen

Grüße Uwe
Member: aqui
aqui Dec 07, 2021 updated at 17:49:23 (UTC)
Goto Top
Ebenso bei dir Uwe, wie immer, TOP ! Danke für die Ergänzung. 👍
(Leider kann ich keinen Link, weder mit Permanent Link noch klassisch, oben auf deinen Kommentar einbinden. Der landet immer nur auf dem ersten Kommentar und nicht auf deinem. Vermutlich ein Bug...?!)
Aber es ist ja auch so gut zu finden. 😉
Member: colinardo
colinardo Dec 07, 2021 updated at 19:41:26 (UTC)
Goto Top
Zitat von @aqui:
(Leider kann ich keinen Link, weder mit Permanent Link noch klassisch, oben auf deinen Kommentar einbinden. Der landet immer nur auf dem ersten Kommentar und nicht auf deinem. Vermutlich ein Bug...?!)
Also der hier geht bei mir zumindest mobil, Desktop hab ich gerade nicht zur Hand.
https://administrator.de/contentid/1586053518#comment-1596209268
Aber es ist ja auch so gut zu finden. 😉
Joa, denke ich auch, alles gut.
Member: aqui
aqui Dec 07, 2021 updated at 22:38:34 (UTC)
Goto Top
Joa, hatt ich auch versucht aber wenn ich den so
einbaue, dann hopst die Anzeige nur zum ersten Kommentar vom @LauneBaer (der natürlich auch sehr nett ist !) Permanent Link ebenso.
Hab's mal dringelassen zum Testen. Da gibts irgendwie ne böse Wechselwirkung mit den "toc" Inhaltsverzeichnis.
Member: LauneBaer
LauneBaer Dec 08, 2021 at 07:47:22 (UTC)
Goto Top
Zitat von @aqui:
Kommentar vom @LauneBaer (der natürlich auch sehr nett ist !)

Ey, ich erkenne Sarkasmus, wenn ich ihn sehe! face-smile face-smile face-smile
Member: colinardo
colinardo Dec 08, 2021 updated at 10:28:49 (UTC)
Goto Top
Zitat von @aqui:

Joa, hatt ich auch versucht aber wenn ich den so
einbaue, dann hopst die Anzeige nur zum ersten Kommentar vom @LauneBaer (der natürlich auch sehr nett ist !) Permanent Link ebenso.
Hab's mal dringelassen zum Testen. Da gibts irgendwie ne böse Wechselwirkung mit den "toc" Inhaltsverzeichnis.
Habe das hier jetzt auch mit einem Desktop-Browser nicht nachstellen können, sowohl ein Firefox, Chrome, Edge machen die Verlinkung hier einwandfrei, nutzt du eventuell irgendwelche Browser-Erweiterungen?
Ansonsten nehme mit den Details deiner Browser-Umgebung direkt Kontakt mit @Frank auf.
Member: em-pie
em-pie Dec 08, 2021 at 10:51:07 (UTC)
Goto Top
Moin,

der Link im Ausgangspost von @aqui auf den Kommentar von @colinardo funktioniert auch bei mir problemlos (MS Edge 95.0.irgendwas)
Member: aqui
aqui Dec 08, 2021 at 18:04:19 (UTC)
Goto Top
Danke fürs Feedback. Habe @Frank schon ne PM geschickt. Komisch...muss ich gleich mal mit Firefox probieren. Hatte das bis dato hier nur mit Safari (MacBook) getestet. Keine Erweiterungen.
Member: Ex0r2k16
Ex0r2k16 Dec 14, 2021 at 14:20:13 (UTC)
Goto Top
Zitat von @colinardo:

[Match]
Name=bond0

[Network]
Address=192.168.100.2/24
</code>

back-to-top/etc/systemd/network/03-nic1.network

NIC1 zum Bond hinzufügen

back-to-top/etc/systemd/network/04-nic2.network

NIC2 zum Bond hinzufügen

Müsste es hier nicht eth0 und eth1 heißen? face-wink Ansonsten top. Thx!
Member: colinardo
colinardo Dec 14, 2021 updated at 15:53:26 (UTC)
Goto Top
Zitat von @Ex0r2k16:
Müsste es hier nicht eth0 und eth1 heißen? face-wink Ansonsten top. Thx!
Servus @Ex0r2k16.
Das kommt darauf an welche Interfaces man hier bündeln möchte, hier waren es im Beispiel eben eth1 und eth2, und eth0 war bei mir ohne Bond an ein anderes Netz gebunden (Maschine hatte 3 NICs) face-smile.

Grüße Uwe
Member: Ex0r2k16
Ex0r2k16 Dec 16, 2021 at 06:34:49 (UTC)
Goto Top
Zitat von @colinardo:

Zitat von @Ex0r2k16:
Müsste es hier nicht eth0 und eth1 heißen? face-wink Ansonsten top. Thx!
Servus @Ex0r2k16.
Das kommt darauf an welche Interfaces man hier bündeln möchte, hier waren es im Beispiel eben eth1 und eth2, und eth0 war bei mir ohne Bond an ein anderes Netz gebunden (Maschine hatte 3 NICs) face-smile.

Grüße Uwe

oh okay alles klar face-smile