# Fibre Channel over Ethernet

Fibre Channel over Ethernet (FCoE) ist ein Protokoll zur Übertragung von Fibre-Channel-Paketen in Vollduplex-Ethernet-basierten Netzwerken. Das wesentliche Ziel bei der Einführung von FCoE war die I/O-Konsolidierung auf Basis von Ethernet (IEEE 802.3) im Hinblick auf die Reduktion physischer Komplexität von Netzwerkstrukturen besonders in Rechenzentren.
Mit FCoE ist es möglich eine einheitliche physische Infrastruktur sowohl für die Übertragung von Fibre Channel als auch konventionellem Ethernet zu nutzen. Dabei stellen die Skalierbarkeit und die höheren Bandbreiten von Ethernet-basierten Netzstrukturen mit momentan gängigen 10 Gbps (in Kürze auch 40 bzw. 100 Gbps) wesentliche Vorteile dar. Durch die Verwendung von Ethernet für den Transport von Fibre-Channel-Rahmen kommen andererseits auch Nachteile des klassischen Ethernet-Protokolls, wie beispielsweise der Rahmenverlust bei Überlastsituationen, zum Tragen, so dass einige Verbesserungen am Ethernetstandard notwendig sind, um eine zuverlässige Übertragung auf der Basis von Ethernet zu gewährleisten. Diese Erweiterungen werden unter dem Begriff Data Center Bridging vorangetrieben.
Die Standardisierung von FCoE begann im April 2007 innerhalb der FC-BB-5-Arbeitsgruppe der T11 und wurde am 4. Juni 2009 der INCITS zur Publikation als FC-BB-5-Draft-Standard übergeben.

## Anwendung und Motivation

Die Hauptanwendung von FCoE ist in der I/O-Konsolidierung (auch unter dem Begriff Netzwerk-Konvergenz) zu sehen. Diesbezüglich ist die Konsolidierung von Ethernet-basierten Netzwerken und Storage Area Networks (SAN) auf eine gemeinsame, leistungsfähige physische Infrastruktur zu nennen. Die Hauptvorteile dabei dürften der deutlich geringere Verkabelungsaufwand und die insgesamt geringeren Investitionskosten für eine gemeinsame Infrastruktur, als auch die bessere Ressourcenauslastung der physischen Infrastruktur darstellen.
Ein weiterer Vorteil ist sicherlich in der momentan vorherrschenden Virtualisierungsstrategie vieler Rechenzentrumsprovider im Zusammenspiel mit FCoE zu sehen, da letztlich FCoE in der Praxis auch eine Art von Virtualisierungstechnologie auf Basis physischer Medien darstellt und als solche teilweise bis in die Hostsysteme für virtualisierte Server übertragen werden können. Derartige Konsolidierungsstrategien können somit:
* Aufwand und Kosten für eine physische Infrastruktur bestehend aus Netzelementen und Kabeln reduzieren
* Anzahl und Gesamtkosten der notwendigen Netzwerkkarten (NICs) in Endgeräten wie z. B. Servern reduzieren
* Kosten für den Betrieb (Energieversorgung und Wärmeabführung) reduzieren.

## Abgrenzung

FCoE überträgt ähnlich wie iSCSI Blockdaten über untergeordnete Protokollschichten, jedoch sind die beiden Protokolle grundverschieden. iSCSI kann als Applikationsprotokoll gemäß OSI-Modell eingeordnet werden, da es auf TCP als Transportprotokoll aufsetzt. Damit ist es ein routbares Protokoll und kann daher prinzipiell auch über die Grenzen eines Rechenzentrums hinaus Anwendung finden. Mit iSCSI nimmt man aber aufgrund dieser Eigenschaften und der fehlenden zusätzlichen Anforderungen an untergeordneten Protokollschichten einen relativ großen Paket-Overhead in Kauf, so dass die gesamte Transportleistung insbesondere innerhalb eines Rechenzentrums eher gering im Vergleich zu Fibre Channel einzuordnen ist. FCoE dagegen verzichtet auf die Verwendung von Netzwerk- und Transportschichtprotokollen wie IP und TCP und setzt gleich auf Ethernet auf. Dabei profitiert FCoE von dem deutlich geringeren Paket-Overhead und der damit verbundenen höheren Transportleistung und nimmt dabei die örtliche Begrenzung auf Layer-2-Domänen in Kauf. Darüber hinaus ergeben sich besondere Herausforderungen an den verwendeten Ethernet-Standard, denen durch Data Center Bridging Rechnung getragen wird. Um dies zu realisieren, bedarf es einer RZ-Netzinfrastruktur, was eine Migration im Allgemeinen schwierig macht. Daher hat FCoE insbesondere bei der Errichtung neuer Netzstrukturen eine besondere Bedeutung.

