Ethertype

Der EtherType kennzeichnet im Ethernet-Frame, welches Protokoll die Nutzdaten trägt. Werte ab 1536 sind EtherTypes, darunter Längenangaben.

Der EtherType ist ein zwei Byte langes Feld im Header eines Ethernet-Frames. Es gibt an, welchem Protokoll die nachfolgenden Nutzdaten zuzuordnen sind, und ermöglicht damit, unterschiedliche Protokolle über dasselbe Medium zu übertragen. Erst der EtherType macht Ethernet zu einem protokollunabhängigen Träger: Ohne ihn müsste eine Netzwerkkarte raten, ob ein empfangener Rahmen IPv4, IPv6, ARP oder etwas ganz anderes enthält.

Position im Rahmen

Der Header beginnt mit der Zieladresse und der Quelladresse zu je sechs Byte. Unmittelbar danach folgen die beiden Byte, die den EtherType tragen:

┌──────────┬──────────┬──────────┬─────────────┬─────┐
│ Ziel-MAC │ Quell-MAC│ EtherType│  Nutzdaten  │ FCS │
│   6 B    │   6 B    │   2 B    │ 46 – 1500 B │ 4 B │
└──────────┴──────────┴──────────┴─────────────┴─────┘

Die empfangende Station wertet dieses Feld aus und übergibt die Nutzdaten an die zuständige Protokollinstanz. Ein Rahmen mit dem Wert 0x0800 geht an den IPv4-Stack, einer mit 0x86DD an IPv6, einer mit 0x0806 an die Adressauflösung.

Länge oder Typ: die Grenze bei 1536

Dasselbe Feld wird in zwei unterschiedlichen Rahmenformaten für zwei unterschiedliche Zwecke genutzt — ein Erbe der konkurrierenden Standardisierung der frühen 1980er-Jahre.

Im ursprünglichen Ethernet-II-Format, das auf die Spezifikation von DEC, Intel und Xerox zurückgeht, enthält das Feld den Protokolltyp. Im davon abweichenden IEEE-802.3-Format enthält dieselbe Stelle die Länge der Nutzdaten.

Aufgelöst wird der Konflikt über den Wertebereich:

WertBedeutung
0 – 1500 (0x0000–0x05DC)Längenangabe nach IEEE 802.3
1501 – 1535nicht definiert
ab 1536 (0x0600)EtherType

Die Grenze ist kein Zufall: 1500 Byte ist die größte zulässige Nutzlast eines Ethernet-Frames, weshalb eine Längenangabe diesen Wert nie überschreiten kann. Alles darüber ist eindeutig als Typkennung interpretierbar. Der dazwischenliegende Bereich bleibt ungenutzt, um einen Sicherheitsabstand zu wahren.

Diese Unterscheidung erledigt jede Netzwerkkarte im laufenden Betrieb, weshalb sich beide Rahmenformate seit Jahrzehnten problemlos im selben Netz bewegen. In der Praxis dominiert Ethernet II — die Längenvariante findet sich fast nur noch bei Protokollen aus der Frühzeit lokaler Netze.

Der Umweg über LLC und SNAP

Wird das Feld als Längenangabe genutzt, fehlt die Protokollkennung. Sie wandert in diesem Fall an den Anfang der Nutzdaten, in den Header der Logical Link Control mit Ziel- und Quell-Dienstzugangspunkt.

Der dort verfügbare Adressraum ist mit einem Byte je Zugangspunkt schnell erschöpft. Deshalb wurde mit dem Subnetwork Access Protocol eine Erweiterung eingeführt: Ein bestimmter Wert im LLC-Header zeigt an, dass ein SNAP-Header folgt, der eine Herstellerkennung und zwei weitere Byte enthält. Ist die Herstellerkennung null, sind diese zwei Byte wieder ein regulärer EtherType.

Der Umweg endet also dort, wo er begonnen hat — mit dem Unterschied, dass acht zusätzliche Byte Header anfallen.

VLAN-Tags verschieben das Feld

Wird ein Rahmen nach IEEE 802.1Q mit einer VLAN-Kennung versehen, schieben sich vier Byte zwischen Quelladresse und EtherType. An der bisherigen Position steht dann der Wert 0x8100, der das Tag ankündigt; erst dahinter folgt der eigentliche EtherType.

┌──────────┬──────────┬────────┬─────┬──────────┬───────────┐
│ Ziel-MAC │ Quell-MAC│ 0x8100 │ TCI │ EtherType│ Nutzdaten │
└──────────┴──────────┴────────┴─────┴──────────┴───────────┘

