Ethernet/Flow Control

Aus Foxwiki

Ethernet Flow Control - Unterbrechung der Übertragung, um Staus zu vermeiden

Beschreibung

Ethernet Flow Control ist ein Mechanismus zur vorübergehenden Unterbrechung der Datenübertragung in Ethernet-Familien Computernetzwerken.
Der erste Flusskontrollmechanismus, der Pausenrahmen, wurde durch die Norm IEEE 802.3x definiert.
  • Die nachfolgende prioritätsbasierte Flusskontrolle, die im IEEE 802.1Qbb-Standard definiert ist, bietet einen Flusskontrollmechanismus auf Verbindungsebene, der unabhängig für jede Dienstklasse (CoS) gesteuert werden kann, wie von IEEE P802.1p definiert, und ist für Data Center Bridging-Netzwerke (DCB) anwendbar und ermöglicht die Priorisierung von Voice-over-IP (VoIP), Video-over-IP und Datenbanksynchronisierungsverkehr gegenüber Standarddatenverkehr und Massendatentransfers.
Eine sendende Station (Computer oder Netzwerk-Switch) überträgt möglicherweise Daten schneller, als das andere Ende der Verbindung sie annehmen kann.
  • Mithilfe der Flusskontrolle kann die empfangende Station dem Sender signalisieren, dass die Übertragungen unterbrochen werden sollen, bis der Empfänger aufholt.
  • Die Flusskontrolle bei Ethernet kann auf der Datenübertragungsschicht implementiert werden.
Der erste Flusskontrollmechanismus, der Pausenrahmen, wurde von der Arbeitsgruppe des Institute of Electrical and Electronics Engineers (IEEE) definiert, die die Vollduplex-Segmente Ethernet-Verbindungssegmente definierte.
  • Der IEEE-Standard 802.3x wurde 1997 veröffentlicht.
Ethernet flow control (Flusskontrolle) ist ein Mechanismus, der die Datenübertragung bei Ethernet temporär stoppt.
  • In CSMA/CD-Netzen konnte auf diese spezielle Signalisierung verzichtet werden, denn hier ist die Signalisierung einer Kollision praktisch gleichbedeutend mit einem Stopp- oder Pausensignal (Back Pressure).
Seit Fast-Ethernet und der Einführung von Switches findet die Datenübertragung praktisch nur noch kollisionsfrei im Vollduplex-Modus statt.
  • Da damit auf CSMA/CD verzichtet wird, ist eine zusätzliche Flusskontrolle erforderlich, die es einer Station beispielsweise bei Überlastung ermöglicht, ein Signal zu geben, dass sie zurzeit keine weiteren Pakete zugesandt haben möchte – anders als mit CSMA/CD gibt es keine Möglichkeit, einen Verlust und damit die Notwendigkeit einer erneuten Sendung anzuzeigen.
  • Hierzu wurde Flow Control eingeführt.
  • Damit kann eine Station die Gegenstellen auffordern, eine Sendepause einzulegen und vermeidet so, dass Pakete (zumindest teilweise) verworfen werden müssen.
  • Die Station schickt hierzu einer anderen Station (einer MAC-Adresse) oder an alle Stationen (Broadcast) ein PAUSE-Paket mit einer gewünschten Wartezeit.
  • Die Pause beträgt 0 bis 65535 Einheiten; eine Einheit entspricht der Zeit, die für die Übertragung von 512 Bit benötigt wird.
Ethernet Flow Control verbessert die Zuverlässigkeit der Zustellung – da die angeforderten Pausen direkt auf den sendenden Knoten wirken, kann es aber zu Leistungseinbußen kommen.
  • Wenn zum Beispiel ein Zielknoten die zu empfangenden Daten nur langsamer als mit der Übertragungsrate aufnehmen kann und deshalb Pause-Frames verschickt, bremst es den sendenden Knoten insgesamt, und dieser versorgt auch andere Zielknoten langsamer mit Daten als eigentlich möglich wäre (head-of-line blocking).
Flow Control ist optional und wird häufig nicht eingesetzt, um Head-of-Line-Blocking zu vermeiden.
  • In den meisten Netzwerken werden für wichtige Daten in den höheren Netzwerkschichten Protokolle verwendet, die leichte Übertragungsverluste ausgleichen können, insbesondere Transmission Control Protocol.
  • Wenn dies nicht möglich ist, muss durch die Netzwerkarchitektur oder andere Mechanismen sichergestellt werden, dass wichtige Pakete nicht verloren gehen können, zum Beispiel mit Quality of Service oder bei Fibre Channel over Ethernet.

PAUSE-Frame

Wireshark Screenshot eines Ethernet "Pause" Frames
Ein überlasteter Netzknoten kann einen Pausenrahmen senden, der die Übertragung des Senders für eine bestimmte Zeitspanne unterbricht.
  • Ein Media Access Control (MAC) frame (EtherType 0x8808) wird verwendet, um den Pause-Befehl zu übertragen, wobei der Control Opcode auf 0x0001 (hexadezimal) gesetzt ist.
  • Nur Stationen, die für Vollduplex-Betrieb konfiguriert sind, können PAUSE-Frames senden.
  • Wenn eine Station das andere Ende einer Verbindung anhalten möchte, sendet sie einen Pausenrahmen entweder an die eindeutige 48-Bit-Zieladresse dieser Verbindung oder an die reservierte 48-Bit-Multicast-Adresse von Vorlage:No wrap.
