# IEEE 802.1Q

IEEE 802.1Q ist eine durch das IEEE genormte Priorisierungs- und VLAN-Technik, die im Unterschied zu den älteren, nur portbasierten VLANs, paketbasierte tagged VLANs implementiert. Der Ausdruck „Tagged“ leitet sich vom engl. Ausdruck material tags ab, das sind Warenanhänger, mit denen Waren markiert werden. Es handelt sich also bei tagged VLANs um Netze, die Netzpakete verwenden, welche eine spezielle VLAN-Markierung tragen.

## Geschichte und Normierung

Vor der Standardisierung durch das IEEE-Konsortium gab es diverse proprietäre tagged VLAN-Lösungen wie Ciscos Inter-Switch Link Protocol (ISL) oder 3Coms VLT (Virtual LAN Trunk) tagging, die heute in dem Standard IEEE 802.1Q zu einem herstellerübergreifenden Standard zusammengefasst wurden. Der Standard beschreibt einen Mechanismus, der es erlaubt, dass mehrere virtuelle Netze sich eine gemeinsame physische oder logische Schnittstelle teilen, ohne dabei Sicherheitsaspekte zu beeinträchtigen oder den ungehinderten Datenaustausch zwischen den VLANs zu ermöglichen. Durch die Normierung entsteht der Vorteil, dass alle LAN-Switches, bei denen 802.1Q implementiert ist, in eine gemeinsame virtuelle Netz-Struktur eingebunden werden können und auch administrative, das VLAN betreffende Informationen, miteinander austauschen.

## Tags im Ethernet-Frame

Im 802.1Q-Standard sind Datenfelder für das VLAN-Tagging definiert, die in den Datenbereich eines Ethernetpakets eingefügt werden. Das hat den Vorteil, dass in der Regel auch ältere Switches solche Pakete weiterleiten können. Das eingefügte Tag besteht aus vier Feldern mit einer Gesamtlänge von 32 Bit. Für die Protokoll-ID werden zwei Byte, für das Prioritätenfeld drei Bit, für den Indikator des Canonical Formats ein Bit und für die VLAN-ID zwölf Bit genutzt.
Das Protocol-ID-Datenfeld wird bei 802.1Q-VLANs immer auf den Wert 8100$_{hex}$ gesetzt. Dieser Wert ist reserviert. Das darauf folgende Prioritätenfeld regelt die Priorität des Ethernet-Frames (vergl. Traffic-Shaping).
Der Canonical Format Indicator (CFI), aktuell bekannt als Drop Eligible Indicator (DEI), ist ein 1-Bit-Datenfeld, welches ursprünglich für die Kompatibilität zwischen Ethernet und Token Ring sorgte. Dieses Datenfeld zeigt an, ob die MAC-Adresse in einem anerkannten oder nicht anerkannten Format ist. Hat das gesetzte Bit eine 0, dann ist es nicht vorschriftsmäßig, bei einer 1 ist es vorschriftsmäßig. Für Ethernet-Switche wird es immer auf 0 gesetzt. Empfängt ein Ethernet-Port als CFI-Information eine 1, dann verbindet der Switch das Tagging-Frame nicht zu einem nicht-getaggten Port.

## Funktionsweise nach IEEE 802.1Q

Jedem VLAN wird eine eindeutige Nummer zugeordnet. Man nennt diese Nummer VLAN-ID. Ein Gerät, das zum VLAN mit der ID=1 gehört, kann mit jedem anderen Gerät im gleichen VLAN kommunizieren, nicht jedoch mit einem Gerät in einem anderen VLAN wie z. B. ID=2, 3, …
Um zwischen den VLANs zu unterscheiden, wird nach IEEE 802.1Q der Ethernet-Frame um vier Byte (= 32 Bit) erweitert. Davon sind 12 Bit zur Aufnahme der VLAN-ID vorgesehen, so dass (ohne Ausnutzung des Canonical Format Bit) insgesamt 4096 − 2 = 4094 VLANs möglich sind (die VLAN-IDs "0" und "4095" sind reserviert und nicht zulässig).
| 16 bits | 3 bits | 1 bit | 12 bits |
| TPID | TCI | TCI | TCI |
| TPID | PCP | DEI | VID |
* TPID – Tag Protocol Identifier: Fester Wert 8100$_{hex}$. Frame trägt die 802.1Q/802.1p-Tag-Information.
* TCI – Tag Control Information:
** PCP – Priority Code Point: Benutzer-Prioritätsinformationen.
** DEI – Drop Eligible Indicator: Kann separat oder in Verbindung mit PCP verwendet werden, um anzuzeigen, dass Frames beim Auftreten von Staus fallen gelassen werden können. (ehemals CFI).
** VID – VLAN-Identifier: Identifizierung des VLANs, zu dem der Frame gehört.
Die Priorisierung im VLAN wird über das PCP Feld ermöglicht. So kann für jeden Frame eine von 8 (3 Bit) Prioritäten angegeben werden (IEEE 802.1p). Dadurch ist es möglich, z. B. Sprachdaten bevorzugt weiterzuleiten, während HTTP-Daten ausgebremst werden. Diese Funktionalität gewinnt gerade in Bezug auf die zunehmende Verwendung von IP-Telefonie (VoIP) immer mehr an Bedeutung. Dadurch können auch mit einer 'beschränkten' Bandbreite Störungen beim Telefonieren vermieden werden (siehe auch Quality of Service).

## Switch-Typen

* Ältere Switches: Sie werten VLAN-Tags nicht aus, können in der Regel – da bei allen getaggten Paketen nach 802.1Q alle OSI Layer 2-Informationen ganz normal gesetzt sind und sich das Tag aus Layer-2-Sicht im Datenbereich befindet – aber trotzdem Pakete mit gesetzten VLAN-Tags weiterleiten.
* Einfache Switches ohne Managementinterface: Aktuelle Modelle verstehen die Bedeutung der VLAN-Tags und verarbeiten die Tags korrekt; sie arbeiten im sogenannten automatischen Lern-Modus, können aber selbst keine Tagging-Funktionen definieren (kein Tag-Insert oder -Remove).
* Managebare Geräte: Solche Switches verstehen die Bedeutung der VLAN-Tags und verarbeiten die Tags korrekt; sie können zusätzlich aber auch selbst Tagging-Funktionen definieren (Tag-Insert, Tag-Remove). Optional arbeiten natürlich auch diese Switches im automatischen Lern-Modus (s. o.). Innerhalb einer VLAN-Infrastruktur können nur an solchen Switches ältere und andere, selbst nicht 802.1Q-VLAN-fähige Endgeräte, betrieben werden.

## Typen von LAN-Karten

* Einfache und ältere Karten: Diese können, entweder auf Grund von Beschränkungen in der Hardware oder auf Grund fehlender Software, nicht mit VLAN-Tags umgehen; sie werden Pakete mit gesetzten VLAN-Tags verwerfen. Daher müssen diese Karten an 802.1Q-fähige Switches angeschlossen werden, welche Tags analysieren und bei Bedarf entfernen und einfügen können.
* Höherwertige Karten: Diese wurden früher vor allem im Serverbereich eingesetzt. Aktuelle 100-MBit- und Gigabit-Karten sind in der Regel VLAN-fähig. Ein passendes, VLAN-fähiges Betriebssystem (aktuelle Liste von Betriebssystemen wie AIX, Solaris oder Linux, aktuelle Windows Server Editionen uvm.) und passende Treiber vorausgesetzt, können diese Karten auch mit VLAN-Tags umgehen (Tag-detect, -insert, -remove) und diese korrekt verarbeiten.