RFC 6435

MPLS Transport Profile Lock Instruct and Loopback Functions

πŸ“… published November 2011, from ietf

RFC 6435: MPLS Transport Profile Lock Instruct and Loopback Functions πŸ¦‹

okay so this is RFC 6435, a Standards Track doc from the IETF, published November 2011 with ISSN 2070-1721. It updates RFC 6371, specifically Sections 7.1.1 and 7.1.2 of it. Nothing is listed as obsoleted. The editors are S. Boutros, S. Sivabalan (both from Cisco Systems, Inc.), R. Aggarwal (Arktan, Inc.), M. Vigoureux (Alcatel-Lucent), and X. Dai (ZTE Corporation). πŸ’–

Abstract ✨

okay so two super useful OAM (Operations, Administration, and Maintenance) functions in a transport network are "lock" and "loopback" πŸ”’πŸ”. Lock lets an operator stop a transport path from carrying client traffic, while it's still allowed to carry OAM messages and maybe test traffic. Loopback lets an operator put one specific node on the transport path into loopback mode, so it sends back everything it receives πŸͺž.

This doc specifies the lock function for MPLS networks and explains how loopback works in MPLS networks. It also updates Sections 7.1.1 and 7.1.2 of RFC 6371. πŸŽ€

Status of This Memo πŸ“œ

This is an Internet Standards Track document.

This doc is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community, it got public review, and the Internet Engineering Steering Group (IESG) approved it for publication 🫢. More info on Internet Standards is in Section 2 of RFC 5741.

For the current status, any errata, and how to give feedback, check http://www.rfc-editor.org/info/rfc6435 πŸ’….

Copyright (c) 2011 IETF Trust and the persons identified as the document authors. All rights reserved.

This doc is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) as they stand on the publication date. Read those carefully, because they spell out your rights and restrictions for this doc πŸ“–. Code Components pulled from this doc must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions, and they come without warranty as described in the Simplified BSD License βš–οΈ.

1. Introduction πŸ¦‹

okay, the intro: two useful OAM functions in a transport network are "lock" and "loopback" ✨. This doc talks about them in the context of MPLS networks.

  • The lock function lets an operator lock a transport path so it doesn't carry client traffic. As per RFC 5860 [1], lock is an administrative state where no client traffic is expected to be carried. Test traffic and OAM messages can still be mapped onto the locked transport path πŸ§ͺ. Lock can be applied to Label Switched Paths (LSPs), Pseudowires (PWs) (including multi-segment Pseudowires) (MS-PWs), and bidirectional MPLS Sections as defined in RFC 5960 [9]).
  • The loopback function lets an operator set a specific node on a transport path into loopback mode, so it returns all received data πŸ”. Loopback can be applied at a Maintenance Entity Group End Point (MEP) or a Maintenance Entity Group Intermediate Point (MIP) on a co-routed bidirectional LSP, on a PW, or on a bidirectional MPLS Section. It can also be applied at a MEP on an associated bidirectional LSP.

Loopback is used to test the integrity of the transport path to and from the node doing the looping 🧐. It requires that the transport path be locked, and that a MEP on the transport path sends test data that it also validates on receipt.

This doc specifies the lock function for MPLS networks and describes how the loopback function operates in MPLS networks. 🌸

1.1. Updates RFC 6371 🩷

This doc updates Sections 7.1.1 and 7.1.2 of RFC 6371 [6].

RFC 6371 assumes the Lock Instruct message is used to enable locking on its own, and that it needs a response message πŸ€”.

The mechanism in this doc says that when management sends a lock instruction to both ends of the locked transport path, the Lock Instruct message does not need a response πŸ’œ.

2. Terminology and Conventions πŸŽ€

2.1. Conventions Used in This Document

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 RFC 2119 [2] πŸ“š.

2.2. Acronyms and Terms 🧾

  • ACH: Associated Channel Header
  • LI: Lock Instruct
  • MEG: Maintenance Entity Group
  • MEP: Maintenance Entity Group End Point
  • MIP: Maintenance Entity Group Intermediate Point
  • MPLS-TP: MPLS Transport Profile
  • NMS: Network Management System
  • TLV: Type Length Value
  • Transport path: MPLS-TP LSP or PW
  • TTL: Time To Live

3. Lock Function πŸ”’

Lock is how you ask a MEP to take a transport path out of service for administrative reasons πŸ› οΈ. For example, Lock can be used so some maintenance can happen on a transport path. Lock is also a prerequisite for the loopback function in Section 4. The NMS or a management process starts a Lock by sending a Lock command to a MEP. The MEP takes the transport path out of service, meaning it stops injecting or forwarding traffic onto the transport path 🚫.