## Funktionalität

FCoE kapselt Fibre Channel nativ in Ethernet-Frames, wobei die FCoE-Protokoll-Spezifikationen die Schichten FC-0 und FC-1 des Fibre Channel-Stacks ersetzen (siehe Rahmenformat). Somit ist es möglich, ohne große Veränderungen bestehende Storage Area Networks in eine (neue) Ethernet-Infrastruktur zu integrieren. Da FCoE direkt auf dem Ethernet-Protokoll-Stack aufbaut, unterscheidet es sich maßgeblich von iSCSI, das ebenfalls SCSI-Blockdaten über Netzwerkprotokolle überträgt, dabei aber auf den TCP-Stack aufbaut und daher im Gegensatz zu FCoE routbar ist.
Der Standard des klassischen Ethernet entstand in einer Zeit, in der mit Hilfe von Netzwerken nur überschaubare Mengen von Daten übertragen wurden. Somit bestand in dieser Zeit kaum Bedarf für Flusssteuerungmechanismen (engl. flow control). Fibre Channel dagegen implementiert Flusssteuerungsmechanismen, da Blockdaten i. A. sehr sensibel gegen Übertragungsstörungen sind und diese nicht anders abgefangen werden können. Aus diesem Grunde erfordert FCoE Erweiterungen des klassischen Ethernet-Standards um Flusssteuerungsmechanismen zur Vorbeugung gegen Überlastsituationen und damit einhergehende Rahmenverluste. An diesen Erweiterungen arbeitet die IEEE in der Data Center Bridging Task Group.
Die wesentlichen Erweiterungen des Ethernet-Standards in Data Center Bridging lassen sich wie folgt zusammenfassen:
* Priority-based Flow Control (PFC) Version 0 Specification (Eingereicht bei IEEE 802.1Qbb-Arbeitsgruppe).
* Enhanced Transmission Selection (ETS) Version 0 Specification (Eingereicht bei IEEE 802.1Qaz-Arbeitsgruppe).
* The Data Center Bridging eXchange (DCBX) Version 0 Specification (Eingereicht bei IEEE 802.1Qaz-Arbeitsgruppe).
Des Weiteren muss Ethernet folgende Anforderungen erfüllen:
* Kapselung von nativen Fibre-Channel-Rahmen in Ethernet-Rahmen.
* Eine Abbildung zwischen Fiber Channel N-Port IDs (FCIDs) und Ethernet-MAC-Adressen.

## Endgeräteadapter

Endgeräte werden direkt mit Hilfe von sog. Converged Network Adapters (CNAs) mit der FCoE-Fabric verbunden. Ein solcher Adapter stellt sowohl Fibre-Channel-Host-Bus Adapter- (HBA-) als auch klassische Network-Interface-Card-Funktionen auf einer Hardware zur Verfügung. Diese entlastet die CPU bei Low Level Frame Processing und Bereitstellung klassischer SCSI-Funktionalität. FCoE-Kapselung kann alternativ auch in Software unter teilweise signifikanter CPU-Auslastung erfolgen.
Das erste FCoE-Endgerät wurde von Frederick Knight für NetApp implementiert.

## Rahmenformat

Sowohl Fibre Channel als auch klassische Netzwerke weisen eigene Stacks auf, die jeweils eine Menge von Funktionalitäten zur Verfügung stellen. Der FC-Stack besteht aus fünf Schichten (FC-0 bis FC-4), während Ethernet typischerweise in einem 7-Schichten-OSI-Referenzmodell abgebildet wird, wobei es die ersten beiden Schichten (physische Schicht und Datensicherungsschicht) abdeckt. FCoE ist konzipiert, um die FC-Schicht FC-2 in Ethernet zu übertragen. Damit können schließlich auch die oberen Fibre-Channel-Schichten FC-3 und FC-4 über IEEE-802.3-Ethernet-Schichten abgebildet werden. Ein typischer FC-Rahmen hat eine Nutzdatenlänge von bis zu 2112 Bytes zuzüglich Header und CRC. Die maximale Größe eines FCoE-Rahmens beträgt 2180 Bytes. Somit erfordert FCoE die Unterstützung der Ethernet-Infrastruktur für die Übertragung von sog. Baby Jumbo Frames mit einer Größe von bis zu 2,5 kB, damit die enthaltenen FC-Rahmen nicht aufgesplittet werden.
Die ersten 48 Bits des Rahmens spezifizieren die Ziel-MAC-Adresse, die zweiten 48 Bits dagegen die Quell-MAC-Adresse. Die 32-Bit IEEE-802.1Q-Markierung bietet dieselbe Funktionalität wie für VLANs und ermöglicht mehrere virtuelle lokale Netzwerke auf derselben physischen Infrastruktur. FCoE wird direkt in Ethernet-Rahmen unter Verwendung eines speziellen Ethertype (0x8906) gekapselt. Dafür sind weitere 16 Bits vorgesehen, gefolgt von einem 4 Bit langen Versionsfeld. Die nächsten 100 Bit sind reserviert und weitere 8 Bit indizieren den Start des Fibre-Channel-Rahmens. Nach einem 8 Bit langen End-of-Frame-Begrenzer (EOF) folgen weitere 24 reservierte Bits. Der Rahmen endet mit 32 Bits für die FCS Funktion, die die Fehlerermittlung für den Ethernet-Rahmen zur Verfügung stellt.
Beim gekapselten Fibre Channel folgt nach dem Ethernet-Header, genau wie im eigentlichen FC-Standard, eine 24 Byte langer FC-Header wiederum gefolgt von den FC-Nutzdaten, einschließlich Fibre-Channel-CRC. Dabei wird die übliche zyklische Redundanzprüfung (engl. cyclic redundancy check, daher meist CRC) zur Fehlerkorrektur verwendet. Da der klassische FC-Rahmen komplett erhalten bleibt, bzw. weiterverwendet wird, ist es möglich, ein existierendes Fibre-Channel-SAN mit einem FCoE-Switch zu verbinden, der FCoE-Switch agiert dann als Gateway und entfernt einfach den äußeren Ethernet-Rahmen, so entsteht eine Integration der FC-Funktionen nach Ethernet, ohne den Bedarf für ein dediziertes Gateway.
Eine weitere wichtige Komponente des FCoE-Standards ist das FCoE Initialization Protokoll (FIP), dass die FCoE-Fähigkeiten der Netzkomponenten einer Ethernet-Wolke erkennt und initialisiert. FIP benutzt wiederum einen dedizierten Ethertype (0x8914).

## Ähnliche Standards

* ATA over Ethernet: Bei ATA over Ethernet (ATAoE) werden ATA/ATAPI-Pakete in Ethernet-Paketen gekapselt. Ähnlich wie bei FCoE ist ATAoE nicht in TCP/IP gekapselt, ATAoE ist daher nicht routing-fähig.
* Fibre Channel over IP Bei Fibre Channel over IP (FCoIP) werden Fibre-Channel-Pakete zusätzlich in TCP/IP gekapselt. FCoIP ist daher routing-fähig.
* HyperSCSI Bei HyperSCSI werden SCSI-Pakete in Ethernet-Paketen gekapselt. Ähnlich wie bei FCoE ist HyperSCSI nicht in TCP/IP gekapselt, HyperSCSI ist daher nicht routing-fähig.
* iSCSI (SCSI over IP): Bei iSCSI werden SCSI-Pakete in TCP/IP gekapselt. Hieraus resultiert ein höherer Overhead, dafür ist iSCSI aber routing-fähig und kann, wie Fibre Channel over IP, auch in Weitverkehrsnetzen eingesetzt werden.