Switching

Switching ist ein Mechanismus in paketorientierten Netzwerken, um für eingehende Datenpakete den richtigen Ausgang zu ermitteln. Dabei geht es darum auf Basis von Sender- und Empfänger-Adressen eine Verbindung zwischen einem Eingangs-Port und einem Ausgangs-Port zu schalten.

Dafür gibt es verschiedene Switching-Verfahren, die in der folgende Beschreibung Ethernet als Grundlagen haben.

Switching-Verfahren

Beim Switching wird das eingehende Ethernet-Frame (Datenpaket) analysiert. Die MAC-Adressen von Sender und Empfänger werden in der MAC-Tabelle (FDB, Forwarding Database) gespeichert. So können die Datenpakete schneller an den Switch-Port, an dem der Empfänger hängt, weitergeleitet werden. Da eine Station an einen anderen Switch-Port umgezogen werden kann, wodurch der Tabelleneintrag veralten würde, werden die Einträge in der MAC-Tabelle regelmäßig gelöscht (Ageing-Mechanismus).

Cut-Through

Der Switch analysiert die Ethernet-Frames, bevor sie vollständig eingetroffen sind. Hat er die Ziel-Adresse identifiziert, wird das Frame sofort an den Ziel-Port ausgegeben. Die Latenz, die Verzögerungszeit zwischen Empfangen und Weiterleiten eines Frames, ist äußerst gering.
Das Cut-Through-Verfahren verzichtet auf die vollständige Analyse der Frames, wobei fehlerhafte oder beschädigte Frames unerkannt bleiben und ungehindert weitergeleitet werden. Obwohl dieses Verfahren sehr schnell ist, kann es auch zu einer Belastung des Netzwerks führen, weil defekte Ethernet-Frames nochmals übertragen werden müssen.

Store-and-Forward

Der Switch nimmt stets das gesamte Frame in Empfang und speichert es in einem Puffer. Erst danach wird das Frame analysiert. Dazu wird geprüft, ob das Frame die richtige Struktur (nach IEEE 802.1d) hat. Außerdem wird die Richtigkeit der CRC-Prüfsumme (nach IEEE 802.3) getestet. Erst danach wird die Ziel-MAC-Adresse ausgelesen und überprüft. Befindet sich die Ziel-Adresse in der MAC-Tabelle wird das Frame an den gespeicherten Port ausgegeben. Wenn die Adresse sich nicht in der MAC-Tabelle befindet wird das Frame an alle Ports weitergeleitet (Broadcast).
Wenn ein Frame der Ziel-Adresse zurück kommt, dann speichert der Switch die Ziel-Adresse und den dazugehörigen Port in seiner MAC-Tabelle. Beim nächsten Datenpaket mit dieser Ziel-Adresse schickt der Switch das Frame gleich an den zugeordneten Port.
Grundsätzlich benötigt das Store-and-Forward-Verfahren mehr Zeit bis ein Frame weitergeleitet ist. Die genaue Analyse eines Frames reduziert jedoch die Netzbelastung durch fehlerhafte Frames.

Folgendes Ablaufdiagramm verdeutlicht die Vorgehensweise des Store-and-Forward-Verfahrens:

Ablaufdiagramm des Switching-Verfahrens Store-and-Forward

Adaptive-Cut-Through

Je nach Implementierung gibt es Unterschiede bei diesem Switching-Verfahren. In jedem Fall wird auf eine Kombination aus Cut-Through und Store-and-Forward gesetzt.
Im einen Fall werden die Frames mit Cut-Through weitergeleitet, aber anhand der Prüfsumme (CRC) geprüft. Wird eine bestimmte Fehlerrate überschritten wird automatisch auf Store-and-Forward umgeschaltet. Geht die Fehlerrate zurück, wird auf Cut-Through zurückgeschaltet. Mit diesem Verfahren wird in teuren Switches eine Optimierung des Datenverkehrs zwischen Schnelligkeit und Fehlerfreiheit hergestellt. Unterschiedliche Datenraten kann dieses Switching-Verfahren nicht berücksichtigen. Die Switches unterstützen nur eine Art der Datenrate (10 MBit / 100 MBit / 1 GBit).
Eine anderen Art von Adaptive-Cut-Through entscheidet anhand der Länge des Frames, welches Verfahren angewendet wird. Ist keine Apassung der Datenrate nötig, werden Frames mit einer Länge über 512 Byte per Cut-Through weitergeleitet. Kürzere Frames werden vor der Weiterleitung mit Store-and-Forward analysiert. Mit diesem Switching-Verfahren optimiert man die Latenz anhand der Länge von Frames.

FragmentFree-Cut-Through

Dieses Verfahren stammt von Cisco und geht von einem Erfahrungswert bei fehlerhaften Frames aus. Man hat festgestellt, dass Übertragungsfehler am häufigsten innerhalb der ersten 64 Byte eines Frames auftreten. Deshalb überprüft ein, mit FragmentFree-Cut-Through arbeitender, Switch die ersten 64 Byte auf Fehler. Ist es fehlerfrei wird das Frame per Cut-Through weiterverarbeitet. Ist ein Fehler vorhanden, dann wird das Frame verworfen.