To properly lock a transport path (say, to make sure a loopback test can be done), both directions of the transport path must be taken out of service. That's why a Lock command goes to the MEPs at both ends of the path πŸ‘―. This makes sure no traffic is sent in either direction. So the lock function can be done entirely using the management plane 🌈.

Still, sending messages in the management plane to the two MEPs can be a coordination headache. It's ideal for the lock to happen in a coordinated way within a tight window, and that can be tricky when the management plane is busy πŸ˜΅β€πŸ’«. To add more coordination, an LI OAM message can also be sent. A MEP locks a transport path when it gets a command from a management process, or when it gets an LI message as described in Section 6 ✨.

This doc defines an LI message for MPLS OAM. The LI message is based on a new ACH Type plus an existing TLV 🧩. This is a common mechanism that works for locking LSPs, PWs, and bidirectional MPLS Sections.

4. Loopback Function πŸ”

This section describes the loopback function inside an MPLS network. The function is achieved through management commands, so there's no protocol specification needed. But loopback depends on the lock function, so it fits in this doc πŸ’….

Loopback is used to test the integrity of a transport path from a MEP up to any other node in the same MEG. You do this by putting the target node into loopback mode, then sending a pattern of test data from the MEP πŸ§ͺ. The target node loops all received data back toward the originator, and the MEP pulls out the test data and compares it with what it sent πŸ‘€.

Loopback is a function that lets a receiving MEP or MIP return traffic to the sending MEP when it's in the loopback state πŸͺž. This state matches the situation where, at a given node, a forwarding plane loop is configured and the incoming direction of a transport path is cross-connected to the outgoing reverse direction. So, except in the case of early TTL expiry, traffic sent by the source will be received by that source πŸ”„.

Data-plane loopback is an out-of-service function, as required in Section 2.2.5 of RFC 5860 [1] β›”. It loops back all traffic, including user data and OAM. The traffic can start at one internal point at the ingress of a transport path within an interface, or it can come in from an input port of an interface using external test equipment πŸ”Œ. The traffic is looped back unmodified (other than normal per-hop processing such as TTL decrement) in the direction of the point of origin, by an interface at either an intermediate node or a terminating node πŸ¦‹.

Note that the data-plane loopback function itself is applied to data-plane loopback points on different interfaces from MIPs/MEPs πŸŽ€. All traffic, both payload and OAM, received on the looped back interface is sent in the reverse direction of the transport path.

For data-plane loopback at an intermediate point in a transport path, the loopback needs to be set up at either the ingress or egress interface. This is done using management πŸ› οΈ.

The management plane can be used to configure the loopback function. The management plane must make sure the two MEPs are locked before it asks for the MEP or MIP to be put in the loopback state πŸ”.

The nature of test data, and using loopback traffic to measure packet loss, delay, and delay variation, are outside the scope of this doc πŸ™…β€β™€οΈ.

4.1. Operational Prerequisites πŸ“‹

Obviously, a few prerequisites have to be met for the loopback function to work πŸ₯Ή:

  • There must be a return path, so the transport path under test must be bidirectional.
  • The node in loopback mode must be on both the forward and return paths. This is possible for all MEPs and MIPs on a co-routed bidirectional LSP, on a PW, or on a bidirectional MPLS Section, but it is only possible for MEPs on associated bidirectional LSPs.
  • The transport path can't deliver client data when one of its nodes is in loopback mode, so the transport path has to be locked before loopback is enabled πŸ”’.
  • Management-plane coordination between the node in loopback mode and the MEP sending test data is required. The MEP must not send test data until loopback has been properly configured, because that would make the test data keep going toward the destination πŸš€.
  • The TTL of the test packets must be set big enough to cover both directions of the transport path under test. Otherwise, the packets won't come back to the originating MEP πŸ“.
  • OAM messages meant for delivery to nodes along the transport path under test can be delivered by correct TTL expiry. But OAM messages can't be delivered to points beyond the loopback node until the loopback condition is lifted πŸ™ˆ.

5. Lock Instruct Message πŸ’…

5.1. Message Identification πŸ†”

The Lock Instruct message is carried in the Generic ACH described in [4]. It's identified by a new PW ACH Type of 0x0026 🌟.

5.2. LI Message Format πŸŽ€

okay so here's what an LI message looks like, bestie πŸ¦‹ it's giving tidy little packet πŸ“¦

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Vers  | Reserved                              | Refresh Timer |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                        MEP Source ID TLV                      |
   ~                                                               ~
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

            Figure 1: MPLS Lock Instruct Message Format

