# ATA over Ethernet

ATA over Ethernet (AoE) ist ein von der Firma Brantley Coile entwickeltes Netzwerkprotokoll für den Zugriff auf Speichergeräte (in der Regel Festplatten) über ein Ethernet-Computernetzwerk. Es verwendet dazu das ATA-Protokoll.
ATA over Ethernet überträgt die Daten in Form von Ethernet-Frames und verzichtet auf die Verwendung höherstehender Protokolle wie IP, UDP oder TCP. Die von AoE übertragenen Ethernet-Frames können das lokale Netzwerksegment nicht verlassen, weshalb der Einsatz von AoE vorwiegend auf lokale Speichernetze (Storage Area Networks) begrenzt ist. AoE ist technisch einfacher als iSCSI, welches zwar ebenfalls über Netzwerk, aber über höhere Schichten transportiert wird.
Damit wird der größte Unterschied von AoE zu iSCSI sichtbar: AoE ist nur lokal (geswitcht) nutzbar, iSCSI dagegen kann grundsätzlich in andere Netzwerke geroutet werden, wenngleich diese Möglichkeit in der Praxis kaum genutzt wird. Durch den Verzicht auf eine komplexe Infrastruktur erzielt AoE einen Geschwindigkeitsvorteil gegenüber vergleichbaren Techniken.
Ohne AoE werden die Befehle des ATA-Protokolls, welches zur Kommunikation zwischen einem Computersystem und einem daran angeschlossenen Speichergerät dient, direkt über ein Kabel übertragen. AoE verpackt diese Befehle jedoch in Datenpakete, die es über ein Ethernetnetzwerk an einen anderen Computer sendet. Dieses Zielsystem leitet die ATA-Befehle dann über einen Treiber an ein Blockspeichergerät (in der Regel eine Festplatte) weiter und gibt die Antwortpakete ebenfalls wieder über das Netzwerk zurück. So ist ein sehr hardwarenaher Zugriff auf einen Datenträger auch über relativ weite Entfernung möglich.
Durch diese Technik können mehrere Systeme gleichzeitig auf dasselbe Blockspeichergerät zugreifen. Die Koordination der Schreib- und Leseoperationen zwischen den beteiligten Systemen erfolgt durch einen sogenannten „Konfigurationsstring“ auf dem verwaltenden Server. Der gleichzeitige Zugriff mehrerer Systeme auf dasselbe Gerät erfordert den Einsatz spezieller Cluster-Dateisysteme, da die gängigen Dateisysteme nicht für diese Anwendung konzipiert worden sind.
AoE wird unter Linux nativ unterstützt. Für andere gängige Betriebssysteme und Hypervisoren sind oder waren Treiber von Softwareanbietern erhältlich. Zudem existieren spezielle AoE-Host-Bus-Adapter, welche die Verarbeitung des AoE-Protokolls im System übernehmen und so den Hauptprozessor entlasten.

## Paketformat

AoE Header :
| Offset | Datentyp | Beschreibung |
| 00 | char[6] | Zieladresse (MAC-Adresse) |
| 06 | char[6] | Absenderadresse |
| 12 | uint16_t | Ethertype: 88A2$_{hex}$ |
| 14 | uint8_t | Version (Bit 4…7), im Moment stets 1; Flags (Bit 0…3) |
| 15 | uint8_t | Error |
| 16 | uint16_t | Major-Adresse |
| 18 | uint8_t | Minor-Adresse |
| 19 | uint8_t | Befehlsfeld |
| 20 | uint32_t | Befehlsmarkierung (Tag) |
| 24 | struct arg_field | Argumente darunter auch übermittelte Daten von der Festplatte |

## Betriebssysteme mit ATA over Ethernet support

| Betriebssystem | Support | Third-party Treiber |
| Linux | Nativ (2.6.11 und höher) | Coraid |
| Mac OS X 10.4 und höher | Third-party | 2DegreesFrost |
| Mac OS X 10.5 and 10.6 | Third-party | Small Tree Communications |
| Solaris | Third-party | Coraid |
| FreeBSD | Third-party | Coraid |
| OpenBSD | Native (4.5 bis 5.7) |
| VMWare | Third-party | Coraid |
| Plan 9 from Bell Labs | Native | |

## Andere Protokolle zum Ansprechen von Blockgeräten

* Fibre Channel: FC definiert ein nicht routingfähiges Standardprotokoll aus dem Bereich der Speichernetzwerke, das als Nachfolger von SCSI für die Hochgeschwindigkeitsübertragung großer Datenmengen konzipiert wurde. FC ist nicht mit Ethernet kompatibel, es wird eine separate Infrastruktur (NICs, Switches usw.) benötigt.
* Fibre Channel over Ethernet: Bei Fibre Channel over Ethernet werden „Fibre Channel“-Pakete in Ethernet gekapselt. Im Unterschied zu iSCSI erfolgt aber keine Kapselung in TCP/IP, hieraus resultieren geringe Performancevorteile, jedoch ist FCoE nicht routingfähig.
* Fibre Channel over IP Bei Fibre Channel over IP werden „Fibre Channel“-Pakete zusätzlich in TCP/IP gekapselt. FCoIP ist daher routingfähig.
* iSCSI (SCSI over IP): Bei iSCSI werden SCSI-Pakete in TCP/IP gekapselt. Im Unterschied zu ATA over Ethernet ist iSCSI routingfähig.
* HyperSCSI Bei HyperSCSI werden SCSI-Pakete in Ethernet gekapselt. Im Unterschied zu iSCSI erfolgt aber keine Kapselung in TCP/IP, hieraus resultieren geringe Performancevorteile, HyperSCSI ist wie AoE nicht routingfähig.