Ermittlung der Latenz von Switching-Verfahren

Die Verzögerung, die beim Verarbeiten und Weiterleiten von Ethernet-Frames entsteht, wird Latenz genannt. Die Dauer hängt vom verwendeten Switching-Verfahren ab. Bei Store-and-Forward ist die Latenz die Zeit, die zwischen dem Empfang des letzten Bit und der Ausgabe des ersten Bit eines Ethernet-Frames verflossen ist. Die genaue Bezeichnung lautet Last In First Out (LIFO) Latency.
Bei Cut-Through wird die Latenz zwischen dem ersten eingegangenen Bit und dem ersten ausgegebenen Bit eines Ethernet-Frames gemessen. Die genaue Bezeichnung lautet First In First Out (FIFO) Latency.
Wegen der unterschiedlichen Messverfahren ist ein direkter Vergleich anhand der Latenz zwischen Cut-Through und Store-and-Forward nicht möglich.

Switching-Verfahren Messverfahren Latenz
Cut-Through First In First Out (FIFO) ~ 35 µs
Store-and-Forward Last In First Out (LIFO) ~ 18 µs

Neben der reinen Verarbeitungsgeschwindigkeit des Switching-Verfahrens ist auch die Leistungsfähigkeit der Backplane für die Latenz der Ethernet-Frames verantwortlich. Wird ein Switch verwendet, der für alle Ports in Summe nicht genug Bandbreite zu Verfügung hat, müssen die Frames oft zwischengespeichert werden.
Die Übertragungsleistung wird in Frames pro Sekunde bzw. Packets per Second (PPS) angegeben. Kann ein Switch alle Ports ständig mit der höchsten Datenrate bedienen, wird von non-blocking oder auch von der Wire-Speed-Fähigkeit gesprochen.

Beim Vergleich von Switching-Verfahren interessiert hauptsächlich die Verzögerung, die der Switch im Vergleich zur Weiterleitung auf der blanken Leitung zusätzlich verursacht. Diese Verzögerung ist bei Cut-Through die angegebene Latenz. Sie ist unabhängig von der Frame-Länge und damit konstant. Bei Store-and-Forward ist die Verzögerung gleich der Latenz, zuzüglich der Frame-Dauer und damit abhängig von der Art des Datenverkehrs. Konkret bedeutet das, je länger ein Frame, desto größer die Verzögerung.

Funktionen im Überlastungsfall

Müssen in einem geswitchten Netzwerk sehr viele Datenpakete auf einem einzigen Port weitergeleitet werden, passiert es sehr schnell, dass die Eingangspuffer der anderen Ports volllaufen und sich das Verwerfen von Frames nicht mehr vermeiden lässt. Für die Protokolle auf den höheren Schichten, wie z. B. TCP/IP ist das äußerst ungünstig, weil sich durch den Paketverlust die Übertragungsleistung des Übertragungssystems verschlechtert. TCP/IP ist dann gezwungen durch geeignete Maßnahmen, z. B. Paketverkleinerung, die Übertragungsqualität zu verbessern. Diese Maßnahmen gehen zu Lasten der Übertragungsgeschwindigkeit. Denn kleinere Pakete bedeuten einen größeren Anteil von Steuerungsdaten (Header) gegenüber den reinen Nutzdaten.

Flow-Control

Um den Worst-Case-Fall zu vermeiden steht im Standard IEEE 802.3x das Flow-Control zur Verfügung. Dieses Verfahren funktioniert grundsätzlich nur im Vollduplexmodus von Fast-Ethernet und Gigabit-Ethernet. Flow-Control kommt zum Einsatz, wenn ein Puffer vor dem Überlaufen steht. Der Switch schickt dann dem angeschlossenen Gerät ein Pause-Frame. Dieses ist ein spezielles MAC-Control-Frame, welches als Multicast an die Adresse 01-80-C2-00-00-01 verschickt wird. Im Length/Typ-Feld des Frames steht der Wert 88-08.

Back-Pressure

Ist kein Vollduplex möglich, wird ein Verfahren namens Back-Pressure verwendet. Es simuliert Kollisionen. Dazu wird vor dem drohenden Überlauf ein JAM-Signal vom Switch gesendet. Das angeschlossene Gerät beendet daraufhin den Sendevorgang und wartet einige Zeit, bevor es erneut Frames sendet.

Head-of-Line-Blocking

Im Regelfall unterstützen alle Gigabit-Ethernet-Komponenten Flow-Control. Bei Fast-Ethernet-Komponenten ist das nicht immer der Fall. Ob diese Funktion genutzt werden kann, wird während dem Link-Aufbau (nach dem Herstellen der Steckverbindung) mit Auto-Negotation ermittelt. Wenn nicht, bieten viele Switches die Head-of-Line-Blocking-Funktion. Sie prüft die Zieladresse und deren Port-Zuordnung. Ist der Ausgangspuffer des ermittelten Ports blockiert, wird das Frame verworfen, damit der Puffer des Eingangsports frei bleibt.