Version: The Version number is currently 1. (Note: the version number needs to go up whenever a change is made that affects an implementation's ability to correctly parse or process the message. These changes include any syntactic or semantic changes made to any of the fixed fields, or to any Type-Length-Value (TLV) or sub-TLV assignment or format that is defined at a certain version number. The version number may not need to be changed if an optional TLV or sub-TLV is added.) πŸ”’

Reserved: The Reserved field MUST be set to zero on transmission and SHOULD be ignored on receipt. 🫢

Refresh Timer: The Refresh Timer is the maximum time between successive LI messages, specified in seconds. The default value is 1. The value 0 is not permitted. When a lock is applied, a refresh timer is chosen. This value MUST NOT be changed for the duration of that lock. A node receiving an LI message with a changed refresh timer MAY ignore the new value and continue to apply the old value. ⏰

MEP Source ID TLV: This is one of the three MEP Source ID TLVs defined in [3] and identifies the MEP that originated the LI message. 🧚


6. Operation of the Lock Function ✨

6.1. Locking a Transport Path πŸ”’

okay so when a MEP gets a Lock command from an NMS or some other management process, it MUST take the transport path out of service. Literally, it MUST stop injecting or forwarding traffic onto the LSP, PW, or bidirectional Section that has been locked. πŸ›‘

if you want rapid coordination of the lock state (like we talked about in Section 3), then the second the transport path is locked, the MEP MUST send an LI message aimed at the MEP on the other end of the locked transport path. In this case, the source MEP MUST set the Refresh Timer value in the LI message and MUST retransmit the LI message at the frequency that value says. bestie, that's the whole vibe πŸ’…

when you lock a transport path, the NMS or management process is required to send a Lock command to both ends. So a MEP might get the management command or an LI message first, and either order is valid. A MEP MUST take the transport path out of service immediately in either case, but it only starts sending LI messages itself after it has received a management Lock command. So a MEP is locked if either management requested the lock (and, as a result, the MEP is sending LI messages) or it's receiving LI messages from the remote MEP. 🀝

Note that a MEP that receives an LI message MUST identify the correct transport path and validate the message. The label stack on the received message is used to identify the transport path to be locked:

  • If no matching label binding exists, then there is no corresponding transport path and the received LI message is in error. 🚫
  • If the transport path can be identified, but there is no return path (for example, the transport path was unidirectional), then (obviously) the receiving MEP cannot apply a lock to the return path. ↩️
  • If the transport path is suitable for locking but the Source MEP-ID identifies an unexpected MEP for the MEG to which the receiving MEP belongs, the received LI message is in error. πŸ‘€

When an errored LI message is received, the receiving MEP MUST NOT apply a lock. A MEP receiving errored LI messages SHOULD perform local diagnostic actions (such as counting the messages) and MAY log the messages. πŸ“

A MEP keeps a transport path locked as long as it's either receiving the periodic LI messages or has an in-force Lock command from management (see Section 6.2 for how unlocking works). Note that in some scenarios (such as the use of loopback as described in Section 4), LI messages will not continue to be delivered on a locked transport path. This is why a transport path is considered locked while there is an in-force Lock command from a management process, regardless of whether LI messages are being received. πŸ”

6.2. Unlocking a Transport Path πŸ”“

Unlock is used to request that a MEP bring the previously locked transport path back in service. 🌸

When a MEP receives an Unlock command from a management process, it MUST cease sending LI messages. However, as described in Section 6.1, if the MEP is still receiving LI messages, the transport path MUST remain out of service. So, to unlock a transport path, the management process has to send an Unlock command to the MEPs at both ends. πŸ™ˆ

When a MEP has been unlocked and has not received an LI message for a multiple of 3.5 times the Refresh Timer on the LI message (or has never received an LI message at all), the MEP unlocks the transport path and puts it back into service. βœ…


7. Security Considerations πŸ’€

okay, security time, and this part is SERIOUS 😭

MPLS-TP is a subset of MPLS and builds on a lot of the security model of MPLS. MPLS networks assume it's very hard to inject traffic into a network, and it's equally hard to cause traffic to be directed outside the network. For more on the generic aspects of MPLS security, see [7].

This document describes a protocol carried in the G-ACh [4], so it depends on the security of the G-ACh itself. The G-ACh is a generalization of the Pseudowire Associated Channel defined in [8]. So this document leans really hard on the security mechanisms provided for the Associated Channel, as described in [4] and [8]. πŸ”

A specific concern for the G-ACh is that it can be used to provide a covert channel. This problem is wider than the scope of this document and doesn't need to be addressed here, but it should be noted that the channel provides end-to-end connectivity and SHOULD NOT be policed by transit nodes. So there's no simple way to stop traffic from being carried in the G-ACh between consenting nodes. πŸ•΅οΈ

A good discussion of the data-plane security of an associated channel may be found in [5]. That document also describes some mitigation techniques. 🧠

It should be noted that the G-ACh is essentially connection-oriented, so injecting or modifying the control messages specified in this document requires the subversion of a transit node. Such subversion is generally considered hard in MPLS networks, and impossible to protect against at the protocol level. Management-level techniques are more appropriate. 🚨


8. IANA Considerations πŸ“š

8.1. Pseudowire Associated Channel Type πŸ¦‹

LI OAM requires a unique Associated Channel Type that has been assigned by IANA in the "Pseudowire Associated Channel Types" registry. πŸŽ€

Registry:
   Value        Description              TLV Follows  Reference
   -----------  -----------------------  -----------  ---------
   0x0026       LI                       No           [RFC6435]

9. Acknowledgements 🫢

The authors would like to thank Loa Andersson, Yoshinori Koike, Alessandro D'Alessandro Gerardo, Shahram Davari, Greg Mirsky, Yaacov Weingarten, Liu Guoman, Matthew Bocci, Adrian Farrel, and Jia He for their valuable comments. Thank you all, you're literally the best πŸ’–


10. References πŸ“–

10.1. Normative References

  • [1] Vigoureux, M., Ed., Ward, D., Ed., and M. Betts, Ed., "Requirements for Operations, Administration, and Maintenance (OAM) in MPLS Transport Networks", RFC 5860, May 2010.
  • [2] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
  • [3] Allan, D., Ed., Swallow, G., Ed., and J. Drake, Ed., "Proactive Connectivity Verification, Continuity Check, and Remote Defect Indication for the MPLS Transport Profile", RFC 6428, November 2011.
  • [4] Bocci, M., Ed., Vigoureux, M., Ed., and S. Bryant, Ed., "MPLS Generic Associated Channel", RFC 5586, June 2009.
  • [5] Nadeau, T., Ed., and C. Pignataro, Ed., "Pseudowire Virtual Circuit Connectivity Verification (VCCV): A Control Channel for Pseudowires", RFC 5085, December 2007.
  • [6] Busi, I., Ed., and D. Allan, Ed., "Operations, Administration, and Maintenance Framework for MPLS-Based Transport Networks", RFC 6371, September 2011.

10.2. Informative References

  • [7] Fang, L., Ed., "Security Framework for MPLS and GMPLS Networks", RFC 5920, July 2010.
  • [8] Bryant, S., Swallow, G., Martini, L., and D. McPherson, "Pseudowire Emulation Edge-to-Edge (PWE3) Control Word for Use over an MPLS PSN", RFC 4385, February 2006.
  • [9] Frost, D., Ed., Bryant, S., Ed., and M. Bocci, Ed., "MPLS Transport Profile Data Plane Architecture", RFC 5960, August 2010.

Contributing Authors ✨

George Swallow
Cisco Systems, Inc.
EMail: swallow@cisco.com

David Ward
Juniper Networks.
EMail: dward@juniper.net

Stewart Bryant
Cisco Systems, Inc.
EMail: stbryant@cisco.com

Carlos Pignataro
Cisco Systems, Inc.
EMail: cpignata@cisco.com

Eric Osborne
Cisco Systems, Inc.
EMail: eosborne@cisco.com

Nabil Bitar
Verizon.
EMail: nabil.bitar@verizon.com

Italo Busi
Alcatel-Lucent.
EMail: italo.busi@alcatel-lucent.com

Lieven Levrau
Alcatel-Lucent.
EMail: lieven.levrau@alcatel-lucent.com

Laurent Ciavaglia
Alcatel-Lucent.
EMail: laurent.ciavaglia@alcatel-lucent.com

Bo Wu
ZTE Corporation.
EMail: wu.bo@zte.com.cn

Jian Yang
ZTE Corporation.
EMail: yang_jian@zte.com.cn

Editors' Addresses πŸ’…

Sami Boutros
Cisco Systems, Inc.
EMail: sboutros@cisco.com

Siva Sivabalan
Cisco Systems, Inc.
EMail: msiva@cisco.com

Rahul Aggarwal
Arktan, Inc
EMail: raggarwa_1@yahoo.com

Martin Vigoureux
Alcatel-Lucent.
EMail: martin.vigoureux@alcatel-lucent.com

Xuehui Dai
ZTE Corporation.
EMail: dai.xuehui@zte.com.cn

that's the whole RFC, bestie πŸŒˆπŸ‘‘ you made it!! 🧚

πŸ“¦ where this page comes from