Lastverteilung und Ausfallsicherheit mit mehreren Netzwerkkarten - Teil 1
Teaming, Bonding, Trunking, Etherchannel - Netzwerkkarten arbeiten zusammen.
Mirko Kulpa, 27.10.2004
1 Grundlagen
Oft ist die Netzwerkkarte bzw. die Anbindung an einen Switch der Single Point of Failure (SPOF) in
einem System. Der Ausfall eines Switches oder ein defektes Kabel führen dann zum Ausfall
des gesamten Systems.
Daher gibt eine ganze Reihe Verfahren zur Steigerung der Verfügbarkeit der Netzanbindung.
Ähnliche Techniken werden auch zur Erhöhung der Bandbreite auf Links
und zur Lastverteilung zwischen Servern eingesetzt.
Die folgende Tabelle gruppiert die bekanntesten Techniken nach ihrem Einsatzzweck.
Switch zu Switch
1:1
|
Switch zu Server
1:1
|
Switch zu Server
n:1
|
Switch zu Server
n:n (Cluster)
|
Cisco Fast Etherchannel FEC
|
|
Microsoft NLB
|
Cisco Gigabit Etherchannel GEC
|
|
IBM HACMP
|
HP Trunking
|
HP Network Fault Tolerance NFT
|
|
|
HP Transmit Load Balancing TLB
|
|
|
HP Switch-Assisted Load Balancing SLB
|
|
|
Linux Bonding Active Backup
|
|
|
Linux Bonding Round Robin
|
|
|
|
Linux Bonding XOR
|
|
|
|
Sun Trunking
|
|
|
2 Die Techniken im Detail
Eine wichtige Frage ist die Methode der Lastverteilung bei den einzelnen Techniken.
Wie werden die Datenpackte auf die verschiedenen Verbindungen zwischen Server und Switch
aufgeteilt?
Zur Entscheidungsfindung kommen in der Regel MAC- oder IP-Adressen und Portnummer (UDP, TCP) zum Einsatz.
Weiterhin spielt es eine Rolle, ob die Adresse des Senders oder des Empfängers bei
der Lastverteilung berücksichtigt wird.
Da heute fast jedes Datenpaket vom Server zuerst zu einem Router läuft, ist ein Channel auf Basis
von MAC-Adressen zur Lastverteilung nicht sehr sinnvoll. Alle Packete werden ja an die selbe MAC-Adresse
(die des Routers) gesendet.
Aber selbst beim Loadsharing auf Basis von Layer 3 (IP) und Layer 4 (UDP, TCP) wird sich die
verfügbare Bandbreite für eine bestimmte Verbindung (z.B. eine TCP-Session) nie erhöhen. Für diese
eine Verbindung sind ja die MAC- und IP-Adressen und die Portnummern statisch.
Ein anderer Ansatz für das Load Sharing ist Round Robin. Bei diesem Verfahren werden die Frames der Reihe
nach auf die verfügbaren Links eines Channels verteilt. Mit Round Robin erhöht sich auch die Bandbreite die
z.B. für eine einzelne TCP-Session zur Verfügung steht. Die Sun Trunking Software und der Linux Bonding Treiber
unterstützen Round Robin.
2.1 Etherchannel
Die beiden Technologien Fast EtherChannel (FEC) und Gigabit EtherChannel (GEC) wurden von Cisco
entwickelt. Etherchannel erlaubt das Zusammenfassen von bis zu 8 Netzwerkports auf einem Switch zu
einem Channel. Mit Etherchannel können zwei Switche oder auch ein Switch und ein Server verbunden werden.
Alle beteiligten Interface eines Channels müssen auf die gleiche Geschwindigkeit und den gleichen
Duplexmode eingestellt sein.
Über das Port Aggregation Protocol (PAgP) ist es möglich, Ports automatisch zu einem Channel zusammenzuführen.
Einige Switche unterstützen auch LACP.
Die Verteilung der Frames auf die Mitglieder eines Channels kann auf Basis von
MAC-Adressen, IP-Adressen oder Portnummern erfolgen. Ältere Switche von Cisco unterstützen nur Load Sharing
an Hand der MAC-Adressen.
Die Frames einer TCP-Session laufen bei Etherchannel immer über einen Link. Das Kopieren einer Datei von A nach B
wird also nicht beschleunigt.
Die Einrichtung eines Channels ist unter IOS und CatOS möglich.
Weitere Informationen in englischer Sprache finden Sie auf der
Etherchannel Homepage von Cisco.
Steckbrief Etherchannel
Verbindung Switch:Switch
|
Anzahl Ports
|
Ausfallsicherheit
|
Lastverteilung
|
1:1
|
bis zu 8
|
ja
|
MAC, IP, Portnummer Source und Destination
|
2.2 HP NIC Teaming
HP bezeichnet das Bündeln von Netzwerkadapter als Teaming.
Die Netzwerkkarten des Herstellers Hewlett Packard unterstützen 3 Arten des Teamings:
- Network Fault Tolerance (NFT)
- Transmit Load Balaning (TLB)
- Switch-Assisted Load Balancing (SLB)
HP (vormals Compaq) empfiehlt beim Einsatz von Teaming den Spanning Tree an den betroffenen Switchports zu deaktivieren.
HP nennt das bei seinen ProCurve Switchen "STP Fast Mode", bei Cisco nennt sich das Feature PortFast.
Bei NFT und TLB wird über Multicast ein Heartbeat ausgetauscht.
Alle 3 Varianten können mit Fast Ethernet und Gigabit Ethernet realisiert werden.
SLB entspricht Ciscos EtherChannel. Sehen wir uns die 3 Modi im Detail an.
HP Network Fault Tolerance (NFT)
Für NFT wird der Server mit 2-8 Netzwerkkarten an das Netzwerk angeschlossen. Die Karten können
mit unterschiedlichen Switchen verbunden werden und mit unterschiedlichen Geschwindigkeiten arbeiten.
NFT erhöht lediglich die Ausfallsicherheit eines Systems. Eine Lastverteilung findet nicht statt.
Es ist immer nur eine Karte aktiv (Primary) und die anderen Karten sind standby (Non-Primary).
Alle Adapter im Team haben die selbe IP-Adresse. Die Switche bemerken nichts von NFT und bedürfen keiner
speziellen Einstellung.
Steckbrief Network Fault Tolerance
Verbindung Switch:Server
|
Anzahl Ports
|
Ausfallsicherheit
|
Lastverteilung
|
n:1
|
bis zu 8
|
ja
|
nein
|
HP Transmit Load Balaning (TLB)
Auch TLB unterstützt bis zu 8 Netzwerkkarten in einem Team. Allerdings müssen diese alle mit der
gleichen Geschwindigkeit arbeiten. Eine Aufteilung der Karten auf mehrere Switche ist möglich.
TLB bietet eine Steigerung der Verfügbarkeit und Lastverteilung
beim Senden vom Server. Die Verteilung der Frames kann bei Transmit Load Balaning über die MAC-
oder IP-Adresse des Empfängers gesteuert werden.
Alle Adapter in einem Team melden sich mit der selben IP-Adresse. Es ist keine spezielle
Konfiguration an den Switchen notwendig. Natürlich müssen sich alle Netzwerkkarten in der
gleichen Broadcastdomain bzw. im gleichen VLAN befinden.
Steckbrief Transmit Load Balaning
Verbindung Switch:Server
|
Anzahl Ports
|
Ausfallsicherheit
|
Lastverteilung
|
n:1
|
bis zu 8
|
ja
|
MAC, IP nur Destination
|
HP Switch-Assisted Load Balancing (SLB)
SLB entspricht Ciscos EtherChannel. Bis zu 8 Netzwerkadaptern werden zu einem Team
verbunden. Das Team bietet eine erhöhte Ausfallsicherheit und Lastverteilung in Sende-
und Empfangsrichtung. Der HP-Treiber nimmt die Packetverteilung nach MAC- oder IP-Adressen vor.
Alle beteiligten Adapter müssen auf die selbe Geschwindigkeit eingestellt sein und haben eine
gemeinsame IP-Adresse.
Am Switch muss ein entsprechender Channel konfiguriert werden.
Steckbrief Switch-Assisted Load Balancing
Verbindung Switch:Server
|
Anzahl Ports
|
Ausfallsicherheit
|
Lastverteilung
|
1:1
|
bis zu 8
|
ja
|
MAC, IP Source und Destination
|
2.3 NIC Bonding unter Linux
Für den Einsatz unter Linux gibt es einen speziellen Bonding-Treiber.
Dieser Treiber ermöglicht es, mehrere physische Interface (eth0, eth1, usw.) zu
einem logischen Interface "bond0" zusammenzufassen. Der IP-Stack nutzt dann nur noch
das logische Interface.
Der Bonding-Treiber überprüft die physischen Schnittstellen über den Medienstatus am
Media Independent Interface (MII). Zusätzlich kann eine Art Heartbeat über ARP realisiert werden.
Dadurch können auch Probleme erkannt werden,
die nicht zu einem direkten Ausfall einer Ethernetschnittstelle führen.
Der Bonding-Treiber kennt die Betriebsarten Active Backup, Round Robin, XOR, Broadcast, IEEE 802.3ad,
Adaptive transmit load balancing (TLB) und Adaptive load balancing (ALB).
Steckbrief Linux Bonding
Verbindung Switch:Server |
Anzahl Ports |
Ausfallsicherheit |
Lastverteilung |
1:1 n:1 |
unbegrenzt |
ja |
Round Robin, MAC, lastabhängig |
Linux Bonding mit Active Backup
Beim Active Backup ist immer nur ein Adapter aktiv. Die anderen Netzwerkkarten sind im Standby.
Die Netzwerkkarten können mit verschiedenen Switchen verbunden werden.
Dieser Modus bietet lediglich Ausfallsicherheit.
Linux Bonding mit Round Robin (RR)
Im Modus Round Robin werden die Frames der Reihe nach auf die aktiven Schnittstellen (Slaves)
verteilt. Round Robin bietet gute Lastverteilung und Redundanz.
Linux Bonding mit XOR
In der Betriebsart XOR wird zur Lastverteilung eine XOR-Verknüpfung der MAC-Adressen
von Sender und Empfänger vorgenommen. Die Verbindung zu einem Ziel (Client, Router) wird
dadurch immer über einen Adapter hergestellt.
Linux Bonding mit Broadcast
Der Titel deutet es schon an: Alle Frames werden über alle aktiven Adapter gesendet.
Die Broadcast-Option bietet lediglich Ausfallsicherheit.
Linux Bonding mit IEEE 802.3ad
IEEE 802.3ad Dynamic link aggregation erfordert einen Switch der dieses Feature unterstützt.
Alle Netzwerkadapter müssen auf die gleichen Speed- und Duplexsetting gestellt werden.
802.3ad realisiert Lastverteilung und Redundanz.
Linux Bonding mit Adaptive transmit load balancing (TLB)
TLB erfordert keine spezielle Unterstützung durch den Switch.
Linux verteilt die Frames beim Senden in Abhängigkeit von der aktuellen Last auf
den Links. Empfangen werden Daten nur auf jeweils einem Adapter.
Beim Ausfall einer Karte übernimmt die nächste deren MAC-Adresse und empfängt
die Daten.
Linux Bonding mit Adaptive load balancing (ALB)
ALB realisiert zusätzlich zum TLB noch eine Lastverteilung für den Empfang von IPV4-Daten.
Dazu werden die ARP-Replies des Linux-Servers modifiziert und den Clients
so verschiedene MAC-Adressen übermittelt.
ALB benötigt keine Unterstützung vom Switch.
Die Anzahl der beteiligten Netzwerkkarten an einem Bonding Interface wird durch den
Bonding Treiber nicht begrenzt. Bonding arbeitet auch mit Gigabit Ethernet (GbE) zusammen.
Wie man sieht, bietet der Bonding Treiber jede Menge Potential für eigene Experimente.
Eine gute Dokumentation zum Thema Bonding unter Linux liefert die Datei
/usr/src/linux/Documentation/networking/bonding.txt
aus den Kernelquellen.
Hier finden Sie eine Tutorial zum Thema: Etherchannel mit LACP auf Cisco Switchen einrichten
Fragen zu Teaming, Bonding und Etherchannel können Sie im Netzwerkforum stellen.
|