Subnetwork Access Protocol

From Wikipedia, the free encyclopedia

The Subnetwork Access Protocol (SNAP) is a mechanism for multiplexing, on networks using IEEE 802.2 LLC, more protocols than can be distinguished by the 8-bit 802.2 Service Access Point (SAP) fields. SNAP supports identifying protocols by Ethernet type field values; it also supports vendor-private protocol identifier spaces. It is used with IEEE 802.3, IEEE 802.4, IEEE 802.5, IEEE 802.11 and other IEEE 802 physical network layers, as well as with non-IEEE 802 physical network layers such as FDDI that use 802.2 LLC.

SNAP is included in an extension of the 802.2 LLC header; it is specified in the IEEE 802 Overview and Architecture document. A packet with an LLC header with a destination SAP of hexadecimal AA or AB and a source SAP of hexadecimal AA or AB is a SNAP packet. The SNAP header follows the 802.2 header; it has a 5-octet protocol identification field, consisting of a 3-octet IEEE Organizationally Unique Identifier (OUI) followed by a 2-octet protocol ID. If the OUI is hexadecimal 000000, the protocol ID is the Ethernet type (EtherType) field value for the protocol running on top of SNAP; if the OUI is an OUI for a particular organization, the protocol ID is a value assigned by that organization to the protocol running on top of SNAP.

SNAP is usually used with Unnumbered Information PDUs, with a control field value of hexadecimal 03, and the LSAP values are usually hexadecimal AA, so the 802.2 LLC header for a SNAP packet is usually AA AA 03; however, SNAP can be used with other PDU types as well.

The LLC header is 3 octets, and the SNAP header is 5 octets, so the LLC+SNAP headers are 8 octets long in total. On Ethernet, this reduces the size of the available payload for protocols such as the Internet Protocol to 1492 bytes, compared to the use of the Ethernet II framing; therefore, for protocols that have EtherType values, packets are usually transmitted with Ethernet II headers rather than with LLC and SNAP headers. On other network types, the LLC and SNAP headers are required in order to multiplex different protocols on the link layer, as the MAC layer doesn't itself have an EtherType field, so there's no alternative framing that would have a larger available payload.

One might ask "why is a separate sub-network header necessary?". The answer is that it was to augment a decision that was made during the layout of the LLC header. At the time that the LLC header was being designed it was thought that a single octet (256 possible values) in the header would be enough to specify all the protocol values that vendors would want to register. As the values began to be reserved, it was discovered that the LLC header would soon run out of open values. The hexadecimal AA and AB values were reserved, and an additional header—the SNAP header—was developed; it can support all EtherType values, as well as multiple spaces of private protocol values.

As per IETF RFC 1042, IP datagrams and ARP datagrams are transmitted over IEEE 802 networks using LLC and SNAP headers, except on Ethernet/IEEE 802.3, where they are transmitted with Ethernet II headers, as per RFC 894.

[edit] References