EtherType
EtherType is a two-octet field in an Ethernet frame. It is used to indicate which protocol is encapsulated in the PayLoad of an Ethernet Frame. This field was first defined by the Ethernet II framing networking standard, and later adapted for the IEEE 802.3 Ethernet networking standard.
EtherType numbering generally starts from 0x0800. In modern implementations of Ethernet, the field within the Ethernet frame used to describe the EtherType also can be used to represent the size of the payload of the Ethernet Frame. Historically, depending on the type of Ethernet framing that was in use on an Ethernet segment, both interpretations were simultaneously valid, leading to ambiguity. Ethernet v2 framing considered these octets to represent EtherType while the original IEEE 802.3 framing considered these octets to represent the size of the payload in bytes. In order to allow packets using Ethernet v2 framing and packets using the IEEE 802.3 framing to be used on the same Ethernet segment, a unifying standard (IEEE 802.3x-1997) was introduced that required that EtherType values be greater than or equal to 1536 (0x0600). That value was chosen because the maximum length (MTU) of the data field of an Ethernet 802.3 frame was 1500 bytes (0x05DC). Thus, values of 1500 (0x05DC) and below for this field indicate that the field is used as the size of the payload of the Ethernet Frame while values of 1536 and above indicate that the field is used to represent EtherType. The interpretation of values between 1500 and 1536, exclusive, is undefined.[1] The size of the payload of non-standard jumbo frames, typically ~9000 Bytes long, falls within the range used by EtherType; this conflict is resolved by substituting the special EtherType value 0x8870 when a length would otherwise be used.[2] The network stack can replace this special EtherType with the actual length of the packet on receive, or when bridging to non-Ethernet networks like FDDI.
Note that the ABOVE figure does not show any Virtual LAN tags, which increase the size of the frame by 32-bits per tag.
Multiprotocol Label Switching also uses 32-bits per label and a stacking arrangement.
The figure below shows a typical VLAN arrangement with a TPID EtherType value of 0x8100.
A QinQ arrangement would add another 32-bit tag with 16-bit TPID using various EtherType values.
Triple Tagging QinQinQ has three 32-bit tags besides the original 16-bit EtherType field.
With 802.1q VLAN Tagging and QinQ the sparse 16-bit EtherType is being completely used. The 16-bit EtherType not only tags the PayLoad Class, it also serves to help end any VLAN Tagging or QinQ stacking. Via look-ahead peeking in streams, the 16-bit EtherType can help to confirm or package a QinQ 32+32+16=80 bit Header between the 48-bit MAC addresses and the PayLoad. Of those 80-bits only 32-bits are used for dynamic information. For a full 66-bit addressing system, 18 bits are needed beyond the MAC. Thus, additional EtherType values are required and used for Triple Tagging QinQinQ. Inefficient and conservative use of a 16-bit Tag Protocol Identifier (TPID) on each 32-bit VLAN Tag, followed by the trailing lone 16-bits creates a 48-bit Signature that can not easily be mistaken as part of the PayLoad. Vendor implementations may avoid wasting band-width sending those 48-bits in proprietary link compression schemes. The EtherType is not expected to contain any CRC or FCS information.
With the advent of the IEEE 802 suite of standards, a SNAP header combined with an IEEE 802.2 LLC header is used to transmit the EtherType of a payload for IEEE 802 networks other than Ethernet, as well as for non-IEEE networks that use the IEEE 802.2 LLC header, such as FDDI. However, for Ethernet, the Ethernet II header is still used.
EtherType for some common protocols
EtherType | Protocol |
---|---|
0x0800 | Internet Protocol, Version 4 (IPv4) |
0x0806 | Address Resolution Protocol (ARP) |
0x0842 | Wake-on-LAN Magic Packet, as used by ether-wake and Sleep Proxy Service |
0x1337 | SYN-3 heartbeat protocol (SYNdog) |
0x22F3 | IETF TRILL Protocol |
0x6003 | DECnet Phase IV |
0x8035 | Reverse Address Resolution Protocol (RARP) |
0x809B | AppleTalk (Ethertalk) |
0x80F3 | AppleTalk Address Resolution Protocol (AARP) |
0x8100 | VLAN-tagged frame (IEEE 802.1Q) |
0x8137 | Novell IPX (alt) |
0x8138 | Novell |
0x8204 | QNX Qnet |
0x86DD | Internet Protocol, Version 6 (IPv6) |
0x8808 | MAC Control |
0x8809 | Slow Protocols (IEEE 802.3) |
0x8819 | CobraNet |
0x8847 | MPLS unicast |
0x8848 | MPLS multicast |
0x8863 | PPPoE Discovery Stage |
0x8864 | PPPoE Session Stage |
0x886F | Microsoft NLB heartbeat [3] |
0x8870 | Jumbo Frames |
0x887B | HomePlug 1.0 MME |
0x888E | EAP over LAN (IEEE 802.1X) |
0x8892 | PROFINET Protocol |
0x889A | HyperSCSI (SCSI over Ethernet) |
0x88A2 | ATA over Ethernet |
0x88A4 | EtherCAT Protocol |
0x88A8 | Provider Bridging (IEEE 802.1ad) |
0x88AB | Ethernet Powerlink |
0x88CC | LLDP |
0x88CD | SERCOS III |
0x88D8 | Circuit Emulation Services over Ethernet (MEF-8) |
0x88E1 | HomePlug AV MME |
0x88E5 | MAC security (IEEE 802.1AE) |
0x88F7 | Precision Time Protocol (IEEE 1588) |
0x8902 | IEEE 802.1ag Connectivity Fault Management (CFM) Protocol / ITU-T Recommendation Y.1731 (OAM) |
0x8906 | Fibre Channel over Ethernet |
0x8914 | FCoE Initialization Protocol |
0x9000 | Configuration Test Protocol (Loop)[4] |
0x9100 | Q-in-Q |
0xCAFE | Veritas Low Latency Transport (LLT)[5] |
Note that even very well known de facto uses of EtherTypes are not always recorded in the IEEE list of EtherType values. For example, EtherType 0x0806 (used by ARP) appears in the IEEE list only as "Symbolics, Inc., Protocol unavailable."
External links
- IEEE Registration Authority Tutorials
- IEEE EtherType Registration Authority
- IEEE Public EtherType list
- IANA list of Ethernet Numbers
- Michael Patton's "Ethernet Codes Master Page"
References
- ^ IEEE Std 802.3-2005, 3.2.6
- ^ Kaplan; et al. (November 2001). "Extended Ethernet Frame Size Support". Internet Engineering Task Force. Retrieved March 5, 2010.
{{cite web}}
: Explicit use of et al. in:|author=
(help) - ^ Network Load Balancing Technical Overview. Retrieved 10/29/09
- ^ Configuration Testing Protocol (Loop)
- ^ Veritas Low Latency Transport (LLT)