EtherType
EtherType is a two-octet field within the header of an Ethernet frame that provides protocol identification for the data encapsulated in the frame's payload, enabling receiving devices to determine how to process the subsequent content.[1] Originating from the Ethernet Version 2 specification developed by Xerox, Intel, and DEC in 1982, it was formalized in the IEEE 802.3 standard as the Length/Type field, where values less than 0x0600 (1536 decimal) indicate the length of the payload in octets, while values of 0x0600 or greater signify an EtherType interpretation.[1][2] This dual-purpose design reconciles the original Ethernet II frame format with the IEEE 802.3 requirements, allowing backward compatibility through mechanisms like Subnetwork Access Protocol (SNAP) encapsulation when needed for lower values.[2] The assignment and management of EtherType values occur through the IEEE Registration Authority, which ensures unique, globally recognized identifiers for protocols to avoid conflicts in local and metropolitan area networks.[3] Among the most widely used EtherTypes are 0x0800 for Internet Protocol version 4 (IPv4), which supports the majority of internet traffic, and 0x0806 for the Address Resolution Protocol (ARP), essential for mapping IP addresses to MAC addresses on local networks.[4][5] For modern networks, 0x86DD identifies IPv6 packets, facilitating the transition to larger address spaces. Other notable assignments include 0x8100 for IEEE 802.1Q VLAN tagging, enabling virtual LAN segmentation, and 0x8847 for Multiprotocol Label Switching (MPLS) unicast, supporting efficient traffic engineering in service provider environments.[4][4] These values, part of a registry maintained in coordination with IANA, underscore EtherType's role in multiplexing diverse protocols over Ethernet, from legacy systems to contemporary high-speed infrastructures.[4] The field's simplicity and extensibility have made it a foundational element of data link layer communications, with ongoing assignments addressing emerging technologies like network virtualization and precision timing protocols.[3]Introduction
Definition and Purpose
The EtherType is a two-octet (16-bit) field in the Ethernet frame header, positioned immediately after the source MAC address, that specifies the type of higher-layer protocol encapsulated within the frame's payload.[1] This field serves as a protocol identifier, allowing network devices to determine the nature of the data without examining its contents.[6] When the value is 0x0600 (1536 decimal) or greater, it is interpreted as indicating a specific protocol, such as Internet Protocol version 4 (IPv4) or Address Resolution Protocol (ARP).[1] The primary purpose of the EtherType is to enable efficient demultiplexing of incoming Ethernet frames by network interfaces and switches, directing them to the appropriate protocol processing stack.[6] For instance, upon receiving a frame, a device reads the EtherType value to route the payload to the corresponding handler—such as the IP stack for network-layer processing—thereby avoiding the need to inspect the entire frame contents for protocol identification.[1] This mechanism supports seamless interoperability across diverse protocols layered over Ethernet, facilitating the transmission of data from multiple upper-layer services within the same physical network.[6] A representative example is the EtherType value 0x0800, which designates an IPv4 datagram, prompting the receiving device to forward the frame to its IPv4 processing module.[7] Similarly, the value 0x0806 identifies an ARP message, enabling address resolution operations.[5] In contrast to MAC addresses, which handle layer 2 addressing for frame delivery within a local network segment, the EtherType focuses on identifying layer 3 and above protocols to guide subsequent data handling.[1] The EtherType field originated in the Ethernet Version 2 framing specification and was later incorporated into IEEE 802.3 standards for broader compatibility.[7]Historical Development
The EtherType field was first introduced in the Ethernet Version 2.0 specification, developed by the DIX consortium—comprising Digital Equipment Corporation, Intel, and Xerox—and published in November 1982, following an initial proposal in 1980.[8][9] This two-octet field served as a fixed protocol identifier to specify the type of payload encapsulated in the Ethernet frame, enabling direct multiplexing of higher-layer protocols without additional headers.[8] In 1983, the IEEE 802.3 standard was approved, marking a significant shift by replacing the EtherType field with a two-octet length field to indicate the payload size, which introduced initial incompatibility with the DIX Ethernet II frames.[10][9] The first full publication of IEEE 802.3 occurred in 1985, solidifying this structure under the IEEE's carrier sense multiple access with collision detection (CSMA/CD) framework.[10] Reconciliation between the two formats emerged through practical implementations in the late 1980s and 1990s, with RFC 1042 (published February 1988) standardizing the encapsulation of IP and ARP packets over IEEE 802 networks using the Subnetwork Access Protocol (SNAP) header, which embedded the original EtherType value within 802.3 frames.[11] A de facto rule was established during this period, interpreting field values less than 0x0600 (1536 decimal) as lengths (per IEEE 802.3) and values of 0x0600 or greater as protocol types (per Ethernet II), a convention that aligns with the IEEE specification and was referenced in RFC 1122 (1989) noting the practical maximum length of 1500. In the 1990s, the IEEE Registration Authority assumed centralized control over EtherType assignments, in coordination with IANA for certain protocol spaces, to prevent collisions and support growing network diversity.[12] The field evolved further with the publication of IEEE 802.1Q in 1998, which introduced VLAN tagging and reserved the EtherType value 0x8100 as the Tag Protocol Identifier (TPID) to insert a four-octet VLAN tag into Ethernet frames, enabling virtual LAN segmentation without altering the core EtherType mechanism.[13] Since the 2000s, the EtherType has remained stable in its fundamental role and interpretation, with no major structural changes, though the IEEE continues to assign new values for emerging protocols, such as 0x88FB for Parallel Redundancy Protocol (PRP) and High-availability Seamless Redundancy (HSR) in industrial applications as defined in IEC 62439-3 (2010) and IEEE 802.1CB (2017), and subsequent tunneling and time-sensitive networking extensions.[12]Technical Specifications
Position and Format in Ethernet Frames
The EtherType field occupies bytes 12 and 13 (0-based indexing) in the Ethernet II frame header, immediately following the 6-byte source MAC address, as part of the standard 14-byte header.[14] This positioning ensures the field directly precedes the payload, allowing receivers to quickly identify the encapsulated protocol after processing the MAC addresses.[7] The field is encoded as a 16-bit unsigned integer in network byte order (big-endian), with values commonly represented in hexadecimal notation, such as 0x0800 for IPv4.[7] Transmission occurs most significant byte first, aligning with the conventional byte ordering in Ethernet protocols to maintain consistency across network devices.[15] The Ethernet II frame structure comprises a 6-byte destination MAC address, followed by the 6-byte source MAC address, the 2-byte EtherType field, a variable-length payload (typically 46 to 1500 bytes), and a 4-byte frame check sequence (FCS) for error detection.[7] The EtherType value specifies the higher-layer protocol in the payload but does not directly encode the payload length; instead, the payload size is calculated as the total frame length minus 18 bytes (14-byte header plus 4-byte FCS).[14] To illustrate the header layout:| Offset (bytes) | Field | Size (bytes) | Content Description |
|---|---|---|---|
| 0-5 | Destination MAC | 6 | Receiver's 48-bit MAC address |
| 6-11 | Source MAC | 6 | Sender's 48-bit MAC address |
| 12-13 | EtherType | 2 | 16-bit protocol identifier |
| 14+ | Payload | Variable | Protocol data (min. 46 bytes padded) |
| End-4 | FCS | 4 | 32-bit CRC for integrity |
Length vs. Type Interpretation
In IEEE 802.3, the two-octet field immediately following the destination and source MAC addresses (bytes 12-13) is defined as the Length field, specifying the number of octets in the MAC client data (payload), with possible values ranging from 0 to 65535.[1] In contrast, the original Ethernet II (DIX) specification uses this same field position exclusively as the EtherType, a protocol identifier for the encapsulated upper-layer protocol.[1] This core ambiguity arose from the evolution of Ethernet standards, where IEEE 802.3 prioritized a length indicator to support the Logical Link Control (LLC) sublayer, while Ethernet II retained the type-based approach for direct protocol demultiplexing.[1] To resolve this duality without requiring frame reformatting, a convention was established: if the field's value is less than or equal to 1500 decimal (0x05DC hexadecimal), it is interpreted as length under IEEE 802.3; if greater than or equal to 1536 decimal (0x0600 hexadecimal), it is interpreted as EtherType under Ethernet II.[17] Values between 1501 and 1535 decimal (0x05DD to 0x05FF hexadecimal) are reserved and invalid for either interpretation, while values from 0x0000 to 0x05FF are generally invalid or unused in practice for types, with low length values (below 46 octets) requiring padding to meet minimum frame size requirements.[17] This rule effectively bridges legacy Ethernet II systems with IEEE 802.3 networks, enabling backward compatibility.[1] For scenarios requiring EtherType values within IEEE 802.3 frames (where the field must indicate length), the Subnetwork Access Protocol (SNAP) encapsulates the EtherType using an LLC Type 1 header followed by a 5-octet SNAP header.[18] Specifically, the LLC header sets Destination Service Access Point (DSAP) and Source Service Access Point (SSAP) to 0xAA, with the control field as 0x03 (unnumbered information), followed by the SNAP header containing Organizationally Unique Identifier (OUI) 00-00-00 and the 2-octet EtherType; this structure, defined in RFC 1042, allows the overall length field to remain valid while embedding protocol identification.[18] In modern network protocol stacks, this interpretive convention is automatically applied for frame processing, with receivers demultiplexing based on the field's value to route payloads appropriately.[1] Practical errors can arise if a length interpretation yields a value exceeding the actual received frame size or payload octets, leading to discard or protocol violations, though such cases are rare in compliant implementations.[1]Applications
VLAN Tagging
The IEEE 802.1Q standard, first published in 1998, introduces VLAN tagging to support virtual local area networks on Ethernet networks by inserting a 4-byte tag into Ethernet frames.[13] This tag is placed immediately after the source MAC address and before the original EtherType or Length field, allowing switches to identify and segregate traffic based on VLAN membership. The tagging mechanism enables multiple VLANs to share the same physical link, known as a trunk link, without requiring separate cabling for each VLAN.[19] The VLAN tag consists of a 2-byte Tag Protocol Identifier (TPID) followed by a 2-byte Tag Control Information (TCI) field. The TPID is fixed at the EtherType value 0x8100, which signals to receiving devices that the frame is IEEE 802.1Q-tagged and prompts them to parse the subsequent TCI for VLAN details.[19] The TCI breaks down into a 3-bit Priority Code Point (PCP) for traffic prioritization, a 1-bit Drop Eligible Indicator (DEI) to mark frames eligible for discard during congestion, and a 12-bit VLAN Identifier (VID) specifying the VLAN (values 1–4094, with 0 and 4095 reserved).[19] This structure increases the Ethernet header from 14 bytes to 18 bytes in tagged frames, as the original EtherType field shifts right by 4 bytes to follow the tag.[20] In operation, the EtherType 0x8100 plays a critical role in distinguishing tagged frames from untagged ones, allowing bridges and switches to multiplex VLAN traffic over trunk links. Switches configured as trunk ports add or strip tags based on port settings: incoming untagged frames on a trunk are assigned to the native VLAN (often VLAN 1 by default) without modification, while tagged frames are forwarded with their VID intact to the appropriate VLAN.[21] On access ports, switches typically remove tags before delivering frames to end devices, ensuring compatibility with non-VLAN-aware hosts. This tag handling supports VLAN multiplexing, where a single trunk carries traffic from multiple VLANs, with switches using the VID to enforce forwarding and isolation rules.[19] For service provider networks requiring nested VLANs, IEEE 802.1ad (also known as QinQ) extends 802.1Q by allowing double tagging, where an outer tag encapsulates an inner customer tag. The outer tag uses EtherType 0x88A8 as its TPID to differentiate it from the standard 0x8100 inner tag, enabling transparent tunneling of customer VLANs across the provider's backbone.[22] Earlier implementations sometimes used 0x9100 for the outer tag, but this value is now deprecated in favor of 0x88A8 for standardization.[23] IEEE 802.1Q maintains backward compatibility with untagged frames and certain control protocols. Untagged traffic on trunk ports defaults to the native VLAN, preserving connectivity for legacy devices that do not support tagging.[21] Additionally, priority-tagged frames (VID=0) or control frames using EtherTypes like 0x8808 (for IEEE 802.3x PAUSE flow control) and 0x8809 (for slow protocols including OAM) can traverse VLAN-aware networks, often carried untagged or with priority tagging to avoid conflicts with standard VLAN IDs.[24]Jumbo Frames
The IEEE 802.3 standard specifies a minimum Ethernet frame size of 64 bytes and a maximum of 1518 bytes, consisting of a 1500-byte payload plus 18 bytes for the header and frame check sequence (FCS).[25] Jumbo frames extend this by supporting vendor-specific maximum transmission units (MTUs) exceeding 9000 bytes, enabling larger payloads in Ethernet frames.[26] This extension relies on interpreting the two-octet field following the destination and source MAC addresses as an EtherType value greater than or equal to 0x0600 (1536 decimal), rather than as a length field under IEEE 802.3 framing.[1] In Ethernet II (DIX) framing, this type interpretation avoids the 1500-byte payload limit of the length field, preventing overflow and allowing payloads larger than 1500 bytes without requiring Subnetwork Access Protocol (SNAP) or Logical Link Control (LLC) headers for encapsulation.[16] Implementation of jumbo frames requires network interface cards (NICs) and switches to enable a "jumbo mode" that accommodates the increased frame sizes, often through MTU configuration.[27] They are commonly deployed in data centers to minimize fragmentation for storage protocols such as iSCSI and Fibre Channel over Ethernet (FCoE), where FCoE specifically uses EtherType 0x8906 to encapsulate Fibre Channel frames.[25][26] Jumbo frames lack a universal standard, leading to interoperability challenges when devices assume length-based interpretation or vary in supported sizes.[26] Additionally, the minimum 64-byte frame size rule persists, requiring padding for undersized payloads even in jumbo-enabled environments.[27] The benefits include higher network throughput by reducing the number of frames transmitted and lower CPU overhead from decreased header processing per byte of data.[26] Jumbo frames emerged in the 1990s for high-performance local area networks (LANs) alongside Gigabit Ethernet and became widespread in the 2000s for data center applications.[27]Use in Other Protocols
PPPoE employs the EtherType field to encapsulate Point-to-Point Protocol (PPP) frames over Ethernet for broadband access, particularly DSL connections. The discovery stage uses EtherType 0x8863 for active discovery packets, enabling client-server negotiation of session parameters, while the session stage utilizes 0x8864 for carrying actual PPP payloads. This mechanism, defined in RFC 2516, supports efficient tunneling without altering the underlying Ethernet infrastructure.[28] In the Fibre Distributed Data Interface (FDDI), a 100 Mbps fiber-optic ring technology, the MAC frame header incorporates a protocol identifier field that directly corresponds to the EtherType for interoperability with Ethernet protocols. This mapping allows FDDI to transport IP and ARP datagrams using standard EtherType values, such as 0x0800 for IPv4, ensuring transparent bridging between FDDI and Ethernet segments as outlined in RFC 1390.[29] Legacy IEEE 802 networks, including Token Ring (802.5) and Token Bus (802.4), leverage the Subnetwork Access Protocol (SNAP) to embed EtherType values within the Logical Link Control (LLC) header. RFC 1042 specifies this encapsulation, where the LLC fields (DSAP and SSAP set to 0xAA) precede a SNAP header containing the EtherType, enabling the transmission of IP datagrams and other protocols over these non-Ethernet media while maintaining protocol identification consistency.[11] Modern tunneling protocols adapt the EtherType for service provider environments. Provider Backbone Bridging, standardized in IEEE 802.1ah, assigns 0x88E7 to identify backbone service instance (I-SID) tags, encapsulating customer Ethernet frames within a provider's MAC-in-MAC frame for scalable Layer 2 VPNs. Similarly, Multiprotocol Label Switching (MPLS) over Ethernet uses 0x8847 for unicast label-switched packets and 0x8848 for multicast, integrating MPLS payloads directly into Ethernet frames as per RFC 5332.[30][31] IEEE 802.11 wireless LANs incorporate the EtherType in data frames via LLC/SNAP encapsulation to specify upper-layer protocols. Following the 802.11 MAC header, the LLC header (with DSAP/SSAP 0xAA) and SNAP extension carry the EtherType, such as 0x0800 for IP, allowing seamless protocol demultiplexing in Wi-Fi environments as defined in the IEEE 802.11 standard. In software-defined networking (SDN) overlays, Network Virtualization using Generic Routing Encapsulation (NVGRE) employs EtherType 0x6558 within the GRE header to denote transparent Ethernet bridging of virtual machine traffic across IP underlay networks. This post-2010 adaptation, detailed in RFC 7637, addresses scalability in multi-tenant data centers by preserving Ethernet semantics in tunneled frames.[32] These adaptations introduce challenges, particularly in maintaining byte order consistency across diverse media. Ethernet uses big-endian transmission for the EtherType field, but some legacy protocols, such as certain Token Ring implementations, may require explicit handling to prevent field reversal during encapsulation, ensuring reliable protocol identification.[11]Registration and Values
Registration Process
The assignment and management of EtherType values are administered by the IEEE Registration Authority (RA), which was established in 1986 by the IEEE Standards Board at the initiative of the IEEE 802 working group to centralize parameter assignments for LAN/MAN standards.[33] Originally, EtherType values were assigned ad hoc by vendors such as Xerox in the early days of Ethernet development, which risked collisions as multiple entities independently selected values; this shifted to a formalized process under the IEEE RA following the adoption of IEEE 802.3 in 1985, ensuring global uniqueness for standardized protocols like IPv4 (0x0800).[34] The Internet Assigned Numbers Authority (IANA) maintains a mirrored registry of these assignments for reference in IETF protocols, coordinating updates with IEEE-designated experts but not independently assigning values.[12] To request an EtherType assignment, applicants submit a detailed application via the IEEE RA's online form or email to [email protected], including a protocol description, justification for a new value, sponsor organization details, and contact information; the request is then reviewed by the IEEE Registration Authority Committee (RAC) for compliance with uniqueness, standards alignment, and necessity, typically within 90 days.[1][35] Applications must demonstrate that no existing EtherType, subtype, or alternative encapsulation (such as Local Experimental EtherType or OUI Extended EtherType) suffices, and the committee assigns values without allowing applicant-specified preferences to prevent conflicts.[1] For IETF-related protocols, an additional step requires IESG approval and documentation in an RFC or Internet-Draft prior to IEEE submission, emphasizing standardized use.[36] Available EtherType values span the 16-bit range from 0x0600 to 0xFFFF (decimal 1536 to 65535), while 0x0000 to 0x05FF are reserved to distinguish from length fields in IEEE 802.3 frames; Local Experimental EtherTypes (0x88B5 and 0x88B6 per IEEE Std 802) are available for private experimental protocol development but discouraged for production deployments to avoid interoperability issues.[1] Policies prioritize permanent assignments for mature, standardized protocols, with a fee of US $4,045 for public registrations; temporary allocations may be considered for draft specifications pending full standardization.[37][1][36] Assignments are confidential until approved and list the assignee organization publicly, with resale or transfer prohibited.[1] Maintenance of the registry is handled through the IEEE Standards Association (SA), with updates published in a public list at standards-oui.ieee.org/ethertype; deprecations are rare, and as of November 2025, 183 EtherType values have been assigned, reflecting ongoing evolution in networking protocols.[1][12][38] The digital submission process, enhanced post-2020 via the IEEE SA portal, streamlines reviews and ensures current contact information for assignees.[35]Common EtherType Values
EtherType values are two-octet identifiers assigned by the IEEE Registration Authority to specify the protocol encapsulated in the Ethernet frame payload when the value exceeds 0x05FF (1535 decimal), distinguishing them from length fields in IEEE 802.3 frames.[37] These values enable network devices to interpret the frame content correctly, with unassigned values potentially leading to undefined behavior or security risks if processed unexpectedly. The following table lists approximately 20 of the most common EtherType values, selected for their widespread use in networking protocols.| Hex Value | Decimal | Protocol/Description | Standard/RFC | Year |
|---|---|---|---|---|
| 0x0800 | 2048 | IPv4 | RFC 791 | 1981 |
| 0x0806 | 2054 | ARP (Address Resolution Protocol) | RFC 826 | 1982 |
| 0x86DD | 34525 | IPv6 | RFC 2464 | 1998 |
| 0x8100 | 33024 | VLAN Tagging (TPID) | IEEE 802.1Q | 1998 |
| 0x88A8 | 34984 | QinQ (VLAN Stacking) | IEEE 802.1ad | 2005 |
| 0x8863 | 34915 | PPPoE Discovery Stage | RFC 2516 | 1999 |
| 0x8864 | 34916 | PPPoE Session Stage | RFC 2516 | 1999 |
| 0x8906 | 35078 | FCoE (Fibre Channel over Ethernet) | FC-BB-5 | 2009 |
| 0x8808 | 34824 | MAC Control (includes PAUSE Flow Control) | IEEE 802.3x | 1997 |
| 0x8847 | 34919 | MPLS Unicast | RFC 3032 | 2001 |
| 0x8848 | 34920 | MPLS Multicast | RFC 3032 | 2001 |
| 0x6558 | 25944 | Transparent Ethernet Bridging (EoGRE) | RFC 1701 | 1994 |
| 0x88CC | 35020 | LLDP (Link Layer Discovery Protocol) | IEEE 802.1AB | 2005 |
| 0x22F3 | 8947 | TRILL (Transparent Interconnection of Lots of Links) | RFC 6325 | 2011 |
| 0x88F7 | 35063 | PTP (Precision Time Protocol, all messages) | IEEE 1588 | 2008 |
| 0x88A2 | 34978 | EtherIP (Ethernet over IP) | RFC 3378 | 2002 |
| 0x0801 | 2049 | XNS-IDP (Xerox Network Systems) | Xerox | 1980 |
| 0x6003 | 24579 | DECnet Phase IV | DEC | 1980 |
| 0x9433 | 37939 | O-RAN Alliance (5G/IoT support) | O-RAN | 2021 |
| 0xFFFF | 65535 | Reserved | IEEE | N/A |