RFC 4349

High-Level Data Link Control (HDLC) Frames over Layer 2 Tunneling Protocol, Version 3 (L2TPv3)

πŸ“… published February 2006, from ietf

okay bestie, let's get into it πŸ’– this one is Standards Track (so it's an actual official spec, not just a vibe πŸ’…), it came out in February 2006, and it's written by C. Pignataro and M. Townsley from Cisco Systems 🧚. It doesn't obsolete or update any other RFCs, so it's a fresh start 🌸. The whole point is tunneling HDLC frames over L2TPv3, which is the HDLC Pseudowire (HDLCPW) situation πŸ¦‹


Status of This Memo πŸ’œ

This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited.

Copyright (C) The Internet Society (2006).

Abstract ✨

The Layer 2 Tunneling Protocol, Version 3, (L2TPv3) defines a protocol for tunneling a variety of data link protocols over IP networks. This document describes the specifics of how to tunnel High-Level Data Link Control (HDLC) frames over L2TPv3. 🫢

Table of Contents πŸ“–

1. Introduction ....................................................2
   1.1. Abbreviations ..............................................2
   1.2. Specification of Requirements ..............................3
2. Control Connection Establishment ................................3
3. HDLC Link Status Notification and Session Establishment .........3
   3.1. L2TPv3 Session Establishment ...............................3
   3.2. L2TPv3 Session Teardown ....................................5
   3.3. L2TPv3 Session Maintenance .................................5
   3.4. Use of Circuit Status AVP for HDLC .........................6
4. Encapsulation ...................................................6
   4.1. Data Packet Encapsulation ..................................6
   4.2. Data Packet Sequencing .....................................7
   4.3. MTU Considerations .........................................7
5. Applicability Statement .........................................8
6. Security Considerations .........................................9
7. IANA Considerations .............................................9
   7.1. Pseudowire Type ............................................9
   7.2. Result Code AVP Values .....................................9
8. Acknowledgements ................................................9
9. References .....................................................10
   9.1. Normative References ......................................10
   9.2. Informative References ....................................10

1. Introduction πŸ¦‹

[RFC3931] defines a base protocol for Layer 2 Tunneling over IP networks. This document defines the specifics necessary for tunneling HDLC Frames over L2TPv3. Such emulated circuits are referred to as HDLC Pseudowires (HDLCPWs). πŸ’…

Protocol specifics defined in this document for L2TPv3 HDLCPWs include those necessary for simple point-to-point (e.g., between two L2TPv3 nodes) frame encapsulation, and for simple interface up and interface down notifications. ✨

The reader is expected to be very familiar with the terminology and protocol constructs defined in [RFC3931]. no pressure lol 😭

1.1. Abbreviations πŸ“

HDLC    High-Level Data Link Control
HDLCPW  HDLC Pseudowire
LAC     L2TP Access Concentrator (see [RFC3931])
LCCE    L2TP Control Connection Endpoint (see [RFC3931])
PW      Pseudowire

1.2. Specification of Requirements πŸ”₯

In this document, several words are used to signify the requirements of the specification. These words are often capitalized. The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119]. πŸ‘‘

2. Control Connection Establishment 🧚

In order to tunnel an HDLC link over IP using L2TPv3, an L2TPv3 Control Connection MUST first be established as described in [RFC3931]. The L2TPv3 SCCRQ Control Message and corresponding SCCRP Control Message MUST include the HDLC Pseudowire Type of 0x0006 (see Section 7, "IANA Considerations"), in the Pseudowire Capabilities List as defined in 5.4.3 of [RFC3931]. This identifies the control connection as able to establish L2TP sessions to support HDLC Pseudowires (HDLCPWs). πŸ¦‹

An LCCE MUST be able to uniquely identify itself in the SCCRQ and SCCRP messages via a globally unique value. By default, this is advertised via the structured Router ID AVP [RFC3931], though the unstructured Hostname AVP [RFC3931] MAY be used to identify LCCEs as well. 🌸

This section specifies how the status of an HDLC interface is reported between two LCCEs, and the associated L2TP session creation and deletion that occurs. 🫢

3.1. L2TPv3 Session Establishment πŸŽ€

Associating an HDLC serial interface with a PW and its transition to "Ready" or "Up" results in the establishment of an L2TP session via the standard three-way handshake described in Section 3.4.1 of [RFC3931]. For purposes of this discussion, the action of locally associating an interface running HDLC with a PW by local configuration or otherwise is referred to as "provisioning" the HDLC interface. The transition of the interface to "ready" or "up" will be referred to as the interface becoming ACTIVE. The transition of the interface to "not-ready" or "down" will be referred to as the interface becoming INACTIVE. ✨