Die Verwendung einer bekannten Adresse macht es für eine Station unnötig, die Adresse der Station am anderen Ende der Verbindung zu ermitteln und zu speichern.
Ein weiterer Vorteil der Verwendung dieser Multicast-Adresse ergibt sich aus der Verwendung der Flusskontrolle zwischen Netzwerk-Switches.
  • Die verwendete Multicast-Adresse wird aus einer Reihe von Adressen ausgewählt, die durch den IEEE 802.1D-Standard reserviert wurden, der den Betrieb von Switches für Bridging spezifiziert.
  • Normalerweise wird ein an einen Switch gesendeter Rahmen mit einem Multicast-Ziel an alle anderen Ports des Switches weitergeleitet.
  • Dieser Bereich von Multicast-Adressen ist jedoch speziell und wird von einem 802.1D-kompatiblen Switch nicht weitergeleitet.
  • Stattdessen werden Frames, die an diesen Bereich gesendet werden, als Frames verstanden, die nur innerhalb des Switches bearbeitet werden sollen.
Ein Pausenrahmen enthält die angeforderte Pausenzeit in Form einer vorzeichenlosen Ganzzahl mit zwei Byte (16 Bit) (0 bis 65535).
  • Diese Zahl ist die angeforderte Dauer der Pause.
  • Die Pausenzeit wird in Einheiten von Pausen-"Quanten" gemessen, wobei jede Einheit 512 Bitzeiten entspricht.
Bis 1999 unterstützten mehrere Anbieter den Empfang von Pausenrahmen, aber nur wenige den Versand.

Probleme

Eine ursprüngliche Motivation für den Pausenrahmen war der Umgang mit Netzwerkschnittstellen-Controllern (NICs), die nicht über genügend Puffer für den Empfang mit voller Geschwindigkeit verfügten.
  • Mit den Fortschritten bei den Busgeschwindigkeiten und Speichergrößen ist dieses Problem nicht mehr so häufig.
  • Ein wahrscheinlicheres Szenario ist eine Netzwerküberlastung innerhalb eines Switches.
  • Beispielsweise kann ein Datenstrom über einen Link mit höherer Geschwindigkeit in einen Switch eintreten, als er ihn verlässt, oder es können mehrere Datenströme über zwei oder mehr Links eintreten, die insgesamt die Bandbreite eines Ausgangslinks übersteigen.
  • In diesen Fällen ist der Puffer des Switches irgendwann erschöpft.
  • Die Blockierung des sendenden Links führt jedoch dazu, dass alle Ströme über diesen Link verzögert werden, auch diejenigen, die keine Überlastung verursachen.
  • Diese Situation ist ein Fall von Head-of-Line-Blocking (HOL) und kann in Kernnetz-Switches aufgrund der großen Anzahl von Flüssen, die im Allgemeinen aggregiert werden, häufiger auftreten.
  • Viele Switches verwenden eine Technik namens virtuelle Ausgangswarteschlangen, um die HOL-Blockierung intern zu beseitigen, so dass niemals Pausenrahmen gesendet werden.

Nachfolgende Bemühungen

Überlastungsmanagement

Eine weitere Anstrengung begann im März 2004, und im Mai 2004 wurde daraus die IEEE P802.3ar Congestion Management Task Force.
  • Im Mai 2006 wurden die Ziele der Task Force überarbeitet, um einen Mechanismus zur Begrenzung der übertragenen Datenrate mit einer Granularität von etwa 1 % zu spezifizieren.
  • Der Antrag wurde zurückgezogen und die Task Force wurde 2008 aufgelöst.

Prioritätsflusskontrolle

Die Ethernet-Flusskontrolle stört die Ethernet-Dienstklasse (definiert in IEEE 802.1p), da die Daten aller Prioritäten angehalten werden, um die vorhandenen Puffer zu leeren, die auch aus Daten niedriger Priorität bestehen können.
  • Um dieses Problem zu lösen, hat Cisco Systems eine eigene Erweiterung des Standardprotokolls zur Prioritätsflusskontrolle definiert.
  • Dieser Mechanismus verwendet 14 Byte der 42-Byte-Polsterung in einem normalen Pausenrahmen.
  • Der MAC-Kontroll-Opcode für einen Prioritäts-Pausenrahmen ist 0x0101.
  • Anders als bei der ursprünglichen Pause wird bei der Prioritätspause die Pausenzeit in Quanten für jede der acht Prioritätsklassen separat angegeben.

Sicherheit

Siehe auch

  1. Explicit Congestion Notification

Dokumentation

RFC

Man-Pages

Info-Pages

Links

Einzelnachweise


Projekt

Weblinks

  1. https://en.wikipedia.org/wiki/Ethernet_flow_control