RFC 1483

Multiprotocol Encapsulation over ATM Adaptation Layer 5

πŸ“… published July 1993, from ietf

RFC 1483: Multiprotocol Encapsulation over ATM Adaptation Layer 5 πŸŽ€

Part 1 of 3 πŸ¦‹

  • Series: Network Working Group
  • Number: RFC 1483
  • Author: Juha Heinanen, Telecom Finland πŸ’β€β™€οΈ
  • Date: July 1993 πŸ“…
  • Category: IAB standards track protocol ✨
  • Obsoletes / Updates: none listed in the header 🫢

Status of this Memo ✨

okay bestie, first things first πŸ’… this RFC is an IAB standards track protocol for the Internet community, and it's literally asking for discussion and suggestions for improvements 🫢. For the standardization state and status of this protocol, you'll want to check the current edition of the "IAB Official Protocol Standards" list πŸ“‹. Distribution of this memo is unlimited 🌈.

Abstract πŸ¦‹

this memo is about two different encapsulation methods for carrying network interconnect traffic over ATM AAL5 🌸. The first one lets multiple protocols share a single ATM virtual circuit 🧚. The second one assumes every protocol gets its own separate ATM virtual circuit πŸ’œ. It's giving two paths, pick your vibe πŸ‘‘.

1. Introduction 🌸

ATM based networks are getting super popular for both local and wide area stuff πŸ”₯. This memo covers two methods for carrying connectionless network interconnect traffic πŸ›œ, meaning routed and bridged Protocol Data Units (PDUs) πŸ“¦, over an ATM network ✨.

The first method is LLC Encapsulation πŸ’–. It lets several protocols share one ATM virtual circuit, and each PDU tells you which protocol it is by getting an IEEE 802.2 Logical Link Control (LLC) header slapped in front πŸŽ€. A subset of this was already defined for SMDS [1] πŸ’….

The second method is VC Based Multiplexing πŸ¦‹. Here, the higher-layer protocol multiplexing happens implicitly through ATM Virtual Circuits (VCs), so the VC itself does the sorting πŸ§šβ€β™€οΈ.

ATM is a cell based transfer mode 🧱, which means variable length user information has to get chopped up into short, fixed length cells and then put back together 🧩. This memo does not make up a new Segmentation And Reassembly (SAR) method for bridged and routed PDUs πŸ™…β€β™€οΈ. Instead, the PDUs ride in the Payload field of the Common Part Convergence Sublayer (CPCS) PDU of ATM Adaptation Layer type 5 (AAL5) [2] πŸ’«.

Quick heads up 🚨: this memo only covers routed and bridged PDUs going directly over the CPCS of AAL5, which is when the Service Specific Convergence Sublayer (SSCS) of AAL5 is empty 🫧. If Frame Relay Service Specific Convergence Sublayer (FR-SSCS), as defined in I.36x.1 [3], is sitting on top of the CPCS of AAL5, then routed and bridged PDUs use the NLPID multiplexing method from RFC 1294 [4] 🌈. Appendix A (informational only, bestie πŸ™ˆ) shows the format of the FR-SSCS-PDU and how IP and CLNP PDUs get encapsulated over FR-SSCS according to RFC 1294 ✨.

2. Selection of the Multiplexing Method 🧚

VC Based Multiplexing is expected to be the main vibe in environments where making lots of ATM VCs on the fly is fast and cheap πŸ’Έ. Those conditions will probably show up first in private ATM networks 🏠.

LLC Encapsulation, on the other hand, can be the move when it's not practical, for whatever reason, to have a separate VC for each carried protocol πŸ€·β€β™€οΈ. For example, this happens if the ATM network only supports (semi) Permanent Virtual Circuits (PVCs), or if charging depends heavily on how many simultaneous VCs you have πŸ’€.

When two ATM stations want to exchange connectionless network interconnect traffic 🀝, the multiplexing method gets picked in one of two ways. For PVCs, it's manual configuration πŸ› οΈ. For Switched VCs, it's B-ISDN signalling procedures πŸ“‘. The B-ISDN signalling details are still being figured out at CCITT [5] 🧐. Even so, we can assume B-ISDN signalling messages include a "Low layer compatibility" information element 🫢, which lets AAL5 and the carried (encapsulation) protocol get negotiated 🀝.

3. AAL5 Frame Format 🧩

No matter which multiplexing method you pick, routed and bridged PDUs SHALL be encapsulated within the Payload field of the AAL5 CPCS-PDU πŸ’…. Here's how the AAL5 CPCS-PDU is laid out πŸ‘‡:

                AAL5 CPCS-PDU Format
               +-------------------------------+
               |             .                 |
               |             .                 |
               |        CPCS-PDU Payload       |
               |     up to 2^16 - 1 octets)    |
               |             .                 |
               |             .                 |
               +-------------------------------+
               |      PAD ( 0 - 47 octets)     |
               +-------------------------------+ -------
               |       CPCS-UU (1 octet )      |
               +-------------------------------+
               |         CPI (1 octet )        |
               +-------------------------------+CPCS-PDU Trailer
               |        Length (2 octets)      |
               +-------------------------------|
               |         CRC (4 octets)        |
               +-------------------------------+ -------

The Payload field holds user information, up to 2^16 - 1 octets πŸ“¦.

The PAD field fills up the CPCS-PDU so it fits exactly into the ATM cells 🎯. That way, the last 48 octet cell payload made by the SAR sublayer has the CPCS-PDU Trailer right-justified in the cell πŸ’–.

The CPCS-UU (User-to-User indication) field passes CPCS user to user information through transparently 🫧. Under the multiprotocol ATM encapsulation in this memo, it has no function at all, so it can be set to any value πŸ€·β€β™€οΈ.

The CPI (Common Part Indicator) field aligns the CPCS-PDU trailer to 64 bits πŸ“. Any extra functions are still for further study in CCITT πŸ“š. When only the 64 bit alignment function is in use, this field SHALL be coded as 0x00 πŸŽ€.

The Length field tells you the length, in octets, of the Payload field πŸ“. Its maximum value is 65535 octets πŸ”. A Length field coded as 0x00 is used for the abort function πŸ›‘.

The CRC field protects the entire CPCS-PDU, except for itself πŸ”.

4. LLC Encapsulation 🌈

LLC Encapsulation is needed when several protocols are carried over the same VC πŸ§šβ€β™€οΈ. So the receiver can process the incoming AAL5 CPCS-PDU properly, the Payload field has to hold info that identifies the protocol of the routed or bridged PDU πŸ”. In LLC Encapsulation, that info is an LLC header placed in front of the carried PDU πŸ’Œ.

This memo only deals with protocols running over LLC Type 1 (unacknowledged connectionless mode) service πŸ“¨. The same encapsulation idea also works for protocols running over LLC Type 2 (connection-mode) service πŸ”. In that case, the format and/or contents of the LLC header would be different from what's shown below πŸ‘€.

4.1. LLC Encapsulation for Routed Protocols πŸ’–

In LLC Encapsulation, the protocol of the routed PDU is identified by putting an IEEE 802.2 LLC header in front of it πŸŽ€. That header may then be followed by an IEEE 802.1a SubNetwork Attachment Point (SNAP) header 🫢. With LLC Type 1 operation, the LLC header is made of three one octet fields 🧩:

              +------+------+------+
              | DSAP | SSAP | Ctrl |
              +------+------+------+

For LLC Encapsulation of routed protocols, the Control field is always 0x03, which means Unnumbered Information Command PDU πŸ’―.

The LLC header value 0xFE-FE-03 tells you a routed ISO PDU (see [6] and Appendix B) is coming 🌊. The Control field value of 0x03 still means Unnumbered Information Command PDU πŸ“£. So for routed ISO PDUs, the format of the AAL5 CPCS-PDU Payload field SHALL look like this πŸ‘‡:

                Payload Format for Routed ISO PDUs
              +-------------------------------+
              |       LLC  0xFE-FE-03         |
              +-------------------------------+
              |             .                 |
              |           ISO PDU             |
              |     (up to 2^16 - 4 octets)   |
              |             .                 |
              +-------------------------------+

The routed ISO protocol is identified by a one octet NLPID field that's part of the Protocol Data πŸͺͺ. NLPID values are administered by ISO and CCITT πŸ›οΈ. They're defined in ISO/IEC TR 9577 [6], and some of the ones defined right now are listed in Appendix C πŸ“‹.

An NLPID value of 0x00 is defined in ISO/IEC TR 9577 as the Null Network Layer or Inactive Set πŸ«₯. Since it doesn't mean anything in this encapsulation scheme, an NLPID value of 0x00 is invalid under the ATM encapsulation 🚫.

Heads up: IP has an NLPID value of 0xCC defined for it, so you might think you could use the ISO encapsulation above for IP too. You can't! Even though IP isn't an ISO protocol, this format MUST NOT be used for it. Instead, IP gets encapsulated like every other routed non-ISO protocol, by identifying it in the SNAP header that comes right after the LLC header πŸ™…β€β™€οΈπŸ’€.

The SNAP header shows up when the LLC header value is 0xAA-AA-03 🫧. A SNAP header looks like this πŸ‘‡:

              +------+------+------+------+------+
              |         OUI        |     PID     |
              +------+------+------+------+------+

The three-octet Organizationally Unique Identifier (OUI) names an organization, and that organization controls what the two octet Protocol Identifier (PID) that follows means 🏒. Together, they identify one distinct routed or bridged protocol πŸ”‘. The OUI value 0x00-00-00 says the PID that follows is an EtherType 🎟️.

So for routed non-ISO PDUs, the format of the AAL5 CPCS-PDU Payload field SHALL look like this πŸ‘‡:

               Payload Format for Routed non-ISO PDUs
              +-------------------------------+
              |       LLC  0xAA-AA-03         |
              +-------------------------------+
              |        OUI 0x00-00-00         |
              +-------------------------------+
              |     EtherType (2 octets)      |
              +-------------------------------+
              |             .                 |
              |         Non-ISO PDU           |
              |     (up to 2^16 - 9 octets)   |
              |             .                 |
              +-------------------------------+

For the particular case of an Internet IP PDU, the EtherType value is 0x08-00 🌐:

               Payload Format for Routed IP PDUs
              +-------------------------------+
              |       LLC  0xAA-AA-03         |
              +-------------------------------+
              |        OUI 0x00-00-00         |
              +-------------------------------+
              |       EtherType 0x08-00       |
              +-------------------------------+
              |             .                 |
              |           IP PDU              |
              |     (up to 2^16 - 9 octets)   |
              |             .                 |
              +-------------------------------+

This is compatible with RFC 1042 [7] 🫢. Any changes to the header format specified in RFC 1042 SHOULD be followed by this memo πŸ“βœ¨.

4.2. LLC Encapsulation for Bridged Protocols 🌸

okay so for bridged PDUs in LLC Encapsulation, you figure out what kind of bridged media you're dealing with by checking the SNAP header πŸ’… same vibe as the routed non-ISO stuff: the SNAP header is there when the LLC header says 0xAA-AA-03. For bridged protocols the OUI in the SNAP header is the 802.1 organization code 0x00-80-C2, and the actual media type lives in the two octet PID. The PID also tells you whether the original Frame Check Sequence (FCS) is kept inside the bridged PDU πŸ”₯. The media type (PID) values you can use with ATM encapsulation are listed in Appendix B ✨.

So the AAL5 CPCS-PDU Payload field carrying a bridged PDU SHALL, therefore, have one of the following formats. Padding gets added after the PID field if it's needed to line up the user information of the bridged PDU on a four octet boundary πŸŽ€.

           Payload Format for Bridged Ethernet/802.3 PDUs
           +-------------------------------+
           |       LLC  0xAA-AA-03         |
           +-------------------------------+
           |        OUI 0x00-80-C2         |
           +-------------------------------+
           |    PID 0x00-01 or 0x00-07     |
           +-------------------------------+
           |         PAD 0x00-00           |
           +-------------------------------+
           |    MAC destination address    |
           +-------------------------------+
           |                               |
           |   (remainder of MAC frame)    |
           |                               |
           +-------------------------------+
           |  LAN FCS (if PID is 0x00-01)  |
           +-------------------------------+


            Payload Format for Bridged 802.4 PDUs
           +-------------------------------+
           |       LLC  0xAA-AA-03         |
           +-------------------------------+
           |        OUI 0x00-80-C2         |
           +-------------------------------+
           |    PID 0x00-02 or 0x00-08     |
           +-------------------------------+
           |        PAD 0x00-00-00         |
           +-------------------------------+
           |    Frame Control (1 octet)    |
           +-------------------------------+
           |    MAC destination address    |
           +-------------------------------+
           |                               |
           |   (remainder of MAC frame)    |
           |                               |
           +-------------------------------+
           |  LAN FCS (if PID is 0x00-02)  |
           +-------------------------------+

            Payload Format for Bridged 802.5 PDUs
           +-------------------------------+
           |       LLC  0xAA-AA-03         |
           +-------------------------------+
           |        OUI 0x00-80-C2         |
           +-------------------------------+
           |    PID 0x00-03 or 0x00-09     |
           +-------------------------------+
           |        PAD 0x00-00-XX         |
           +-------------------------------+
           |    Frame Control (1 octet)    |
           +-------------------------------+
           |    MAC destination address    |
           +-------------------------------+
           |                               |
           |   (remainder of MAC frame)    |
           |                               |
           +-------------------------------+
           |  LAN FCS (if PID is 0x00-03)  |
           +-------------------------------+

            Payload Format for Bridged FDDI PDUs
           +-------------------------------+
           |       LLC  0xAA-AA-03         |
           +-------------------------------+
           |        OUI 0x00-80-C2         |
           +-------------------------------+
           |    PID 0x00-04 or 0x00-0A     |
           +-------------------------------+
           |        PAD 0x00-00-00         |
           +-------------------------------+
           |    Frame Control (1 octet)    |
           +-------------------------------+
           |    MAC destination address    |
           +-------------------------------+
           |                               |
           |   (remainder of MAC frame)    |
           |                               |
           +-------------------------------+
           |  LAN FCS (if PID is 0x00-04)  |
           +-------------------------------+

            Payload Format for Bridged 802.6 PDUs
           +-------------------------------+
           |       LLC  0xAA-AA-03         |
           +-------------------------------+
           |        OUI 0x00-80-C2         |
           +-------------------------------+
           |         PID 0x00-0B           |
           +---------------+---------------+ ------
           |   Reserved    |     BEtag     |  Common
           +---------------+---------------+  PDU
           |            BAsize             |  Header
           +-------------------------------+ -------
           |    MAC destination address    |
           +-------------------------------+
           |                               |
           |   (remainder of MAC frame)    |
           |                               |
           +-------------------------------+
           |                               |
           |      Common PDU Trailer       |
           |                               |
           +-------------------------------+

Heads up on the 802.5 one πŸ‘€. The 802.5 Access Control (AC) field has zero significance outside the local 802.5 subnetwork, so it can be treated as the last octet of the three octet PAD field, and that octet can be set to any value (XX). Iconic bit-saving move 🧚

And for bridged 802.6 PDUs, there's only one PID choice πŸ’€. That's because whether a CRC-32 is present gets signalled by the CIB bit in the header of the MAC frame. Simple, clean, no drama.

Now the Common PDU Header and Trailer are carried along so the egress bridge can pipeline its transmission onto an 802.6 subnetwork πŸ¦‹. The key field here is BAsize, which holds the length of the PDU. If the egress 802.6 bridge doesn't have access to that field, it has to wait until the whole PDU has arrived, work out the length, and stick it into BAsize before it can start sending segments 😭. But if the field IS available, the bridge can grab the length from the BAsize field of the Common PDU Header, drop it into the matching field of the first segment, and fire that segment onto the 802.6 subnetwork right away. So it can start transmitting before the full PDU has even been received πŸš€.

Heads up, though: the Common PDU Header and Trailer of the encapsulated frame SHOULD NOT be simply copied onto the outgoing 802.6 subnetwork πŸ™ˆ. The reason is that the encapsulated BEtag value may conflict with the previous BEtag value that bridge already sent.

Abort situations are handled too πŸ’…. An ingress 802.6 bridge can abort an AAL5 CPCS-PDU by setting its Length field to zero. If the egress bridge has already started sending segments to an 802.6 subnetwork and then notices the AAL5 CPCS-PDU was aborted, it MAY immediately generate an EOM cell. That EOM cell is what gets the 802.6 PDU rejected at the receiving bridge. For example, the EOM cell could contain an invalid value in the Length field of the Common PDU Trailer.

Last format in this section is for BPDUs πŸ“:

           +-------------------------------+
           |       LLC  0xAA-AA-03         |
           +-------------------------------+
           |        OUI 0x00-80-C2         |
           +-------------------------------+
           |         PID 0x00-0E           |
           +-------------------------------+
           |                               |
           |      BPDU as defined by       |
           |     802.1(d) or 802.1(g)      |
           |                               |
           +-------------------------------+

5. VC Based Multiplexing ✨

okay this one is the minimalist era 🌈. In VC Based Multiplexing, the network interconnect protocol being carried is identified implicitly by the VC connecting the two ATM stations. That means each protocol MUST be carried over its own separate VC πŸ”₯. Since the VC already tells you what's going on, there's no need to put explicit multiplexing info in the Payload of the AAL5 CPCS-PDU. Result: minimal bandwidth and processing overhead, which is giving efficiency πŸ’œ.

The carried protocol can be manually configured, or it can be negotiated dynamically during call establishment using signalling procedures 🫢. The signalling details will be defined later in other RFCs once the relevant standards are available 🌸.


5.1. VC Based Multiplexing of Routed Protocols πŸ¦‹

PDUs of routed protocols SHALL be carried as-is in the Payload of the AAL5 CPCS-PDU, no extra wrapping needed πŸ‘‘. So the AAL5 CPCS-PDU Payload field ends up looking like this:

           Payload Format for Routed PDUs
           +-------------------------------+
           |             .                 |
           |         Carried PDU           |
           |    (up to 2^16 - 1 octets)    |
           |             .                 |
           |             .                 |
           +-------------------------------+

5.2. VC Based Multiplexing of Bridged Protocols

Okay bestie, bridged PDUs get the same vibe as section 4.2 🌸 but with the PID field cut out, since VC-based mux doesn't need it πŸ’… So the AAL5 CPCS-PDU Payload carrying a bridged PDU SHALL, therefore, look like one of these:

                Payload Format for Bridged Ethernet/802.3 PDUs
               +-------------------------------+
               |         PAD 0x00-00           |
               +-------------------------------+
               |    MAC destination address    |
               +-------------------------------+
               |                               |
               |   (remainder of MAC frame)    |
               |                               |
               +-------------------------------+
               | LAN FCS (VC dependent option) |
               +-------------------------------+


                Payload Format for Bridged 802.4/802.5/FDDI PDUs
               +-------------------------------+
               | PAD 0x00-00-00 or 0x00-00-XX  |
               +-------------------------------+
               |    Frame Control (1 octet)    |
               +-------------------------------+
               |    MAC destination address    |
               +-------------------------------+
               |                               |
               |   (remainder of MAC frame)    |
               |                               |
               +-------------------------------+
               | LAN FCS (VC dependent option) |
               +-------------------------------+

Quick aside 🫢 the 802.5 Access Control (AC) field has no significance outside the local 802.5 subnetwork. So it can be treated as the last octet of that three-octet PAD field, and for 802.5 it can be set to any value (XX).

                Payload Format for Bridged 802.6 PDUs
               +---------------+---------------+ -------
               |   Reserved    |     BEtag     |  Common
               +---------------+---------------+  PDU
               |            BAsize             |  Header
               +-------------------------------+ -------
               |    MAC destination address    |
               +-------------------------------+
               |                               |
               |   (remainder of MAC frame)    |
               |                               |
               +-------------------------------+
               |                               |
               |     Common PDU Trailer        |
               |                               |
               +-------------------------------+
                Payload Format for BPDUs
               +-------------------------------+
               |                               |
               |      BPDU as defined by       |
               |     802.1(d) or 802.1(g)      |
               |                               |
               +-------------------------------+

Here's the spicy bit πŸ”₯ For Ethernet, 802.3, 802.4, 802.5, and FDDI PDUs, whether the trailing LAN FCS is there or not SHALL be identified implicitly by the VC, because the PID field isn't included. So PDUs with the LAN FCS and PDUs without it count as different protocols, even when the bridged media type is the same πŸ¦‹


6. Bridging in an ATM Network

Bestie, an ATM interface acting as a bridge MUST be able to flood, forward, and filter bridged PDUs ✨

Flooding means sending the PDU to every possible appropriate destination. In ATM land, that means sending it through each relevant VC 🌈 You can do that by copying it to each VC or by using a multicast VC.

To forward a PDU, a bridge MUST be able to link a destination MAC address to a VC πŸ’œ Honestly, it's unreasonable and maybe even impossible to make bridges statically configure a link for every destination MAC address with a VC πŸ’€ So ATM bridges MUST provide enough information for an ATM interface to dynamically learn about foreign destinations beyond the set of ATM stations 🧚

For that dynamic learning to work, a bridged PDU SHALL conform to the encapsulation described in section 4. That way, the receiving ATM interface knows to look inside the bridged PDU and learn the association between the foreign destination and an ATM station πŸŽ€


7. For Further Study

Due to incomplete standardization of ATM multicasting, addressing, and signalling mechanisms, the details for negotiating the multiplexing method, plus address resolution, had to be left for further RFCs πŸ“


Acknowledgements

This document evolved from RFCs [1] and [4], and a lot of the material was adopted from them 🫢 Thanks to their authors T. Bradley, C. Brown, A. Malis, D. Piscitello, and C. Lawrence. The expertise of the ATM working group of the IETF was also invaluable in finishing this document πŸ’– Special thanks to Brian Carpenter of CERN, Rao Cherukuri of IBM, Dan Grossman of Motorola, Joel Halpern of Network Systems, Bob Hinden of Sun Mircosystems, and Gary Kessler of MAN Technology Corporation for their detailed contributions πŸ‘‘


Security Considerations

Okay, real talk, this one's short but it's a lot 😭 Security issues are not addressed in this memo. Like, at all. Go into this knowing the security side is on you πŸ’€


References

[1] Piscitello, D. and Lawrence, C., "The Transmission of IP Datagrams over the SMDS Service". RFC 1209, Bell Communications Research, March 1991.

[2] CCITT, "Draft Recommendation I.363". CCITT Study Group XVIII, Geneva, 19 - 29 January, 1993.

[3] CCITT, "Draft Recommendation I.36x.1". CCITT Study Group XVIII, Geneva, 19-29 January, 1993.

[4] Bradley, T., Brown, C., and Malis, A., "Multiprotocol Interconnect over Frame Relay". RFC 1294, Wellfleet Communications, Inc. and BBN Communications, January 1992.

[5] CCITT, "Draft text for Q.93B". CCITT Study Group XI, 23 September - 2 October, 1992.

[6] Information technology - Telecommunications and Information Exchange Between Systems, "Protocol Identification in the Network Layer". ISO/IEC TR 9577, October 1990.

[7] Postel, J. and Reynolds, J., "A Standard for the Transmission of IP Datagrams over IEEE 802 Networks". RFC 1042, ISI, February, 1988.


Appendix A. Multiprotocol Encapsulation over FR-SSCS

Okay, so this appendix is all about FR-SSCS πŸ¦‹ I.36x.1 defines a Frame Relaying Specific Convergence Sublayer (FR-SSCS) that sits on top of the Common Part Convergence Sublayer (CPCS) of AAL type 5, for Frame Relay/ATM interworking. The service FR-SSCS offers matches the Core service for Frame Relaying as described in I.233 ✨

An FR-SSCS-PDU is a Q.922 Address field followed by a Q.922 Information field. The Q.922 flags and the FCS are left out, because the AAL handles those functions πŸ’… Here's an FR-SSCS-PDU embedded in the Payload of an AAL5 CPCS-PDU:

                FR-SSCS-PDU in Payload of AAL5 CPCS-PDU
               +-------------------------------+ -------
               |      Q.922 Address Field      | FR-SSCS-PDU Header
               |         (2-4 octets)          |
               +-------------------------------+ -------
               |             .                 |
               |             .                 |
               |    Q.922 Information field    | FR-SSCS-PDU Payload
               |             .                 |
               |             .                 |
               +-------------------------------+ -------
               |      AAL5 CPCS-PDU Trailer    |
               +-------------------------------+

Routed and bridged PDUs get encapsulated inside the FR-SSCS-PDU as defined in RFC 1294 🌸 The Q.922 Information field starts with a Q.922 Control field, followed by an optional Pad octet that lines the rest of the frame up to a convenient boundary for the sender. The carried PDU's protocol is then identified by putting an ISO/CCITT Network Layer Protocol ID (NLPID) in front of it πŸŽ€

For an IP PDU, the NLPID is 0xCC and the FR-SSCS-PDU looks like this:

                FR-SSCS-PDU Format for Routed IP PDUs
               +-------------------------------+
               |       Q.922 Addr Field        |
               |       (2 or 4 octets)         |
               +-------------------------------+
               |     0x03 (Q.922 Control)      |
               +-------------------------------+
               |          NLPID  0xCC          |
               +-------------------------------+
               |             .                 |
               |           IP PDU              |
               |    (up to 2^16 - 5 octets)    |
               |             .                 |
               +-------------------------------+

Note that according to RFC 1294, the Q.922 Address field SHALL be either 2 or 4 octets, so a 3-octet Address field is not supported πŸ™ˆ

For a CLNP PDU, the NLPID is 0x81 and the FR-SSCS-PDU looks like this:

                FR-SSCS-PDU Format for Routed CLNP PDUs
               +-------------------------------+
               |       Q.922 Addr Field        |
               |       (2 or 4 octets)         |
               +-------------------------------+
               |     0x03 (Q.922 Control)      |
               +-------------------------------+
               |         NLPID  0x81           |
               +-------------------------------+
               |              .                |
               |       Rest of CLNP PDU        |
               |    (up to 2^16 - 5 octets)    |
               |              .                |
               +-------------------------------+

Note that for ISO protocols, the NLPID field forms the first octet of the PDU itself, so it SHALL thus NOT be repeated 🧚

The encapsulation above only applies to routed protocols that have a unique NLPID assigned. For other routed protocols (and for bridged protocols), another mechanism is needed for easy protocol identification. That can be done by using NLPID value 0x80, which indicates that an IEEE 802.1a SubNetwork Attachment Point (SNAP) header follows πŸ’œ

For more details on multiprotocol encapsulation over FRCS, see RFC 1294 ✨


Appendix B. List of Locally Assigned values of OUI 00-80-C2

             with preserved FCS   w/o preserved FCS    Media
            ------------------   -----------------    --------------
             0x00-01              0x00-07              802.3/Ethernet
             0x00-02              0x00-08              802.4
             0x00-03              0x00-09              802.5
             0x00-04              0x00-0A              FDDI
             0x00-05              0x00-0B              802.6
                                  0x00-0D              Fragments
                                  0x00-0E              BPDUs

Appendix C. Partial List of NLPIDs

         0x00    Null Network Layer or Inactive Set (not used with ATM)
         0x80    SNAP
         0x81    ISO CLNP
         0x82    ISO ESIS
         0x83    ISO ISIS
         0xCC    Internet IP

Author's Address

Juha Heinanen Telecom Finland PO Box 228 SF-33101 Tampere Finland

Phone: +358 49 500 958

Email: Juha.Heinanen@datanet.tele.fi

That's the whole RFC, bestie! πŸŒˆπŸ’– Thanks for coming on this protocol journey with me πŸ¦‹

πŸ“¦ where this page comes from