An LCCE MAY initiate the session immediately upon association with an HDLC interface or wait until the interface becomes ACTIVE before attempting to establish an L2TP session. Waiting until the interface transitions to ACTIVE may be preferred, as it delays allocation of resources until absolutely necessary. 🧠

The Pseudowire Type AVP defined in Section 5.4.4 of [RFC3931], Attribute Type 68, MUST be present in the ICRQ messages and MUST include the Pseudowire Type of 0x0006 for HDLCPWs. πŸ’œ

The Circuit Status AVP (see Section 3.4) MUST be present in the ICRQ and ICRP messages and MAY be present in the SLI message for HDLCPWs. 🌈

Following is an example of the L2TP messages exchanged for an HDLCPW that is initiated after an HDLC interface is provisioned and becomes ACTIVE. πŸ¦‹

      LCCE (LAC) A                     LCCE (LAC) B
   ------------------               ------------------
   HDLC Interface Provisioned
                                    HDLC Interface Provisioned
   HDLC Interface ACTIVE

                ICRQ (status = 0x03) ---->

                                    HDLC Interface ACTIVE

                <---- ICRP (status = 0x03)

   L2TP session established,
   OK to send data into tunnel

                ICCN ----->
                                 L2TP session established,
                                 OK to send data into tunnel

In the example above, an ICRQ is sent after the interface is provisioned and becomes ACTIVE. The Circuit Status AVP indicates that this link is ACTIVE and New (0x03). The Remote End ID AVP [RFC3931] MUST be present in the ICRQ in order to identify the HDLC link (together with the identity of the LCCE itself as defined in Section 2) with which to associate the L2TP session. The Remote End ID AVP defined in [RFC3931] is of opaque form and variable length, though one MUST at a minimum support use of an unstructured four-octet value that is known to both LCCEs (either by direct configuration, or some other means). The exact method of how this value is configured, retrieved, discovered, or otherwise determined at each LCCE is outside the scope of this document. πŸŽ€

As with the ICRQ, the ICRP is sent only after the associated HDLC interface transitions to ACTIVE as well. If LCCE B had not been provisioned for the interface identified in the ICRQ, a CDN would have been immediately returned indicating that the associated link was not provisioned or available at this LCCE. LCCE A SHOULD then exhibit a periodic retry mechanism. If so, the period and maximum number of retries MUST be configurable. 😭

An Implementation MAY send an ICRQ or ICRP before an HDLC interface is ACTIVE, as long as the Circuit Status AVP reflects that the link is INACTIVE and an SLI is sent when the HDLC interface becomes ACTIVE (see Section 3.3). 🌸

The ICCN is the final stage in the session establishment, confirming the receipt of the ICRP with acceptable parameters to allow bidirectional traffic. πŸ‘‘

3.2. L2TPv3 Session Teardown πŸ’€

In the event a link is removed (unprovisioned) at either LCCE, the associated L2TP session MUST be torn down via the CDN message defined in Section 3.4.3 of [RFC3931]. πŸ”₯

General Result Codes regarding L2TP session establishment are defined in [RFC3931]. Additional HDLC result codes are defined as follows: 🌈

   20 - HDLC Link was deleted permanently (no longer provisioned)
   21 - HDLC Link has been INACTIVE for an extended period of time

3.3. L2TPv3 Session Maintenance 🧚

HDLCPWs over L2TP make use of the Set Link Info (SLI) control message defined in [RFC3931] to signal HDLC link status notifications between PEs. The SLI message is a single message that is sent over the L2TP control channel, signaling the interface state change. πŸ¦‹

The SLI message MUST be sent any time there is a status change of any values identified in the Circuit Status AVP. The only exceptions to this are the initial ICRQ, ICRP, and CDN messages, which establish and teardown the L2TP session itself. The SLI message may be sent from either PE at any time after the first ICRQ is sent (and perhaps before an ICRP is received, requiring the peer to perform a reverse Session ID lookup). πŸ’–

All sessions established by a given control connection utilize the L2TP Hello facility defined in Section 4.4 of [RFC3931] for session keepalive. This gives all sessions basic dead peer and path detection between PEs. 🫢

3.4. Use of Circuit Status AVP for HDLC πŸŽ€

HDLC reports Circuit Status with the Circuit Status AVP defined in [RFC3931], Attribute Type 71. For reference, this AVP is shown below: ✨

    0                   1
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |           Reserved        |N|A|
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

The Value is a 16-bit mask with the two least significant bits defined and the remaining bits reserved for future use. Reserved bits MUST be set to 0 when sending, and ignored upon receipt. 🌈

The N (New) bit SHOULD be set to one (1) if the Circuit Status indication is for a new HDLC circuit; to zero (0) otherwise. πŸ“

The A (Active) bit indicates whether the HDLC interface is ACTIVE (1) or INACTIVE (0). πŸ‘‘


We're only partway through, bestie, so I'll pick up at Section 4 (Encapsulation) in part 2 πŸŒΈπŸ’…

4.1. Data Packet Encapsulation πŸŽ€

okay so HDLCPWs just borrow the default encapsulations from [RFC3931] for demultiplexing, sequencing, and flags πŸ’… no need to reinvent the wheel. The HDLCPW Type over L2TP is meant to work "interface to interface" or "port to port" ✨, passing all the HDLC data and control PDUs over the PW. The HDLC PDU gets its flags and trailing FCS stripped off, bit/byte unstuffing happens, and then the leftover stuff (address, control, and protocol fields included) gets transported over the PW. πŸ¦‹

Since everything passes through the HDLCPW in a mostly transparent way, any protocol with HDLC-like framing can use HDLCPW mode. That includes PPP, Frame-Relay ("port to port" Frame-Relay transport), X.25 (LAPB), and more 🌈 In those cases, the negotiations and signaling for the protocol being carried happen between the Remote Systems. Here's a non-exhaustive list of examples of this transparent vibe:

  • When the HDLCPW transports Point-to-Point Protocol (PPP) traffic, PPP negotiations (Link Control Protocol, optional authentication, and Network Control Protocols) happen between Remote Systems, and LCCEs do not join in on these negotiations. πŸ’–
  • When the HDLCPW transports Frame-Relay traffic, PVC status management procedures (Local Management Interface) happen between Remote Systems, and LCCEs do not participate in LMI. Also, individual Frame-Relay virtual-circuits are not visible to the LCCEs, and the FECN, BECN, and DE bits are transported transparently. 🧚
  • When the HDLCPW transports X.25 (LAPB) traffic, LCCEs do not function as either LAPB DCE or DTE devices. πŸ“

On the other hand, there are exceptions πŸ‘€ These include cases where direct access to the HDLC interface is required, or modes that operate on the flags, FCS, or bit/byte unstuffing that happens before the HDLC PDU is sent over the PW. PPP ACCM negotiation is an example of this. πŸ’€

4.2. Data Packet Sequencing πŸ”’

Data Packet Sequencing MAY be enabled for HDLCPWs. The sequencing mechanisms described in Section 4.6.1 of [RFC3931] MUST be used for signaling sequencing support. HDLCPWs over L2TP MUST request the presence of the L2TPv3 Default L2-Specific Sublayer defined in Section 4.6 of [RFC3931] when sequencing is enabled, and MAY request its presence at all times. 🌸

4.3. MTU Considerations πŸ“

With L2TPv3 as the tunneling protocol, the packet that results from the encapsulation is N bytes longer than the HDLC frame without the flags or FCS. The value of N depends on these fields:

L2TP Session Header:
   Flags, Ver, Res   4 octets (L2TPv3 over UDP only)
   Session ID        4 octets
   Cookie Size       0, 4, or 8 octets
L2-Specific Sublayer  0 or 4 octets (i.e., using sequencing)

So the range for N in octets is:

N = 4-16,  L2TPv3 data messages are over IP;
N = 16-28, L2TPv3 data messages are over UDP;
(N does not include the IP header.)

The MTU and fragmentation implications that come from this are covered in Section 4.1.4 of [RFC3931]. 🧩

5. Applicability Statement πŸ¦‹

HDLC Pseudowires support a "port to port" or "interface to interface" deployment model that works in a point-to-point fashion πŸ’œ On top of carrying HDLC frames, a natural use for HDLCPWs is carrying any protocol that uses HDLC-like framing. πŸŽ€

Compared to the native service, HDLCPW emulation over a packet-switched network (PSN) has these characteristics:

  • HDLC data and control fields are transported transparently (see Section 4.1). The specific negotiations and signaling of the protocol being transported happen between Remote Systems transparently, and the LCCE does not participate in them. ✨
  • The trailing FCS (Frame Check Sequence), which contains a CRC (Cyclic Redundancy Check), is stripped at the ingress LCCE and not transported over HDLCPWs. It gets regenerated at the egress LCCE (see Section 4.1). This means the FCS may not accurately reflect errors on the end-to-end HDLC link. Errors or corruption introduced into the HDLCPW payload during encapsulation or while crossing the packet-switched network may not be detected. This lack of integrity-check transparency may not be a concern if it's known that the inner payloads or upper protocols being transported do their own error and integrity checking. To allow for payload integrity-checking transparency on HDLCPWs using L2TP over IP or L2TP over UDP/IP, the L2TPv3 session can use IPSec as specified in Section 4.1.3 of [RFC3931]. πŸ”
  • HDLC link status notification is provided using the Circuit Status AVP in the SLI message (see Section 3.4). 🚦
  • The length of the resulting L2TPv3 packet is longer than the encapsulated HDLC frame without flags and FCS (see Section 4.3). The MTU and fragmentation implications are discussed in Section 4.1.4 of [RFC3931]. πŸ“¦
  • The packet-switched network may reorder, duplicate, or silently drop packets. Sequencing may be enabled in the HDLCPW for some or all packets to detect lost, duplicate, or out-of-order packets on a per-session basis (see Section 4.2). πŸ•΅οΈβ€β™€οΈ
  • The faithfulness of an HDLCPW may be increased by leveraging Quality of Service features of the LCCEs and the underlying PSN. πŸ‘‘

6. Security Considerations πŸ”

⚠️ Serious security moment, bestie! HDLC over L2TPv3 is subject to the security considerations defined in [RFC3931]. Beyond the considerations that apply when carrying other data link types, there are NO additional considerations specific to carrying HDLC. 😭

7. IANA Considerations πŸ“‹

7.1. Pseudowire Type πŸ”Œ

The signaling mechanisms defined in this document depend on IANA allocating an HDLC Pseudowire Type. This is covered by the Pseudowire Capabilities List in 5.4.3 of [RFC3931] and the L2TPv3 Pseudowire Types in 10.6 of [RFC3931], and the number space was created as part of publication of [RFC3931]. The HDLC Pseudowire Type is defined in Section 2 of this specification:

L2TPv3 Pseudowire Types
-----------------------

0x0006 - HDLC Pseudowire Type

7.2. Result Code AVP Values 🏷️

IANA manages this number space as described in section 2.3 of [BCP0068]. Two new L2TP Result Codes for the CDN message appear in Section 3.2. Here's the summary:

Result Code AVP (Attribute Type 1) Values
-----------------------------------------

20 - HDLC Link was deleted permanently (no longer provisioned)
21 - HDLC Link has been INACTIVE for an extended period of time

8. Acknowledgements 🫢

Thanks to Sudhir Rustogi and George Wilkie for valuable input. Maria Alice Dos Santos provided helpful review and comment. Huge thanks to Mark Lewis for providing review and clarifying comments during IETF Last Call. 🌟

9. References πŸ“š

9.1. Normative References

[RFC3931]  Lau, J., Townsley, M., and I. Goyret, "Layer Two Tunneling
           Protocol - Version 3 (L2TPv3)", RFC 3931, March 2005.

[RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
           Requirement Levels", BCP 14, RFC 2119, March 1997.

9.2. Informative References

[BCP0068]  Townsley, W., "Layer Two Tunneling Protocol (L2TP)
           Internet Assigned Numbers Authority (IANA) Considerations
           Update", BCP 68, RFC 3438, December 2002.

Authors' Addresses πŸ–ŠοΈ

Carlos Pignataro
Cisco Systems
7025 Kit Creek Road
PO Box 14987
Research Triangle Park, NC 27709

EMail: cpignata@cisco.com


W. Mark Townsley
Cisco Systems
7025 Kit Creek Road
PO Box 14987
Research Triangle Park, NC 27709

EMail: mark@townsley.net

Copyright (C) The Internet Society (2006). πŸ’«

This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights. πŸ”’

This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. πŸ™ˆ

Intellectual Property 🧾

The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document, or the extent to which any license under such rights might or might not be available. It also doesn't represent that it has made any independent effort to identify any such rights. Information on the procedures for rights in RFC documents can be found in BCP 78 and BCP 79. πŸ’…

Copies of IPR disclosures made to the IETF Secretariat, and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification, can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr. πŸ”

The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org. πŸ“¬

Acknowledgement 🌷

Funding for the RFC Editor function is provided by the IETF Administrative Support Activity (IASA). πŸ¦‹βœ¨

πŸ“¦ where this page comes from