Bei doppelt getaggten Rahmen nach IEEE 802.1ad wiederholt sich das: Außen steht 0x88A8 für das äußere Tag des Anbieters, danach 0x8100 für das innere Tag des Kunden, und erst dann der EtherType der Nutzdaten.

Für die Auswertung von Rahmen bedeutet das, dass die Position des EtherType nicht fest ist. Filterregeln, die starr auf das dreizehnte und vierzehnte Byte zugreifen, greifen bei getaggten Rahmen ins Leere — eine häufige Fehlerquelle bei selbstgeschriebenen Paketfiltern und Mitschnitt-Auswertungen.

Bemerkenswert ist die Herkunft von 0x8100: Der Wert war ursprünglich der Firma Wellfleet Communications zugeteilt und wurde später für die VLAN-Kennzeichnung umgewidmet. Die Registry der IANA führt diesen Umstand bis heute mit.

Vergabe

EtherTypes werden von der IEEE Registration Authority zugeteilt. Die Zuteilung ist kostenpflichtig, was den Adressraum trotz seiner Beschränkung auf gut 64.000 Werte vor unkontrollierter Vergabe schützt.

Für Anwendungen, die keine eigene Zuteilung rechtfertigen, bestehen zwei Auswege. Zum einen sind zwei Werte für lokale Experimente reserviert, die innerhalb eines abgeschlossenen Netzes frei verwendet werden dürfen. Zum anderen existiert mit 0x88B7 ein erweiterter EtherType, bei dem die Nutzdaten mit einer Herstellerkennung und einem selbst vergebenen Untertyp beginnen — damit lässt sich ein eigener Protokollraum aufspannen, ohne einen EtherType zu erwerben.

Eine einheitliche, vollständige und verbindliche Liste aller vergebenen EtherTypes existiert nicht. Die IANA führt eine Zusammenstellung, weist aber ausdrücklich darauf hin, dass es sich um ungeprüfte Beiträge unterschiedlicher Herkunft handelt. Zahlreiche in der Praxis verbreitete Werte — etwa aus der industriellen Automatisierung — sind ausschließlich in den jeweiligen Fachnormen dokumentiert.

Gebräuchliche EtherTypes

WertProtokoll
0x0800Internet Protocol Version 4
0x0806Address Resolution Protocol
0x8035Reverse Address Resolution Protocol
0x8100VLAN-Tag nach IEEE 802.1Q (C-Tag)
0x86DDInternet Protocol Version 6
0x8809Slow Protocols, unter anderem Link Aggregation und Link-OAM
0x8847MPLS
0x8863PPP over Ethernet, Discovery-Phase
0x8864PPP over Ethernet, Session-Phase
0x888EPortbasierte Zugangskontrolle nach IEEE 802.1X
0x88A8VLAN-Tag des Anbieters nach IEEE 802.1Q (S-Tag)
0x88CCLink Layer Discovery Protocol
0x88E5MACsec nach IEEE 802.1AE
0x88F7Precision Time Protocol nach IEEE 1588

Abgrenzung zu anderen Protokollkennungen

Der EtherType wird häufig mit der Protokollnummer im IP-Header verwechselt. Beide beantworten dieselbe Frage auf unterschiedlichen Schichten: Der EtherType sagt, welches Protokoll auf Ethernet aufsetzt, die Protokollnummer sagt, welches Protokoll auf IP aufsetzt. Es handelt sich um getrennte Nummernräume mit eigenen Registern; die Zahl 6 bedeutet als Protokollnummer TCP und als EtherType nichts.

Entsprechend liegen Portnummern noch eine Schicht höher und haben mit beiden nichts zu tun.

Praktische Bedeutung

Der EtherType ist eines der wenigen Felder, die praktisch jedes Netzwerkwerkzeug auswertet. Mitschnitt-Programme entscheiden anhand seiner, welcher Dekodierer auf einen Rahmen angewendet wird. Paketfilter selektieren darüber ganze Protokollfamilien, bevor eine tiefere Auswertung überhaupt beginnt. Switches nutzen ihn, um Rahmen bestimmter Steuerprotokolle nicht weiterzuleiten, sondern selbst zu verarbeiten.

Für die Fehlersuche ist er häufig der erste Anhaltspunkt: Kommen an einem Anschluss ausschließlich Rahmen mit 0x0806 an, aber keine mit 0x0800, ist die Adressauflösung erfolgreich und das Problem liegt oberhalb. Erscheint unerwartet 0x8100, ist der Anschluss getaggt konfiguriert, obwohl er es nicht sein sollte.

Überarbeitet: